diff --git a/refine-domain/src/main/java/com/achobeta/domain/keypoints_explanation/model/aggregate/DeleteListAggregate.java b/refine-domain/src/main/java/com/achobeta/domain/keypoints_explanation/model/aggregate/DeleteListAggregate.java new file mode 100644 index 0000000..fa21824 --- /dev/null +++ b/refine-domain/src/main/java/com/achobeta/domain/keypoints_explanation/model/aggregate/DeleteListAggregate.java @@ -0,0 +1,19 @@ +package com.achobeta.domain.keypoints_explanation.model.aggregate; + +import lombok.*; + +import java.time.LocalDateTime; + +/** + * 删除列表 + */ +@Getter +@Setter +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DeleteListAggregate { + private String userId;// 用户id + private String knowledgeId;// 知识点id + private LocalDateTime deletedAt;// 删除时间 +} diff --git a/refine-trigger/src/main/java/com/achobeta/trigger/http/KeyPointsExplanationController.java b/refine-trigger/src/main/java/com/achobeta/trigger/http/KeyPointsExplanationController.java index e038ca2..e510d22 100644 --- a/refine-trigger/src/main/java/com/achobeta/trigger/http/KeyPointsExplanationController.java +++ b/refine-trigger/src/main/java/com/achobeta/trigger/http/KeyPointsExplanationController.java @@ -5,6 +5,7 @@ import com.achobeta.api.dto.*; import com.achobeta.domain.IRedisService; import com.achobeta.domain.keypoints_explanation.adapter.repository.KeyPointsMapper; +import com.achobeta.domain.keypoints_explanation.model.aggregate.DeleteListAggregate; import com.achobeta.domain.keypoints_explanation.model.valobj.*; import com.achobeta.domain.keypoints_explanation.service.IKeyPointsExplanationService; import com.achobeta.types.Response; @@ -41,7 +42,7 @@ @RequestMapping("/api/${app.config.api-version}/keypoints_explanation") public class KeyPointsExplanationController { private final IKeyPointsExplanationService keyPointsExplanationService; - private final Map deleteList = new HashMap<>(); + private final List deleteList = new ArrayList<>(); /** * 根据学科获取中心知识点 @@ -295,7 +296,11 @@ public Response deleteKnowledgePoint(@PathVariable String knowledgeId ) String userId = UserContext.getUserId(); try { log.info("删除知识点:{}", knowledgeId); - deleteList.put(knowledgeId, LocalDateTime.now()); + DeleteListAggregate deleteListAggregate = new DeleteListAggregate(); + deleteListAggregate.setUserId(userId); + deleteListAggregate.setKnowledgeId(knowledgeId); + deleteListAggregate.setDeletedAt(LocalDateTime.now()); + deleteList.add(deleteListAggregate); keyPointsExplanationService.deleteKnowledgePoint(knowledgeId, userId); } catch (Exception e) { return Response.CUSTOMIZE_ERROR(DELETE_KNOWLEDGE_POINT_FAIL); @@ -306,18 +311,23 @@ public Response deleteKnowledgePoint(@PathVariable String knowledgeId ) /** * 撤销删除知识点 */ - @PostMapping("/{knowledgeId}/undo-delete") + @PostMapping("/undo-delete") @GlobalInterception - public Response undoDeleteKnowledgePoint(@PathVariable String knowledgeId ) { + public Response undoDeleteKnowledgePoint() { String userId = UserContext.getUserId(); try { - log.info("撤销删除知识点:{}", knowledgeId); - if(LocalDateTime.now().isAfter(deleteList.get(knowledgeId).minusMinutes(30))){ - deleteList.remove(knowledgeId); - keyPointsExplanationService.undoDeleteKnowledgePoint(knowledgeId, userId); - }else{ - deleteList.remove(knowledgeId); - return Response.SYSTEM_SUCCESS("删除超过30mins,撤销删除失败"); + for(int i = deleteList.size()-1; i >= 0; i--){ + if(deleteList.get(i).getUserId().equals(userId)){ + String knowledgeId = deleteList.get(i).getKnowledgeId(); + log.info("撤销删除知识点:{}", knowledgeId); + if(LocalDateTime.now().isAfter(deleteList.get(i).getDeletedAt().minusMinutes(30))){ + deleteList.remove(i); + keyPointsExplanationService.undoDeleteKnowledgePoint(knowledgeId, userId); + }else{ + deleteList.remove(i); + return Response.SYSTEM_SUCCESS("删除超过30mins,撤销删除失败"); + } + } } } catch (Exception e) { return Response.CUSTOMIZE_ERROR(UNDO_DELETE_KNOWLEDGE_POINT_FAIL);