From ca409dcac6cb1c3574d041579fc1c80c729be520 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Tue, 29 Jul 2025 15:28:33 +0800 Subject: [PATCH] 1111 --- .../StatsCaseClinicalController.java | 57 ++++- .../caseData/dao/CaseClinicalArticleDao.java | 30 +++ .../caseData/dao/CaseClinicalVideoDao.java | 14 ++ .../model/StatsCaseClinicalDoctorModel.java | 6 + .../service/CaseClinicalArticleService.java | 139 ++++++------ .../caseData/service/CaseClinicalService.java | 212 +++++++++++++++++- .../caseData/service/UserCaseReadService.java | 2 +- .../mapper/CaseClinicalArticleMapper.xml | 64 +++++- .../mapper/CaseClinicalVideoMapper.xml | 33 +++ 9 files changed, 472 insertions(+), 85 deletions(-) diff --git a/src/main/java/com/example/caseData/controller/StatsCaseClinicalController.java b/src/main/java/com/example/caseData/controller/StatsCaseClinicalController.java index 83b4456..e385174 100644 --- a/src/main/java/com/example/caseData/controller/StatsCaseClinicalController.java +++ b/src/main/java/com/example/caseData/controller/StatsCaseClinicalController.java @@ -2,10 +2,10 @@ package com.example.caseData.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.example.caseData.common.Response; -import com.example.caseData.dao.StatsCaseClinicalDao; -import com.example.caseData.dao.StatsCaseClinicalDoctorDao; -import com.example.caseData.dao.StatsCaseClinicalHospitalDao; -import com.example.caseData.dao.StatsCaseClinicalLabelDao; +import com.example.caseData.dao.*; +import com.example.caseData.dto.caseClinicalArticle.CaseClinicalArticleDto; +import com.example.caseData.dto.caseClinicalVideo.CaseClinicalVideoDto; +import com.example.caseData.dto.caseExchange.CaseExchangeDto; import com.example.caseData.dto.statsCaseClinical.StatsCaseClinicalDto; import com.example.caseData.dto.statsCaseClinicalDoctor.StatsCaseClinicalDoctorDto; import com.example.caseData.dto.statsCaseClinicalHospital.StatsCaseClinicalHospitalDto; @@ -17,6 +17,8 @@ import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("/api") public class StatsCaseClinicalController extends BaseController { @@ -32,6 +34,12 @@ public class StatsCaseClinicalController extends BaseController { @Resource private StatsCaseClinicalLabelDao statsCaseClinicalLabelDao; + @Resource + private CaseClinicalArticleDao caseClinicalArticleDao; + + @Resource + private CaseClinicalVideoDao caseClinicalVideoDao; + /** * 临床病例库-统计 */ @@ -100,17 +108,42 @@ public class StatsCaseClinicalController extends BaseController { public Response getClinicalStatsLabel( @Validated() @ModelAttribute getClinicalStatsLabel request ){ - // 统计表-病例库-临床 - LambdaQueryWrapper statsCaseClinicalLabelQueryWrapper = new LambdaQueryWrapper<>(); - statsCaseClinicalLabelQueryWrapper.eq(StatsCaseClinicalLabelModel::getLabelIden, request.getLabel_iden()); - StatsCaseClinicalLabelModel statsCaseClinicalLabel = statsCaseClinicalLabelDao.selectOne(statsCaseClinicalLabelQueryWrapper); + Integer articleReadNum = 0; + Integer videoReadNum = 0; - StatsCaseClinicalLabelDto g = StatsCaseClinicalLabelDto.GetDto(statsCaseClinicalLabel); - - if (g == null){ - return Response.success(new StatsCaseClinicalLabelDto()); + // 获取该标签下文章数据 + List caseClinicalArticles = caseClinicalArticleDao.getCaseClinicalArticleSearchList( + "", + "", + "", + request.getLabel_iden(), + null + ); + for (CaseClinicalArticleDto article : caseClinicalArticles){ + articleReadNum += article.getReadNum(); } + + // 获取该标签下视频数据 + List caseClinicalVideos = caseClinicalVideoDao.getCaseClinicalVideoSearchList( + "", + "", + "", + request.getLabel_iden(), + null + ); + for (CaseClinicalVideoDto video : caseClinicalVideos){ + videoReadNum += video.getReadNum(); + } + + + StatsCaseClinicalLabelDto g = new StatsCaseClinicalLabelDto(); + g.setStatsId("1"); + g.setArticleNum(caseClinicalArticles.size()); + g.setArticleReadNum(articleReadNum); + g.setVideoNum(caseClinicalVideos.size()); + g.setVideoReadNum(videoReadNum); + return Response.success(g); } } diff --git a/src/main/java/com/example/caseData/dao/CaseClinicalArticleDao.java b/src/main/java/com/example/caseData/dao/CaseClinicalArticleDao.java index d17b891..9352c8d 100644 --- a/src/main/java/com/example/caseData/dao/CaseClinicalArticleDao.java +++ b/src/main/java/com/example/caseData/dao/CaseClinicalArticleDao.java @@ -9,6 +9,8 @@ import com.example.caseData.model.CaseClinicalArticleModel; import org.apache.ibatis.annotations.*; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; +import java.util.List; import java.util.Map; @Mapper @@ -28,6 +30,20 @@ public interface CaseClinicalArticleDao extends BaseMapper order ); + /** + * 临床病例库-搜索 + * @param keyword 搜索关键词-标题/医生名称/标签名称 + * @param order 排序 + */ + List getCaseClinicalArticleSearchList( + @Param("keyword") String keyword, + @Param("hospitalId") String hospitalId, + @Param("doctorId") String doctorId, + @Param("labelIden") String labelIden, + @Param("order") Map order + ); + + /** * 临床病例库-搜索-数量 * @param keyword 搜索关键词-标题/医生名称/标签名称 @@ -61,4 +77,18 @@ public interface CaseClinicalArticleDao extends BaseMapper= #{numeral} THEN ${field} - #{numeral} ELSE 0 END " + "WHERE article_id = #{articleId}") int dec(@Param("articleId") Long articleId, @Param("field") String field, @Param("numeral") int numeral); + + /** + * 根据医院ID查询该医院最后一篇文章的发表时间 + * @param hospitalId 医院ID + * @return 最新发表时间,无数据时返回 null + */ + LocalDateTime selectLastArticlePushDateByHospitalId(@Param("hospitalId") Long hospitalId); + + /** + * 根据医生ID查询该医生最后一篇文章的发表时间 + * @param doctorId 医院ID + * @return 最新发表时间,无数据时返回 null + */ + LocalDateTime selectLastArticlePushDateByDoctorId(@Param("doctorId") Long doctorId); } \ No newline at end of file diff --git a/src/main/java/com/example/caseData/dao/CaseClinicalVideoDao.java b/src/main/java/com/example/caseData/dao/CaseClinicalVideoDao.java index a42ab54..511c848 100644 --- a/src/main/java/com/example/caseData/dao/CaseClinicalVideoDao.java +++ b/src/main/java/com/example/caseData/dao/CaseClinicalVideoDao.java @@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Update; +import java.util.List; import java.util.Map; @Mapper @@ -29,6 +30,19 @@ public interface CaseClinicalVideoDao extends BaseMapper @Param("order") Map order ); + /** + * 临床病例库-搜索 + * @param keyword 搜索关键词-标题/医生名称/标签名称 + * @param order 排序 + */ + List getCaseClinicalVideoSearchList( + @Param("keyword") String keyword, + @Param("hospitalId") String hospitalId, + @Param("doctorId") String doctorId, + @Param("labelIden") String labelIden, + @Param("order") Map order + ); + /** * 临床病例库-搜索-数量 * @param keyword 搜索关键词-标题/医生名称/标签名称 diff --git a/src/main/java/com/example/caseData/model/StatsCaseClinicalDoctorModel.java b/src/main/java/com/example/caseData/model/StatsCaseClinicalDoctorModel.java index 54baa9a..84e1987 100644 --- a/src/main/java/com/example/caseData/model/StatsCaseClinicalDoctorModel.java +++ b/src/main/java/com/example/caseData/model/StatsCaseClinicalDoctorModel.java @@ -48,6 +48,12 @@ public class StatsCaseClinicalDoctorModel { @TableField("article_comment_num") private Integer articleCommentNum; + /** + * 最后一篇文章发表时间 + */ + @TableField("last_push_date") + private LocalDateTime lastPushDate; + /** * 数量-视频 */ diff --git a/src/main/java/com/example/caseData/service/CaseClinicalArticleService.java b/src/main/java/com/example/caseData/service/CaseClinicalArticleService.java index 1c2307a..79a7bee 100644 --- a/src/main/java/com/example/caseData/service/CaseClinicalArticleService.java +++ b/src/main/java/com/example/caseData/service/CaseClinicalArticleService.java @@ -86,7 +86,7 @@ public class CaseClinicalArticleService { } // 新增统计字段 - boolean r = IncClinicalArticleStats(articleId,2); + boolean r = IncClinicalArticleStats(articleId,2,1); if (!r){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return false; @@ -117,7 +117,7 @@ public class CaseClinicalArticleService { } // 减少文章的统计字段 - boolean r = DecClinicalArticleStats(articleId,2); + boolean r = DecClinicalArticleStats(articleId,2,1); if (!r){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return false; @@ -175,7 +175,7 @@ public class CaseClinicalArticleService { } // 新增文章的统计字段 - boolean r = IncClinicalArticleStats(articleId,3); + boolean r = IncClinicalArticleStats(articleId,3,1); if (!r){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return false; @@ -222,7 +222,7 @@ public class CaseClinicalArticleService { } // 减少文章的统计字段 - boolean r = DecClinicalArticleStats(String.valueOf(comment.getArticleId()),2); + boolean r = DecClinicalArticleStats(String.valueOf(comment.getArticleId()),2,1); if (!r){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return false; @@ -370,7 +370,7 @@ public class CaseClinicalArticleService { * @param type 类型:1:阅读量 2:收藏量 3:评论数 4:文章数 */ @Transactional - public boolean IncClinicalArticleStats(String articleId,Integer type){ + public boolean IncClinicalArticleStats(String articleId,Integer type,Integer num){ try { String caseClinicalArticleField = ""; // 具体文章 String statsCaseClinicalField = ""; // 全部文章 @@ -414,9 +414,9 @@ public class CaseClinicalArticleService { } if (!caseClinicalArticleField.isEmpty()){ - caseClinicalArticleDao.inc(Long.valueOf(articleId),caseClinicalArticleField,1); + caseClinicalArticleDao.inc(Long.valueOf(articleId),caseClinicalArticleField,num); } - statsCaseClinicalDao.inc(1L,statsCaseClinicalField,1); + statsCaseClinicalDao.inc(1L,statsCaseClinicalField,num); // 获取文章作者 LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); @@ -427,10 +427,10 @@ public class CaseClinicalArticleService { CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId()); // 减少医生文章数 - statsCaseClinicalHospitalDao.inc(caseClinicalDoctor.getHospitalId(),statsCaseClinicalHospitalField,1); + statsCaseClinicalHospitalDao.inc(caseClinicalDoctor.getHospitalId(),statsCaseClinicalHospitalField,num); // 减少医生文章数 - statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,1); + statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,num); } // 获取文章标签数据 @@ -438,7 +438,7 @@ public class CaseClinicalArticleService { labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, articleId); List caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper); for (CaseClinicalArticleLabelModel label : caseClinicalArticleLabels) { - statsCaseClinicalLabelDao.inc(label.getAppIden(),statsCaseClinicalLabelField,1); + statsCaseClinicalLabelDao.inc(label.getAppIden(),statsCaseClinicalLabelField,num); } return true; @@ -454,7 +454,7 @@ public class CaseClinicalArticleService { * @param type 类型:1:阅读量 2:收藏量 3:评论数 4:文章数 */ @Transactional - public boolean DecClinicalArticleStats(String articleId,Integer type){ + public boolean DecClinicalArticleStats(String articleId,Integer type,Integer num){ try { String caseClinicalArticleField = ""; // 具体文章 String statsCaseClinicalField = ""; // 全部文章 @@ -498,9 +498,9 @@ public class CaseClinicalArticleService { } if (!caseClinicalArticleField.isEmpty()){ - caseClinicalArticleDao.dec(Long.valueOf(articleId),caseClinicalArticleField,1); + caseClinicalArticleDao.dec(Long.valueOf(articleId),caseClinicalArticleField,num); } - statsCaseClinicalDao.dec(1L,statsCaseClinicalField,1); + statsCaseClinicalDao.dec(1L,statsCaseClinicalField,num); // 获取文章作者 LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); @@ -511,10 +511,10 @@ public class CaseClinicalArticleService { CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId()); // 减少医生文章数 - statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),statsCaseClinicalHospitalField,1); + statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),statsCaseClinicalHospitalField,num); // 减少医生文章数 - statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,1); + statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,num); } // 获取文章标签数据 @@ -522,7 +522,7 @@ public class CaseClinicalArticleService { labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, articleId); List caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper); for (CaseClinicalArticleLabelModel label : caseClinicalArticleLabels) { - statsCaseClinicalLabelDao.dec(label.getAppIden(),statsCaseClinicalLabelField,1); + statsCaseClinicalLabelDao.dec(label.getAppIden(),statsCaseClinicalLabelField,num); } return true; @@ -532,61 +532,62 @@ public class CaseClinicalArticleService { } } - /** - * 处理文章所属医院的数量统计 - */ - @Transactional - public boolean handleHospitalStat(String doctorId,Long oldHospitalId,String newHospitalId){ - try { - // 获取统计表医生数据 - LambdaQueryWrapper doctorQueryWrapper = new LambdaQueryWrapper<>(); - doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId); - StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper); - if (statsCaseClinicalDoctor == null){ - return true; - } - - // 获取旧医院数据 - StatsCaseClinicalHospitalModel statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectById(oldHospitalId); - if (statsCaseClinicalHospital == null){ - throw new BusinessException("操作失败"); - } - - // 减少数-文章 - statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_num",statsCaseClinicalDoctor.getArticleNum()); - - // 减少阅读数-文章 - statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum()); - - // 减少收藏数-文章 - statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum()); - - // 减少评论数-文章 - statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum()); - - // 减少数-视频 - statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_num",statsCaseClinicalDoctor.getVideoNum()); - - // 减少阅读数-视频 - statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum()); - - // 减少收藏数-视频 - statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum()); - - // 减少评论数-视频 - statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum()); - - // 最后一篇文章发表时间 - - } catch (Exception e) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - return false; - } +// /** +// * 处理文章所属医院的数量统计 +// */ +// @Transactional +// public boolean handleHospitalStat(String doctorId,Long oldHospitalId,String newHospitalId){ +// try { +// // 获取统计表医生数据 +// LambdaQueryWrapper doctorQueryWrapper = new LambdaQueryWrapper<>(); +// doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId); +// StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper); +// if (statsCaseClinicalDoctor == null){ +// return true; +// } +// +// // 获取旧医院数据 +// StatsCaseClinicalHospitalModel statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectById(oldHospitalId); +// if (statsCaseClinicalHospital == null){ +// throw new BusinessException("操作失败"); +// } +// +// // 减少数-文章 +// statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_num",statsCaseClinicalDoctor.getArticleNum()); +// +// // 减少阅读数-文章 +// statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum()); +// +// // 减少收藏数-文章 +// statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum()); +// +// // 减少评论数-文章 +// statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum()); +// +// // 减少数-视频 +// statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_num",statsCaseClinicalDoctor.getVideoNum()); +// +// // 减少阅读数-视频 +// statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum()); +// +// // 减少收藏数-视频 +// statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum()); +// +// // 减少评论数-视频 +// statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum()); +// +// // 最后一篇文章发表时间 +// +// } catch (Exception e) { +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// return false; +// } +// +// return true; +// +// } - return true; - - } /** * 检测作品状态 diff --git a/src/main/java/com/example/caseData/service/CaseClinicalService.java b/src/main/java/com/example/caseData/service/CaseClinicalService.java index 8ee4eae..89d8be6 100644 --- a/src/main/java/com/example/caseData/service/CaseClinicalService.java +++ b/src/main/java/com/example/caseData/service/CaseClinicalService.java @@ -1,15 +1,21 @@ package com.example.caseData.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.example.caseData.dao.CaseClinicalArticleDao; import com.example.caseData.dao.StatsCaseClinicalDoctorDao; import com.example.caseData.dao.StatsCaseClinicalHospitalDao; import com.example.caseData.dao.StatsCaseClinicalLabelDao; +import com.example.caseData.exception.BusinessException; +import com.example.caseData.model.CaseClinicalArticleModel; import com.example.caseData.model.StatsCaseClinicalDoctorModel; import com.example.caseData.model.StatsCaseClinicalHospitalModel; import com.example.caseData.model.StatsCaseClinicalLabelModel; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; + +import java.time.LocalDateTime; @Service public class CaseClinicalService { @@ -22,6 +28,9 @@ public class CaseClinicalService { @Resource private StatsCaseClinicalHospitalDao statsCaseClinicalHospitalDao; + @Resource + private CaseClinicalArticleDao caseClinicalArticleDao; + // 新增标签统计 @Transactional public void AddStatsCaseClinicalLabel(String labelIden,String labelName){ @@ -38,7 +47,7 @@ public class CaseClinicalService { // 新增医生统计 @Transactional - public void AddStatsCaseClinicalDoctor(String doctorId){ + public StatsCaseClinicalDoctorModel AddStatsCaseClinicalDoctor(String doctorId){ LambdaQueryWrapper mapQueryWrapper = new LambdaQueryWrapper<>(); mapQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId); StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(mapQueryWrapper); @@ -47,11 +56,13 @@ public class CaseClinicalService { statsCaseClinicalDoctor.setDoctorId(Long.valueOf(doctorId)); statsCaseClinicalDoctorDao.insert(statsCaseClinicalDoctor); } + + return statsCaseClinicalDoctor; } // 新增医院统计 @Transactional - public void AddStatsCaseClinicalHospital(String hospitalId){ + public StatsCaseClinicalHospitalModel AddStatsCaseClinicalHospital(String hospitalId){ LambdaQueryWrapper mapQueryWrapper = new LambdaQueryWrapper<>(); mapQueryWrapper.eq(StatsCaseClinicalHospitalModel::getHospitalId, hospitalId); StatsCaseClinicalHospitalModel statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectOne(mapQueryWrapper); @@ -60,5 +71,202 @@ public class CaseClinicalService { statsCaseClinicalHospital.setHospitalId(Long.valueOf(hospitalId)); statsCaseClinicalHospitalDao.insert(statsCaseClinicalHospital); } + + return statsCaseClinicalHospital; } + + /** + * 处理文章所属医院的数量统计 + */ + @Transactional + public boolean handleHospitalStat(Long doctorId,Long oldHospitalId,Long newHospitalId){ + try { + // 获取统计表医生数据 + LambdaQueryWrapper doctorQueryWrapper = new LambdaQueryWrapper<>(); + doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId); + StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper); + if (statsCaseClinicalDoctor == null){ + return true; + } + + // 获取旧医院数据 + LambdaQueryWrapper hospitalQueryWrapper = new LambdaQueryWrapper<>(); + hospitalQueryWrapper.eq(StatsCaseClinicalHospitalModel::getHospitalId, oldHospitalId); + StatsCaseClinicalHospitalModel statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectOne(hospitalQueryWrapper); + if (statsCaseClinicalHospital == null){ + throw new BusinessException("操作失败"); + } + + // 减少数-文章 + statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_num",statsCaseClinicalDoctor.getArticleNum()); + + // 减少阅读数-文章 + statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum()); + + // 减少收藏数-文章 + statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum()); + + // 减少评论数-文章 + statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum()); + + // 减少数-视频 + statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_num",statsCaseClinicalDoctor.getVideoNum()); + + // 减少阅读数-视频 + statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum()); + + // 减少收藏数-视频 + statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum()); + + // 减少评论数-视频 + statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum()); + + // 最后一篇文章发表时间 + LocalDateTime lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByHospitalId(oldHospitalId); + if (lastPushDate != null){ + statsCaseClinicalHospital.setLastPushDate(lastPushDate); + statsCaseClinicalHospitalDao.updateById(statsCaseClinicalHospital); + } + + // 获取新医院数据 + hospitalQueryWrapper = new LambdaQueryWrapper<>(); + hospitalQueryWrapper.eq(StatsCaseClinicalHospitalModel::getHospitalId, newHospitalId); + statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectOne(hospitalQueryWrapper); + if (statsCaseClinicalHospital == null){ + // 新增新医院 + statsCaseClinicalHospital = AddStatsCaseClinicalHospital(String.valueOf(newHospitalId)); + } + + // 增加数-文章 + statsCaseClinicalHospitalDao.inc(newHospitalId,"article_num",statsCaseClinicalDoctor.getArticleNum()); + + // 增加阅读数-文章 + statsCaseClinicalHospitalDao.inc(newHospitalId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum()); + + // 增加收藏数-文章 + statsCaseClinicalHospitalDao.inc(newHospitalId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum()); + + // 增加评论数-文章 + statsCaseClinicalHospitalDao.inc(newHospitalId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum()); + + // 增加数-视频 + statsCaseClinicalHospitalDao.inc(newHospitalId,"video_num",statsCaseClinicalDoctor.getVideoNum()); + + // 增加阅读数-视频 + statsCaseClinicalHospitalDao.inc(newHospitalId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum()); + + // 增加收藏数-视频 + statsCaseClinicalHospitalDao.inc(newHospitalId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum()); + + // 增加评论数-视频 + statsCaseClinicalHospitalDao.inc(newHospitalId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum()); + + // 最后一篇文章发表时间 + lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByHospitalId(newHospitalId); + if (lastPushDate != null){ + statsCaseClinicalHospital.setLastPushDate(lastPushDate); + statsCaseClinicalHospitalDao.updateById(statsCaseClinicalHospital); + } + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return false; + } + + return true; + + } + + /** + * 处理文章所属医生的数量统计 + */ + @Transactional + public boolean handleDoctorStat(Long oldDoctorId,Long newDoctorId){ + try { + // 获取统计表医生数据-旧 + LambdaQueryWrapper doctorQueryWrapper = new LambdaQueryWrapper<>(); + doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, oldDoctorId); + StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper); + if (statsCaseClinicalDoctor == null){ + return true; + } + + // 减少数-文章 + statsCaseClinicalDoctorDao.dec(oldDoctorId,"article_num",statsCaseClinicalDoctor.getArticleNum()); + + // 减少阅读数-文章 + statsCaseClinicalDoctorDao.dec(oldDoctorId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum()); + + // 减少收藏数-文章 + statsCaseClinicalDoctorDao.dec(oldDoctorId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum()); + + // 减少评论数-文章 + statsCaseClinicalDoctorDao.dec(oldDoctorId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum()); + + // 减少数-视频 + statsCaseClinicalDoctorDao.dec(oldDoctorId,"video_num",statsCaseClinicalDoctor.getVideoNum()); + + // 减少阅读数-视频 + statsCaseClinicalDoctorDao.dec(oldDoctorId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum()); + + // 减少收藏数-视频 + statsCaseClinicalDoctorDao.dec(oldDoctorId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum()); + + // 减少评论数-视频 + statsCaseClinicalDoctorDao.dec(oldDoctorId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum()); + + // 最后一篇文章发表时间 + LocalDateTime lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByDoctorId(oldDoctorId); + if (lastPushDate != null){ + statsCaseClinicalDoctor.setLastPushDate(lastPushDate); + statsCaseClinicalDoctorDao.updateById(statsCaseClinicalDoctor); + } + + // 获取统计表医生数据-新 + doctorQueryWrapper = new LambdaQueryWrapper<>(); + doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, newDoctorId); + statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper); + if (statsCaseClinicalDoctor == null){ + // 新增新医生 + statsCaseClinicalDoctor = AddStatsCaseClinicalDoctor(String.valueOf(newDoctorId)); + } + + // 增加数-文章 + statsCaseClinicalDoctorDao.inc(newDoctorId,"article_num",statsCaseClinicalDoctor.getArticleNum()); + + // 增加阅读数-文章 + statsCaseClinicalDoctorDao.inc(newDoctorId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum()); + + // 增加收藏数-文章 + statsCaseClinicalDoctorDao.inc(newDoctorId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum()); + + // 增加评论数-文章 + statsCaseClinicalDoctorDao.inc(newDoctorId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum()); + + // 增加数-视频 + statsCaseClinicalDoctorDao.inc(newDoctorId,"video_num",statsCaseClinicalDoctor.getVideoNum()); + + // 增加阅读数-视频 + statsCaseClinicalDoctorDao.inc(newDoctorId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum()); + + // 增加收藏数-视频 + statsCaseClinicalDoctorDao.inc(newDoctorId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum()); + + // 增加评论数-视频 + statsCaseClinicalDoctorDao.inc(newDoctorId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum()); + + // 最后一篇文章发表时间 + lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByDoctorId(newDoctorId); + if (lastPushDate != null){ + statsCaseClinicalDoctor.setLastPushDate(lastPushDate); + statsCaseClinicalDoctorDao.updateById(statsCaseClinicalDoctor); + } + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return false; + } + + return true; + } + + } diff --git a/src/main/java/com/example/caseData/service/UserCaseReadService.java b/src/main/java/com/example/caseData/service/UserCaseReadService.java index 09277cf..08a9544 100644 --- a/src/main/java/com/example/caseData/service/UserCaseReadService.java +++ b/src/main/java/com/example/caseData/service/UserCaseReadService.java @@ -65,7 +65,7 @@ public class UserCaseReadService { // 文章 if (request.getType() == 1){ // 新增统计字段 - boolean r = caseClinicalArticleService.IncClinicalArticleStats(request.getId(),1); + boolean r = caseClinicalArticleService.IncClinicalArticleStats(request.getId(),1,1); if (!r){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return false; diff --git a/src/main/resources/mapper/CaseClinicalArticleMapper.xml b/src/main/resources/mapper/CaseClinicalArticleMapper.xml index b3447a5..9696059 100644 --- a/src/main/resources/mapper/CaseClinicalArticleMapper.xml +++ b/src/main/resources/mapper/CaseClinicalArticleMapper.xml @@ -86,6 +86,49 @@ + + - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/CaseClinicalVideoMapper.xml b/src/main/resources/mapper/CaseClinicalVideoMapper.xml index 3befa13..0f1ebb3 100644 --- a/src/main/resources/mapper/CaseClinicalVideoMapper.xml +++ b/src/main/resources/mapper/CaseClinicalVideoMapper.xml @@ -52,6 +52,39 @@ + +