From 59de0d8ea17a4283e18545e1809bd3dcd0769e91 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Fri, 25 Jul 2025 16:54:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E9=87=8F=E4=B8=BA0=E7=9A=84=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../caseData/dao/CaseClinicalVideoDao.java | 5 +- .../dao/StatsCaseClinicalLabelDao.java | 4 +- .../caseData/dao/StatsCaseExchangeDao.java | 4 +- .../dao/StatsCaseExchangeUserDao.java | 4 +- .../service/CaseClinicalArticleService.java | 87 ++++++++---------- .../service/CaseClinicalVideoService.java | 88 ++++++++----------- 6 files changed, 91 insertions(+), 101 deletions(-) diff --git a/src/main/java/com/example/caseData/dao/CaseClinicalVideoDao.java b/src/main/java/com/example/caseData/dao/CaseClinicalVideoDao.java index 00d778f..a42ab54 100644 --- a/src/main/java/com/example/caseData/dao/CaseClinicalVideoDao.java +++ b/src/main/java/com/example/caseData/dao/CaseClinicalVideoDao.java @@ -50,6 +50,7 @@ public interface CaseClinicalVideoDao extends BaseMapper @Update("UPDATE case_clinical_video SET ${field} = ${field} + #{numeral} WHERE video_id = #{videoId}") int inc(@Param("videoId") Long articleId, @Param("field") String field, @Param("numeral") int numeral); + /** * Dec 自减 * @@ -58,6 +59,8 @@ public interface CaseClinicalVideoDao extends BaseMapper * @param numeral 减少的数值 * @return 更新的行数 */ - @Update("UPDATE case_clinical_video SET ${field} = ${field} - #{numeral} WHERE video_id = #{videoId}") + @Update("UPDATE case_clinical_video " + + "SET ${field} = CASE WHEN ${field} >= #{numeral} THEN ${field} - #{numeral} ELSE 0 END " + + "WHERE video_id = #{videoId}") int dec(@Param("videoId") Long articleId, @Param("field") String field, @Param("numeral") int numeral); } \ No newline at end of file diff --git a/src/main/java/com/example/caseData/dao/StatsCaseClinicalLabelDao.java b/src/main/java/com/example/caseData/dao/StatsCaseClinicalLabelDao.java index 4ee3729..ba46d98 100644 --- a/src/main/java/com/example/caseData/dao/StatsCaseClinicalLabelDao.java +++ b/src/main/java/com/example/caseData/dao/StatsCaseClinicalLabelDao.java @@ -44,6 +44,8 @@ public interface StatsCaseClinicalLabelDao extends BaseMapper= #{numeral} THEN ${field} - #{numeral} ELSE 0 END " + + "WHERE label_iden = #{labelIden}") int dec(@Param("labelIden") Long labelIden, @Param("field") String field, @Param("numeral") int numeral); } diff --git a/src/main/java/com/example/caseData/dao/StatsCaseExchangeDao.java b/src/main/java/com/example/caseData/dao/StatsCaseExchangeDao.java index 14739a5..460f101 100644 --- a/src/main/java/com/example/caseData/dao/StatsCaseExchangeDao.java +++ b/src/main/java/com/example/caseData/dao/StatsCaseExchangeDao.java @@ -25,6 +25,8 @@ public interface StatsCaseExchangeDao extends BaseMapper * @param numeral 减少的数值 * @return 更新的行数 */ - @Update("UPDATE stats_case_exchange SET ${field} = ${field} - #{numeral} WHERE stats_id = #{statsId}") + @Update("UPDATE stats_case_exchange " + + "SET ${field} = CASE WHEN ${field} >= #{numeral} THEN ${field} - #{numeral} ELSE 0 END " + + "WHERE stats_id = #{statsId}") int dec(@Param("statsId") Long statsId, @Param("field") String field, @Param("numeral") int numeral); } \ No newline at end of file diff --git a/src/main/java/com/example/caseData/dao/StatsCaseExchangeUserDao.java b/src/main/java/com/example/caseData/dao/StatsCaseExchangeUserDao.java index e0da97a..3711603 100644 --- a/src/main/java/com/example/caseData/dao/StatsCaseExchangeUserDao.java +++ b/src/main/java/com/example/caseData/dao/StatsCaseExchangeUserDao.java @@ -32,6 +32,8 @@ public interface StatsCaseExchangeUserDao extends BaseMapper= #{numeral} THEN ${field} - #{numeral} ELSE 0 END " + + "WHERE user_id = #{userId}") int dec(@Param("userId") Long userId, @Param("field") String field, @Param("numeral") int numeral); } diff --git a/src/main/java/com/example/caseData/service/CaseClinicalArticleService.java b/src/main/java/com/example/caseData/service/CaseClinicalArticleService.java index 95138d8..dbf5424 100644 --- a/src/main/java/com/example/caseData/service/CaseClinicalArticleService.java +++ b/src/main/java/com/example/caseData/service/CaseClinicalArticleService.java @@ -436,60 +436,51 @@ public class CaseClinicalArticleService { @Transactional public boolean DecClinicalArticleStats(String articleId,Integer type){ try { + String caseClinicalArticleField = ""; // 具体文章 + String statsCaseClinicalField = ""; // 全部文章 + String statsCaseClinicalHospitalField = ""; // 医院 + String statsCaseClinicalDoctorField = ""; // 医生 + + // 阅读 + if (type == 1){ + caseClinicalArticleField = "read_num"; // 具体文章 + statsCaseClinicalField = "article_read_num"; // 全部文章 + statsCaseClinicalHospitalField = "article_read_num"; // 医院 + statsCaseClinicalDoctorField = "article_read_num"; // 医生 + } + + // 收藏 + if (type == 2){ + caseClinicalArticleField = "collect_num"; // 具体文章 + statsCaseClinicalField = "article_collect_num"; // 全部文章 + statsCaseClinicalHospitalField = "article_collect_num"; // 医院 + statsCaseClinicalDoctorField = "article_collect_num"; // 医生 + } + + // 评论 + if (type == 3){ + caseClinicalArticleField = "comment_num"; // 具体文章 + statsCaseClinicalField = "article_comment_num"; // 全部文章 + statsCaseClinicalHospitalField = "article_comment_num"; // 医院 + statsCaseClinicalDoctorField = "article_comment_num"; // 医生 + } + + caseClinicalArticleDao.dec(Long.valueOf(articleId),caseClinicalArticleField,1); + statsCaseClinicalDao.dec(1L,statsCaseClinicalField,1); + // 获取文章作者 LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, articleId); List caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper); + for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) { + // 查询医生 + CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId()); - // 阅读量 - if (type == 1){ - caseClinicalArticleDao.dec(Long.valueOf(articleId),"read_num",1); - statsCaseClinicalDao.dec(1L,"article_read_num",1); + // 减少医生文章数 + statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),statsCaseClinicalHospitalField,1); - for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) { - // 查询医生 - CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId()); - - // 增加医院文章收藏数 - statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),"article_read_num",1); - - // 增加医生文章收藏数 - statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),"article_read_num",1); - } - } - - // 收藏量 - if (type == 2){ - caseClinicalArticleDao.dec(Long.valueOf(articleId),"collect_num",1); - statsCaseClinicalDao.dec(1L,"article_collect_num",1); - - for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) { - // 查询医生 - CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId()); - - // 增加医院文章收藏数 - statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),"article_collect_num",1); - - // 增加医生文章收藏数 - statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),"article_collect_num",1); - } - } - - // 评论数 - if (type == 3){ - caseClinicalArticleDao.dec(Long.valueOf(articleId),"comment_num",1); - statsCaseClinicalDao.dec(1L,"article_comment_num",1); - - for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) { - // 查询医生 - CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId()); - - // 增加医院文章收藏数 - statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),"article_comment_num",1); - - // 增加医生文章收藏数 - statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),"article_comment_num",1); - } + // 减少医生文章数 + statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,1); } return true; diff --git a/src/main/java/com/example/caseData/service/CaseClinicalVideoService.java b/src/main/java/com/example/caseData/service/CaseClinicalVideoService.java index 9121b8c..65db9cc 100644 --- a/src/main/java/com/example/caseData/service/CaseClinicalVideoService.java +++ b/src/main/java/com/example/caseData/service/CaseClinicalVideoService.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Map; @@ -435,60 +436,49 @@ public class CaseClinicalVideoService { @Transactional public boolean DecClinicalVideoStats(String videoId,Integer type){ try { + String caseClinicalVideoField = ""; // 具体文章 + String statsCaseClinicalField = ""; // 全部文章 + String statsCaseClinicalHospitalField = ""; // 医院 + String statsCaseClinicalDoctorField = ""; // 医生 + + // 阅读 + if (type == 1){ + caseClinicalVideoField = "read_num"; // 具体文章 + statsCaseClinicalField = "video_read_num"; // 全部文章 + statsCaseClinicalHospitalField = "video_read_num"; // 医院 + statsCaseClinicalDoctorField = "video_read_num"; // 医生 + } + + // 收藏 + if (type == 2){ + caseClinicalVideoField = "collect_num"; // 具体文章 + statsCaseClinicalField = "video_collect_num"; // 全部文章 + statsCaseClinicalHospitalField = "video_collect_num"; // 医院 + statsCaseClinicalDoctorField = "video_collect_num"; // 医生 + } + + // 评论 + if (type == 3){ + caseClinicalVideoField = "comment_num"; // 具体文章 + statsCaseClinicalField = "video_comment_num"; // 全部文章 + statsCaseClinicalHospitalField = "video_comment_num"; // 医院 + statsCaseClinicalDoctorField = "video_comment_num"; // 医生 + } + + caseClinicalVideoDao.dec(Long.valueOf(videoId),caseClinicalVideoField,1); + statsCaseClinicalDao.dec(1L,statsCaseClinicalField,1); + // 获取文章作者 LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, videoId); List caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper); + for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors) { + // 查询医生 + CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId()); - // 阅读量 - if (type == 1){ - caseClinicalVideoDao.dec(Long.valueOf(videoId),"read_num",1); - statsCaseClinicalDao.dec(1L,"video_read_num",1); - - for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors) { - // 查询医生 - CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId()); - - // 增加医院文章收藏数 - statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),"video_read_num",1); - - // 增加医生文章收藏数 - statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),"video_read_num",1); - } - } - - // 收藏量 - if (type == 2){ - caseClinicalVideoDao.dec(Long.valueOf(videoId),"collect_num",1); - statsCaseClinicalDao.dec(1L,"video_collect_num",1); - - for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors) { - // 查询医生 - CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId()); - - // 增加医院文章收藏数 - statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),"video_collect_num",1); - - // 增加医生文章收藏数 - statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),"video_collect_num",1); - } - } - - // 评论数 - if (type == 3){ - caseClinicalVideoDao.dec(Long.valueOf(videoId),"comment_num",1); - statsCaseClinicalDao.dec(1L,"video_comment_num",1); - - for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors) { - // 查询医生 - CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId()); - - // 增加医院文章收藏数 - statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),"video_comment_num",1); - - // 增加医生文章收藏数 - statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),"video_comment_num",1); - } + // 获取医院统计数据 + statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),statsCaseClinicalHospitalField,1); + statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,1); } return true;