新增了积分发放
This commit is contained in:
parent
cc7c07aa4a
commit
1bc315902f
@ -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<Map<String, Object>> getUserPage(@Validated({UserRequest.Page.class}) @ModelAttribute UserRequest request) {
|
||||
@ -148,5 +154,4 @@ public class UserController extends BaseController {
|
||||
|
||||
return Response.success(point);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -91,4 +91,11 @@ public interface CaseClinicalArticleDao extends BaseMapper<CaseClinicalArticleMo
|
||||
* @return 最新发表时间,无数据时返回 null
|
||||
*/
|
||||
LocalDateTime selectLastArticlePushDateByDoctorId(@Param("doctorId") Long doctorId);
|
||||
|
||||
/**
|
||||
* 根据医院ID查询该医院最后一篇文章的发表时间
|
||||
* @param labelIden 标签唯一标识
|
||||
* @return 最新发表时间,无数据时返回 null
|
||||
*/
|
||||
LocalDateTime selectLastArticlePushDateByLabelId(@Param("labelIden") String labelIden);
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
package com.example.caseData.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.example.caseData.model.CaseClinicalRecordScoreModel;
|
||||
import com.example.caseData.model.StatsCaseClinicalModel;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Update;
|
||||
|
||||
public interface CaseClinicalRecordScoreDao extends BaseMapper<CaseClinicalRecordScoreModel> {
|
||||
|
||||
}
|
||||
@ -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<CaseClinicalVideoModel>
|
||||
"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);
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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<String, Object> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
|
||||
authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, articleId);
|
||||
List<CaseClinicalArticleAuthorModel> 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<CaseClinicalArticleLabelModel> labelQueryWrapper = new LambdaQueryWrapper<>();
|
||||
labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, articleId);
|
||||
List<CaseClinicalArticleLabelModel> 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<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
|
||||
authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, articleId);
|
||||
List<CaseClinicalArticleAuthorModel> 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<CaseClinicalArticleLabelModel> labelQueryWrapper = new LambdaQueryWrapper<>();
|
||||
labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, articleId);
|
||||
List<CaseClinicalArticleLabelModel> caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper);
|
||||
for (CaseClinicalArticleLabelModel label : caseClinicalArticleLabels) {
|
||||
statsCaseClinicalLabelDao.dec(label.getAppIden(),statsCaseClinicalLabelField,num);
|
||||
}
|
||||
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
|
||||
@ -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<StatsCaseClinicalLabelModel> 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<StatsCaseClinicalLabelModel> 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<StatsCaseClinicalDoctorModel> 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<StatsCaseClinicalDoctorModel> 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<StatsCaseClinicalHospitalModel> 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<StatsCaseClinicalDoctorModel> 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<StatsCaseClinicalHospitalModel> 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<StatsCaseClinicalHospitalModel> 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<StatsCaseClinicalDoctorModel> 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<StatsCaseClinicalDoctorModel> doctorQueryWrapper = new LambdaQueryWrapper<>();
|
||||
// doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId);
|
||||
// StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper);
|
||||
// if (statsCaseClinicalDoctor == null){
|
||||
// return true;
|
||||
// }
|
||||
//
|
||||
// // 获取旧医院数据
|
||||
// LambdaQueryWrapper<StatsCaseClinicalHospitalModel> 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<StatsCaseClinicalDoctorModel> 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;
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -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<CaseClinicalVideoModel> 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<String> aList = new ArrayList<>();
|
||||
List<String> bList = new ArrayList<>();
|
||||
// 作者处理
|
||||
AddClinicalVideoAppAuthor(caseClinicalVideo,r);
|
||||
|
||||
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
|
||||
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, caseClinicalVideo.getVideoId());
|
||||
List<CaseClinicalVideoAuthorModel> caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper);
|
||||
for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors){
|
||||
// 获取医生数据
|
||||
LambdaQueryWrapper<CaseClinicalDoctorModel> 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<String> deleted = new ArrayList<>();
|
||||
for (String s : aList) {
|
||||
if (!bList.contains(s)) {
|
||||
deleted.add(s);
|
||||
}
|
||||
}
|
||||
|
||||
// 2. 新增的:b 中有,a 中没有
|
||||
List<String> 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<String> aAuthorList = new ArrayList<>();
|
||||
List<String> bAuthorList = new ArrayList<>();
|
||||
|
||||
// 获取全部作者
|
||||
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
|
||||
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, caseClinicalVideo.getVideoId());
|
||||
List<CaseClinicalVideoAuthorModel> caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper);
|
||||
for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors){
|
||||
// 获取医生数据
|
||||
LambdaQueryWrapper<CaseClinicalDoctorModel> 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<String> deleted = new ArrayList<>();
|
||||
for (String s : aAuthorList) {
|
||||
if (!bAuthorList.contains(s)) {
|
||||
deleted.add(s);
|
||||
}
|
||||
}
|
||||
|
||||
// 2. 新增的:b 中有,a 中没有
|
||||
List<String> added = new ArrayList<>();
|
||||
for (String s : bAuthorList) {
|
||||
if (!aAuthorList.contains(s)) {
|
||||
added.add(s);
|
||||
}
|
||||
}
|
||||
|
||||
// 删除
|
||||
if (!deleted.isEmpty()) {
|
||||
for (String s : deleted) {
|
||||
// 获取医生数据
|
||||
LambdaQueryWrapper<CaseClinicalDoctorModel> doctorQueryWrapper = new LambdaQueryWrapper<>();
|
||||
doctorQueryWrapper.eq(CaseClinicalDoctorModel::getDoctorIden,s);
|
||||
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectOne(doctorQueryWrapper);
|
||||
if (caseClinicalDoctor == null) {
|
||||
throw new BusinessException("-1", "无法完成此操作");
|
||||
}
|
||||
|
||||
// 删除视频作者
|
||||
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> 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<String> aList = new ArrayList<>();
|
||||
List<String> bList = new ArrayList<>();
|
||||
|
||||
// 获取全部b标签
|
||||
LambdaQueryWrapper<CaseClinicalVideoLabelModel> labelQueryWrapper = new LambdaQueryWrapper<>();
|
||||
labelQueryWrapper.eq(CaseClinicalVideoLabelModel::getVideoId, caseClinicalVideo.getVideoId());
|
||||
List<CaseClinicalVideoLabelModel> 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<String> deleted = new ArrayList<>();
|
||||
for (String s : aList) {
|
||||
if (!bList.contains(s)) {
|
||||
deleted.add(s);
|
||||
}
|
||||
}
|
||||
|
||||
// 2. 新增的:b 中有,a 中没有
|
||||
List<String> added = new ArrayList<>();
|
||||
for (String s : bList) {
|
||||
if (!aList.contains(s)) {
|
||||
added.add(s);
|
||||
}
|
||||
}
|
||||
|
||||
// 删除
|
||||
if (!deleted.isEmpty()) {
|
||||
for (String s : deleted) {
|
||||
// 删除视频标签
|
||||
LambdaQueryWrapper<CaseClinicalVideoLabelModel> 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<CaseClinicalVideoLabelModel> labelQueryWrapper = new LambdaQueryWrapper<>();
|
||||
labelQueryWrapper.eq(CaseClinicalVideoLabelModel::getVideoId, caseClinicalVideo.getVideoId());
|
||||
List<CaseClinicalVideoLabelModel> caseClinicalVideoLabels = caseClinicalVideoLabelDao.selectList(labelQueryWrapper);
|
||||
for (CaseClinicalVideoLabelModel label : caseClinicalVideoLabels){
|
||||
// 减少标签统计
|
||||
caseClinicalService.DecStatsCaseClinicalLabel(String.valueOf(caseClinicalVideo.getVideoId()),2);
|
||||
}
|
||||
|
||||
// 获取视频作者数据
|
||||
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
|
||||
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, caseClinicalVideo.getVideoId());
|
||||
List<CaseClinicalVideoAuthorModel> caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper);
|
||||
for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors){
|
||||
// 获取医生数据
|
||||
LambdaQueryWrapper<CaseClinicalDoctorModel> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
}
|
||||
|
||||
// 收藏量
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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<CaseClinicalRecordScoreModel> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("user_id", userId)
|
||||
.ge("created_at", startOfToday) // created_at >= 今天 00:00:00
|
||||
.orderByDesc("created_at"); // 最新的在前
|
||||
List<CaseClinicalRecordScoreModel> 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;
|
||||
}
|
||||
}
|
||||
@ -172,4 +172,13 @@
|
||||
AND ca.article_status = 1
|
||||
AND ca.delete_status = 0
|
||||
</select>
|
||||
|
||||
<select id="selectLastArticlePushDateByLabelId" resultType="java.time.LocalDateTime">
|
||||
SELECT MAX(ca.push_date) AS last_push_date
|
||||
FROM case_clinical_article ca
|
||||
INNER JOIN case_clinical_article_label cd ON caa.article_id = cd.article_id
|
||||
WHERE cd.app_iden = #{labelIden}
|
||||
AND ca.article_status = 1
|
||||
AND ca.delete_status = 0
|
||||
</select>
|
||||
</mapper>
|
||||
@ -109,4 +109,32 @@
|
||||
AND l.app_iden = #{labelIden}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectLastVideoPushDateByHospitalId" resultType="java.time.LocalDateTime">
|
||||
SELECT MAX(ca.push_date) AS last_push_date
|
||||
FROM case_clinical_video ca
|
||||
INNER JOIN case_clinical_video_author caa ON ca.video_id = caa.video_id
|
||||
INNER JOIN case_clinical_doctor cd ON caa.doctor_id = cd.doctor_id
|
||||
WHERE cd.hospital_id = #{hospitalId}
|
||||
AND ca.video_status = 1
|
||||
AND ca.delete_status = 0
|
||||
</select>
|
||||
|
||||
<select id="selectLastVideoPushDateByDoctorId" resultType="java.time.LocalDateTime">
|
||||
SELECT MAX(ca.push_date) AS last_push_date
|
||||
FROM case_clinical_video ca
|
||||
INNER JOIN case_clinical_video_author caa ON ca.video_id = caa.video_id
|
||||
WHERE caa.doctor_id = #{doctorId}
|
||||
AND ca.video_status = 1
|
||||
AND ca.delete_status = 0
|
||||
</select>
|
||||
|
||||
<select id="selectLastVideoPushDateByLabelId" resultType="java.time.LocalDateTime">
|
||||
SELECT MAX(ca.push_date) AS last_push_date
|
||||
FROM case_clinical_video ca
|
||||
INNER JOIN case_clinical_video_label cd ON ca.video_id = cd.video_id
|
||||
WHERE cd.app_iden = #{labelIden}
|
||||
AND ca.video_status = 1
|
||||
AND ca.delete_status = 0
|
||||
</select>
|
||||
</mapper>
|
||||
Loading…
x
Reference in New Issue
Block a user