瀏覽代碼

作者:张哲
时间:2022/12/1
类型:开发
描述:知识删除

ZizgZh 2 年之前
父節點
當前提交
113f39e1a6

+ 13 - 0
src/main/java/com/redxun/knowledge/controller/KnowledgeCategoryController.java

@@ -69,6 +69,19 @@ public class KnowledgeCategoryController extends BaseController<KnowledgeCategor
         return jsonResult;
     }
 
+    @ApiOperation("删除知识分类")
+    @GetMapping("deleteKnowledgeCategory")
+    public JsonResult deleteKnowledgeCategory(@RequestParam("knowledgeCategoryId") String knowledgeCategoryId){
+        Integer result = knowledgeCategoryService.deleteKnowledgeCategory(knowledgeCategoryId);
+        if (result == 0){
+            return JsonResult.Fail("该分类还有知识,删除失败");
+        } else if (result == 1){
+            return JsonResult.Fail("该分类还有子分类,删除失败");
+        } else {
+            return JsonResult.Success("删除成功");
+        }
+    }
+
 
 
     @ApiOperation("根据id查询其下级分类信息(懒加载)")

+ 13 - 0
src/main/java/com/redxun/knowledge/mapper/KnowledgeCategoryMapper.java

@@ -29,4 +29,17 @@ public interface KnowledgeCategoryMapper extends BaseDao<KnowledgeCategory> {
      * @param sort
      */
     void insertOrUpdateBySort(@Param("parent") String parent,@Param("sort") Integer sort);
+
+    /**
+     * 删除时变更sort
+     * @param sort
+     */
+    void deleteBySort(@Param("parent")String parent,@Param("sort") Integer sort);
+
+    /**
+     * 删除
+     * @param knowledgeCategoryId
+     */
+    void deleteKnowledgeCategory(String knowledgeCategoryId);
+
 }

+ 41 - 6
src/main/java/com/redxun/knowledge/service/KnowledgeCategoryServiceImpl.java

@@ -11,11 +11,17 @@ import com.redxun.common.base.search.QueryFilter;
 import com.redxun.common.service.impl.SuperServiceImpl;
 import com.redxun.common.tool.BeanUtil;
 import com.redxun.common.tool.IdGenerator;
+import com.redxun.knowledge.entity.dao.Knowledge;
 import com.redxun.knowledge.entity.dao.KnowledgeCategory;
 import com.redxun.knowledge.entity.vo.KnowledgeCategoryAdminVo;
 import com.redxun.knowledge.mapper.KnowledgeCategoryMapper;
+import com.redxun.knowledge.mapper.KnowledgeMapper;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.io.Serializable;
@@ -27,11 +33,15 @@ import java.util.stream.Collectors;
  * [业务--知识分类表]业务服务类
  */
 @Service
+@Slf4j
 public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCategoryMapper, KnowledgeCategory> implements BaseService<KnowledgeCategory> {
 
     @Resource
     private KnowledgeCategoryMapper knowledgeCategoryMapper;
 
+    @Autowired
+    private KnowledgeMapper knowledgeMapper;
+
     @Override
     public BaseDao<KnowledgeCategory> getRepository() {
         return knowledgeCategoryMapper;
@@ -134,12 +144,6 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
         return this.getRepository().updateById(entity);
     }
 
-    @Override
-    public KnowledgeCategory get(Serializable id) {
-        KnowledgeCategory knowledgeCategory = this.getRepository().selectById(id);
-        return knowledgeCategory;
-    }
-
     /**
      * 根据id进行数据回显
      * @param pkId
@@ -152,6 +156,29 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
         return knowledgeCategoryAdminVo;
     }
 
+    /**
+     * 删除知识分类(若分类下还有关联的知识,无法删除)
+     * @param knowledgeCategoryId
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public Integer deleteKnowledgeCategory(String knowledgeCategoryId) {
+        // 查询该分类下是否还有知识
+        Boolean hasKnowledge = hasKnowledge(knowledgeCategoryId);
+        if (hasKnowledge){
+            return 0;
+        }
+        // 查询该分类的下是否还有子分类
+        KnowledgeCategory knowledgeCategory = this.baseMapper.selectById(knowledgeCategoryId);
+        Boolean hasChirld = findHasChirld(knowledgeCategory);
+        if (hasChirld){
+            return 1;
+        }
+        // 变更sort
+        knowledgeCategoryMapper.deleteBySort(knowledgeCategory.getParent(),knowledgeCategory.getSort());
+        knowledgeCategoryMapper.deleteKnowledgeCategory(knowledgeCategoryId);
+        return 2;
+    }
+
 
 
     // 查询孩子节点(非递归)
@@ -194,4 +221,12 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
             return false;
         }
     }
+
+    // 判断分类下是否还有知识
+    private Boolean hasKnowledge(String knowledgeCategoryId){
+        QueryWrapper<Knowledge> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("CATEGORY_ID",knowledgeCategoryId);
+        List<Knowledge> knowledges = knowledgeMapper.selectList(queryWrapper);
+        return knowledges.size() > 0;
+    }
 }

+ 12 - 0
src/main/resources/mapper/knowledge/KnowledgeCategoryMapper.xml

@@ -76,6 +76,18 @@
         where SORT >= #{sort} and PARENT = #{parent} and IS_DEL = 0
     </update>
 
+    <update id="deleteBySort">
+        update KM_KNOWLEDGE_CATEGORY
+        set SORT = SORT - 1
+        WHERE SORT > #{sort} and PARENT = #{parent}
+    </update>
+
+    <delete id="deleteKnowledgeCategory">
+        update KM_KNOWLEDGE_CATEGORY
+        set IS_DEL = 1
+        WHERE PK_ID = #{knowledgeCategoryId}
+    </delete>
+
 </mapper>