Browse Source

作者:张哲
时间:2022/12/2
类型:开发
描述:知识分类上升/下降接口

ZizgZh 2 years ago
parent
commit
da227e460d

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

@@ -82,7 +82,18 @@ public class KnowledgeCategoryController extends BaseController<KnowledgeCategor
         }
     }
 
+    @ApiOperation(value = "上升/下降")
+    @GetMapping("/goUpOrDownUp/{knowledgeCategoryId}/{status}")
+    public JsonResult goUpOrDownUp(@PathVariable("knowledgeCategoryId") String knowledgeCategoryId,
+                                   @PathVariable("status") Boolean status){
+        knowledgeCategoryService.goUpOrDownUp(knowledgeCategoryId,status);
+        if (status){
+            return JsonResult.Success("上升成功!");
+        } else {
+            return JsonResult.Success("下降成功!");
+        }
 
+    }
 
     @ApiOperation("根据id查询其下级分类信息(懒加载)")
     @GetMapping("findAllByCategoryId/{categoryId}")

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

@@ -42,4 +42,10 @@ public interface KnowledgeCategoryMapper extends BaseDao<KnowledgeCategory> {
      */
     void deleteKnowledgeCategory(String knowledgeCategoryId);
 
+    /**
+     * 上升/下降交换sort(只能同级交换)
+     * @param pkId
+     * @param temp
+     */
+    void swapSort(@Param("pkId") String pkId, @Param("temp") int temp);
 }

+ 37 - 0
src/main/java/com/redxun/knowledge/service/KnowledgeCategoryServiceImpl.java

@@ -229,4 +229,41 @@ public class KnowledgeCategoryServiceImpl extends SuperServiceImpl<KnowledgeCate
         List<Knowledge> knowledges = knowledgeMapper.selectList(queryWrapper);
         return knowledges.size() > 0;
     }
+
+    /**
+     * 状态为true,上升;为false,下降
+     * @param knowledgeCategoryId
+     * @param status
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void goUpOrDownUp(String knowledgeCategoryId, Boolean status) {
+        KnowledgeCategory knowledgeCategory = this.get(knowledgeCategoryId);
+        Integer sort = knowledgeCategory.getSort();
+        String parent = knowledgeCategory.getParent();
+        if (status){
+            // 上升
+            QueryWrapper<KnowledgeCategory> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("PARENT",parent);
+            queryWrapper.orderByAsc("SORT");
+            List<KnowledgeCategory> knowledgeCategoryList = knowledgeCategoryMapper.selectList(queryWrapper);
+            List<KnowledgeCategory> collect = knowledgeCategoryList.stream().filter(e -> e.getSort() < sort).collect(Collectors.toList());
+            KnowledgeCategory knowledgeCategoryPre = collect.get(collect.size() - 1);
+            // 交换位置
+            int temp = sort;
+            knowledgeCategoryMapper.swapSort(knowledgeCategoryId,knowledgeCategoryPre.getSort());
+            knowledgeCategoryMapper.swapSort(knowledgeCategoryPre.getPkId(),temp);
+        } else {
+            // 下降
+            QueryWrapper<KnowledgeCategory> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("PARENT",parent);
+            queryWrapper.orderByAsc("SORT");
+            List<KnowledgeCategory> knowledgeCategoryList = knowledgeCategoryMapper.selectList(queryWrapper);
+            List<KnowledgeCategory> collect = knowledgeCategoryList.stream().filter(e -> e.getSort() > sort).collect(Collectors.toList());
+            KnowledgeCategory knowledgeCategoryNext = collect.get(0);
+            // 交换位置
+            int temp = sort;
+            knowledgeCategoryMapper.swapSort(knowledgeCategoryId,knowledgeCategoryNext.getSort());
+            knowledgeCategoryMapper.swapSort(knowledgeCategoryNext.getPkId(),temp);
+        }
+    }
 }

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

@@ -88,6 +88,13 @@
         WHERE PK_ID = #{knowledgeCategoryId}
     </delete>
 
+    <update id="swapSort">
+        update KM_KNOWLEDGE_CATEGORY
+        set
+            SORT = #{sort}
+        where PK_ID = #{pkId}
+    </update>
+
 </mapper>