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 caseClinicalArticleQueryWrapper = new LambdaQueryWrapper<>(); caseClinicalArticleQueryWrapper.eq(CaseClinicalArticleModel::getArticleStatus, 1) // 上线状态 .eq(CaseClinicalArticleModel::getDeleteStatus, 0) // 删除状态状态 .orderByDesc(CaseClinicalArticleModel::getPushDate) // 按发布时间倒序 .last("LIMIT 3"); // 只取2条记录 List latestArticles = caseClinicalArticleDao.selectList(caseClinicalArticleQueryWrapper); for (CaseClinicalArticleModel article : latestArticles) { // 查找作者 LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, article.getArticleId()); List 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 labelQueryWrapper = new LambdaQueryWrapper<>(); labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, article.getArticleId()); List 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 mostReadArticles = caseClinicalArticleDao.selectList(caseClinicalArticleQueryWrapper); for (CaseClinicalArticleModel article : mostReadArticles) { // 根据文章ID查找作者 LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, article.getArticleId()); List 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 labelQueryWrapper = new LambdaQueryWrapper<>(); labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, article.getArticleId()); List caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper); article.setLabel(caseClinicalArticleLabels); // 删除内容字段 article.setArticleContent(""); } // 医院病例库推荐-2条 QueryWrapper statsCaseClinicalHospitalQueryWrapper = new QueryWrapper<>(); statsCaseClinicalHospitalQueryWrapper.orderByDesc("article_num + video_num") // 按文章数量倒序 .orderByDesc("last_push_date") .last("LIMIT 3"); // 只取2条记录 List statsCaseClinicalHospitals = statsCaseClinicalHospitalDao.selectList(statsCaseClinicalHospitalQueryWrapper); for (StatsCaseClinicalHospitalModel hospital : statsCaseClinicalHospitals) { // 查询医院基础数据 BasicHospitalModel basicHospital = basicHospitalDao.selectById(hospital.getHospitalId()); hospital.setBasicHospital(basicHospital); } // 医生病例库推荐-2条 QueryWrapper statsCaseClinicalDoctorQueryWrapper = new QueryWrapper<>(); statsCaseClinicalDoctorQueryWrapper.orderByDesc("article_num + video_num") // 按文章数量倒序 .orderByDesc("last_push_date") .last("LIMIT 3"); // 只取2条记录 List 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 selectedQueryWrapper = new LambdaQueryWrapper<>(); // selectedQueryWrapper.eq(CaseExchangeModel::getExchangeStatus, 1) // 上线状态 // .eq(CaseExchangeModel::getIsSelected, 1) // .orderByDesc(CaseExchangeModel::getCreatedAt) // 按发布时间倒序 // .last("LIMIT 3"); // 只取2条记录 // List selectedExchanges = caseExchangeDao.selectList(selectedQueryWrapper); // // // 最新收录-分页 // // // // // 最新上线-2条 // LambdaQueryWrapper caseClinicalArticleQueryWrapper = new LambdaQueryWrapper<>(); // caseClinicalArticleQueryWrapper.eq(CaseClinicalArticleModel::getArticleStatus, 1) // 上线状态 // .orderByDesc(CaseClinicalArticleModel::getCreatedAt) // 按发布时间倒序 // .last("LIMIT 2"); // 只取2条记录 // List latestArticles = caseClinicalArticleDao.selectList(caseClinicalArticleQueryWrapper); // for (CaseClinicalArticleModel article : latestArticles) { // // 查找作者 // LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); // authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, article.getArticleId()); // List 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 labelQueryWrapper = new LambdaQueryWrapper<>(); // labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, article.getArticleId()); // List caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper); // article.setLabel(caseClinicalArticleLabels); // } // // // // 最多阅读-2条 // caseClinicalArticleQueryWrapper = new LambdaQueryWrapper<>(); // caseClinicalArticleQueryWrapper.eq(CaseClinicalArticleModel::getArticleStatus, 1) // 上线状态 // .orderByDesc(CaseClinicalArticleModel::getReadNum) // 按阅读量倒序 // .last("LIMIT 2"); // 只取2条记录 // List mostReadArticles = caseClinicalArticleDao.selectList(caseClinicalArticleQueryWrapper); // for (CaseClinicalArticleModel article : mostReadArticles) { // // 根据文章ID查找作者 // LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); // authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, article.getArticleId()); // List 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 labelQueryWrapper = new LambdaQueryWrapper<>(); // labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, article.getArticleId()); // List caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper); // article.setLabel(caseClinicalArticleLabels); // // // 删除内容字段 // article.setArticleContent(""); // } // // // 医院病例库推荐-2条 // LambdaQueryWrapper statsCaseClinicalHospitalModelQueryWrapper = new LambdaQueryWrapper<>(); // statsCaseClinicalHospitalModelQueryWrapper.orderByDesc(StatsCaseClinicalHospitalModel::getArticleNum) // 按文章数量倒序 // .last("LIMIT 2"); // 只取2条记录 // List statsCaseClinicalHospitals = statsCaseClinicalHospitalDao.selectList(statsCaseClinicalHospitalModelQueryWrapper); // for (StatsCaseClinicalHospitalModel hospital : statsCaseClinicalHospitals) { // // 查询医院基础数据 // BasicHospitalModel basicHospital = basicHospitalDao.selectById(hospital.getHospitalId()); // hospital.setBasicHospital(basicHospital); // } // // // 医生病例库推荐-2条 // LambdaQueryWrapper statsCaseClinicalDoctorModelQueryWrapper = new LambdaQueryWrapper<>(); // statsCaseClinicalDoctorModelQueryWrapper.orderByDesc(StatsCaseClinicalDoctorModel::getArticleNum) // 按文章数量倒序 // .last("LIMIT 2"); // 只取2条记录 // List 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; // } }