107 lines
3.6 KiB
Java
107 lines
3.6 KiB
Java
package com.example.caseData.service;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.example.caseData.dao.*;
|
|
import com.example.caseData.exception.BusinessException;
|
|
import com.example.caseData.model.CaseClinicalArticleAuthorModel;
|
|
import com.example.caseData.model.CaseClinicalArticleModel;
|
|
import com.example.caseData.model.UserCaseReadModel;
|
|
import com.example.caseData.model.UserCommentClinicalArticleModel;
|
|
import com.example.caseData.request.CaseClinicalArticleRequest.addClinicalArticleComment;
|
|
import com.example.caseData.request.userCaseReadRequest.addUserCaseRead;
|
|
import com.example.caseData.utils.Replace;
|
|
import jakarta.annotation.Resource;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
import java.util.List;
|
|
|
|
@Slf4j
|
|
@Service
|
|
public class UserCaseReadService {
|
|
@Resource
|
|
private UserCaseReadDao userCaseReadDao;
|
|
|
|
@Resource
|
|
private CaseClinicalArticleDao caseClinicalArticleDao;
|
|
|
|
@Resource
|
|
private CaseClinicalVideoDao caseClinicalVideoDao;
|
|
|
|
@Resource
|
|
private CaseExchangeDao caseExchangeDao;
|
|
|
|
@Resource
|
|
private StatsCaseClinicalDao statsCaseClinicalDao;
|
|
|
|
@Resource
|
|
private CaseClinicalArticleService caseClinicalArticleService;
|
|
|
|
@Resource
|
|
private CaseClinicalVideoService caseClinicalVideoService;
|
|
|
|
@Resource
|
|
private CaseExchangeService caseExchangeService;
|
|
|
|
/**
|
|
* 浏览记录-新增
|
|
* @return bool
|
|
*/
|
|
@Transactional
|
|
public boolean AddUserCaseRead(addUserCaseRead request, String loginUserId){
|
|
// 检测是否已存在
|
|
LambdaQueryWrapper<UserCaseReadModel> queryWrapper = new LambdaQueryWrapper<>();
|
|
queryWrapper.eq(UserCaseReadModel::getUserId, loginUserId);
|
|
queryWrapper.eq(UserCaseReadModel::getId, request.getId());
|
|
queryWrapper.eq(UserCaseReadModel::getType, request.getType());
|
|
UserCaseReadModel userCaseRead = userCaseReadDao.selectOne(queryWrapper);
|
|
if (userCaseRead == null){
|
|
UserCaseReadModel data = new UserCaseReadModel();
|
|
data.setUserId(Long.valueOf(loginUserId));
|
|
data.setId(Long.valueOf( request.getId()));
|
|
data.setType(request.getType());
|
|
data.setReadNum(1);
|
|
int res = userCaseReadDao.insert(data);
|
|
if (res <= 0){
|
|
throw new BusinessException("操作失败");
|
|
}
|
|
}else{
|
|
userCaseReadDao.inc(userCaseRead.getReadId(),"read_num",1);
|
|
}
|
|
|
|
// 文章
|
|
if (request.getType() == 1){
|
|
// 新增统计字段
|
|
boolean r = caseClinicalArticleService.IncClinicalArticleStats(request.getId(),1);
|
|
if (!r){
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// 视频
|
|
if (request.getType() == 2){
|
|
// 新增统计字段
|
|
boolean r = caseClinicalVideoService.IncClinicalVideoStats(request.getId(),1);
|
|
if (!r){
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// 病例交流
|
|
if (request.getType() == 3){
|
|
boolean r = caseExchangeService.IncCaseExchangeStats(request.getId(),1);
|
|
if (!r){
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
}
|