Quellcode durchsuchen

feat: 知识点的编辑和删除

chenjiawei09 vor 3 Jahren
Ursprung
Commit
8020cfdac5

+ 2 - 0
src/main/java/com/seeckg/knowledgegraph_backend/pojo/Knowledge.java

@@ -5,9 +5,11 @@ import org.springframework.data.neo4j.core.schema.Id;
 import org.springframework.data.neo4j.core.schema.Node;
 
 import lombok.Builder;
+import lombok.Data;
 
 @Node
 @Builder
+@Data
 public class Knowledge {
     @Id
     @GeneratedValue

+ 74 - 0
src/main/java/com/seeckg/knowledgegraph_backend/service/KnowledgeService.java

@@ -30,11 +30,13 @@ public class KnowledgeService {
 
     public Response addKnowledge(KnowledgeVO knowledgeVO) {
         UserVO userVO = seeCoderRemoteService.getUserById(knowledgeVO.getCreatorId());
+        // 垂直权限校验
         if (!userVO.getRole().equals(UserRole.TEACHER)) {
             log.error("[KnowledgeService.addKnowledge] 用户无权限 knowledgeVO = {},userVO = {}", knowledgeVO, userVO);
             return Response.buildFailed(ReturnCode.INVALID_USER.getCode(), ReturnCode.INVALID_USER.getDesc());
         }
         if (knowledgeVO.getBindClassId() != 0L) {
+            // 水平权限校验
             CourseVO courseVO = seeCoderRemoteService.getCourseById(knowledgeVO.getBindClassId());
             if (Objects.isNull(courseVO)) {
                 log.error("[KnowledgeService.addKnowledge] 课程信息错误,查无该课程 knowledgeVO = {}", knowledgeVO);
@@ -50,6 +52,78 @@ public class KnowledgeService {
         return Response.buildSuccess();
     }
 
+    public Response editKnowledge(KnowledgeVO knowledgeVO, long userId) {
+        UserVO userVO = seeCoderRemoteService.getUserById(userId);
+        // 垂直权限校验
+        if (!userVO.getRole().equals(UserRole.TEACHER)) {
+            log.error("[KnowledgeService.addKnowledge] 用户无权限 knowledgeVO = {},userVO = {}", knowledgeVO, userVO);
+            return Response.buildFailed(ReturnCode.INVALID_USER.getCode(), ReturnCode.INVALID_USER.getDesc());
+        }
+        // 水平权限校验
+        if (knowledgeVO.getBindClassId() != 0L) {
+            CourseVO courseVO = seeCoderRemoteService.getCourseById(knowledgeVO.getBindClassId());
+            if (Objects.isNull(courseVO)) {
+                log.error("[KnowledgeService.addKnowledge] 课程信息错误,查无该课程 knowledgeVO = {}", knowledgeVO);
+                return Response.buildFailed(ReturnCode.PARAM_ERROR.getCode(), "课程信息错误,查无该课程");
+            }
+            if (courseVO.getTeacherId() != userId) {
+                log.error("[KnowledgeService.addKnowledge] 课程信息错误,用户无权限 knowledgeVO = {}", knowledgeVO);
+                return Response.buildFailed(ReturnCode.INVALID_USER.getCode(), ReturnCode.INVALID_USER.getDesc());
+            }
+        }  else {
+            if (knowledgeVO.getCreatorId() != userId) {
+                log.error("[KnowledgeService.addKnowledge] 用户无权限 knowledgeVO = {},userVO = {}", knowledgeVO, userVO);
+                return Response.buildFailed(ReturnCode.INVALID_USER.getCode(), ReturnCode.INVALID_USER.getDesc());
+            }
+        }
+
+        Knowledge knowledgeOld = knowledgeDao.findById(knowledgeVO.getId()).orElse(null);
+        if (Objects.isNull(knowledgeOld)){
+            log.error("[KnowledgeService.addKnowledge] 查无该知识点 knowledgeVO = {}", knowledgeVO);
+            return Response.buildFailed(ReturnCode.PARAM_ERROR.getCode(), "知识点信息错误,查无该知识点");
+        }
+        Knowledge knowledgeNew = KnowledgeConvert.convert(knowledgeVO);
+        knowledgeDao.save(knowledgeNew);
+        return Response.buildSuccess();
+    }
+
+    public Response deleteKnowledge(long knowledgeId , long userId) {
+        UserVO userVO = seeCoderRemoteService.getUserById(userId);
+        // 垂直权限校验
+        if (!userVO.getRole().equals(UserRole.TEACHER)) {
+            log.error("[KnowledgeService.addKnowledge] 用户无权限 knowledgeId = {},userVO = {}", knowledgeId, userVO);
+            return Response.buildFailed(ReturnCode.INVALID_USER.getCode(), ReturnCode.INVALID_USER.getDesc());
+        }
+
+        Knowledge knowledgeOld = knowledgeDao.findById(knowledgeId).orElse(null);
+        if (Objects.isNull(knowledgeOld)){
+            log.error("[KnowledgeService.addKnowledge] 查无该知识点 knowledgeId  = {}", knowledgeId );
+            return Response.buildFailed(ReturnCode.PARAM_ERROR.getCode(), "知识点信息错误,查无该知识点");
+        }
+
+        // 水平权限校验
+        if (knowledgeOld.getBindClassId() != 0L) {
+            CourseVO courseVO = seeCoderRemoteService.getCourseById(knowledgeOld.getBindClassId());
+            if (Objects.isNull(courseVO)) {
+                log.error("[KnowledgeService.addKnowledge] 课程信息错误,查无该课程 knowledgeVO = {}", knowledgeOld);
+                return Response.buildFailed(ReturnCode.PARAM_ERROR.getCode(), "课程信息错误,查无该课程");
+            }
+            if (courseVO.getTeacherId() != knowledgeOld.getCreatorId()) {
+                log.error("[KnowledgeService.addKnowledge] 课程信息错误,用户无权限 knowledgeVO = {}", knowledgeOld);
+                return Response.buildFailed(ReturnCode.INVALID_USER.getCode(), ReturnCode.INVALID_USER.getDesc());
+            }
+        } else {
+            if (knowledgeOld.getCreatorId() != userId) {
+                log.error("[KnowledgeService.addKnowledge] 用户无权限 knowledgeId = {},userVO = {}", knowledgeId, userVO);
+                return Response.buildFailed(ReturnCode.INVALID_USER.getCode(), ReturnCode.INVALID_USER.getDesc());
+            }
+        }
+
+        knowledgeDao.deleteById(knowledgeId);
+        return Response.buildSuccess();
+    }
+
+
     public Knowledge findByName(String name) {
         return knowledgeDao.findByName(name);
     }