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