This commit is contained in:
wucongxing8150 2025-07-28 14:33:31 +08:00
parent 8d659750f7
commit ec78f1167d
8 changed files with 555 additions and 189 deletions

View File

@ -35,7 +35,7 @@ public interface StatsCaseClinicalLabelDao extends BaseMapper<StatsCaseClinicalL
* @return 更新的行数
*/
@Update("UPDATE stats_case_exchange_label SET ${field} = ${field} + #{numeral} WHERE label_iden = #{labelIden}")
int inc(@Param("labelIden") Long labelIden, @Param("field") String field, @Param("numeral") int numeral);
int inc(@Param("labelIden") String labelIden, @Param("field") String field, @Param("numeral") int numeral);
/**
* Dec 自减
@ -47,5 +47,5 @@ public interface StatsCaseClinicalLabelDao extends BaseMapper<StatsCaseClinicalL
@Update("UPDATE stats_case_exchange_label " +
"SET ${field} = CASE WHEN ${field} >= #{numeral} THEN ${field} - #{numeral} ELSE 0 END " +
"WHERE label_iden = #{labelIden}")
int dec(@Param("labelIden") Long labelIden, @Param("field") String field, @Param("numeral") int numeral);
int dec(@Param("labelIden") String labelIden, @Param("field") String field, @Param("numeral") int numeral);
}

View File

@ -111,4 +111,50 @@ public class UserInfo extends Base {
return result;
}
}
// 根据唯一标识获取信息V3
public GetUserInfoResponse getUserInfoByUuid(String uuid) throws BusinessException {
String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
// 处理参数
Map<String, Object> requestData = new HashMap<>();
requestData.put("uuid", uuid);
requestData.put("platform", appConfig.getPlatform());
requestData.put("timestamp", timestamp);
// 生成签名
String sign = genSignature(requestData,appConfig.getSecretKey());
String url = appConfig.getApiUrl() + "/expert-api/getInfoByUuid";
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
GetUserInfoResponse result = JSONUtil.toBean(response.body(), GetUserInfoResponse.class);
log.info("获取app数据返回:{}",result);
if (result.getCode() != 200){
if (!Objects.equals(result.getMsg(), "")){
throw new BusinessException(result.getMsg());
}else{
throw new BusinessException("失败");
}
}
if (result.getData() == null){
throw new BusinessException("失败");
}
return result;
}
}
}

View File

@ -50,6 +50,12 @@ public class CaseClinicalArticleService {
@Resource
private UserDao userDao;
@Resource
private CaseClinicalArticleLabelDao caseClinicalArticleLabelDao;
@Resource
private StatsCaseClinicalLabelDao statsCaseClinicalLabelDao;
/**
* 新增收藏-临床病例库-文章
* @param articleId 文章id
@ -361,85 +367,16 @@ public class CaseClinicalArticleService {
/**
* 新增文章的统计字段
* @param articleId 文章id
* @param type 类型1:阅读量 2收藏量 3:评论数
* @param type 类型1:阅读量 2收藏量 3:评论数 4:文章数
*/
@Transactional
public boolean IncClinicalArticleStats(String articleId,Integer type){
try {
// 获取文章作者
LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, articleId);
List<CaseClinicalArticleAuthorModel> caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper);
// 阅读量
if (type == 1){
caseClinicalArticleDao.inc(Long.valueOf(articleId),"read_num",1);
statsCaseClinicalDao.inc(1L,"article_read_num",1);
for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 增加医院文章收藏数
statsCaseClinicalHospitalDao.inc(caseClinicalDoctor.getHospitalId(),"article_read_num",1);
// 增加医生文章收藏数
statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),"article_read_num",1);
}
}
// 收藏量
if (type == 2){
caseClinicalArticleDao.inc(Long.valueOf(articleId),"collect_num",1);
statsCaseClinicalDao.inc(1L,"article_collect_num",1);
for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 增加医院文章收藏数
statsCaseClinicalHospitalDao.inc(caseClinicalDoctor.getHospitalId(),"article_collect_num",1);
// 增加医生文章收藏数
statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),"article_collect_num",1);
}
}
// 评论数
if (type == 3){
caseClinicalArticleDao.inc(Long.valueOf(articleId),"comment_num",1);
statsCaseClinicalDao.inc(1L,"article_comment_num",1);
for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 增加医院文章评论数
statsCaseClinicalHospitalDao.inc(caseClinicalDoctor.getHospitalId(),"article_comment_num",1);
// 增加医生文章评论数
statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),"article_comment_num",1);
}
}
return true;
} catch (Exception e) {
return false;
}
}
/**
* 减少文章的统计字段
* @param articleId 文章id
* @param type 类型1:阅读量 2收藏量 3:评论数
*/
@Transactional
public boolean DecClinicalArticleStats(String articleId,Integer type){
try {
String caseClinicalArticleField = ""; // 具体文章
String statsCaseClinicalField = ""; // 全部文章
String statsCaseClinicalHospitalField = ""; // 医院
String statsCaseClinicalDoctorField = ""; // 医生
String statsCaseClinicalLabelField = ""; // 标签
// 阅读
if (type == 1){
@ -447,6 +384,7 @@ public class CaseClinicalArticleService {
statsCaseClinicalField = "article_read_num"; // 全部文章
statsCaseClinicalHospitalField = "article_read_num"; // 医院
statsCaseClinicalDoctorField = "article_read_num"; // 医生
statsCaseClinicalLabelField = "article_read_num"; // 标签
}
// 收藏
@ -455,6 +393,7 @@ public class CaseClinicalArticleService {
statsCaseClinicalField = "article_collect_num"; // 全部文章
statsCaseClinicalHospitalField = "article_collect_num"; // 医院
statsCaseClinicalDoctorField = "article_collect_num"; // 医生
statsCaseClinicalLabelField = "article_collect_num"; // 标签
}
// 评论
@ -463,9 +402,104 @@ public class CaseClinicalArticleService {
statsCaseClinicalField = "article_comment_num"; // 全部文章
statsCaseClinicalHospitalField = "article_comment_num"; // 医院
statsCaseClinicalDoctorField = "article_comment_num"; // 医生
statsCaseClinicalLabelField = "article_comment_num"; // 标签
}
caseClinicalArticleDao.dec(Long.valueOf(articleId),caseClinicalArticleField,1);
// 文章数
if (type == 4){
statsCaseClinicalField = "article_num"; // 全部文章
statsCaseClinicalHospitalField = "article_num"; // 医院
statsCaseClinicalDoctorField = "article_num"; // 医生
statsCaseClinicalLabelField = "article_num"; // 标签
}
if (!caseClinicalArticleField.isEmpty()){
caseClinicalArticleDao.inc(Long.valueOf(articleId),caseClinicalArticleField,1);
}
statsCaseClinicalDao.inc(1L,statsCaseClinicalField,1);
// 获取文章作者
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,1);
// 减少医生文章数
statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,1);
}
// 获取文章标签数据
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,1);
}
return true;
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
}
}
/**
* 减少文章的统计字段
* @param articleId 文章id
* @param type 类型1:阅读量 2收藏量 3:评论数 4:文章数
*/
@Transactional
public boolean DecClinicalArticleStats(String articleId,Integer type){
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()){
caseClinicalArticleDao.dec(Long.valueOf(articleId),caseClinicalArticleField,1);
}
statsCaseClinicalDao.dec(1L,statsCaseClinicalField,1);
// 获取文章作者
@ -483,6 +517,14 @@ public class CaseClinicalArticleService {
statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,1);
}
// 获取文章标签数据
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,1);
}
return true;
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

