97 lines
3.4 KiB
Java
97 lines
3.4 KiB
Java
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;
|
|
}
|
|
}
|