Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@
@Mapper
public interface KeyPointsMapper {
@Select("select knowledge_point_id as id, knowledge_point_name as keyPoints from knowledgePoint" +
" where user_id = #{userId} and parent_knowledge_point_id = #{knowledgeId}")
" where user_id = #{userId} and parent_knowledge_point_id = #{knowledgeId} and status != -1")
List<KeyPointsVO> getSonKeyPoints(@Param("knowledgeId") String knowledgeId, @Param("userId") String userId);

@Select("select knowledge_point_id as id, knowledge_point_name as keyPoints from knowledgePoint" +
" where user_id = #{userId} and parent_knowledge_point_id = #{subjectId} ")
" where user_id = #{userId} and parent_knowledge_point_id = #{subjectId} and status != -1 ")
List<KeyPointsVO> getKeyPoints(int subjectId, String userId);

@Select("select knowledge_desc from knowledgePoint" +
" where user_id = #{userId} and knowledge_point_id = #{knowledgeId} ")
" where user_id = #{userId} and knowledge_point_id = #{knowledgeId}")
String getKnowledgedescById(String knowledgeId, String userId);

@Select("select count(id) as updateCount, count(update_time >= now() - interval 7 day) as reviewCount from MistakeQuestion" +
Expand Down Expand Up @@ -62,6 +62,14 @@ public interface KeyPointsMapper {
" values(#{node.pointId}, #{node.pointName}, #{node.pointDesc}, #{parentId}, #{userId})")
void saveMindMapTree(String userId, SonPointVO node, String parentId);

@Select("update knowledgePoint set status = -1 where user_id = #{userId} and knowledge_point_id = #{knowledgeId}")
void deleteKnowledgePoint(String knowledgeId, String userId);

@Select("update knowledgePoint set status = 0 where user_id = #{userId} and knowledge_point_id = #{knowledgeId}")
void undoDeleteKnowledgePoint(String knowledgeId, String userId);

@Select("delete from knowledgePoint where status = -1")
void deleteKnowledgeTure();
@Insert("insert into knowledgePoint(knowledge_point_id, knowledge_point_name, user_id)" +
" values(#{knowledgePointId}, #{knowledgePointName}, #{userId})")
void insertNewPoint4MistakeQuestion(String userId, String knowledgePointId, String knowledgePointName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,10 @@ public interface IKeyPointsExplanationService {
RelateQuestionVO getRelatedWrongQuestions(String knowledgeId, String userId);

void addSonPoint(SonPointVO sonPointVOs, String userId, String parentId);

void deleteKnowledgePoint(String knowledgeId, String userId);

void undoDeleteKnowledgePoint(String knowledgeId, String userId);

void deleteKnowledgeTure();
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.achobeta.domain.keypoints_explanation.service.etendbiz;


import cn.hutool.core.date.DateTime;
import com.achobeta.domain.keypoints_explanation.adapter.repository.KeyPointsMapper;
import com.achobeta.domain.keypoints_explanation.adapter.repository.SubjectTransportMappeer;
import com.achobeta.domain.keypoints_explanation.model.valobj.*;
Expand All @@ -10,7 +11,9 @@
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
@Transactional
Expand All @@ -21,6 +24,7 @@ public class KeyPointsExplanationService implements IKeyPointsExplanationService
@Autowired
private MindMapService mindMapService;


/**
* 获取子知识点
* @param knowledgeId 父知识点id
Expand Down Expand Up @@ -137,6 +141,11 @@ public ToolTipVO gettooltipById(String knowledgeId, String userId) {
return new ToolTipVO(total, count, lastReviewTime);
}

/**
* 获取知识点相关错误题与笔记
* @param knowledgeId
* @return
*/
@Override
public RelateQuestionVO getRelatedWrongQuestions(String knowledgeId, String userId) {
List<QuestionVO> qestions = keyPointsMapper.getRelatedQuestions(knowledgeId, userId);
Expand All @@ -145,11 +154,46 @@ public RelateQuestionVO getRelatedWrongQuestions(String knowledgeId, String user
return new RelateQuestionVO(qestions, note);
}

/**
* 添加子知识点
*/
@Override
public void addSonPoint(SonPointVO sonPointVOs, String userId, String parentId) {
saveMindMapNode(userId, sonPointVOs, parentId);
}

/**
* 删除知识点
* @param knowledgeId
*/
@Override
@Transactional
public void deleteKnowledgePoint(String knowledgeId, String userId) {
if(knowledgeId != null){
List<KeyPointsVO> knowledges = keyPointsMapper.getSonKeyPoints(knowledgeId, userId);
keyPointsMapper.deleteKnowledgePoint(knowledgeId, userId);
for (KeyPointsVO knowledge : knowledges) {
deleteKnowledgePoint(knowledge.getId(), userId);
}
}
}

@Override
public void undoDeleteKnowledgePoint(String knowledgeId, String userId) {
if(knowledgeId != null){
List<KeyPointsVO> knowledges = keyPointsMapper.getSonKeyPoints(knowledgeId, userId);
keyPointsMapper.undoDeleteKnowledgePoint(knowledgeId, userId);
for (KeyPointsVO knowledge : knowledges) {
undoDeleteKnowledgePoint(knowledge.getId(), userId);
}
}
}

@Override
public void deleteKnowledgeTure() {
keyPointsMapper.deleteKnowledgeTure();
}

private void saveMindMapNode(String userId, SonPointVO node, String parentId) {
node.setPointId(mindMapService.generateUUID());
keyPointsMapper.saveMindMapTree(userId, node, parentId);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package com.achobeta.trigger.http;


import cn.hutool.core.date.DateTime;
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.valobj.*;
import com.achobeta.domain.keypoints_explanation.service.IKeyPointsExplanationService;
import com.achobeta.types.Response;
Expand All @@ -13,12 +15,18 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static com.achobeta.types.enums.GlobalServiceStatusCode.*;

Expand All @@ -33,6 +41,7 @@
@RequestMapping("/api/${app.config.api-version}/keypoints_explanation")
public class KeyPointsExplanationController {
private final IKeyPointsExplanationService keyPointsExplanationService;
private final Map<String, LocalDateTime> deleteList = new HashMap<>();

/**
* 根据学科获取中心知识点
Expand Down Expand Up @@ -277,4 +286,52 @@ public Response<String> addSonPoint(@PathVariable String knowledgeId, @RequestBo
return Response.SYSTEM_SUCCESS("添加成功");
}

/**
* 删除知识点
*/
@DeleteMapping("/{knowledgeId}/delete")
@GlobalInterception
public Response<String> deleteKnowledgePoint(@PathVariable String knowledgeId ) {
String userId = UserContext.getUserId();
try {
deleteList.put(knowledgeId, LocalDateTime.now());
keyPointsExplanationService.deleteKnowledgePoint(knowledgeId, userId);
} catch (Exception e) {
return Response.CUSTOMIZE_ERROR(DELETE_KNOWLEDGE_POINT_FAIL);
}
return Response.SYSTEM_SUCCESS("删除成功");
}

/**
* 撤销删除知识点
*/
@PostMapping("/{knowledgeId}/undo-delete")
@GlobalInterception
public Response<String> undoDeleteKnowledgePoint(@PathVariable String knowledgeId ) {
String userId = UserContext.getUserId();
try {
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,撤销删除失败");
}
} catch (Exception e) {
return Response.CUSTOMIZE_ERROR(UNDO_DELETE_KNOWLEDGE_POINT_FAIL);
}
return Response.SYSTEM_SUCCESS("撤销删除成功");
}

/**
* 定时任务:删除状态为“已删除”的知识点 status = -1
*/
@Scheduled(cron = "0 0 3 * * *")
public void deleteKnowledgePoint() {
try {
keyPointsExplanationService.deleteKnowledgeTure();
}catch (Exception e) {
log.error("定时任务:删除状态为“已删除”的知识点 status = -1 失败");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ public enum GlobalServiceStatusCode {
RENAME_NODE_FAIL(10018, "重命名节点失败,请稍后再试"),
SHOW_TOOLTIP_FAIL(10019, "显示提示失败,请稍后再试"),
ADD_SON_POINT_FAIL(10020, "添加子知识点失败,请稍后再试"),
DELETE_KNOWLEDGE_POINT_FAIL(10021, "删除知识点失败,请稍后再试"),
UNDO_DELETE_KNOWLEDGE_POINT_FAIL(10022, "撤销删除知识点失败,请稍后再试"),
/* 错因管理相关状态码 11001-11100 */
MISTAKE_REASON_SUCCESS(11001, "错因操作成功"),
MISTAKE_REASON_TOGGLE_SUCCESS(11002, "错因状态切换成功"),
Expand All @@ -95,7 +97,6 @@ public enum GlobalServiceStatusCode {
STUDY_NOTE_SUBMIT_SUCCESS(11005, "错题笔记提交成功"),
STUDY_NOTE_GET_SUCCESS(11006, "错题笔记获取成功"),


MISTAKE_REASON_NOT_FOUND(11101, "未找到对应的错题记录"),
MISTAKE_REASON_INVALID_PARAM(11102, "错因参数无效"),
MISTAKE_REASON_UPDATE_FAILED(11103, "错因状态更新失败"),
Expand Down
Loading