新增了积分发放
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.UserPoint;
|
||||||
import com.example.caseData.extend.app.UserPoint.UserPointResponse;
|
import com.example.caseData.extend.app.UserPoint.UserPointResponse;
|
||||||
import com.example.caseData.model.*;
|
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.request.UserRequest.UserRequest;
|
||||||
import com.example.caseData.service.RewardPointService;
|
import com.example.caseData.service.RewardPointService;
|
||||||
|
import com.example.caseData.service.UserService;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@ -55,6 +58,9 @@ public class UserController extends BaseController {
|
|||||||
@Resource
|
@Resource
|
||||||
private UserPoint userPoint;
|
private UserPoint userPoint;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
// // 查询所有用户
|
// // 查询所有用户
|
||||||
// @GetMapping("/users")
|
// @GetMapping("/users")
|
||||||
// public Response<Map<String, Object>> getUserPage(@Validated({UserRequest.Page.class}) @ModelAttribute UserRequest request) {
|
// 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);
|
return Response.success(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -91,4 +91,11 @@ public interface CaseClinicalArticleDao extends BaseMapper<CaseClinicalArticleMo
|
|||||||
* @return 最新发表时间,无数据时返回 null
|
* @return 最新发表时间,无数据时返回 null
|
||||||
*/
|
*/
|
||||||
LocalDateTime selectLastArticlePushDateByDoctorId(@Param("doctorId") Long doctorId);
|
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.Param;
|
||||||
import org.apache.ibatis.annotations.Update;
|
import org.apache.ibatis.annotations.Update;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
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 " +
|
"SET ${field} = CASE WHEN ${field} >= #{numeral} THEN ${field} - #{numeral} ELSE 0 END " +
|
||||||
"WHERE video_id = #{videoId}")
|
"WHERE video_id = #{videoId}")
|
||||||
int dec(@Param("videoId") Long articleId, @Param("field") String field, @Param("numeral") int numeral);
|
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;
|
package com.example.caseData.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.example.caseData.common.Response;
|
||||||
import com.example.caseData.dao.*;
|
import com.example.caseData.dao.*;
|
||||||
import com.example.caseData.exception.BusinessException;
|
import com.example.caseData.exception.BusinessException;
|
||||||
import com.example.caseData.model.*;
|
import com.example.caseData.model.*;
|
||||||
@ -50,6 +51,9 @@ public class CaseClinicalArticleService {
|
|||||||
@Resource
|
@Resource
|
||||||
private UserDao userDao;
|
private UserDao userDao;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private CaseClinicalArticleLabelDao caseClinicalArticleLabelDao;
|
private CaseClinicalArticleLabelDao caseClinicalArticleLabelDao;
|
||||||
|
|
||||||
@ -181,6 +185,9 @@ public class CaseClinicalArticleService {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 发放积分
|
||||||
|
userService.ReportUserScore(1,userId);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -374,43 +381,28 @@ public class CaseClinicalArticleService {
|
|||||||
try {
|
try {
|
||||||
String caseClinicalArticleField = ""; // 具体文章
|
String caseClinicalArticleField = ""; // 具体文章
|
||||||
String statsCaseClinicalField = ""; // 全部文章
|
String statsCaseClinicalField = ""; // 全部文章
|
||||||
String statsCaseClinicalHospitalField = ""; // 医院
|
|
||||||
String statsCaseClinicalDoctorField = ""; // 医生
|
|
||||||
String statsCaseClinicalLabelField = ""; // 标签
|
|
||||||
|
|
||||||
// 阅读
|
// 阅读
|
||||||
if (type == 1){
|
if (type == 1){
|
||||||
caseClinicalArticleField = "read_num"; // 具体文章
|
caseClinicalArticleField = "read_num"; // 具体文章
|
||||||
statsCaseClinicalField = "article_read_num"; // 全部文章
|
statsCaseClinicalField = "article_read_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "article_read_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "article_read_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_read_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 收藏
|
// 收藏
|
||||||
if (type == 2){
|
if (type == 2){
|
||||||
caseClinicalArticleField = "collect_num"; // 具体文章
|
caseClinicalArticleField = "collect_num"; // 具体文章
|
||||||
statsCaseClinicalField = "article_collect_num"; // 全部文章
|
statsCaseClinicalField = "article_collect_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "article_collect_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "article_collect_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_collect_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 评论
|
// 评论
|
||||||
if (type == 3){
|
if (type == 3){
|
||||||
caseClinicalArticleField = "comment_num"; // 具体文章
|
caseClinicalArticleField = "comment_num"; // 具体文章
|
||||||
statsCaseClinicalField = "article_comment_num"; // 全部文章
|
statsCaseClinicalField = "article_comment_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "article_comment_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "article_comment_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_comment_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 文章数
|
// 文章数
|
||||||
if (type == 4){
|
if (type == 4){
|
||||||
statsCaseClinicalField = "article_num"; // 全部文章
|
statsCaseClinicalField = "article_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "article_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "article_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!caseClinicalArticleField.isEmpty()){
|
if (!caseClinicalArticleField.isEmpty()){
|
||||||
@ -418,29 +410,6 @@ public class CaseClinicalArticleService {
|
|||||||
}
|
}
|
||||||
statsCaseClinicalDao.inc(1L,statsCaseClinicalField,num);
|
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;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
@ -458,43 +427,28 @@ public class CaseClinicalArticleService {
|
|||||||
try {
|
try {
|
||||||
String caseClinicalArticleField = ""; // 具体文章
|
String caseClinicalArticleField = ""; // 具体文章
|
||||||
String statsCaseClinicalField = ""; // 全部文章
|
String statsCaseClinicalField = ""; // 全部文章
|
||||||
String statsCaseClinicalHospitalField = ""; // 医院
|
|
||||||
String statsCaseClinicalDoctorField = ""; // 医生
|
|
||||||
String statsCaseClinicalLabelField = ""; // 标签
|
|
||||||
|
|
||||||
// 阅读
|
// 阅读
|
||||||
if (type == 1){
|
if (type == 1){
|
||||||
caseClinicalArticleField = "read_num"; // 具体文章
|
caseClinicalArticleField = "read_num"; // 具体文章
|
||||||
statsCaseClinicalField = "article_read_num"; // 全部文章
|
statsCaseClinicalField = "article_read_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "article_read_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "article_read_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_read_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 收藏
|
// 收藏
|
||||||
if (type == 2){
|
if (type == 2){
|
||||||
caseClinicalArticleField = "collect_num"; // 具体文章
|
caseClinicalArticleField = "collect_num"; // 具体文章
|
||||||
statsCaseClinicalField = "article_collect_num"; // 全部文章
|
statsCaseClinicalField = "article_collect_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "article_collect_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "article_collect_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_collect_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 评论
|
// 评论
|
||||||
if (type == 3){
|
if (type == 3){
|
||||||
caseClinicalArticleField = "comment_num"; // 具体文章
|
caseClinicalArticleField = "comment_num"; // 具体文章
|
||||||
statsCaseClinicalField = "article_comment_num"; // 全部文章
|
statsCaseClinicalField = "article_comment_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "article_comment_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "article_comment_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_comment_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 文章数
|
// 文章数
|
||||||
if (type == 4){
|
if (type == 4){
|
||||||
statsCaseClinicalField = "article_num"; // 全部文章
|
statsCaseClinicalField = "article_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "article_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "article_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!caseClinicalArticleField.isEmpty()){
|
if (!caseClinicalArticleField.isEmpty()){
|
||||||
@ -502,29 +456,6 @@ public class CaseClinicalArticleService {
|
|||||||
}
|
}
|
||||||
statsCaseClinicalDao.dec(1L,statsCaseClinicalField,num);
|
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;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
|||||||
@ -1,10 +1,7 @@
|
|||||||
package com.example.caseData.service;
|
package com.example.caseData.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.example.caseData.dao.CaseClinicalArticleDao;
|
import com.example.caseData.dao.*;
|
||||||
import com.example.caseData.dao.StatsCaseClinicalDoctorDao;
|
|
||||||
import com.example.caseData.dao.StatsCaseClinicalHospitalDao;
|
|
||||||
import com.example.caseData.dao.StatsCaseClinicalLabelDao;
|
|
||||||
import com.example.caseData.exception.BusinessException;
|
import com.example.caseData.exception.BusinessException;
|
||||||
import com.example.caseData.model.CaseClinicalArticleModel;
|
import com.example.caseData.model.CaseClinicalArticleModel;
|
||||||
import com.example.caseData.model.StatsCaseClinicalDoctorModel;
|
import com.example.caseData.model.StatsCaseClinicalDoctorModel;
|
||||||
@ -31,9 +28,19 @@ public class CaseClinicalService {
|
|||||||
@Resource
|
@Resource
|
||||||
private CaseClinicalArticleDao caseClinicalArticleDao;
|
private CaseClinicalArticleDao caseClinicalArticleDao;
|
||||||
|
|
||||||
// 新增标签统计
|
@Resource
|
||||||
|
private CaseClinicalVideoDao caseClinicalVideoDao;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增标签统计
|
||||||
|
* @param labelIden
|
||||||
|
* @param labelName
|
||||||
|
* @param type 类型 1:文章 2:视频
|
||||||
|
* @param lastPushDate
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@Transactional
|
@Transactional
|
||||||
public void AddStatsCaseClinicalLabel(String labelIden,String labelName){
|
public StatsCaseClinicalLabelModel IncStatsCaseClinicalLabel(String labelIden,String labelName,Integer type,LocalDateTime lastPushDate){
|
||||||
LambdaQueryWrapper<StatsCaseClinicalLabelModel> mapQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<StatsCaseClinicalLabelModel> mapQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
mapQueryWrapper.eq(StatsCaseClinicalLabelModel::getLabelIden, labelIden);
|
mapQueryWrapper.eq(StatsCaseClinicalLabelModel::getLabelIden, labelIden);
|
||||||
StatsCaseClinicalLabelModel statsCaseClinicalLabel = statsCaseClinicalLabelDao.selectOne(mapQueryWrapper);
|
StatsCaseClinicalLabelModel statsCaseClinicalLabel = statsCaseClinicalLabelDao.selectOne(mapQueryWrapper);
|
||||||
@ -41,20 +48,126 @@ public class CaseClinicalService {
|
|||||||
statsCaseClinicalLabel = new StatsCaseClinicalLabelModel();
|
statsCaseClinicalLabel = new StatsCaseClinicalLabelModel();
|
||||||
statsCaseClinicalLabel.setLabelIden(labelIden);
|
statsCaseClinicalLabel.setLabelIden(labelIden);
|
||||||
statsCaseClinicalLabel.setLabelName(labelName);
|
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);
|
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
|
@Transactional
|
||||||
public StatsCaseClinicalDoctorModel AddStatsCaseClinicalDoctor(String doctorId){
|
public StatsCaseClinicalDoctorModel IncStatsCaseClinicalDoctor(String doctorId,Integer type,LocalDateTime lastPushDate){
|
||||||
LambdaQueryWrapper<StatsCaseClinicalDoctorModel> mapQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<StatsCaseClinicalDoctorModel> mapQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
mapQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId);
|
mapQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId);
|
||||||
StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(mapQueryWrapper);
|
StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(mapQueryWrapper);
|
||||||
if (statsCaseClinicalDoctor == null) {
|
if (statsCaseClinicalDoctor == null) {
|
||||||
statsCaseClinicalDoctor = new StatsCaseClinicalDoctorModel();
|
statsCaseClinicalDoctor = new StatsCaseClinicalDoctorModel();
|
||||||
statsCaseClinicalDoctor.setDoctorId(Long.valueOf(doctorId));
|
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);
|
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;
|
return statsCaseClinicalDoctor;
|
||||||
@ -62,211 +175,264 @@ public class CaseClinicalService {
|
|||||||
|
|
||||||
// 新增医院统计
|
// 新增医院统计
|
||||||
@Transactional
|
@Transactional
|
||||||
public StatsCaseClinicalHospitalModel AddStatsCaseClinicalHospital(String hospitalId){
|
public StatsCaseClinicalHospitalModel IncStatsCaseClinicalHospital(String hospitalId,Integer type,LocalDateTime lastPushDate){
|
||||||
LambdaQueryWrapper<StatsCaseClinicalHospitalModel> mapQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<StatsCaseClinicalHospitalModel> mapQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
mapQueryWrapper.eq(StatsCaseClinicalHospitalModel::getHospitalId, hospitalId);
|
mapQueryWrapper.eq(StatsCaseClinicalHospitalModel::getHospitalId, hospitalId);
|
||||||
StatsCaseClinicalHospitalModel statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectOne(mapQueryWrapper);
|
StatsCaseClinicalHospitalModel statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectOne(mapQueryWrapper);
|
||||||
if (statsCaseClinicalHospital == null) {
|
if (statsCaseClinicalHospital == null) {
|
||||||
statsCaseClinicalHospital = new StatsCaseClinicalHospitalModel();
|
statsCaseClinicalHospital = new StatsCaseClinicalHospitalModel();
|
||||||
statsCaseClinicalHospital.setHospitalId(Long.valueOf(hospitalId));
|
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);
|
statsCaseClinicalHospitalDao.insert(statsCaseClinicalHospital);
|
||||||
|
}else{
|
||||||
|
if (type == 1){
|
||||||
|
statsCaseClinicalHospitalDao.inc(statsCaseClinicalHospital.getHospitalId(),"article_num",1);
|
||||||
|
}else{
|
||||||
|
statsCaseClinicalHospitalDao.inc(statsCaseClinicalHospital.getHospitalId(),"video_num",1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return statsCaseClinicalHospital;
|
return statsCaseClinicalHospital;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理文章所属医院的数量统计
|
* 减少医院统计
|
||||||
|
* @param hospitalId
|
||||||
|
* @param type 类型 1:文章 2:视频
|
||||||
|
* @return
|
||||||
*/
|
*/
|
||||||
@Transactional
|
@Transactional
|
||||||
public boolean handleHospitalStat(Long doctorId,Long oldHospitalId,Long newHospitalId){
|
public StatsCaseClinicalHospitalModel DecStatsCaseClinicalHospital(String hospitalId,Integer type){
|
||||||
try {
|
LambdaQueryWrapper<StatsCaseClinicalHospitalModel> mapQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
// 获取统计表医生数据
|
mapQueryWrapper.eq(StatsCaseClinicalHospitalModel::getHospitalId, hospitalId);
|
||||||
LambdaQueryWrapper<StatsCaseClinicalDoctorModel> doctorQueryWrapper = new LambdaQueryWrapper<>();
|
StatsCaseClinicalHospitalModel statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectOne(mapQueryWrapper);
|
||||||
doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId);
|
if (statsCaseClinicalHospital == null) {
|
||||||
StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper);
|
return null;
|
||||||
if (statsCaseClinicalDoctor == null){
|
}else{
|
||||||
return true;
|
if (type == 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);
|
LocalDateTime lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByHospitalId(Long.valueOf(hospitalId));
|
||||||
if (lastPushDate != null){
|
if (lastPushDate != null){
|
||||||
statsCaseClinicalHospital.setLastPushDate(lastPushDate);
|
statsCaseClinicalHospital.setLastPushDate(lastPushDate);
|
||||||
statsCaseClinicalHospitalDao.updateById(statsCaseClinicalHospital);
|
statsCaseClinicalHospitalDao.updateById(statsCaseClinicalHospital);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取新医院数据
|
statsCaseClinicalHospitalDao.inc(statsCaseClinicalHospital.getHospitalId(),"article_num",1);
|
||||||
hospitalQueryWrapper = new LambdaQueryWrapper<>();
|
}else{
|
||||||
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);
|
LocalDateTime lastPushDate = caseClinicalVideoDao.selectLastVideoPushDateByHospitalId(Long.valueOf(hospitalId));
|
||||||
if (lastPushDate != null){
|
if (lastPushDate != null){
|
||||||
statsCaseClinicalHospital.setLastPushDate(lastPushDate);
|
statsCaseClinicalHospital.setLastPushDate(lastPushDate);
|
||||||
statsCaseClinicalHospitalDao.updateById(statsCaseClinicalHospital);
|
statsCaseClinicalHospitalDao.updateById(statsCaseClinicalHospital);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
statsCaseClinicalHospitalDao.inc(statsCaseClinicalHospital.getHospitalId(),"video_num",1);
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return statsCaseClinicalHospital;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 处理文章所属医生的数量统计
|
// * 处理文章所属医院的数量统计
|
||||||
*/
|
// */
|
||||||
@Transactional
|
// @Transactional
|
||||||
public boolean handleDoctorStat(Long oldDoctorId,Long newDoctorId){
|
// public boolean handleHospitalStat(Long doctorId,Long oldHospitalId,Long newHospitalId){
|
||||||
try {
|
// try {
|
||||||
// 获取统计表医生数据-旧
|
// // 获取统计表医生数据
|
||||||
LambdaQueryWrapper<StatsCaseClinicalDoctorModel> doctorQueryWrapper = new LambdaQueryWrapper<>();
|
// LambdaQueryWrapper<StatsCaseClinicalDoctorModel> doctorQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, oldDoctorId);
|
// doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, doctorId);
|
||||||
StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper);
|
// StatsCaseClinicalDoctorModel statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper);
|
||||||
if (statsCaseClinicalDoctor == null){
|
// if (statsCaseClinicalDoctor == null){
|
||||||
return true;
|
// return true;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
// 减少数-文章
|
// // 获取旧医院数据
|
||||||
statsCaseClinicalDoctorDao.dec(oldDoctorId,"article_num",statsCaseClinicalDoctor.getArticleNum());
|
// LambdaQueryWrapper<StatsCaseClinicalHospitalModel> hospitalQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
// hospitalQueryWrapper.eq(StatsCaseClinicalHospitalModel::getHospitalId, oldHospitalId);
|
||||||
// 减少阅读数-文章
|
// StatsCaseClinicalHospitalModel statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectOne(hospitalQueryWrapper);
|
||||||
statsCaseClinicalDoctorDao.dec(oldDoctorId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum());
|
// if (statsCaseClinicalHospital == null){
|
||||||
|
// throw new BusinessException("操作失败");
|
||||||
// 减少收藏数-文章
|
// }
|
||||||
statsCaseClinicalDoctorDao.dec(oldDoctorId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum());
|
//
|
||||||
|
// // 减少数-文章
|
||||||
// 减少评论数-文章
|
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_num",statsCaseClinicalDoctor.getArticleNum());
|
||||||
statsCaseClinicalDoctorDao.dec(oldDoctorId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum());
|
//
|
||||||
|
// // 减少阅读数-文章
|
||||||
// 减少数-视频
|
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum());
|
||||||
statsCaseClinicalDoctorDao.dec(oldDoctorId,"video_num",statsCaseClinicalDoctor.getVideoNum());
|
//
|
||||||
|
// // 减少收藏数-文章
|
||||||
// 减少阅读数-视频
|
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum());
|
||||||
statsCaseClinicalDoctorDao.dec(oldDoctorId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum());
|
//
|
||||||
|
// // 减少评论数-文章
|
||||||
// 减少收藏数-视频
|
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum());
|
||||||
statsCaseClinicalDoctorDao.dec(oldDoctorId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum());
|
//
|
||||||
|
// // 减少数-视频
|
||||||
// 减少评论数-视频
|
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_num",statsCaseClinicalDoctor.getVideoNum());
|
||||||
statsCaseClinicalDoctorDao.dec(oldDoctorId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum());
|
//
|
||||||
|
// // 减少阅读数-视频
|
||||||
// 最后一篇文章发表时间
|
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum());
|
||||||
LocalDateTime lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByDoctorId(oldDoctorId);
|
//
|
||||||
if (lastPushDate != null){
|
// // 减少收藏数-视频
|
||||||
statsCaseClinicalDoctor.setLastPushDate(lastPushDate);
|
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum());
|
||||||
statsCaseClinicalDoctorDao.updateById(statsCaseClinicalDoctor);
|
//
|
||||||
}
|
// // 减少评论数-视频
|
||||||
|
// statsCaseClinicalHospitalDao.dec(oldHospitalId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum());
|
||||||
// 获取统计表医生数据-新
|
//
|
||||||
doctorQueryWrapper = new LambdaQueryWrapper<>();
|
// // 最后一篇文章发表时间
|
||||||
doctorQueryWrapper.eq(StatsCaseClinicalDoctorModel::getDoctorId, newDoctorId);
|
// LocalDateTime lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByHospitalId(oldHospitalId);
|
||||||
statsCaseClinicalDoctor = statsCaseClinicalDoctorDao.selectOne(doctorQueryWrapper);
|
// if (lastPushDate != null){
|
||||||
if (statsCaseClinicalDoctor == null){
|
// statsCaseClinicalHospital.setLastPushDate(lastPushDate);
|
||||||
// 新增新医生
|
// statsCaseClinicalHospitalDao.updateById(statsCaseClinicalHospital);
|
||||||
statsCaseClinicalDoctor = AddStatsCaseClinicalDoctor(String.valueOf(newDoctorId));
|
// }
|
||||||
}
|
//
|
||||||
|
// // 获取新医院数据
|
||||||
// 增加数-文章
|
// hospitalQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
statsCaseClinicalDoctorDao.inc(newDoctorId,"article_num",statsCaseClinicalDoctor.getArticleNum());
|
// hospitalQueryWrapper.eq(StatsCaseClinicalHospitalModel::getHospitalId, newHospitalId);
|
||||||
|
// statsCaseClinicalHospital = statsCaseClinicalHospitalDao.selectOne(hospitalQueryWrapper);
|
||||||
// 增加阅读数-文章
|
// if (statsCaseClinicalHospital == null){
|
||||||
statsCaseClinicalDoctorDao.inc(newDoctorId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum());
|
// // 新增新医院
|
||||||
|
// statsCaseClinicalHospital = AddStatsCaseClinicalHospital(String.valueOf(newHospitalId));
|
||||||
// 增加收藏数-文章
|
// }
|
||||||
statsCaseClinicalDoctorDao.inc(newDoctorId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum());
|
//
|
||||||
|
// // 增加数-文章
|
||||||
// 增加评论数-文章
|
// statsCaseClinicalHospitalDao.inc(newHospitalId,"article_num",statsCaseClinicalDoctor.getArticleNum());
|
||||||
statsCaseClinicalDoctorDao.inc(newDoctorId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum());
|
//
|
||||||
|
// // 增加阅读数-文章
|
||||||
// 增加数-视频
|
// statsCaseClinicalHospitalDao.inc(newHospitalId,"article_read_num",statsCaseClinicalDoctor.getArticleReadNum());
|
||||||
statsCaseClinicalDoctorDao.inc(newDoctorId,"video_num",statsCaseClinicalDoctor.getVideoNum());
|
//
|
||||||
|
// // 增加收藏数-文章
|
||||||
// 增加阅读数-视频
|
// statsCaseClinicalHospitalDao.inc(newHospitalId,"article_collect_num",statsCaseClinicalDoctor.getArticleCollectNum());
|
||||||
statsCaseClinicalDoctorDao.inc(newDoctorId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum());
|
//
|
||||||
|
// // 增加评论数-文章
|
||||||
// 增加收藏数-视频
|
// statsCaseClinicalHospitalDao.inc(newHospitalId,"article_comment_num",statsCaseClinicalDoctor.getArticleCommentNum());
|
||||||
statsCaseClinicalDoctorDao.inc(newDoctorId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum());
|
//
|
||||||
|
// // 增加数-视频
|
||||||
// 增加评论数-视频
|
// statsCaseClinicalHospitalDao.inc(newHospitalId,"video_num",statsCaseClinicalDoctor.getVideoNum());
|
||||||
statsCaseClinicalDoctorDao.inc(newDoctorId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum());
|
//
|
||||||
|
// // 增加阅读数-视频
|
||||||
// 最后一篇文章发表时间
|
// statsCaseClinicalHospitalDao.inc(newHospitalId,"video_read_num",statsCaseClinicalDoctor.getVideoReadNum());
|
||||||
lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByDoctorId(newDoctorId);
|
//
|
||||||
if (lastPushDate != null){
|
// // 增加收藏数-视频
|
||||||
statsCaseClinicalDoctor.setLastPushDate(lastPushDate);
|
// statsCaseClinicalHospitalDao.inc(newHospitalId,"video_collect_num",statsCaseClinicalDoctor.getVideoCollectNum());
|
||||||
statsCaseClinicalDoctorDao.updateById(statsCaseClinicalDoctor);
|
//
|
||||||
}
|
// // 增加评论数-视频
|
||||||
} catch (Exception e) {
|
// statsCaseClinicalHospitalDao.inc(newHospitalId,"video_comment_num",statsCaseClinicalDoctor.getVideoCommentNum());
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
//
|
||||||
return false;
|
// // 最后一篇文章发表时间
|
||||||
}
|
// lastPushDate = caseClinicalArticleDao.selectLastArticlePushDateByHospitalId(newHospitalId);
|
||||||
|
// if (lastPushDate != null){
|
||||||
return true;
|
// 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){
|
if (!r){
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
return false;
|
return false;
|
||||||
@ -140,7 +140,7 @@ public class CaseClinicalVideoService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 减少视频的统计字段
|
// 减少视频的统计字段
|
||||||
boolean r = DecClinicalVideoStats(videoId,2);
|
boolean r = DecClinicalVideoStats(videoId,2,1);
|
||||||
if (!r){
|
if (!r){
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
return false;
|
return false;
|
||||||
@ -198,12 +198,15 @@ public class CaseClinicalVideoService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 新增文章的统计字段
|
// 新增文章的统计字段
|
||||||
boolean r = IncClinicalVideoStats(videoId,3);
|
boolean r = IncClinicalVideoStats(videoId,3,1);
|
||||||
if (!r){
|
if (!r){
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 发放积分
|
||||||
|
userService.ReportUserScore(2,userId);
|
||||||
|
|
||||||
return true;
|
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){
|
if (!r){
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
return false;
|
return false;
|
||||||
@ -393,54 +396,39 @@ public class CaseClinicalVideoService {
|
|||||||
* @param type 类型:1:阅读量 2:收藏量 3:评论数 4:文章数
|
* @param type 类型:1:阅读量 2:收藏量 3:评论数 4:文章数
|
||||||
*/
|
*/
|
||||||
@Transactional
|
@Transactional
|
||||||
public boolean IncClinicalVideoStats(String videoId,Integer type){
|
public boolean IncClinicalVideoStats(String videoId,Integer type,Integer num){
|
||||||
try {
|
try {
|
||||||
String caseClinicalVideoField = ""; // 具体文章
|
String caseClinicalVideoField = ""; // 具体文章
|
||||||
String statsCaseClinicalField = ""; // 全部文章
|
String statsCaseClinicalField = ""; // 全部文章
|
||||||
String statsCaseClinicalHospitalField = ""; // 医院
|
|
||||||
String statsCaseClinicalDoctorField = ""; // 医生
|
|
||||||
String statsCaseClinicalLabelField = ""; // 标签
|
|
||||||
|
|
||||||
// 阅读
|
// 阅读
|
||||||
if (type == 1){
|
if (type == 1){
|
||||||
caseClinicalVideoField = "read_num"; // 具体文章
|
caseClinicalVideoField = "read_num"; // 具体文章
|
||||||
statsCaseClinicalField = "video_read_num"; // 全部文章
|
statsCaseClinicalField = "video_read_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "video_read_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "video_read_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_read_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 收藏
|
// 收藏
|
||||||
if (type == 2){
|
if (type == 2){
|
||||||
caseClinicalVideoField = "collect_num"; // 具体文章
|
caseClinicalVideoField = "collect_num"; // 具体文章
|
||||||
statsCaseClinicalField = "video_collect_num"; // 全部文章
|
statsCaseClinicalField = "video_collect_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "video_collect_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "video_collect_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_collect_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 评论
|
// 评论
|
||||||
if (type == 3){
|
if (type == 3){
|
||||||
caseClinicalVideoField = "comment_num"; // 具体文章
|
caseClinicalVideoField = "comment_num"; // 具体文章
|
||||||
statsCaseClinicalField = "video_comment_num"; // 全部文章
|
statsCaseClinicalField = "video_comment_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "video_comment_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "video_comment_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_comment_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 文章数
|
// 文章数
|
||||||
if (type == 4){
|
if (type == 4){
|
||||||
statsCaseClinicalField = "article_num"; // 全部文章
|
statsCaseClinicalField = "article_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "article_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "article_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!caseClinicalVideoField.isEmpty()){
|
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;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -455,54 +443,39 @@ public class CaseClinicalVideoService {
|
|||||||
* @param type 类型:1:阅读量 2:收藏量 3:评论数 4:文章数
|
* @param type 类型:1:阅读量 2:收藏量 3:评论数 4:文章数
|
||||||
*/
|
*/
|
||||||
@Transactional
|
@Transactional
|
||||||
public boolean DecClinicalVideoStats(String videoId,Integer type){
|
public boolean DecClinicalVideoStats(String videoId,Integer type,Integer num){
|
||||||
try {
|
try {
|
||||||
String caseClinicalVideoField = ""; // 具体文章
|
String caseClinicalVideoField = ""; // 具体文章
|
||||||
String statsCaseClinicalField = ""; // 全部文章
|
String statsCaseClinicalField = ""; // 全部文章
|
||||||
String statsCaseClinicalHospitalField = ""; // 医院
|
|
||||||
String statsCaseClinicalDoctorField = ""; // 医生
|
|
||||||
String statsCaseClinicalLabelField = ""; // 标签
|
|
||||||
|
|
||||||
// 阅读
|
// 阅读
|
||||||
if (type == 1){
|
if (type == 1){
|
||||||
caseClinicalVideoField = "read_num"; // 具体文章
|
caseClinicalVideoField = "read_num"; // 具体文章
|
||||||
statsCaseClinicalField = "video_read_num"; // 全部文章
|
statsCaseClinicalField = "video_read_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "video_read_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "video_read_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_read_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 收藏
|
// 收藏
|
||||||
if (type == 2){
|
if (type == 2){
|
||||||
caseClinicalVideoField = "collect_num"; // 具体文章
|
caseClinicalVideoField = "collect_num"; // 具体文章
|
||||||
statsCaseClinicalField = "video_collect_num"; // 全部文章
|
statsCaseClinicalField = "video_collect_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "video_collect_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "video_collect_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_collect_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 评论
|
// 评论
|
||||||
if (type == 3){
|
if (type == 3){
|
||||||
caseClinicalVideoField = "comment_num"; // 具体文章
|
caseClinicalVideoField = "comment_num"; // 具体文章
|
||||||
statsCaseClinicalField = "video_comment_num"; // 全部文章
|
statsCaseClinicalField = "video_comment_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "video_comment_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "video_comment_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_comment_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 文章数
|
// 文章数
|
||||||
if (type == 4){
|
if (type == 4){
|
||||||
statsCaseClinicalField = "article_num"; // 全部文章
|
statsCaseClinicalField = "article_num"; // 全部文章
|
||||||
statsCaseClinicalHospitalField = "article_num"; // 医院
|
|
||||||
statsCaseClinicalDoctorField = "article_num"; // 医生
|
|
||||||
statsCaseClinicalLabelField = "article_num"; // 标签
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!caseClinicalVideoField.isEmpty()){
|
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;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -550,7 +523,6 @@ public class CaseClinicalVideoService {
|
|||||||
// 检测签名
|
// 检测签名
|
||||||
Video.checkSign(request,"26e8675f44565b1ed4eaaa0fcf3531d7",r,objectMapper);
|
Video.checkSign(request,"26e8675f44565b1ed4eaaa0fcf3531d7",r,objectMapper);
|
||||||
|
|
||||||
|
|
||||||
// 获取视频数据
|
// 获取视频数据
|
||||||
LambdaQueryWrapper<CaseClinicalVideoModel> videoQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<CaseClinicalVideoModel> videoQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
videoQueryWrapper.eq(CaseClinicalVideoModel::getVideoNo, r.getVideoNo());
|
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);
|
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,10 +614,40 @@ public class CaseClinicalVideoService {
|
|||||||
|
|
||||||
caseClinicalVideoDao.updateById(caseClinicalVideo);
|
caseClinicalVideoDao.updateById(caseClinicalVideo);
|
||||||
|
|
||||||
// 获取全部作者
|
// 作者处理
|
||||||
List<String> aList = new ArrayList<>();
|
AddClinicalVideoAppAuthor(caseClinicalVideo,r);
|
||||||
List<String> bList = new ArrayList<>();
|
|
||||||
|
|
||||||
|
// 标签处理
|
||||||
|
AddClinicalVideoAppLabel(caseClinicalVideo,r);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
if (Objects.equals(r.getAction(), "delete")){
|
||||||
|
if (caseClinicalVideo == null){
|
||||||
|
throw new BusinessException("-1", "无法完成此操作");
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteClinicalVideo(caseClinicalVideo);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new BusinessException("-1", e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
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<>();
|
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, caseClinicalVideo.getVideoId());
|
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, caseClinicalVideo.getVideoId());
|
||||||
List<CaseClinicalVideoAuthorModel> caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper);
|
List<CaseClinicalVideoAuthorModel> caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper);
|
||||||
@ -658,11 +660,95 @@ public class CaseClinicalVideoService {
|
|||||||
throw new BusinessException("-1", "无法完成此操作");
|
throw new BusinessException("-1", "无法完成此操作");
|
||||||
}
|
}
|
||||||
|
|
||||||
aList.add(caseClinicalDoctor.getDoctorIden());
|
aAuthorList.add(caseClinicalDoctor.getDoctorIden());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (addClinicalVideoApp.Author author : r.getAuthor()){
|
for (addClinicalVideoApp.Author author : r.getAuthor()){
|
||||||
bList.add(author.getDoctorIden());
|
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 中没有
|
// 1. 删除的:a 中有,b 中没有
|
||||||
@ -683,41 +769,80 @@ public class CaseClinicalVideoService {
|
|||||||
|
|
||||||
// 删除
|
// 删除
|
||||||
if (!deleted.isEmpty()) {
|
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()) {
|
if (!added.isEmpty()) {
|
||||||
for (String appIden : added){
|
for (String appIden : added){
|
||||||
// 获取app用户数据
|
CaseClinicalVideoLabelModel caseClinicalVideoLabel = new CaseClinicalVideoLabelModel();
|
||||||
GetUserInfoResponse result = userInfo.getUserInfoByUuid(appIden);
|
caseClinicalVideoLabel.setVideoId(caseClinicalVideo.getVideoId());
|
||||||
CaseClinicalDoctorModel caseClinicalDoctor = userService.GetCaseClinicalDoctor(result);
|
caseClinicalVideoLabel.setAppIden(appIden);
|
||||||
|
|
||||||
CaseClinicalVideoAuthorModel caseClinicalVideoAuthor = new CaseClinicalVideoAuthorModel();
|
|
||||||
caseClinicalVideoAuthor.setVideoId(caseClinicalVideo.getVideoId());
|
|
||||||
caseClinicalVideoAuthor.setDoctorId(String.valueOf(caseClinicalDoctor.getDoctorId()));
|
|
||||||
caseClinicalVideoAuthorDao.insert(caseClinicalVideoAuthor);
|
|
||||||
|
|
||||||
// 新增作者统计
|
String labelName = "";
|
||||||
caseClinicalService.AddStatsCaseClinicalDoctor(String.valueOf(caseClinicalDoctor.getDoctorId()));
|
LocalDateTime pushDate = LocalDateTime.parse("");
|
||||||
|
for (addClinicalVideoApp.Label label : r.getLabel()){
|
||||||
|
if (Objects.equals(appIden, label.getAppIden())){
|
||||||
|
caseClinicalVideoLabel.setLabelName(label.getLabelName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 新增医院统计
|
caseClinicalVideoLabel.setLabelName(labelName);
|
||||||
caseClinicalService.AddStatsCaseClinicalHospital(String.valueOf(caseClinicalDoctor.getHospitalId()));
|
caseClinicalVideoLabelDao.insert(caseClinicalVideoLabel);
|
||||||
|
|
||||||
|
// 新增标签统计
|
||||||
|
caseClinicalService.IncStatsCaseClinicalLabel(appIden,caseClinicalVideoLabel.getLabelName(),2,pushDate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除
|
// 删除视频数据
|
||||||
if (Objects.equals(r.getAction(), "delete")){
|
@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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取视频作者数据
|
||||||
throw new BusinessException("-1", "错误");
|
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
} catch (Exception e) {
|
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, caseClinicalVideo.getVideoId());
|
||||||
throw new BusinessException("-1", e.getMessage());
|
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", "无法完成此操作");
|
||||||
}
|
}
|
||||||
|
|
||||||
// return true;
|
// 减少医生统计
|
||||||
|
caseClinicalService.DecStatsCaseClinicalDoctor(author.getDoctorId(),2);
|
||||||
|
|
||||||
|
// 减少医院统计
|
||||||
|
caseClinicalService.DecStatsCaseClinicalHospital(String.valueOf(caseClinicalDoctor.getHospitalId()),2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -54,6 +54,9 @@ public class CaseExchangeService {
|
|||||||
@Resource
|
@Resource
|
||||||
private UserDao userDao;
|
private UserDao userDao;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private RegularUtil regularUtil;
|
private RegularUtil regularUtil;
|
||||||
|
|
||||||
@ -300,7 +303,6 @@ public class CaseExchangeService {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除-病例交流
|
* 删除-病例交流
|
||||||
* @param exchangeId 病例交流id
|
* @param exchangeId 病例交流id
|
||||||
@ -355,7 +357,6 @@ public class CaseExchangeService {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增收藏-病例交流
|
* 新增收藏-病例交流
|
||||||
* @param exchangeId 病例交流id
|
* @param exchangeId 病例交流id
|
||||||
@ -481,6 +482,10 @@ public class CaseExchangeService {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 发放积分
|
||||||
|
userService.ReportUserScore(3,userId);
|
||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -755,8 +760,6 @@ public class CaseExchangeService {
|
|||||||
throw new BusinessException("操作失败");
|
throw new BusinessException("操作失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 阅读量
|
// 阅读量
|
||||||
if (type == 1){
|
if (type == 1){
|
||||||
// 总
|
// 总
|
||||||
@ -767,8 +770,6 @@ public class CaseExchangeService {
|
|||||||
|
|
||||||
// 用户
|
// 用户
|
||||||
statsCaseExchangeUserDao.dec(statsCaseExchangeUser.getUserId(),"exchange_read_num",num);
|
statsCaseExchangeUserDao.dec(statsCaseExchangeUser.getUserId(),"exchange_read_num",num);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 收藏量
|
// 收藏量
|
||||||
|
|||||||
@ -75,7 +75,7 @@ public class UserCaseReadService {
|
|||||||
// 视频
|
// 视频
|
||||||
if (request.getType() == 2){
|
if (request.getType() == 2){
|
||||||
// 新增统计字段
|
// 新增统计字段
|
||||||
boolean r = caseClinicalVideoService.IncClinicalVideoStats(request.getId(),1);
|
boolean r = caseClinicalVideoService.IncClinicalVideoStats(request.getId(),1,1);
|
||||||
if (!r){
|
if (!r){
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -2,29 +2,36 @@ package com.example.caseData.service;
|
|||||||
|
|
||||||
import cn.hutool.crypto.SecureUtil;
|
import cn.hutool.crypto.SecureUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.BasicHospitalDao;
|
||||||
import com.example.caseData.dao.CaseClinicalDoctorDao;
|
import com.example.caseData.dao.CaseClinicalDoctorDao;
|
||||||
|
import com.example.caseData.dao.CaseClinicalRecordScoreDao;
|
||||||
import com.example.caseData.dao.UserDao;
|
import com.example.caseData.dao.UserDao;
|
||||||
import com.example.caseData.dto.publicDto.LoginDto;
|
import com.example.caseData.dto.publicDto.LoginDto;
|
||||||
import com.example.caseData.exception.BusinessException;
|
import com.example.caseData.exception.BusinessException;
|
||||||
import com.example.caseData.extend.app.Hospital.GetHospitalByUuidResponse;
|
import com.example.caseData.extend.app.Hospital.GetHospitalByUuidResponse;
|
||||||
import com.example.caseData.extend.app.Hospital.Hospital;
|
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.GetUserInfoResponse;
|
||||||
import com.example.caseData.extend.app.UserInfo.UserInfo;
|
import com.example.caseData.extend.app.UserInfo.UserInfo;
|
||||||
import com.example.caseData.model.BasicHospitalModel;
|
import com.example.caseData.model.*;
|
||||||
import com.example.caseData.model.CaseClinicalDoctorModel;
|
import com.example.caseData.request.UserRequest.ReportUserScoreRequest;
|
||||||
import com.example.caseData.model.UserModel;
|
|
||||||
import com.example.caseData.utils.JwtUtil;
|
import com.example.caseData.utils.JwtUtil;
|
||||||
import com.example.caseData.utils.Replace;
|
import com.example.caseData.utils.Replace;
|
||||||
import com.example.caseData.utils.StringToInt;
|
import com.example.caseData.utils.StringToInt;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import static com.baomidou.mybatisplus.extension.toolkit.Db.save;
|
import static com.baomidou.mybatisplus.extension.toolkit.Db.save;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class UserService {
|
public class UserService {
|
||||||
@Resource
|
@Resource
|
||||||
@ -39,12 +46,18 @@ public class UserService {
|
|||||||
@Resource
|
@Resource
|
||||||
private CaseClinicalDoctorDao caseClinicalDoctorDao;
|
private CaseClinicalDoctorDao caseClinicalDoctorDao;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CaseClinicalRecordScoreDao caseClinicalRecordScoreDao;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private Hospital hospital;
|
private Hospital hospital;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private JwtUtil jwtUtil;
|
private JwtUtil jwtUtil;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private Score score;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户登陆-手机号
|
* 用户登陆-手机号
|
||||||
* @return UserModel
|
* @return UserModel
|
||||||
@ -268,5 +281,40 @@ public class UserService {
|
|||||||
return caseClinicalDoctor;
|
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.article_status = 1
|
||||||
AND ca.delete_status = 0
|
AND ca.delete_status = 0
|
||||||
</select>
|
</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>
|
</mapper>
|
||||||
@ -109,4 +109,32 @@
|
|||||||
AND l.app_iden = #{labelIden}
|
AND l.app_iden = #{labelIden}
|
||||||
</if>
|
</if>
|
||||||
</select>
|
</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>
|
</mapper>
|
||||||
Loading…
x
Reference in New Issue
Block a user