diff --git a/src/main/java/com/example/caseData/controller/UserController.java b/src/main/java/com/example/caseData/controller/UserController.java index 29c36aa..7597ae3 100644 --- a/src/main/java/com/example/caseData/controller/UserController.java +++ b/src/main/java/com/example/caseData/controller/UserController.java @@ -9,8 +9,11 @@ import com.example.caseData.exception.BusinessException; import com.example.caseData.extend.app.UserPoint.UserPoint; import com.example.caseData.extend.app.UserPoint.UserPointResponse; import com.example.caseData.model.*; +import com.example.caseData.request.CaseClinicalArticleRequest.addClinicalArticleComment; +import com.example.caseData.request.UserRequest.ReportUserScoreRequest; import com.example.caseData.request.UserRequest.UserRequest; import com.example.caseData.service.RewardPointService; +import com.example.caseData.service.UserService; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import org.springframework.validation.annotation.Validated; @@ -55,6 +58,9 @@ public class UserController extends BaseController { @Resource private UserPoint userPoint; + @Resource + private UserService userService; + // // 查询所有用户 // @GetMapping("/users") // public Response> getUserPage(@Validated({UserRequest.Page.class}) @ModelAttribute UserRequest request) { @@ -148,5 +154,4 @@ public class UserController extends BaseController { return Response.success(point); } - } diff --git a/src/main/java/com/example/caseData/dao/CaseClinicalArticleDao.java b/src/main/java/com/example/caseData/dao/CaseClinicalArticleDao.java index 9352c8d..6dac51d 100644 --- a/src/main/java/com/example/caseData/dao/CaseClinicalArticleDao.java +++ b/src/main/java/com/example/caseData/dao/CaseClinicalArticleDao.java @@ -91,4 +91,11 @@ public interface CaseClinicalArticleDao extends BaseMapper { + +} \ 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 511c848..5ed4aa0 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.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -77,4 +78,25 @@ public interface CaseClinicalVideoDao extends BaseMapper "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); + + /** + * 根据医院ID查询该医院最后一篇文章的发表时间 + * @param hospitalId 医院ID + * @return 最新发表时间,无数据时返回 null + */ + LocalDateTime selectLastVideoPushDateByHospitalId(@Param("hospitalId") Long hospitalId); + + /** + * 根据医生ID查询该医生最后一篇文章的发表时间 + * @param doctorId 医院ID + * @return 最新发表时间,无数据时返回 null + */ + LocalDateTime selectLastVideoPushDateByDoctorId(@Param("doctorId") Long doctorId); + + /** + * 根据医院ID查询该医院最后一篇文章的发表时间 + * @param labelIden 标签唯一标识 + * @return 最新发表时间,无数据时返回 null + */ + LocalDateTime selectLastVideoPushDateByLabelId(@Param("labelIden") String labelIden); } \ No newline at end of file diff --git a/src/main/java/com/example/caseData/extend/app/Score/ReportUserScoreResponse.java b/src/main/java/com/example/caseData/extend/app/Score/ReportUserScoreResponse.java new file mode 100644 index 0000000..b139b6a --- /dev/null +++ b/src/main/java/com/example/caseData/extend/app/Score/ReportUserScoreResponse.java @@ -0,0 +1,22 @@ +package com.example.caseData.extend.app.Score; + +import lombok.Data; + +@Data +public class ReportUserScoreResponse +{ + /** 接口调用状态。200:正常;其它值:调用出错 */ + private int code; + + /** 结果说明。如果接口调用出错,那么返回错误描述。成功则返回 ok */ + private String msg; + + /** 接口是否调用成功 */ + private boolean success; + + /** 错误信息或提示信息 */ + private String message; + + /** 接口返回的数据 */ + private Integer data; +} diff --git a/src/main/java/com/example/caseData/extend/app/Score/Score.java b/src/main/java/com/example/caseData/extend/app/Score/Score.java new file mode 100644 index 0000000..cc34209 --- /dev/null +++ b/src/main/java/com/example/caseData/extend/app/Score/Score.java @@ -0,0 +1,67 @@ +package com.example.caseData.extend.app.Score; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.json.JSONUtil; +import com.example.caseData.config.AppConfig; +import com.example.caseData.exception.BusinessException; +import com.example.caseData.extend.app.Base; +import com.example.caseData.extend.app.UserPoint.UserPointResponse; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +@Slf4j +@Component +public class Score extends Base { + @Resource + private AppConfig appConfig; + + // 上报用户积分 + public ReportUserScoreResponse ReportUserScore(String uuid,Integer bonuspoints,String bonuspointsNote) throws BusinessException { + String timestamp = String.valueOf(System.currentTimeMillis() / 1000); + + // 处理参数 + Map requestData = new HashMap<>(); + requestData.put("bonuspoints_note", bonuspointsNote); + requestData.put("bonuspoints", bonuspoints); + requestData.put("user_uuid", uuid); + requestData.put("platform", appConfig.getPlatform()); + requestData.put("timestamp", timestamp); + + // 生成签名 + String sign = genSignature(requestData,appConfig.getSecretKey()); + + String url = appConfig.getApiUrl() + "/expert-api/addBonusPoints"; + String jsonBody = JSONUtil.toJsonStr(requestData); + log.info("获取app数据参数:{}",jsonBody); + + try(HttpResponse response = HttpRequest.post(url) + .header("Content-Type", "application/json") + .header("sign", sign) + .body(jsonBody) + .execute()){ + + if (response.getStatus() != 200) { + throw new BusinessException("失败"); + } + + // 反序列化 JSON + ReportUserScoreResponse result = JSONUtil.toBean(response.body(), ReportUserScoreResponse.class); + log.info("获取app数据返回:{}",result); + if (result.getCode() != 200){ + if (!Objects.equals(result.getMsg(), "")){ + throw new BusinessException(result.getMsg()); + }else{ + throw new BusinessException("失败"); + } + } + + return result; + } + } +} diff --git a/src/main/java/com/example/caseData/model/CaseClinicalRecordScoreModel.java b/src/main/java/com/example/caseData/model/CaseClinicalRecordScoreModel.java new file mode 100644 index 0000000..c347674 --- /dev/null +++ b/src/main/java/com/example/caseData/model/CaseClinicalRecordScoreModel.java @@ -0,0 +1,76 @@ +package com.example.caseData.model; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 积分发放记录实体类 + */ +@TableName("`case_clinical_record_score`") +@Data +public class CaseClinicalRecordScoreModel { + /** + * 主键id + */ + @TableId(value = "score_id", type = IdType.NONE) + private Long scoreId; + + /** + * id(根据type不同,对应不同类型) + */ + @TableField("id") + private Long id; + + /** + * 类型(1:文章 2:视频 3:病例交流) + */ + @TableField("type") + private Integer type; + + /** + * 用户id + */ + @TableField("user_id") + private Long userId; + + /** + * 用户名称 + */ + @TableField("user_name") + private String userName; + + /** + * 积分类型(1:完成阅读 2:阅读时间满足 3:优质留言 4:再次优质留言 5:病例互动-病例库) + */ + @TableField("score_type") + private Integer scoreType; + + /** + * 获取积分节点名称(如:阅读时间足够) + */ + @TableField("node_name") + private String nodeName; + + /** + * 积分 + */ + @TableField("score") + private Integer score; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @JsonProperty("created_at") + private LocalDateTime createdAt; + + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @JsonProperty("updated_at") + private LocalDateTime updatedAt; +} diff --git a/src/main/java/com/example/caseData/request/UserRequest/ReportUserScoreRequest.java b/src/main/java/com/example/caseData/request/UserRequest/ReportUserScoreRequest.java new file mode 100644 index 0000000..e0db00b --- /dev/null +++ b/src/main/java/com/example/caseData/request/UserRequest/ReportUserScoreRequest.java @@ -0,0 +1,22 @@ +package com.example.caseData.request.UserRequest; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.*; +import lombok.Data; + +@Data +public class ReportUserScoreRequest { + /** + * 主键id(根据type不同对应不同数据表) + */ + @JsonProperty("id") + @NotEmpty(message = "参数错误") + private String id; + + /** + * 类型(1:文章 2:视频 3:病例交流) + */ + @JsonProperty("type") + @NotNull(message = "参数错误") + private Integer type; +} \ No newline at end of file diff --git a/src/main/java/com/example/caseData/service/CaseClinicalArticleService.java b/src/main/java/com/example/caseData/service/CaseClinicalArticleService.java index 79a7bee..76c3c15 100644 --- a/src/main/java/com/example/caseData/service/CaseClinicalArticleService.java +++ b/src/main/java/com/example/caseData/service/CaseClinicalArticleService.java @@ -1,6 +1,7 @@ package com.example.caseData.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.example.caseData.common.Response; import com.example.caseData.dao.*; import com.example.caseData.exception.BusinessException; import com.example.caseData.model.*; @@ -50,6 +51,9 @@ public class CaseClinicalArticleService { @Resource private UserDao userDao; + @Resource + private UserService userService; + @Resource private CaseClinicalArticleLabelDao caseClinicalArticleLabelDao; @@ -181,6 +185,9 @@ public class CaseClinicalArticleService { return false; } + // 发放积分 + userService.ReportUserScore(1,userId); + return true; } @@ -374,43 +381,28 @@ public class CaseClinicalArticleService { try { String caseClinicalArticleField = ""; // 具体文章 String statsCaseClinicalField = ""; // 全部文章 - String statsCaseClinicalHospitalField = ""; // 医院 - String statsCaseClinicalDoctorField = ""; // 医生 - String statsCaseClinicalLabelField = ""; // 标签 // 阅读 if (type == 1){ caseClinicalArticleField = "read_num"; // 具体文章 statsCaseClinicalField = "article_read_num"; // 全部文章 - statsCaseClinicalHospitalField = "article_read_num"; // 医院 - statsCaseClinicalDoctorField = "article_read_num"; // 医生 - statsCaseClinicalLabelField = "article_read_num"; // 标签 } // 收藏 if (type == 2){ caseClinicalArticleField = "collect_num"; // 具体文章 statsCaseClinicalField = "article_collect_num"; // 全部文章 - statsCaseClinicalHospitalField = "article_collect_num"; // 医院 - statsCaseClinicalDoctorField = "article_collect_num"; // 医生 - statsCaseClinicalLabelField = "article_collect_num"; // 标签 } // 评论 if (type == 3){ caseClinicalArticleField = "comment_num"; // 具体文章 statsCaseClinicalField = "article_comment_num"; // 全部文章 - statsCaseClinicalHospitalField = "article_comment_num"; // 医院 - statsCaseClinicalDoctorField = "article_comment_num"; // 医生 - statsCaseClinicalLabelField = "article_comment_num"; // 标签 } // 文章数 if (type == 4){ statsCaseClinicalField = "article_num"; // 全部文章 - statsCaseClinicalHospitalField = "article_num"; // 医院 - statsCaseClinicalDoctorField = "article_num"; // 医生 - statsCaseClinicalLabelField = "article_num"; // 标签 } if (!caseClinicalArticleField.isEmpty()){ @@ -418,29 +410,6 @@ public class CaseClinicalArticleService { } statsCaseClinicalDao.inc(1L,statsCaseClinicalField,num); - // 获取文章作者 - LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); - authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, articleId); - List caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper); - for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) { - // 查询医生 - CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId()); - - // 减少医生文章数 - statsCaseClinicalHospitalDao.inc(caseClinicalDoctor.getHospitalId(),statsCaseClinicalHospitalField,num); - - // 减少医生文章数 - statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,num); - } - - // 获取文章标签数据 - LambdaQueryWrapper labelQueryWrapper = new LambdaQueryWrapper<>(); - labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, articleId); - List caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper); - for (CaseClinicalArticleLabelModel label : caseClinicalArticleLabels) { - statsCaseClinicalLabelDao.inc(label.getAppIden(),statsCaseClinicalLabelField,num); - } - return true; } catch (Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -458,43 +427,28 @@ public class CaseClinicalArticleService { try { String caseClinicalArticleField = ""; // 具体文章 String statsCaseClinicalField = ""; // 全部文章 - String statsCaseClinicalHospitalField = ""; // 医院 - String statsCaseClinicalDoctorField = ""; // 医生 - String statsCaseClinicalLabelField = ""; // 标签 // 阅读 if (type == 1){ caseClinicalArticleField = "read_num"; // 具体文章 statsCaseClinicalField = "article_read_num"; // 全部文章 - statsCaseClinicalHospitalField = "article_read_num"; // 医院 - statsCaseClinicalDoctorField = "article_read_num"; // 医生 - statsCaseClinicalLabelField = "article_read_num"; // 标签 } // 收藏 if (type == 2){ caseClinicalArticleField = "collect_num"; // 具体文章 statsCaseClinicalField = "article_collect_num"; // 全部文章 - statsCaseClinicalHospitalField = "article_collect_num"; // 医院 - statsCaseClinicalDoctorField = "article_collect_num"; // 医生 - statsCaseClinicalLabelField = "article_collect_num"; // 标签 } // 评论 if (type == 3){ caseClinicalArticleField = "comment_num"; // 具体文章 statsCaseClinicalField = "article_comment_num"; // 全部文章 - statsCaseClinicalHospitalField = "article_comment_num"; // 医院 - statsCaseClinicalDoctorField = "article_comment_num"; // 医生 - statsCaseClinicalLabelField = "article_comment_num"; // 标签 } // 文章数 if (type == 4){ statsCaseClinicalField = "article_num"; // 全部文章 - statsCaseClinicalHospitalField = "article_num"; // 医院 - statsCaseClinicalDoctorField = "article_num"; // 医生 - statsCaseClinicalLabelField = "article_num"; // 标签 } if (!caseClinicalArticleField.isEmpty()){ @@ -502,29 +456,6 @@ public class CaseClinicalArticleService { } statsCaseClinicalDao.dec(1L,statsCaseClinicalField,num); - // 获取文章作者 - LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); - authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, articleId); - List caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper); - for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) { - // 查询医生 - CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId()); - - // 减少医生文章数 - statsCaseClinicalHospitalDao.dec(caseClinicalDoctor.getHospitalId(),statsCaseClinicalHospitalField,num); - - // 减少医生文章数 - statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,num); - } - - // 获取文章标签数据 - LambdaQueryWrapper labelQueryWrapper = new LambdaQueryWrapper<>(); - labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, articleId); - List caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper); - for (CaseClinicalArticleLabelModel label : caseClinicalArticleLabels) { - statsCaseClinicalLabelDao.dec(label.getAppIden(),statsCaseClinicalLabelField,num); - } - return true; } catch (Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); diff --git a/src/main/java/com/example/caseData/service/CaseClinicalService.java b/src/main/java/com/example/caseData/service/CaseClinicalService.java index 89d8be6..c2ed84f 100644 --- a/src/main/java/com/example/caseData/service/CaseClinicalService.java +++ b/src/main/java/com/example/caseData/service/CaseClinicalService.java @@ -1,10 +1,7 @@ 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.dao.*; import com.example.caseData.exception.BusinessException; import com.example.caseData.model.CaseClinicalArticleModel; import com.example.caseData.model.StatsCaseClinicalDoctorModel; @@ -31,9 +28,19 @@ public class CaseClinicalService { @Resource private CaseClinicalArticleDao caseClinicalArticleDao; - // 新增标签统计 + @Resource + private CaseClinicalVideoDao caseClinicalVideoDao; + + /** + * 新增标签统计 + * @param labelIden + * @param labelName + * @param type 类型 1:文章 2:视频 + * @param lastPushDate + * @return + */ @Transactional - public void AddStatsCaseClinicalLabel(String labelIden,String labelName){ + public StatsCaseClinicalLabelModel IncStatsCaseClinicalLabel(String labelIden,String labelName,Integer type,LocalDateTime lastPushDate){ LambdaQueryWrapper mapQueryWrapper = new LambdaQueryWrapper<>(); mapQueryWrapper.eq(StatsCaseClinicalLabelModel::getLabelIden, labelIden); StatsCaseClinicalLabelModel statsCaseClinicalLabel = statsCaseClinicalLabelDao.selectOne(mapQueryWrapper); @@ -41,20 +48,126 @@ public class CaseClinicalService { statsCaseClinicalLabel = new StatsCaseClinicalLabelModel(); statsCaseClinicalLabel.setLabelIden(labelIden); statsCaseClinicalLabel.setLabelName(labelName); + if (type == 1){ + statsCaseClinicalLabel.setArticleNum(1); + }else if(type == 2){ + statsCaseClinicalLabel.setVideoNum(1); + } + if (lastPushDate!=null){ + statsCaseClinicalLabel.setLastPushDate(lastPushDate); + } statsCaseClinicalLabelDao.insert(statsCaseClinicalLabel); + }else{ + if (type == 1){ + statsCaseClinicalLabelDao.inc(statsCaseClinicalLabel.getLabelIden(),"article_num",1); + }else{ + statsCaseClinicalLabelDao.inc(statsCaseClinicalLabel.getLabelIden(),"video_num",1); + } } + + return statsCaseClinicalLabel; } + /** + * 减少标签统计 + * @param labelIden + * @param type 类型 1:文章 2:视频 + * @return + */ + @Transactional + public StatsCaseClinicalLabelModel DecStatsCaseClinicalLabel(String labelIden,Integer type){ + LambdaQueryWrapper mapQueryWrapper = new LambdaQueryWrapper<>(); + mapQueryWrapper.eq(StatsCaseClinicalLabelModel::getLabelIden, labelIden); + StatsCaseClinicalLabelModel statsCaseClinicalLabel = statsCaseClinicalLabelDao.selectOne(mapQueryWrapper); + if (statsCaseClinicalLabel == null) { + return null; + }else{ + if (type == 1){ + // 最后一篇文章发表时间 + LocalDateTime lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByLabelId(labelIden); + if (lastPushDate != null){ + statsCaseClinicalLabel.setLastPushDate(lastPushDate); + statsCaseClinicalLabelDao.updateById(statsCaseClinicalLabel); + } + + statsCaseClinicalLabelDao.inc(statsCaseClinicalLabel.getLabelIden(),"article_num",1); + }else{ + // 最后一篇文章发表时间 + LocalDateTime lastPushDate = caseClinicalVideoDao.selectLastVideoPushDateByLabelId(labelIden); + if (lastPushDate != null){ + statsCaseClinicalLabel.setLastPushDate(lastPushDate); + statsCaseClinicalLabelDao.updateById(statsCaseClinicalLabel); + } + statsCaseClinicalLabelDao.inc(statsCaseClinicalLabel.getLabelIden(),"video_num",1); + } + } + + return statsCaseClinicalLabel; + } + + // 新增医生统计 @Transactional - public StatsCaseClinicalDoctorModel AddStatsCaseClinicalDoctor(String doctorId){ + public StatsCaseClinicalDoctorModel IncStatsCaseClinicalDoctor(String doctorId,Integer type,LocalDateTime lastPushDate){ LambdaQueryWrapper mapQueryWrapper = new LambdaQueryWrapper<>(); mapQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId); StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(mapQueryWrapper); if (statsCaseClinicalDoctor == null) { statsCaseClinicalDoctor = new StatsCaseClinicalDoctorModel(); statsCaseClinicalDoctor.setDoctorId(Long.valueOf(doctorId)); + + if (type == 1){ + statsCaseClinicalDoctor.setArticleNum(1); + }else if(type == 2){ + statsCaseClinicalDoctor.setVideoNum(1); + } + if (lastPushDate!=null){ + statsCaseClinicalDoctor.setLastPushDate(lastPushDate); + } statsCaseClinicalDoctorDao.insert(statsCaseClinicalDoctor); + }else{ + if (type == 1){ + statsCaseClinicalDoctorDao.inc(statsCaseClinicalDoctor.getDoctorId(),"article_num",1); + }else{ + statsCaseClinicalDoctorDao.inc(statsCaseClinicalDoctor.getDoctorId(),"video_num",1); + } + } + + return statsCaseClinicalDoctor; + } + + /** + * 减少医生统计 + * @param doctorId + * @param type 类型 1:文章 2:视频 + * @return + */ + @Transactional + public StatsCaseClinicalDoctorModel DecStatsCaseClinicalDoctor(String doctorId,Integer type){ + LambdaQueryWrapper mapQueryWrapper = new LambdaQueryWrapper<>(); + mapQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId); + StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(mapQueryWrapper); + if (statsCaseClinicalDoctor == null) { + return null; + }else{ + if (type == 1){ + // 最后一篇文章发表时间 + LocalDateTime lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByDoctorId(Long.valueOf(doctorId)); + if (lastPushDate != null){ + statsCaseClinicalDoctor.setLastPushDate(lastPushDate); + statsCaseClinicalDoctorDao.updateById(statsCaseClinicalDoctor); + } + + statsCaseClinicalDoctorDao.inc(statsCaseClinicalDoctor.getDoctorId(),"article_num",1); + }else{ + // 最后一篇文章发表时间 + LocalDateTime lastPushDate = caseClinicalVideoDao.selectLastVideoPushDateByDoctorId(Long.valueOf(doctorId)); + if (lastPushDate != null){ + statsCaseClinicalDoctor.setLastPushDate(lastPushDate); + statsCaseClinicalDoctorDao.updateById(statsCaseClinicalDoctor); + } + statsCaseClinicalDoctorDao.inc(statsCaseClinicalDoctor.getDoctorId(),"video_num",1); + } } return statsCaseClinicalDoctor; @@ -62,211 +175,264 @@ public class CaseClinicalService { // 新增医院统计 @Transactional - public StatsCaseClinicalHospitalModel AddStatsCaseClinicalHospital(String hospitalId){ + public StatsCaseClinicalHospitalModel IncStatsCaseClinicalHospital(String hospitalId,Integer type,LocalDateTime lastPushDate){ LambdaQueryWrapper mapQueryWrapper = new LambdaQueryWrapper<>(); mapQueryWrapper.eq(StatsCaseClinicalHospitalModel::getHospitalId, hospitalId); StatsCaseClinicalHospitalModel statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectOne(mapQueryWrapper); if (statsCaseClinicalHospital == null) { statsCaseClinicalHospital = new StatsCaseClinicalHospitalModel(); statsCaseClinicalHospital.setHospitalId(Long.valueOf(hospitalId)); + + if (type == 1){ + statsCaseClinicalHospital.setArticleNum(1); + }else if(type == 2){ + statsCaseClinicalHospital.setVideoNum(1); + } + + if (lastPushDate!=null){ + statsCaseClinicalHospital.setLastPushDate(lastPushDate); + } statsCaseClinicalHospitalDao.insert(statsCaseClinicalHospital); + }else{ + if (type == 1){ + statsCaseClinicalHospitalDao.inc(statsCaseClinicalHospital.getHospitalId(),"article_num",1); + }else{ + statsCaseClinicalHospitalDao.inc(statsCaseClinicalHospital.getHospitalId(),"video_num",1); + } } return statsCaseClinicalHospital; } /** - * 处理文章所属医院的数量统计 + * 减少医院统计 + * @param hospitalId + * @param type 类型 1:文章 2:视频 + * @return */ @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; + public StatsCaseClinicalHospitalModel DecStatsCaseClinicalHospital(String hospitalId,Integer type){ + LambdaQueryWrapper mapQueryWrapper = new LambdaQueryWrapper<>(); + mapQueryWrapper.eq(StatsCaseClinicalHospitalModel::getHospitalId, hospitalId); + StatsCaseClinicalHospitalModel statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectOne(mapQueryWrapper); + if (statsCaseClinicalHospital == null) { + return null; + }else{ + if (type == 1){ + // 最后一篇文章发表时间 + LocalDateTime lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByHospitalId(Long.valueOf(hospitalId)); + if (lastPushDate != null){ + statsCaseClinicalHospital.setLastPushDate(lastPushDate); + statsCaseClinicalHospitalDao.updateById(statsCaseClinicalHospital); + } + + statsCaseClinicalHospitalDao.inc(statsCaseClinicalHospital.getHospitalId(),"article_num",1); + }else{ + // 最后一篇文章发表时间 + LocalDateTime lastPushDate = caseClinicalVideoDao.selectLastVideoPushDateByHospitalId(Long.valueOf(hospitalId)); + if (lastPushDate != null){ + statsCaseClinicalHospital.setLastPushDate(lastPushDate); + statsCaseClinicalHospitalDao.updateById(statsCaseClinicalHospital); + } + statsCaseClinicalHospitalDao.inc(statsCaseClinicalHospital.getHospitalId(),"video_num",1); } - - // 获取旧医院数据 - 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; - + return statsCaseClinicalHospital; } - /** - * 处理文章所属医生的数量统计 - */ - @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; - } +// /** +// * 处理文章所属医院的数量统计 +// */ +// @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/CaseClinicalVideoService.java b/src/main/java/com/example/caseData/service/CaseClinicalVideoService.java index e63b656..8abb32b 100644 --- a/src/main/java/com/example/caseData/service/CaseClinicalVideoService.java +++ b/src/main/java/com/example/caseData/service/CaseClinicalVideoService.java @@ -109,7 +109,7 @@ public class CaseClinicalVideoService { } // 新增统计字段 - boolean r = IncClinicalVideoStats(videoId,2); + boolean r = IncClinicalVideoStats(videoId,2,1); if (!r){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return false; @@ -140,7 +140,7 @@ public class CaseClinicalVideoService { } // 减少视频的统计字段 - boolean r = DecClinicalVideoStats(videoId,2); + boolean r = DecClinicalVideoStats(videoId,2,1); if (!r){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return false; @@ -198,12 +198,15 @@ public class CaseClinicalVideoService { } // 新增文章的统计字段 - boolean r = IncClinicalVideoStats(videoId,3); + boolean r = IncClinicalVideoStats(videoId,3,1); if (!r){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return false; } + // 发放积分 + userService.ReportUserScore(2,userId); + return true; } @@ -245,7 +248,7 @@ public class CaseClinicalVideoService { } // 减少文章的统计字段 - boolean r = DecClinicalVideoStats(String.valueOf(comment.getVideoId()),2); + boolean r = DecClinicalVideoStats(String.valueOf(comment.getVideoId()),2,1); if (!r){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return false; @@ -393,54 +396,39 @@ public class CaseClinicalVideoService { * @param type 类型:1:阅读量 2:收藏量 3:评论数 4:文章数 */ @Transactional - public boolean IncClinicalVideoStats(String videoId,Integer type){ + public boolean IncClinicalVideoStats(String videoId,Integer type,Integer num){ try { String caseClinicalVideoField = ""; // 具体文章 String statsCaseClinicalField = ""; // 全部文章 - String statsCaseClinicalHospitalField = ""; // 医院 - String statsCaseClinicalDoctorField = ""; // 医生 - String statsCaseClinicalLabelField = ""; // 标签 // 阅读 if (type == 1){ caseClinicalVideoField = "read_num"; // 具体文章 statsCaseClinicalField = "video_read_num"; // 全部文章 - statsCaseClinicalHospitalField = "video_read_num"; // 医院 - statsCaseClinicalDoctorField = "video_read_num"; // 医生 - statsCaseClinicalLabelField = "article_read_num"; // 标签 } // 收藏 if (type == 2){ caseClinicalVideoField = "collect_num"; // 具体文章 statsCaseClinicalField = "video_collect_num"; // 全部文章 - statsCaseClinicalHospitalField = "video_collect_num"; // 医院 - statsCaseClinicalDoctorField = "video_collect_num"; // 医生 - statsCaseClinicalLabelField = "article_collect_num"; // 标签 } // 评论 if (type == 3){ caseClinicalVideoField = "comment_num"; // 具体文章 statsCaseClinicalField = "video_comment_num"; // 全部文章 - statsCaseClinicalHospitalField = "video_comment_num"; // 医院 - statsCaseClinicalDoctorField = "video_comment_num"; // 医生 - statsCaseClinicalLabelField = "article_comment_num"; // 标签 } // 文章数 if (type == 4){ statsCaseClinicalField = "article_num"; // 全部文章 - statsCaseClinicalHospitalField = "article_num"; // 医院 - statsCaseClinicalDoctorField = "article_num"; // 医生 - statsCaseClinicalLabelField = "article_num"; // 标签 } if (!caseClinicalVideoField.isEmpty()){ - caseClinicalVideoDao.inc(Long.valueOf(videoId),caseClinicalVideoField,1); + caseClinicalVideoDao.inc(Long.valueOf(videoId),caseClinicalVideoField,num); } - statsCaseClinicalDao.inc(1L,statsCaseClinicalField,1); + statsCaseClinicalDao.inc(1L,statsCaseClinicalField,num); return true; } catch (Exception e) { @@ -455,54 +443,39 @@ public class CaseClinicalVideoService { * @param type 类型:1:阅读量 2:收藏量 3:评论数 4:文章数 */ @Transactional - public boolean DecClinicalVideoStats(String videoId,Integer type){ + public boolean DecClinicalVideoStats(String videoId,Integer type,Integer num){ try { String caseClinicalVideoField = ""; // 具体文章 String statsCaseClinicalField = ""; // 全部文章 - String statsCaseClinicalHospitalField = ""; // 医院 - String statsCaseClinicalDoctorField = ""; // 医生 - String statsCaseClinicalLabelField = ""; // 标签 // 阅读 if (type == 1){ caseClinicalVideoField = "read_num"; // 具体文章 statsCaseClinicalField = "video_read_num"; // 全部文章 - statsCaseClinicalHospitalField = "video_read_num"; // 医院 - statsCaseClinicalDoctorField = "video_read_num"; // 医生 - statsCaseClinicalLabelField = "article_read_num"; // 标签 } // 收藏 if (type == 2){ caseClinicalVideoField = "collect_num"; // 具体文章 statsCaseClinicalField = "video_collect_num"; // 全部文章 - statsCaseClinicalHospitalField = "video_collect_num"; // 医院 - statsCaseClinicalDoctorField = "video_collect_num"; // 医生 - statsCaseClinicalLabelField = "article_collect_num"; // 标签 } // 评论 if (type == 3){ caseClinicalVideoField = "comment_num"; // 具体文章 statsCaseClinicalField = "video_comment_num"; // 全部文章 - statsCaseClinicalHospitalField = "video_comment_num"; // 医院 - statsCaseClinicalDoctorField = "video_comment_num"; // 医生 - statsCaseClinicalLabelField = "article_comment_num"; // 标签 } // 文章数 if (type == 4){ statsCaseClinicalField = "article_num"; // 全部文章 - statsCaseClinicalHospitalField = "article_num"; // 医院 - statsCaseClinicalDoctorField = "article_num"; // 医生 - statsCaseClinicalLabelField = "article_num"; // 标签 } if (!caseClinicalVideoField.isEmpty()){ - caseClinicalVideoDao.dec(Long.valueOf(videoId),caseClinicalVideoField,1); + caseClinicalVideoDao.dec(Long.valueOf(videoId),caseClinicalVideoField,num); } - statsCaseClinicalDao.dec(1L,statsCaseClinicalField,1); + statsCaseClinicalDao.dec(1L,statsCaseClinicalField,num); return true; } catch (Exception e) { @@ -550,7 +523,6 @@ public class CaseClinicalVideoService { // 检测签名 Video.checkSign(request,"26e8675f44565b1ed4eaaa0fcf3531d7",r,objectMapper); - // 获取视频数据 LambdaQueryWrapper videoQueryWrapper = new LambdaQueryWrapper<>(); videoQueryWrapper.eq(CaseClinicalVideoModel::getVideoNo, r.getVideoNo()); @@ -594,7 +566,7 @@ public class CaseClinicalVideoService { } // 新增标签统计 - caseClinicalService.AddStatsCaseClinicalLabel(label.getAppIden(),label.getLabelName()); + caseClinicalService.IncStatsCaseClinicalLabel(label.getAppIden(),label.getLabelName(),2,LocalDateTime.parse(r.getPushDate())); } // 新增作者 @@ -610,15 +582,15 @@ public class CaseClinicalVideoService { caseClinicalVideoAuthorDao.insert(caseClinicalVideoAuthor); // 新增作者统计 - caseClinicalService.AddStatsCaseClinicalDoctor(String.valueOf(caseClinicalDoctor.getDoctorId())); + caseClinicalService.IncStatsCaseClinicalDoctor(String.valueOf(caseClinicalDoctor.getDoctorId()),2,LocalDateTime.parse(r.getPushDate())); // 新增医院统计 - caseClinicalService.AddStatsCaseClinicalHospital(String.valueOf(caseClinicalDoctor.getHospitalId())); + caseClinicalService.IncStatsCaseClinicalHospital(String.valueOf(caseClinicalDoctor.getHospitalId()),2,LocalDateTime.parse(r.getPushDate())); } } // 新增统计 - IncClinicalVideoStats(String.valueOf(caseClinicalVideo.getVideoId()),4); + IncClinicalVideoStats(String.valueOf(caseClinicalVideo.getVideoId()),4,1); } // 修改 @@ -642,82 +614,235 @@ public class CaseClinicalVideoService { caseClinicalVideoDao.updateById(caseClinicalVideo); - // 获取全部作者 - List aList = new ArrayList<>(); - List bList = new ArrayList<>(); + // 作者处理 + AddClinicalVideoAppAuthor(caseClinicalVideo,r); - LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); - authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, caseClinicalVideo.getVideoId()); - List caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper); - for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors){ - // 获取医生数据 - LambdaQueryWrapper doctorQueryWrapper = new LambdaQueryWrapper<>(); - doctorQueryWrapper.eq(CaseClinicalDoctorModel::getDoctorId, author.getDoctorId()); - CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectOne(doctorQueryWrapper); - if (caseClinicalDoctor == null) { - throw new BusinessException("-1", "无法完成此操作"); - } - - aList.add(caseClinicalDoctor.getDoctorIden()); - } - - for (addClinicalVideoApp.Author author : r.getAuthor()){ - bList.add(author.getDoctorIden()); - } - - // 1. 删除的:a 中有,b 中没有 - List deleted = new ArrayList<>(); - for (String s : aList) { - if (!bList.contains(s)) { - deleted.add(s); - } - } - - // 2. 新增的:b 中有,a 中没有 - List added = new ArrayList<>(); - for (String s : bList) { - if (!aList.contains(s)) { - added.add(s); - } - } - - // 删除 - if (!deleted.isEmpty()) { - - } - - // 新增 - if (!added.isEmpty()) { - for (String appIden : added){ - // 获取app用户数据 - GetUserInfoResponse result = userInfo.getUserInfoByUuid(appIden); - CaseClinicalDoctorModel caseClinicalDoctor = userService.GetCaseClinicalDoctor(result); - - CaseClinicalVideoAuthorModel caseClinicalVideoAuthor = new CaseClinicalVideoAuthorModel(); - caseClinicalVideoAuthor.setVideoId(caseClinicalVideo.getVideoId()); - caseClinicalVideoAuthor.setDoctorId(String.valueOf(caseClinicalDoctor.getDoctorId())); - caseClinicalVideoAuthorDao.insert(caseClinicalVideoAuthor); - - // 新增作者统计 - caseClinicalService.AddStatsCaseClinicalDoctor(String.valueOf(caseClinicalDoctor.getDoctorId())); - - // 新增医院统计 - caseClinicalService.AddStatsCaseClinicalHospital(String.valueOf(caseClinicalDoctor.getHospitalId())); - } - } + // 标签处理 + AddClinicalVideoAppLabel(caseClinicalVideo,r); } // 删除 if (Objects.equals(r.getAction(), "delete")){ + if (caseClinicalVideo == null){ + throw new BusinessException("-1", "无法完成此操作"); + } + deleteClinicalVideo(caseClinicalVideo); } - - - throw new BusinessException("-1", "错误"); } catch (Exception e) { throw new BusinessException("-1", e.getMessage()); } -// return true; + return true; + } + + /** + * 临床病例库-视频-同步app视频-作者处理 + * @param caseClinicalVideo + * @param r + */ + @Transactional + public void AddClinicalVideoAppAuthor(CaseClinicalVideoModel caseClinicalVideo,addClinicalVideoApp r){ + // 处理作者 + List aAuthorList = new ArrayList<>(); + List bAuthorList = new ArrayList<>(); + + // 获取全部作者 + LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); + authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, caseClinicalVideo.getVideoId()); + List caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper); + for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors){ + // 获取医生数据 + LambdaQueryWrapper doctorQueryWrapper = new LambdaQueryWrapper<>(); + doctorQueryWrapper.eq(CaseClinicalDoctorModel::getDoctorId, author.getDoctorId()); + CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectOne(doctorQueryWrapper); + if (caseClinicalDoctor == null) { + throw new BusinessException("-1", "无法完成此操作"); + } + + aAuthorList.add(caseClinicalDoctor.getDoctorIden()); + } + + for (addClinicalVideoApp.Author author : r.getAuthor()){ + bAuthorList.add(author.getDoctorIden()); + } + + // 1. 删除的:a 中有,b 中没有 + List deleted = new ArrayList<>(); + for (String s : aAuthorList) { + if (!bAuthorList.contains(s)) { + deleted.add(s); + } + } + + // 2. 新增的:b 中有,a 中没有 + List added = new ArrayList<>(); + for (String s : bAuthorList) { + if (!aAuthorList.contains(s)) { + added.add(s); + } + } + + // 删除 + if (!deleted.isEmpty()) { + for (String s : deleted) { + // 获取医生数据 + LambdaQueryWrapper doctorQueryWrapper = new LambdaQueryWrapper<>(); + doctorQueryWrapper.eq(CaseClinicalDoctorModel::getDoctorIden,s); + CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectOne(doctorQueryWrapper); + if (caseClinicalDoctor == null) { + throw new BusinessException("-1", "无法完成此操作"); + } + + // 删除视频作者 + LambdaQueryWrapper videoAuthorQueryWrapper = new LambdaQueryWrapper<>(); + videoAuthorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, caseClinicalVideo.getVideoId()); + videoAuthorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getDoctorId, caseClinicalDoctor.getDoctorId()); + caseClinicalVideoAuthorDao.delete(videoAuthorQueryWrapper); + + // 减少作者统计 + caseClinicalService.DecStatsCaseClinicalDoctor(String.valueOf(caseClinicalDoctor.getDoctorId()),2); + + // 减少医院统计 + caseClinicalService.DecStatsCaseClinicalHospital(String.valueOf(caseClinicalDoctor.getHospitalId()),2); + } + } + + // 新增 + if (!added.isEmpty()) { + for (String appIden : added){ + // 获取app用户数据 + GetUserInfoResponse result = userInfo.getUserInfoByUuid(appIden); + CaseClinicalDoctorModel caseClinicalDoctor = userService.GetCaseClinicalDoctor(result); + + CaseClinicalVideoAuthorModel caseClinicalVideoAuthor = new CaseClinicalVideoAuthorModel(); + caseClinicalVideoAuthor.setVideoId(caseClinicalVideo.getVideoId()); + caseClinicalVideoAuthor.setDoctorId(String.valueOf(caseClinicalDoctor.getDoctorId())); + caseClinicalVideoAuthorDao.insert(caseClinicalVideoAuthor); + + // 新增作者统计 + caseClinicalService.IncStatsCaseClinicalDoctor(String.valueOf(caseClinicalDoctor.getDoctorId()),2,LocalDateTime.parse(r.getPushDate())); + + // 新增医院统计 + caseClinicalService.IncStatsCaseClinicalHospital(String.valueOf(caseClinicalDoctor.getHospitalId()),2,LocalDateTime.parse(r.getPushDate())); + } + } + } + + /** + * 临床病例库-视频-同步app视频-标签处理 + * @param caseClinicalVideo + * @param r + */ + @Transactional + public void AddClinicalVideoAppLabel(CaseClinicalVideoModel caseClinicalVideo,addClinicalVideoApp r){ + List aList = new ArrayList<>(); + List bList = new ArrayList<>(); + + // 获取全部b标签 + LambdaQueryWrapper labelQueryWrapper = new LambdaQueryWrapper<>(); + labelQueryWrapper.eq(CaseClinicalVideoLabelModel::getVideoId, caseClinicalVideo.getVideoId()); + List caseClinicalVideoLabels = caseClinicalVideoLabelDao.selectList(labelQueryWrapper); + for (CaseClinicalVideoLabelModel label : caseClinicalVideoLabels){ + aList.add(label.getAppIden()); + } + + for (addClinicalVideoApp.Label label : r.getLabel()){ + bList.add(label.getAppIden()); + } + + // 1. 删除的:a 中有,b 中没有 + List deleted = new ArrayList<>(); + for (String s : aList) { + if (!bList.contains(s)) { + deleted.add(s); + } + } + + // 2. 新增的:b 中有,a 中没有 + List added = new ArrayList<>(); + for (String s : bList) { + if (!aList.contains(s)) { + added.add(s); + } + } + + // 删除 + if (!deleted.isEmpty()) { + for (String s : deleted) { + // 删除视频标签 + LambdaQueryWrapper videoLabelQueryWrapper = new LambdaQueryWrapper<>(); + videoLabelQueryWrapper.eq(CaseClinicalVideoLabelModel::getVideoId, caseClinicalVideo.getVideoId()); + videoLabelQueryWrapper.eq(CaseClinicalVideoLabelModel::getAppIden, s); + caseClinicalVideoLabelDao.delete(videoLabelQueryWrapper); + + // 减少标签统计 + caseClinicalService.DecStatsCaseClinicalLabel(s,2); + } + } + + // 新增 + if (!added.isEmpty()) { + for (String appIden : added){ + CaseClinicalVideoLabelModel caseClinicalVideoLabel = new CaseClinicalVideoLabelModel(); + caseClinicalVideoLabel.setVideoId(caseClinicalVideo.getVideoId()); + caseClinicalVideoLabel.setAppIden(appIden); + + + String labelName = ""; + LocalDateTime pushDate = LocalDateTime.parse(""); + for (addClinicalVideoApp.Label label : r.getLabel()){ + if (Objects.equals(appIden, label.getAppIden())){ + caseClinicalVideoLabel.setLabelName(label.getLabelName()); + } + } + + caseClinicalVideoLabel.setLabelName(labelName); + caseClinicalVideoLabelDao.insert(caseClinicalVideoLabel); + + // 新增标签统计 + caseClinicalService.IncStatsCaseClinicalLabel(appIden,caseClinicalVideoLabel.getLabelName(),2,pushDate); + } + } + } + + // 删除视频数据 + @Transactional + public void deleteClinicalVideo(CaseClinicalVideoModel caseClinicalVideo){ + // 修改视频为删除 + caseClinicalVideo.setDeleteStatus(1); + caseClinicalVideoDao.updateById(caseClinicalVideo); + + // 修改视频统计数量 + DecClinicalVideoStats(String.valueOf(caseClinicalVideo.getVideoId()),4,1); + + // 获取视频标签数据 + LambdaQueryWrapper labelQueryWrapper = new LambdaQueryWrapper<>(); + labelQueryWrapper.eq(CaseClinicalVideoLabelModel::getVideoId, caseClinicalVideo.getVideoId()); + List caseClinicalVideoLabels = caseClinicalVideoLabelDao.selectList(labelQueryWrapper); + for (CaseClinicalVideoLabelModel label : caseClinicalVideoLabels){ + // 减少标签统计 + caseClinicalService.DecStatsCaseClinicalLabel(String.valueOf(caseClinicalVideo.getVideoId()),2); + } + + // 获取视频作者数据 + LambdaQueryWrapper authorQueryWrapper = new LambdaQueryWrapper<>(); + authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, caseClinicalVideo.getVideoId()); + List caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper); + for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors){ + // 获取医生数据 + LambdaQueryWrapper doctorQueryWrapper = new LambdaQueryWrapper<>(); + doctorQueryWrapper.eq(CaseClinicalDoctorModel::getDoctorId,author.getDoctorId()); + CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectOne(doctorQueryWrapper); + if (caseClinicalDoctor == null) { + throw new BusinessException("-1", "无法完成此操作"); + } + + // 减少医生统计 + caseClinicalService.DecStatsCaseClinicalDoctor(author.getDoctorId(),2); + + // 减少医院统计 + caseClinicalService.DecStatsCaseClinicalHospital(String.valueOf(caseClinicalDoctor.getHospitalId()),2); + } } } diff --git a/src/main/java/com/example/caseData/service/CaseExchangeService.java b/src/main/java/com/example/caseData/service/CaseExchangeService.java index e882fdc..f255920 100644 --- a/src/main/java/com/example/caseData/service/CaseExchangeService.java +++ b/src/main/java/com/example/caseData/service/CaseExchangeService.java @@ -54,6 +54,9 @@ public class CaseExchangeService { @Resource private UserDao userDao; + @Resource + private UserService userService; + @Resource private RegularUtil regularUtil; @@ -300,7 +303,6 @@ public class CaseExchangeService { return true; } - /** * 删除-病例交流 * @param exchangeId 病例交流id @@ -355,7 +357,6 @@ public class CaseExchangeService { return true; } - /** * 新增收藏-病例交流 * @param exchangeId 病例交流id @@ -481,6 +482,10 @@ public class CaseExchangeService { return false; } + // 发放积分 + userService.ReportUserScore(3,userId); + + return true; } @@ -755,8 +760,6 @@ public class CaseExchangeService { throw new BusinessException("操作失败"); } - - // 阅读量 if (type == 1){ // 总 @@ -767,8 +770,6 @@ public class CaseExchangeService { // 用户 statsCaseExchangeUserDao.dec(statsCaseExchangeUser.getUserId(),"exchange_read_num",num); - - } // 收藏量 diff --git a/src/main/java/com/example/caseData/service/UserCaseReadService.java b/src/main/java/com/example/caseData/service/UserCaseReadService.java index 08a9544..d3f2537 100644 --- a/src/main/java/com/example/caseData/service/UserCaseReadService.java +++ b/src/main/java/com/example/caseData/service/UserCaseReadService.java @@ -75,7 +75,7 @@ public class UserCaseReadService { // 视频 if (request.getType() == 2){ // 新增统计字段 - boolean r = caseClinicalVideoService.IncClinicalVideoStats(request.getId(),1); + boolean r = caseClinicalVideoService.IncClinicalVideoStats(request.getId(),1,1); if (!r){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return false; diff --git a/src/main/java/com/example/caseData/service/UserService.java b/src/main/java/com/example/caseData/service/UserService.java index 017e2ae..d6de384 100644 --- a/src/main/java/com/example/caseData/service/UserService.java +++ b/src/main/java/com/example/caseData/service/UserService.java @@ -2,29 +2,36 @@ package com.example.caseData.service; import cn.hutool.crypto.SecureUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.example.caseData.dao.BasicHospitalDao; import com.example.caseData.dao.CaseClinicalDoctorDao; +import com.example.caseData.dao.CaseClinicalRecordScoreDao; import com.example.caseData.dao.UserDao; import com.example.caseData.dto.publicDto.LoginDto; import com.example.caseData.exception.BusinessException; import com.example.caseData.extend.app.Hospital.GetHospitalByUuidResponse; import com.example.caseData.extend.app.Hospital.Hospital; +import com.example.caseData.extend.app.Score.Score; import com.example.caseData.extend.app.UserInfo.GetUserInfoResponse; import com.example.caseData.extend.app.UserInfo.UserInfo; -import com.example.caseData.model.BasicHospitalModel; -import com.example.caseData.model.CaseClinicalDoctorModel; -import com.example.caseData.model.UserModel; +import com.example.caseData.model.*; +import com.example.caseData.request.UserRequest.ReportUserScoreRequest; import com.example.caseData.utils.JwtUtil; import com.example.caseData.utils.Replace; import com.example.caseData.utils.StringToInt; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; import java.util.Objects; import static com.baomidou.mybatisplus.extension.toolkit.Db.save; +@Slf4j @Service public class UserService { @Resource @@ -39,12 +46,18 @@ public class UserService { @Resource private CaseClinicalDoctorDao caseClinicalDoctorDao; + @Resource + private CaseClinicalRecordScoreDao caseClinicalRecordScoreDao; + @Resource private Hospital hospital; @Resource private JwtUtil jwtUtil; + @Resource + private Score score; + /** * 用户登陆-手机号 * @return UserModel @@ -268,5 +281,40 @@ public class UserService { return caseClinicalDoctor; } + // 发放积分 + public boolean ReportUserScore(Integer type,String userId) throws BusinessException{ + // 获取积分发放记录 + // 获取今天的日期,并设置时间为 00:00:00 + LocalDateTime startOfToday = LocalDate.now().atStartOfDay(); // 例如:2025-07-30 00:00:00 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("user_id", userId) + .ge("created_at", startOfToday) // created_at >= 今天 00:00:00 + .orderByDesc("created_at"); // 最新的在前 + List caseClinicalRecordScores = caseClinicalRecordScoreDao.selectList(queryWrapper); + if (caseClinicalRecordScores.size() > 3){ + return true; + } + + // 获取用户数据 + UserModel user = userDao.selectById(userId); + if (user == null){ + throw new BusinessException("积分"); + } + + // 发放积分 + score.ReportUserScore(user.getUserIden(),5,"病例库-病例互动"); + + // 添加打赏记录 + CaseClinicalRecordScoreModel data = new CaseClinicalRecordScoreModel(); + data.setUserId(Long.valueOf(userId)); + data.setScore(5); + data.setUserName(user.getUserName()); + data.setNodeName("病例库-病例互动"); + data.setType(type); + data.setScoreType(5); + caseClinicalRecordScoreDao.insert(data); + + return true; + } } \ No newline at end of file diff --git a/src/main/resources/mapper/CaseClinicalArticleMapper.xml b/src/main/resources/mapper/CaseClinicalArticleMapper.xml index 9696059..ee15a34 100644 --- a/src/main/resources/mapper/CaseClinicalArticleMapper.xml +++ b/src/main/resources/mapper/CaseClinicalArticleMapper.xml @@ -172,4 +172,13 @@ AND ca.article_status = 1 AND ca.delete_status = 0 + + \ No newline at end of file diff --git a/src/main/resources/mapper/CaseClinicalVideoMapper.xml b/src/main/resources/mapper/CaseClinicalVideoMapper.xml index 0f1ebb3..3f40504 100644 --- a/src/main/resources/mapper/CaseClinicalVideoMapper.xml +++ b/src/main/resources/mapper/CaseClinicalVideoMapper.xml @@ -109,4 +109,32 @@ AND l.app_iden = #{labelIden} + + + + + + \ No newline at end of file