View File

@ -0,0 +1,22 @@
package com.example.caseData.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.caseData.dao.StatsCaseClinicalLabelDao;
import com.example.caseData.exception.BusinessException;
import com.example.caseData.model.CaseClinicalArticleAuthorModel;
import com.example.caseData.model.CaseClinicalDoctorModel;
import com.example.caseData.model.CaseClinicalVideoModel;
import com.example.caseData.model.StatsCaseClinicalLabelModel;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.List;
@Service
public class CaseClinicalLabelService {
}

View File

@ -0,0 +1,64 @@
package com.example.caseData.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.caseData.dao.StatsCaseClinicalDoctorDao;
import com.example.caseData.dao.StatsCaseClinicalHospitalDao;
import com.example.caseData.dao.StatsCaseClinicalLabelDao;
import com.example.caseData.model.StatsCaseClinicalDoctorModel;
import com.example.caseData.model.StatsCaseClinicalHospitalModel;
import com.example.caseData.model.StatsCaseClinicalLabelModel;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class CaseClinicalService {
@Resource
private StatsCaseClinicalLabelDao statsCaseClinicalLabelDao;
@Resource
private StatsCaseClinicalDoctorDao statsCaseClinicalDoctorDao;
@Resource
private StatsCaseClinicalHospitalDao statsCaseClinicalHospitalDao;
// 新增标签统计
@Transactional
public void AddStatsCaseClinicalLabel(String labelIden,String labelName){
LambdaQueryWrapper<StatsCaseClinicalLabelModel> mapQueryWrapper = new LambdaQueryWrapper<>();
mapQueryWrapper.eq(StatsCaseClinicalLabelModel::getLabelIden, labelIden);
StatsCaseClinicalLabelModel statsCaseClinicalLabel = statsCaseClinicalLabelDao.selectOne(mapQueryWrapper);
if (statsCaseClinicalLabel == null) {
statsCaseClinicalLabel = new StatsCaseClinicalLabelModel();
statsCaseClinicalLabel.setLabelIden(labelIden);
statsCaseClinicalLabel.setLabelName(labelName);
statsCaseClinicalLabelDao.insert(statsCaseClinicalLabel);
}
}
// 新增医生统计
@Transactional
public void AddStatsCaseClinicalDoctor(String doctorId){
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));
statsCaseClinicalDoctorDao.insert(statsCaseClinicalDoctor);
}
}
// 新增医院统计
@Transactional
public void AddStatsCaseClinicalHospital(String hospitalId){
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));
statsCaseClinicalHospitalDao.insert(statsCaseClinicalHospital);
}
}
}

