Browse Source

接口:知识库标签- 调整知识标签位置、 删除知识标签

YangL 2 years ago
parent
commit
598421806d

+ 29 - 0
src/main/java/com/redxun/knowledge/controller/KnowledgeLabelController.java

@@ -84,5 +84,34 @@ public class KnowledgeLabelController extends BaseController<KnowledgeLabel> {
         }
         return jsonResult;
     }
+
+    /**
+     * 调整知识标签位置
+     *
+     * @param labelId 标签ID
+     * @param status  true 上升  false 下降
+     * @return
+     */
+    @ApiOperation(value = "调整知识标签排序位置")
+    @GetMapping("/exchangePosition/{labelId}/{status}")
+    public JsonResult exchangePosition(@PathVariable("labelId") String labelId,
+                                       @PathVariable("status") Boolean status) {
+        knowledgeLabelService.exchangePosition(labelId, status);
+        return JsonResult.Success("位置交换成功!");
+    }
+
+    /**
+     * 删除知识标签
+     *
+     * @param labelId 标签ID
+     * @return
+     */
+    @ApiOperation(value = "删除知识标签")
+    @PostMapping("delLabel")
+    public JsonResult delLabel(@RequestParam("labelId") String labelId) {
+        JsonResult jsonResult = JsonResult.getSuccessResult("删除知识标签成功!");
+        jsonResult.setData(knowledgeLabelService.delLabel(labelId));
+        return jsonResult;
+    }
 }
 

+ 4 - 0
src/main/java/com/redxun/knowledge/mapper/KnowledgeLabelMapper.java

@@ -18,4 +18,8 @@ public interface KnowledgeLabelMapper extends BaseDao<KnowledgeLabel> {
     void adjustSort(Integer adjustSort);
 
     IPage<KnowledgeLabelVo> findAllTags(IPage page, Map<String, Object> params);
+
+    void updateSort(String labelId, Integer sort);
+
+    void delLabel(String labelId);
 }

+ 46 - 0
src/main/java/com/redxun/knowledge/service/KnowledgeLabelServiceImpl.java

@@ -1,7 +1,9 @@
 
 package com.redxun.knowledge.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.redxun.common.base.db.BaseDao;
 import com.redxun.common.base.db.BaseService;
 import com.redxun.common.base.search.QueryFilter;
@@ -10,6 +12,7 @@ import com.redxun.common.tool.IdGenerator;
 import com.redxun.common.service.impl.SuperServiceImpl;
 import com.redxun.common.tool.StringUtils;
 import com.redxun.knowledge.common.UserService;
+import com.redxun.knowledge.entity.dao.Banner;
 import com.redxun.knowledge.entity.dao.Knowledge;
 import com.redxun.knowledge.entity.dao.KnowledgeLabel;
 import com.redxun.knowledge.entity.vo.BannerAdminVo;
@@ -19,6 +22,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
 import javax.annotation.Resource;
 
 /**
@@ -81,4 +85,46 @@ public class KnowledgeLabelServiceImpl extends SuperServiceImpl<KnowledgeLabelMa
 
         return page;
     }
+
+    /**
+     * 调整知识标签排序位置
+     *
+     * @param labelId 标签ID
+     * @param status  true 上升  false 下降
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void exchangePosition(String labelId, Boolean status) {
+        KnowledgeLabel label = get(labelId);
+        if (label == null) {
+            return;
+        }
+        Integer sort = label.getSort();
+        KnowledgeLabel labelTarget = null;
+        List<KnowledgeLabel> labels = knowledgeLabelMapper.selectList(new QueryWrapper<KnowledgeLabel>().eq("IS_DEL", 0).orderByAsc("SORT"));
+        if (status) {
+            // 上升
+            List<KnowledgeLabel> collect = labels.stream().filter(e -> e.getSort() < sort).collect(Collectors.toList());
+            if (ObjectUtils.isNotEmpty(collect)) {
+                labelTarget = collect.get(collect.size() - 1);
+            }
+        } else {
+            // 下降
+            List<KnowledgeLabel> collect = labels.stream().filter(e -> e.getSort() > sort).collect(Collectors.toList());
+            if (ObjectUtils.isNotEmpty(collect)) {
+                labelTarget = collect.get(0);
+            }
+        }
+
+        // 交换位置
+        if (labelTarget != null) {
+            knowledgeLabelMapper.updateSort(labelId, labelTarget.getSort());
+            knowledgeLabelMapper.updateSort(labelTarget.getPkId(), sort);
+        }
+    }
+
+    public String delLabel(String labelId) {
+        knowledgeLabelMapper.delLabel(labelId);
+        return labelId;
+    }
 }

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

@@ -59,6 +59,18 @@
         </where>
         ORDER BY SORT ASC
     </select>
+
+    <update id="updateSort" parameterType="java.lang.Object">
+        UPDATE KM_KNOWLEDGE_LABEL
+        SET SORT = #{sort}
+        WHERE PK_ID = #{labelId}
+    </update>
+
+    <update id="delLabel" parameterType="java.lang.String">
+        UPDATE KM_KNOWLEDGE_LABEL
+        SET IS_DEL = 1
+        WHERE PK_ID = #{labelId}
+    </update>
 </mapper>