package com.example.caseData.service; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.example.caseData.common.Response; import com.example.caseData.dao.*; import com.example.caseData.exception.BusinessException; import com.example.caseData.model.*; import com.example.caseData.request.caseExchangeDraftRequest.addCaseExchangeDraft; import com.example.caseData.request.caseExchangeRequest.addCaseExchange; import com.example.caseData.request.caseExchangeRequest.addCaseExchangeComment; import com.example.caseData.utils.Replace; import com.mysql.cj.protocol.Message; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import java.time.LocalDateTime; import java.util.List; import java.util.Objects; @Service public class CaseExchangeDraftService { @Resource private CaseExchangeDraftDao caseExchangeDraftDao; /** * 草稿-新增 */ @Transactional public boolean AddCaseExchangeDraft(addCaseExchangeDraft request, String userId){ try { // 构造数据库实体 CaseExchangeDraftModel data = new CaseExchangeDraftModel(); data.setUserId(Long.valueOf(userId)); data.setExchangeTitle(request.getExchangeTitle()); data.setExchangeContent(request.getExchangeContent()); data.setExchangeSummary(request.getExchangeSummary()); ObjectMapper objectMapper = new ObjectMapper(); // 投票信息转 JSON 字符串 if (request.getCaseExchangeVote() != null) { String voteJson = objectMapper.writeValueAsString(request.getCaseExchangeVote()); data.setExchangeVoteJson(voteJson); } // 标签信息转 JSON 字符串 if (request.getCaseExchangeLabel() != null && !request.getCaseExchangeLabel().isEmpty()) { String labelJson = objectMapper.writeValueAsString(request.getCaseExchangeLabel()); data.setExchangeLabelJson(labelJson); } data.setCreatedAt(LocalDateTime.now()); data.setUpdatedAt(LocalDateTime.now()); // 保存到数据库 int res = caseExchangeDraftDao.insert(data); return res > 0; } catch (Exception e) { throw new BusinessException(e.getMessage()); } } /** * 草稿-删除 * @param draftId 草稿 * @param userId 用户id * @return bool */ @Transactional public boolean DeleteCaseExchangeDraft(String draftId, String userId){ // 获取数据 CaseExchangeDraftModel draft = caseExchangeDraftDao.selectById(draftId); if (draft == null) { return false; } // 检测用户是否病例交流作者 if (!Objects.equals(draft.getUserId(), Long.valueOf(userId))){ return false; } // 删除 int res = caseExchangeDraftDao.deleteById(draft.getDraftId()); if (res <= 0){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return false; } return true; } }