فهرست منبع

场景增加删除和查询功能

hechunping 2 سال پیش
والد
کامیت
e0d89d9bf5

+ 66 - 18
sys-api-service/src/main/java/com/xy/service/SysSceneServiceImpl.java

@@ -1,15 +1,16 @@
 package com.xy.service;
 
 import cn.hutool.core.lang.tree.Tree;
+import cn.hutool.core.lang.tree.TreeNode;
+import cn.hutool.core.lang.tree.TreeUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xy.dto.GoodsCategoryDto;
 import com.xy.dto.SysSceneDto;
 import com.xy.entity.SysScene;
 import com.xy.mapper.SysSceneMapper;
-import com.xy.utils.Emptys;
-import com.xy.utils.PlusBeans;
-import com.xy.utils.R;
+import com.xy.utils.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -18,7 +19,13 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import java.util.Comparator;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import static com.xy.utils.Beans.copy;
 
 /**
  * <p>
@@ -31,7 +38,7 @@ import java.util.List;
 @Slf4j
 @Service
 @Api(tags = "场景")
-public class SysSceneServiceImpl extends ServiceImpl<SysSceneMapper, SysScene> implements SysSceneService{
+public class SysSceneServiceImpl extends ServiceImpl<SysSceneMapper, SysScene> implements SysSceneService {
     /**
      * 每层code长度
      */
@@ -41,29 +48,70 @@ public class SysSceneServiceImpl extends ServiceImpl<SysSceneMapper, SysScene> i
      */
     static final int CODE_MAX = 999;
 
+    @ApiOperation("场景树")
     @Override
-    public R<List<Tree<Integer>>> tree() {
-        return null;
+    public R<List<Tree<Long>>> tree() {
+        return R.ok(getSceneTree(0L));
+    }
+
+    /**
+     * 根据父节点ID生成数
+     *
+     * @param parentId 顶级可以传入0
+     * @return
+     */
+    private List<Tree<Long>> getSceneTree(Long parentId) {
+        LambdaQueryWrapper<SysScene> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        List<SysScene> list = this.list(lambdaQueryWrapper);
+        List<TreeNode<Long>> collect = list.stream().filter(item -> !item.getId().equals(item.getPaterId())).sorted(Comparator.comparingInt(SysScene::getWeigh)).map(item -> {
+            TreeNode<Long> treeNode = new TreeNode();
+            treeNode.setId(item.getId());
+            treeNode.setParentId(item.getPaterId());
+            treeNode.setName(item.getSceneCode());
+            treeNode.setWeight(item.getWeigh());
+            Map<String, Object> extra = new HashMap<>(1);
+            extra.put(LambdaUtils.getProperty(SysScene::getSceneCode), item.getSceneCode());
+            treeNode.setExtra(extra);
+            return treeNode;
+        }).collect(Collectors.toList());
+        return TreeUtil.build(collect, parentId);
     }
 
+    @ApiOperation(value = "删除" ,notes = "有子类不能删除")
+    @PostMapping("del")
+    public R deleteById(@RequestBody @Validated GoodsCategoryDto.IdDto idDto) {
+        //判断是否有子类
+        LambdaQueryWrapper<SysScene> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        lambdaQueryWrapper.eq(SysScene::getPaterId, idDto.getId()).last("limit 1").select(SysScene::getId);
+        if (getOne(lambdaQueryWrapper) != null) {
+            return R.fail("请先删除子类");
+        }
+        baseMapper.deleteById(idDto.getId());
+        return R.ok();
+    }
+
+    @ApiOperation("对象查询")
     @Override
     public R<SysSceneDto.Vo> obj(SysSceneDto.Vo vo) {
-        return null;
+        LambdaQueryWrapper<SysScene> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(vo, SysScene.class).build()
+                .last("limit 1");
+        SysScene category = baseMapper.selectOne(lambdaQueryWrapper);
+        return R.ok(copy(SysSceneDto.Vo.class, category));
     }
 
     @ApiOperation(value = "新增、更新场景", notes = "不传id为新增,传id为修改")
     @PostMapping("saveOrUpdate")
-    public R saveOrUpdate(@Validated @RequestBody SysSceneDto.Save saveDto){
+    public R saveOrUpdate(@Validated @RequestBody SysSceneDto.Save saveDto) {
         Long id = saveDto.getId();
         boolean isAdd = id == null || id == 0;
         LambdaQueryWrapper<SysScene> lambdaQueryWrapper = Wrappers.lambdaQuery();
         lambdaQueryWrapper.eq(SysScene::getName, saveDto.getName()).last("limit 1").select(SysScene::getId);
         SysScene existsSysScene = getOne(lambdaQueryWrapper);
-        if(existsSysScene != null){
-            if(isAdd){
+        if (existsSysScene != null) {
+            if (isAdd) {
                 return R.fail("场景已存在");
-            }else{
-                if(existsSysScene.getId().longValue() != saveDto.getId().longValue()){
+            } else {
+                if (existsSysScene.getId().longValue() != saveDto.getId().longValue()) {
                     return R.fail("场景已存在");
                 }
             }
@@ -75,28 +123,28 @@ public class SysSceneServiceImpl extends ServiceImpl<SysSceneMapper, SysScene> i
             if (paterSysScene == null) {
                 return R.fail("父节点错误");
             }
-        }else{
+        } else {
             saveDto.setPaterId(0L);
         }
         SysScene sysSceneSave = PlusBeans.copy(SysScene.class, saveDto);
-        if(isAdd){
+        if (isAdd) {
             if (paterSysScene != null) {
                 sysSceneSave.setLevel(paterSysScene.getLevel() + 1);
             } else {
                 sysSceneSave.setLevel(1);
             }
             sysSceneSave.setSceneCode(maxCategoryCode(paterSysScene));
-            sysSceneSave.createId().createUserTime(1L);
+            sysSceneSave.createId().createUserTime(AuthorizeUtils.getLoginId(Long.class));
             baseMapper.insert(sysSceneSave);
-        }else{
+        } else {
             //查询一下自己
             SysScene selfSysScene = getById(saveDto.getId());
             //判断是否更改了父类
-            if(saveDto.getPaterId() != null && saveDto.getPaterId().longValue() != selfSysScene.getPaterId().longValue()){
+            if (saveDto.getPaterId() != null && saveDto.getPaterId().longValue() != selfSysScene.getPaterId().longValue()) {
                 //更改了父类,重新生成code
                 sysSceneSave.setSceneCode(maxCategoryCode(paterSysScene));
             }
-            sysSceneSave.updateUserTime(1L);
+            sysSceneSave.updateUserTime(AuthorizeUtils.getLoginId(Long.class));
             baseMapper.updateById(sysSceneSave);
         }
         return R.ok();

+ 1 - 1
sys-api/src/main/java/com/xy/service/SysSceneService.java

@@ -24,7 +24,7 @@ public interface SysSceneService {
      * @return
      */
     @PostMapping("tree")
-    R<List<Tree<Integer>>> tree();
+    R<List<Tree<Long>>> tree();
 
     /**
      * 对象查询