View File

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.caseData.dao.*;
import com.example.caseData.exception.BusinessException;
import com.example.caseData.extend.app.Base;
import com.example.caseData.extend.app.UserInfo.GetUserInfoResponse;
import com.example.caseData.extend.app.UserInfo.UserInfo;
import com.example.caseData.extend.app.UserPoint.UserPoint;
import com.example.caseData.extend.app.Video.Video;
import com.example.caseData.model.*;
@ -24,10 +26,8 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.lang.reflect.Field;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.time.LocalDateTime;
import java.util.*;
//import static com.baomidou.mybatisplus.extension.toolkit.Db.removeById;
//import static com.baomidou.mybatisplus.extension.toolkit.Db.save;
@ -40,6 +40,9 @@ public class CaseClinicalVideoService {
@Resource
private CaseClinicalVideoDao caseClinicalVideoDao;
@Resource
private CaseClinicalVideoLabelDao caseClinicalVideoLabelDao;
@Resource
private StatsCaseClinicalDao statsCaseClinicalDao;
@ -64,9 +67,24 @@ public class CaseClinicalVideoService {
@Resource
private UserCommentClinicalVideoDao userCommentClinicalVideoDao;
@Resource
private CaseClinicalLabelService caseClinicalLabelService;
@Resource
private StatsCaseClinicalLabelDao statsCaseClinicalLabelDao;
@Resource
private Video Video;
@Resource
private UserInfo userInfo;
@Resource
private UserService userService;
@Resource
private CaseClinicalService caseClinicalService;
/**
* 新增收藏-临床病例库-视频
* @param videoId 视频id
@ -372,85 +390,16 @@ public class CaseClinicalVideoService {
/**
* 新增视频的统计字段
* @param videoId 视频id
* @param type 类型1:阅读量 2收藏量 3:评论数
* @param type 类型1:阅读量 2收藏量 3:评论数 4:文章数
*/
@Transactional
public boolean IncClinicalVideoStats(String videoId,Integer type){
try {
// 获取文章作者
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, videoId);
List<CaseClinicalVideoAuthorModel> caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper);
// 阅读量
if (type == 1){
caseClinicalVideoDao.inc(Long.valueOf(videoId),"read_num",1);
statsCaseClinicalDao.inc(1L,"video_read_num",1);
for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 增加医院文章收藏数
statsCaseClinicalHospitalDao.inc(caseClinicalDoctor.getHospitalId(),"video_read_num",1);
// 增加医生文章收藏数
statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),"video_read_num",1);
}
}
// 收藏量
if (type == 2){
caseClinicalVideoDao.inc(Long.valueOf(videoId),"collect_num",1);
statsCaseClinicalDao.inc(1L,"video_collect_num",1);
for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 增加医院文章收藏数
statsCaseClinicalHospitalDao.inc(caseClinicalDoctor.getHospitalId(),"video_collect_num",1);
// 增加医生文章收藏数
statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),"video_collect_num",1);
}
}
// 评论数
if (type == 3){
caseClinicalVideoDao.inc(Long.valueOf(videoId),"comment_num",1);
statsCaseClinicalDao.inc(1L,"video_comment_num",1);
for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 增加医院文章收藏数
statsCaseClinicalHospitalDao.inc(caseClinicalDoctor.getHospitalId(),"video_comment_num",1);
// 增加医生文章收藏数
statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),"video_comment_num",1);
}
}
return true;
} catch (Exception e) {
return false;
}
}
/**
* 减少视频的统计字段
* @param videoId 文章id
* @param type 类型1:阅读量 2收藏量 3:评论数
*/
@Transactional
public boolean DecClinicalVideoStats(String videoId,Integer type){
try {
String caseClinicalVideoField = ""; // 具体文章
String statsCaseClinicalField = ""; // 全部文章
String statsCaseClinicalHospitalField = ""; // 医院
String statsCaseClinicalDoctorField = ""; // 医生
String statsCaseClinicalLabelField = ""; // 标签
// 阅读
if (type == 1){
@ -458,6 +407,7 @@ public class CaseClinicalVideoService {
statsCaseClinicalField = "video_read_num"; // 全部文章
statsCaseClinicalHospitalField = "video_read_num"; // 医院
statsCaseClinicalDoctorField = "video_read_num"; // 医生
statsCaseClinicalLabelField = "article_read_num"; // 标签
}
// 收藏
@ -466,6 +416,7 @@ public class CaseClinicalVideoService {
statsCaseClinicalField = "video_collect_num"; // 全部文章
statsCaseClinicalHospitalField = "video_collect_num"; // 医院
statsCaseClinicalDoctorField = "video_collect_num"; // 医生
statsCaseClinicalLabelField = "article_collect_num"; // 标签
}
// 评论
@ -474,9 +425,104 @@ public class CaseClinicalVideoService {
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);
}
statsCaseClinicalDao.inc(1L,statsCaseClinicalField,1);
// 获取文章作者
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, videoId);
List<CaseClinicalVideoAuthorModel> caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper);
for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
// 获取医院统计数据
statsCaseClinicalHospitalDao.inc(caseClinicalDoctor.getHospitalId(),statsCaseClinicalHospitalField,1);
statsCaseClinicalDoctorDao.inc(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,1);
}
// 获取文章标签数据
LambdaQueryWrapper<CaseClinicalVideoLabelModel> labelQueryWrapper = new LambdaQueryWrapper<>();
labelQueryWrapper.eq(CaseClinicalVideoLabelModel::getVideoId, videoId);
List<CaseClinicalVideoLabelModel> caseClinicalArticleLabels = caseClinicalVideoLabelDao.selectList(labelQueryWrapper);
for (CaseClinicalVideoLabelModel label : caseClinicalArticleLabels) {
statsCaseClinicalLabelDao.inc(label.getAppIden(),statsCaseClinicalLabelField,1);
}
return true;
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
}
}
/**
* 减少视频的统计字段
* @param videoId 文章id
* @param type 类型1:阅读量 2收藏量 3:评论数 4:文章数
*/
@Transactional
public boolean DecClinicalVideoStats(String videoId,Integer type){
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,1);
statsCaseClinicalDao.dec(1L,statsCaseClinicalField,1);
// 获取文章作者
@ -492,6 +538,14 @@ public class CaseClinicalVideoService {
statsCaseClinicalDoctorDao.dec(caseClinicalDoctor.getDoctorId(),statsCaseClinicalDoctorField,1);
}
// 获取文章标签数据
LambdaQueryWrapper<CaseClinicalVideoLabelModel> labelQueryWrapper = new LambdaQueryWrapper<>();
labelQueryWrapper.eq(CaseClinicalVideoLabelModel::getVideoId, videoId);
List<CaseClinicalVideoLabelModel> caseClinicalArticleLabels = caseClinicalVideoLabelDao.selectList(labelQueryWrapper);
for (CaseClinicalVideoLabelModel label : caseClinicalArticleLabels) {
statsCaseClinicalLabelDao.dec(label.getAppIden(),statsCaseClinicalLabelField,1);
}
return true;
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@ -538,45 +592,137 @@ public class CaseClinicalVideoService {
// 检测签名
Video.checkSign(request,"26e8675f44565b1ed4eaaa0fcf3531d7",r,objectMapper);
// // 处理业务逻辑
// // 获取视频数据
// LambdaQueryWrapper<CaseClinicalVideoModel> videoQueryWrapper = new LambdaQueryWrapper<>();
// videoQueryWrapper.eq(CaseClinicalVideoModel::getVideoNo, r.getVideoNo());
// CaseClinicalVideoModel caseClinicalVideo = caseClinicalVideoDao.selectOne(videoQueryWrapper);
//
// // 新增
// if (Objects.equals(r.getAction(), "add")){
// if (caseClinicalVideo != null){
// // 已存在该视频
// return true;
// 获取视频数据
LambdaQueryWrapper<CaseClinicalVideoModel> videoQueryWrapper = new LambdaQueryWrapper<>();
videoQueryWrapper.eq(CaseClinicalVideoModel::getVideoNo, r.getVideoNo());
CaseClinicalVideoModel caseClinicalVideo = caseClinicalVideoDao.selectOne(videoQueryWrapper);
// 修改
if (Objects.equals(r.getAction(), "update")){
if (caseClinicalVideo == null){
r.setAction("add");
}
}
// 新增
if (Objects.equals(r.getAction(), "add")){
if (caseClinicalVideo != null){
// 已存在该视频
return true;
}
// 新增视频
caseClinicalVideo = new CaseClinicalVideoModel();
caseClinicalVideo.setVideoTitle(r.getVideoTitle());
caseClinicalVideo.setVideoNo(r.getVideoNo());
caseClinicalVideo.setPushDate(LocalDateTime.parse(r.getPushDate()));
caseClinicalVideo.setIsLink(r.getIsLink());
caseClinicalVideo.setIsLinkUrl(r.getIsLinkUrl());
int res = caseClinicalVideoDao.insert(caseClinicalVideo);
if (res <= 0){
throw new BusinessException("-1", "内部错误,添加视频失败");
}
// 新增标签
for (addClinicalVideoApp.Label label : r.getLabel()){
CaseClinicalVideoLabelModel caseClinicalVideoLabel = new CaseClinicalVideoLabelModel();
caseClinicalVideoLabel.setVideoId(caseClinicalVideo.getVideoId());
caseClinicalVideoLabel.setAppIden(label.getAppIden());
caseClinicalVideoLabel.setLabelName(label.getLabelName());
res = caseClinicalVideoLabelDao.insert(caseClinicalVideoLabel);
if (res <= 0){
throw new BusinessException("-1", "内部错误,添加视频标签失败");
}
// 新增标签统计
caseClinicalService.AddStatsCaseClinicalLabel(label.getAppIden(),label.getLabelName());
}
// 新增作者
for (addClinicalVideoApp.Author author : r.getAuthor()){
// 获取app用户数据
GetUserInfoResponse result = userInfo.getUserInfoByUuid(author.getDoctorIden());
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()));
}
// 新增统计
IncClinicalVideoStats(String.valueOf(caseClinicalVideo.getVideoId()),4);
}
// 修改
if (Objects.equals(r.getAction(), "update")){
if (caseClinicalVideo == null){
throw new BusinessException("-1", "无法完成此操作");
}
// 文章主体
if (!Objects.equals(caseClinicalVideo.getVideoNo(), r.getVideoNo())){
caseClinicalVideo.setVideoNo(r.getVideoNo());
}
if (!Objects.equals(caseClinicalVideo.getIsLink(), r.getIsLink())){
caseClinicalVideo.setIsLink(r.getIsLink());
if (!Objects.equals(caseClinicalVideo.getIsLinkUrl(), r.getIsLinkUrl())){
caseClinicalVideo.setIsLinkUrl(r.getIsLinkUrl());
}
}
caseClinicalVideoDao.updateById(caseClinicalVideo);
// 作者
// 获取全部作者
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, caseClinicalVideo.getVideoId());
List<CaseClinicalVideoAuthorModel> caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper);
List<addClinicalVideoApp.Author> addList = new ArrayList<>();
List<CaseClinicalVideoAuthorModel> deleteList = new ArrayList<>();
// // 新增作者和删除作者判断
// // 构建现有作者的唯一标识集合
// Map<String, CaseClinicalVideoAuthorModel> existingAuthorsMap = new HashMap<>();
// for (CaseClinicalVideoAuthorModel a : caseClinicalVideoAuthors) {
// String key = a.getCaseClinicalDoctor().getDoctorIden();
// existingAuthorsMap.put(key, a);
// }
//
// // 新增视频
// caseClinicalVideo = new CaseClinicalVideoModel();
// caseClinicalVideo.setVideoTitle(r.getVideoTitle());
// caseClinicalVideo.setVideoNo(r.getVideoNo());
// caseClinicalVideo.setPushDate(r.getPushDate());
// caseClinicalVideo.setIsLink(r.getIsLink());
// caseClinicalVideo.setIsLinkUrl(r.getIsLinkUrl());
// int res = caseClinicalVideoDao.insert(caseClinicalVideo);
// if (res <= 0){
// throw new BusinessException("-1", "内部错误,添加视频失败");
// // 构建新作者的唯一标识集合
// Map<String, addClinicalVideoApp.Author> newAuthorsMap = new HashMap<>();
// for (addClinicalVideoApp.Author a : r.getAuthor()) {
// String key = a.getDoctorIden();
// newAuthorsMap.put(key, a);
// }
//
// // 新增标签
// CaseClinicalVideoLabelModel caseClinicalVideoLabel = new CaseClinicalVideoLabelModel();
// caseClinicalVideoLabel.setVideoId(caseClinicalVideo.getVideoId());
// }
//
// // 修改
// if (Objects.equals(r.getAction(), "update")){
//
// }
//
// // 删除
// if (Objects.equals(r.getAction(), "delete")){
//
// }
// // 找出需要新增的作者
// for (addClinicalVideoApp.Author a : r.getAuthor()) {
// String key = a.getDoctorIden();
// if (!existingAuthorsMap.containsKey(key)) {
// addList.add(a);
// }
// }
// // 找出需要删除的作者
// for (CaseClinicalVideoAuthorModel a : caseClinicalVideoAuthors) {
// String key = a.getDoctorIden();
// if (!newAuthorsMap.containsKey(key)) {
// deleteList.add(a);
// }
// }
}
// 删除
if (Objects.equals(r.getAction(), "delete")){
}

