297 lines
16 KiB
Java

package com.example.caseData.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.caseData.dao.*;
import com.example.caseData.dto.caseClinicalArticle.CaseClinicalArticleDto;
import com.example.caseData.dto.index.GetIndexClinicalDto;
import com.example.caseData.dto.index.GetIndexExchangeDto;
import com.example.caseData.dto.index.RecommendDoctorDto;
import com.example.caseData.dto.index.RecommendHospitalDto;
import com.example.caseData.model.*;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class IndexService {
@Resource
private CaseClinicalArticleDao caseClinicalArticleDao;
@Resource
private CaseExchangeDao caseExchangeDao;
@Resource
private CaseClinicalArticleAuthorDao caseClinicalArticleAuthorDao;
@Resource
private CaseClinicalVideoDao caseClinicalVideoDao;
@Resource
private StatsCaseClinicalDao statsCaseClinicalDao;
@Resource
private StatsCaseClinicalHospitalDao statsCaseClinicalHospitalDao;
@Resource
private StatsCaseClinicalDoctorDao statsCaseClinicalDoctorDao;
@Resource
private CaseClinicalDoctorDao caseClinicalDoctorDao;
@Resource
private BasicHospitalDao basicHospitalDao;
@Resource
private CaseClinicalArticleLabelDao caseClinicalArticleLabelDao;
/**
* 获取首页数据-临床病例库
*/
public GetIndexClinicalDto GetIndexClinical(){
// 最新上线-2条
LambdaQueryWrapper<CaseClinicalArticleModel> caseClinicalArticleQueryWrapper = new LambdaQueryWrapper<>();
caseClinicalArticleQueryWrapper.eq(CaseClinicalArticleModel::getArticleStatus, 1) // 上线状态
.eq(CaseClinicalArticleModel::getDeleteStatus, 0) // 删除状态状态
.orderByDesc(CaseClinicalArticleModel::getPushDate) // 按发布时间倒序
.last("LIMIT 3"); // 只取2条记录
List<CaseClinicalArticleModel> latestArticles = caseClinicalArticleDao.selectList(caseClinicalArticleQueryWrapper);
for (CaseClinicalArticleModel article : latestArticles) {
// 查找作者
LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, article.getArticleId());
List<CaseClinicalArticleAuthorModel> caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper);
for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 查询医生所属医院
BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId());
caseClinicalDoctor.setBasicHospital(basicHospital);
author.setCaseClinicalDoctor(caseClinicalDoctor);
}
article.setAuthor(caseClinicalArticleAuthors);
// 查找标签
LambdaQueryWrapper<CaseClinicalArticleLabelModel> labelQueryWrapper = new LambdaQueryWrapper<>();
labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, article.getArticleId());
List<CaseClinicalArticleLabelModel> caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper);
article.setLabel(caseClinicalArticleLabels);
}
// 最多阅读-2条
caseClinicalArticleQueryWrapper = new LambdaQueryWrapper<>();
caseClinicalArticleQueryWrapper.eq(CaseClinicalArticleModel::getArticleStatus, 1) // 上线状态
.eq(CaseClinicalArticleModel::getDeleteStatus, 0) // 删除状态状态
.orderByDesc(CaseClinicalArticleModel::getReadNum) // 按阅读量倒序
.last("LIMIT 3"); // 只取2条记录
List<CaseClinicalArticleModel> mostReadArticles = caseClinicalArticleDao.selectList(caseClinicalArticleQueryWrapper);
for (CaseClinicalArticleModel article : mostReadArticles) {
// 根据文章ID查找作者
LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, article.getArticleId());
List<CaseClinicalArticleAuthorModel> caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper);
for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 查询医生所属医院
BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId());
caseClinicalDoctor.setBasicHospital(basicHospital);
author.setCaseClinicalDoctor(caseClinicalDoctor);
}
article.setAuthor(caseClinicalArticleAuthors);
// 查找标签
LambdaQueryWrapper<CaseClinicalArticleLabelModel> labelQueryWrapper = new LambdaQueryWrapper<>();
labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, article.getArticleId());
List<CaseClinicalArticleLabelModel> caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper);
article.setLabel(caseClinicalArticleLabels);
// 删除内容字段
article.setArticleContent("");
}
// 医院病例库推荐-2条
QueryWrapper<StatsCaseClinicalHospitalModel> statsCaseClinicalHospitalQueryWrapper = new QueryWrapper<>();
statsCaseClinicalHospitalQueryWrapper
.apply("article_num + video_num > {0}", 10) // 添加条件
.orderByDesc("article_num + video_num") // 按文章数量倒序
.orderByDesc("last_push_date")
.last("LIMIT 3"); // 只取2条记录
List<StatsCaseClinicalHospitalModel> statsCaseClinicalHospitals = statsCaseClinicalHospitalDao.selectList(statsCaseClinicalHospitalQueryWrapper);
for (StatsCaseClinicalHospitalModel hospital : statsCaseClinicalHospitals) {
// 查询医院基础数据
BasicHospitalModel basicHospital = basicHospitalDao.selectById(hospital.getHospitalId());
hospital.setBasicHospital(basicHospital);
}
// 医生病例库推荐-2条
QueryWrapper<StatsCaseClinicalDoctorModel> statsCaseClinicalDoctorQueryWrapper = new QueryWrapper<>();
statsCaseClinicalDoctorQueryWrapper
.apply("article_num + video_num > {0}", 5) // 添加条件
.orderByDesc("article_num + video_num") // 按文章数量倒序
.orderByDesc("last_push_date")
.last("LIMIT 3"); // 只取2条记录
List<StatsCaseClinicalDoctorModel> statsCaseClinicalDoctors = statsCaseClinicalDoctorDao.selectList(statsCaseClinicalDoctorQueryWrapper);
for (StatsCaseClinicalDoctorModel doctor : statsCaseClinicalDoctors) {
// 查询医生数据
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(doctor.getDoctorId());
// 查询医生所属医院
BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId());
caseClinicalDoctor.setBasicHospital(basicHospital);
doctor.setCaseClinicalDoctor(caseClinicalDoctor);
}
// 处理返回值
GetIndexClinicalDto g = new GetIndexClinicalDto();
// 最新上线-2条
g.setNewArticles(CaseClinicalArticleDto.GetListDto(latestArticles));
// 最多阅读-2条
g.setMostReadArticles(CaseClinicalArticleDto.GetListDto(mostReadArticles));
// 医院病例库推荐-2条
g.setRecommendHospital(RecommendHospitalDto.GetListDto(statsCaseClinicalHospitals));
// 医生病例库推荐-2条
g.setRecommendDoctor(RecommendDoctorDto.GetListDto(statsCaseClinicalDoctors));
return g;
}
// /**
// * 获取首页数据-病例交流
// */
// public GetIndexExchangeDto GetIndexExchange(){
// // 精选-3条
// LambdaQueryWrapper<CaseExchangeModel> selectedQueryWrapper = new LambdaQueryWrapper<>();
// selectedQueryWrapper.eq(CaseExchangeModel::getExchangeStatus, 1) // 上线状态
// .eq(CaseExchangeModel::getIsSelected, 1)
// .orderByDesc(CaseExchangeModel::getCreatedAt) // 按发布时间倒序
// .last("LIMIT 3"); // 只取2条记录
// List<CaseExchangeModel> selectedExchanges = caseExchangeDao.selectList(selectedQueryWrapper);
//
// // 最新收录-分页
//
//
//
// // 最新上线-2条
// LambdaQueryWrapper<CaseClinicalArticleModel> caseClinicalArticleQueryWrapper = new LambdaQueryWrapper<>();
// caseClinicalArticleQueryWrapper.eq(CaseClinicalArticleModel::getArticleStatus, 1) // 上线状态
// .orderByDesc(CaseClinicalArticleModel::getCreatedAt) // 按发布时间倒序
// .last("LIMIT 2"); // 只取2条记录
// List<CaseClinicalArticleModel> latestArticles = caseClinicalArticleDao.selectList(caseClinicalArticleQueryWrapper);
// for (CaseClinicalArticleModel article : latestArticles) {
// // 查找作者
// LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
// authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, article.getArticleId());
// List<CaseClinicalArticleAuthorModel> caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper);
// for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) {
// // 查询医生
// CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
//
// // 查询医生所属医院
// BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId());
// caseClinicalDoctor.setBasicHospital(basicHospital);
//
// author.setCaseClinicalDoctor(caseClinicalDoctor);
// }
//
// article.setAuthor(caseClinicalArticleAuthors);
//
// // 查找标签
// LambdaQueryWrapper<CaseClinicalArticleLabelModel> labelQueryWrapper = new LambdaQueryWrapper<>();
// labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, article.getArticleId());
// List<CaseClinicalArticleLabelModel> caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper);
// article.setLabel(caseClinicalArticleLabels);
// }
//
//
// // 最多阅读-2条
// caseClinicalArticleQueryWrapper = new LambdaQueryWrapper<>();
// caseClinicalArticleQueryWrapper.eq(CaseClinicalArticleModel::getArticleStatus, 1) // 上线状态
// .orderByDesc(CaseClinicalArticleModel::getReadNum) // 按阅读量倒序
// .last("LIMIT 2"); // 只取2条记录
// List<CaseClinicalArticleModel> mostReadArticles = caseClinicalArticleDao.selectList(caseClinicalArticleQueryWrapper);
// for (CaseClinicalArticleModel article : mostReadArticles) {
// // 根据文章ID查找作者
// LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
// authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, article.getArticleId());
// List<CaseClinicalArticleAuthorModel> caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper);
// for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) {
// // 查询医生
// CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
//
// // 查询医生所属医院
// BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId());
// caseClinicalDoctor.setBasicHospital(basicHospital);
//
// author.setCaseClinicalDoctor(caseClinicalDoctor);
// }
//
// article.setAuthor(caseClinicalArticleAuthors);
//
// // 查找标签
// LambdaQueryWrapper<CaseClinicalArticleLabelModel> labelQueryWrapper = new LambdaQueryWrapper<>();
// labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, article.getArticleId());
// List<CaseClinicalArticleLabelModel> caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper);
// article.setLabel(caseClinicalArticleLabels);
//
// // 删除内容字段
// article.setArticleContent("");
// }
//
// // 医院病例库推荐-2条
// LambdaQueryWrapper<StatsCaseClinicalHospitalModel> statsCaseClinicalHospitalModelQueryWrapper = new LambdaQueryWrapper<>();
// statsCaseClinicalHospitalModelQueryWrapper.orderByDesc(StatsCaseClinicalHospitalModel::getArticleNum) // 按文章数量倒序
// .last("LIMIT 2"); // 只取2条记录
// List<StatsCaseClinicalHospitalModel> statsCaseClinicalHospitals = statsCaseClinicalHospitalDao.selectList(statsCaseClinicalHospitalModelQueryWrapper);
// for (StatsCaseClinicalHospitalModel hospital : statsCaseClinicalHospitals) {
// // 查询医院基础数据
// BasicHospitalModel basicHospital = basicHospitalDao.selectById(hospital.getHospitalId());
// hospital.setBasicHospital(basicHospital);
// }
//
// // 医生病例库推荐-2条
// LambdaQueryWrapper<StatsCaseClinicalDoctorModel> statsCaseClinicalDoctorModelQueryWrapper = new LambdaQueryWrapper<>();
// statsCaseClinicalDoctorModelQueryWrapper.orderByDesc(StatsCaseClinicalDoctorModel::getArticleNum) // 按文章数量倒序
// .last("LIMIT 2"); // 只取2条记录
// List<StatsCaseClinicalDoctorModel> statsCaseClinicalDoctors = statsCaseClinicalDoctorDao.selectList(statsCaseClinicalDoctorModelQueryWrapper);
// for (StatsCaseClinicalDoctorModel doctor : statsCaseClinicalDoctors) {
// // 查询医生数据
// CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(doctor.getDoctorId());
//
// // 查询医生所属医院
// BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId());
// caseClinicalDoctor.setBasicHospital(basicHospital);
//
// doctor.setCaseClinicalDoctor(caseClinicalDoctor);
// }
//
// // 处理返回值
// GetIndexClinicalDto g = new GetIndexClinicalDto();
//
// // 最新上线-2条
// g.setNewArticles(CaseClinicalArticleDto.GetListDto(latestArticles));
//
// // 最多阅读-2条
// g.setMostReadArticles(CaseClinicalArticleDto.GetListDto(mostReadArticles));
//
// // 医院病例库推荐-2条
// g.setRecommendHospital(RecommendHospitalDto.GetListDto(statsCaseClinicalHospitals));
//
// // 医生病例库推荐-2条
// g.setRecommendDoctor(RecommendDoctorDto.GetListDto(statsCaseClinicalDoctors));
// return g;
// }
}