case-data-api/src/main/java/com/example/caseData/service/UserCaseReadService.java
2025-07-18 17:32:09 +08:00

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;
}
}