View File

@ -60,6 +60,9 @@ public class CaseExchangeService {
@Resource
private UserVoteExchangeDao userVoteExchangeDao;
@Resource
private StatsCaseClinicalLabelDao statsCaseClinicalLabelDao;
/**
* 新增-病例交流
* @param userId 用户id
@ -472,7 +475,7 @@ public class CaseExchangeService {
}
// 新增统计字段
boolean r = IncCaseExchangeStats(exchangeId,2);
boolean r = IncCaseExchangeStats(exchangeId,3);
if (!r){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
@ -518,7 +521,7 @@ public class CaseExchangeService {
}
// 减少统计字段
boolean r = DecCaseExchangeStats(String.valueOf(comment.getExchangeId()),1,1);
boolean r = DecCaseExchangeStats(String.valueOf(comment.getExchangeId()),3,1);
if (!r){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
@ -752,6 +755,8 @@ public class CaseExchangeService {
throw new BusinessException("操作失败");
}
// 阅读量
if (type == 1){
//
@ -762,6 +767,8 @@ public class CaseExchangeService {
// 用户
statsCaseExchangeUserDao.dec(statsCaseExchangeUser.getUserId(),"exchange_read_num",num);
}
// 收藏量

View File

@ -229,5 +229,44 @@ public class UserService {
return basicHospital;
}
/**
* 获取临床医生数据
* @return UserModel
*/
public CaseClinicalDoctorModel GetCaseClinicalDoctor(GetUserInfoResponse r) throws BusinessException {
GetUserInfoResponse.ResponsData data = r.getData();
// 获取app医院数据
BasicHospitalModel basicHospital = GetAppHospital(data.getHospitalUuid());
// 获取对应医生数据
LambdaQueryWrapper<CaseClinicalDoctorModel> caseClinicalDoctorWrapper = new LambdaQueryWrapper<>();
caseClinicalDoctorWrapper.eq(CaseClinicalDoctorModel::getDoctorIden, data.getUuid());
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectOne(caseClinicalDoctorWrapper);
if (caseClinicalDoctor == null){
CaseClinicalDoctorModel c = new CaseClinicalDoctorModel();
c.setDoctorName(data.getRealname());
c.setDoctorIden(data.getUuid());
c.setHospitalId(basicHospital.getHospitalId());
c.setAvatar(data.getPhoto());
int res = caseClinicalDoctorDao.insert(c);
if (res <= 0){
throw new BusinessException("操作失败");
}
}else{
if (!Objects.equals(caseClinicalDoctor.getDoctorName(), data.getRealname())){
caseClinicalDoctor.setDoctorName(data.getRealname());
}
if (!Objects.equals(basicHospital.getHospitalId(), caseClinicalDoctor.getHospitalId())){
caseClinicalDoctor.setHospitalId(basicHospital.getHospitalId());
}
caseClinicalDoctorDao.updateById(caseClinicalDoctor);
}
return caseClinicalDoctor;
}
}