新增了草稿操作
This commit is contained in:
parent
8eb64d1c41
commit
0e6d48284c
@ -19,8 +19,10 @@ import com.example.caseData.dto.userCommentCaseExchange.GetUserCaseExchangeComme
|
|||||||
import com.example.caseData.dto.userCommentCaseExchange.UserCommentCaseExchangeDto;
|
import com.example.caseData.dto.userCommentCaseExchange.UserCommentCaseExchangeDto;
|
||||||
import com.example.caseData.exception.BusinessException;
|
import com.example.caseData.exception.BusinessException;
|
||||||
import com.example.caseData.model.*;
|
import com.example.caseData.model.*;
|
||||||
|
import com.example.caseData.request.caseExchangeDraftRequest.addCaseExchangeDraft;
|
||||||
import com.example.caseData.request.caseExchangeDraftRequest.getCaseExchangeDraftSearchPage;
|
import com.example.caseData.request.caseExchangeDraftRequest.getCaseExchangeDraftSearchPage;
|
||||||
import com.example.caseData.request.caseExchangeRequest.*;
|
import com.example.caseData.request.caseExchangeRequest.*;
|
||||||
|
import com.example.caseData.service.CaseExchangeDraftService;
|
||||||
import com.example.caseData.service.CaseExchangeService;
|
import com.example.caseData.service.CaseExchangeService;
|
||||||
import com.example.caseData.utils.IntToString;
|
import com.example.caseData.utils.IntToString;
|
||||||
import com.example.caseData.utils.Replace;
|
import com.example.caseData.utils.Replace;
|
||||||
@ -51,6 +53,9 @@ public class CaseExchangeDraftController {
|
|||||||
@Resource
|
@Resource
|
||||||
private CaseExchangeService caseExchangeService;
|
private CaseExchangeService caseExchangeService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CaseExchangeDraftService caseExchangeDraftService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private CaseExchangeDraftDao caseExchangeDraftDao;
|
private CaseExchangeDraftDao caseExchangeDraftDao;
|
||||||
|
|
||||||
@ -129,12 +134,12 @@ public class CaseExchangeDraftController {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 病例交流-新增
|
* 临床病例库-病例交流-草稿-新增
|
||||||
*/
|
*/
|
||||||
@PostMapping("/exchange/draft")
|
@PostMapping("/exchange/draft")
|
||||||
public Response<T> AddCaseExchange(
|
public Response<T> AddCaseExchangeDraft(
|
||||||
@Validated()
|
@Validated()
|
||||||
@RequestBody addCaseExchange request
|
@RequestBody addCaseExchangeDraft request
|
||||||
) {
|
) {
|
||||||
String userId = (String) httpServletRequest.getAttribute("userId");
|
String userId = (String) httpServletRequest.getAttribute("userId");
|
||||||
|
|
||||||
@ -143,7 +148,7 @@ public class CaseExchangeDraftController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
boolean res = caseExchangeService.AddCaseExchange(userId,request);
|
boolean res = caseExchangeDraftService.AddCaseExchangeDraft(request,userId);
|
||||||
if (!res){
|
if (!res){
|
||||||
return Response.error("操作失败");
|
return Response.error("操作失败");
|
||||||
}
|
}
|
||||||
@ -154,11 +159,8 @@ public class CaseExchangeDraftController {
|
|||||||
return Response.success();
|
return Response.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 病例交流-评论-删除
|
* 病例交流-草稿-删除
|
||||||
*/
|
*/
|
||||||
@DeleteMapping("/exchange/draft/{draft_id}")
|
@DeleteMapping("/exchange/draft/{draft_id}")
|
||||||
public Response<T> DeleteCaseExchangeComment(
|
public Response<T> DeleteCaseExchangeComment(
|
||||||
@ -172,7 +174,7 @@ public class CaseExchangeDraftController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
boolean res = caseExchangeService.DeleteCaseExchangeComment(draftId,userId);
|
boolean res = caseExchangeDraftService.DeleteCaseExchangeDraft(draftId,userId);
|
||||||
if (!res){
|
if (!res){
|
||||||
return Response.error("操作失败");
|
return Response.error("操作失败");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.example.caseData.dto.caseExchange.CaseExchangeDto;
|
import com.example.caseData.dto.caseExchange.CaseExchangeDto;
|
||||||
import com.example.caseData.dto.caseExchangeDraft.CaseExchangeDraftDto;
|
import com.example.caseData.dto.caseExchangeDraft.CaseExchangeDraftDto;
|
||||||
|
import com.example.caseData.model.CaseExchangeDraftModel;
|
||||||
import com.example.caseData.model.CaseExchangeModel;
|
import com.example.caseData.model.CaseExchangeModel;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
@ -14,7 +15,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface CaseExchangeDraftDao extends BaseMapper<CaseExchangeModel> {
|
public interface CaseExchangeDraftDao extends BaseMapper<CaseExchangeDraftModel> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 临床病例库-草稿箱-搜索
|
* 临床病例库-草稿箱-搜索
|
||||||
|
|||||||
@ -108,11 +108,8 @@ public class CaseExchangeDraftDto {
|
|||||||
@JsonProperty("vote_title")
|
@JsonProperty("vote_title")
|
||||||
private String voteTitle;
|
private String voteTitle;
|
||||||
|
|
||||||
/**
|
@JsonProperty("valid_day")
|
||||||
* 结束投票时间
|
private Integer validDay; // 投票有效期天数
|
||||||
*/
|
|
||||||
@JsonProperty("end_time")
|
|
||||||
private LocalDateTime endTime;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 选项
|
* 选项
|
||||||
|
|||||||
@ -0,0 +1,81 @@
|
|||||||
|
package com.example.caseData.request.caseExchangeDraftRequest;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
import jakarta.validation.constraints.Size;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class addCaseExchangeDraft {
|
||||||
|
/**
|
||||||
|
* 标题
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "请输入标题")
|
||||||
|
@JsonProperty("exchange_title")
|
||||||
|
private String exchangeTitle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 内容
|
||||||
|
*/
|
||||||
|
@NotEmpty(message = "请输入内容")
|
||||||
|
@JsonProperty("exchange_content")
|
||||||
|
private String exchangeContent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 总结
|
||||||
|
*/
|
||||||
|
@JsonProperty("exchange_summary")
|
||||||
|
private String exchangeSummary;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 投票
|
||||||
|
*/
|
||||||
|
@JsonProperty("case_exchange_vote")
|
||||||
|
private CaseExchangeVoteRequest caseExchangeVote;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标签
|
||||||
|
*/
|
||||||
|
@JsonProperty("case_exchange_label")
|
||||||
|
private List<CaseExchangeLabelRequest> caseExchangeLabel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 投票
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public static class CaseExchangeVoteRequest {
|
||||||
|
@JsonProperty("vote_title")
|
||||||
|
@NotEmpty(message = "请输入投票标题")
|
||||||
|
private String voteTitle; // 选项标题
|
||||||
|
|
||||||
|
@JsonProperty("valid_day")
|
||||||
|
@Size(min = 1, max = 20, message = "有效期在1-20天内")
|
||||||
|
private Integer validDay; // 投票有效期天数
|
||||||
|
|
||||||
|
@JsonProperty("option")
|
||||||
|
private List<CaseExchangeVoteOptionRequest> option;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 投票选项
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public static class CaseExchangeVoteOptionRequest {
|
||||||
|
@JsonProperty("option_value")
|
||||||
|
private String optionValue; // 选项
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标签
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public static class CaseExchangeLabelRequest {
|
||||||
|
@JsonProperty("app_iden")
|
||||||
|
private String appIden; // app唯一标识
|
||||||
|
|
||||||
|
@JsonProperty("label_name")
|
||||||
|
private String labelName; // 标签名称
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,96 @@
|
|||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user