Pārlūkot izejas kodu

【新增】新增获取字典树接口,用于前端缓存字典值,优化性能

就是那个锅 4 gadi atpakaļ
vecāks
revīzija
7687021eb4

+ 3 - 0
guns-base-support/guns-core/src/main/java/cn/stylefeng/guns/core/consts/SpringSecurityConstant.java

@ -59,6 +59,9 @@ public interface SpringSecurityConstant {
            "/sysFileInfo/download",
            "/sysFileInfo/preview",
            //字典的
            "/sysDictType/tree",
            //druid的
            "/druid/**"
    };

+ 11 - 0
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/dict/controller/SysDictTypeController.java

@ -158,4 +158,15 @@ public class SysDictTypeController {
        return new SuccessResponseData();
    }
    /**
     * 系统字典类型与字典值构造的树
     *
     * @author stylefeng
     * @date 2020/4/30 22:20
     */
    @GetMapping("/sysDictType/tree")
    @BusinessLog(title = "系统字典类型_树", opType = LogAnnotionOpTypeEnum.QUERY)
    public ResponseData tree() {
        return new SuccessResponseData(sysDictTypeService.tree());
    }
}

+ 56 - 0
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/dict/result/SysDictTreeNode.java

@ -0,0 +1,56 @@
package cn.stylefeng.guns.sys.modular.dict.result;
import cn.stylefeng.guns.core.pojo.base.node.BaseTreeNode;
import lombok.Data;
import java.util.List;
/**
 * 系统字典树
 *
 * @author xuyuxiang
 * @date 2020/3/11 12:08
 */
@Data
public class SysDictTreeNode implements BaseTreeNode {
    /**
     * id
     */
    private Long id;
    /**
     * 父id
     */
    private Long pid;
    /**
     * 编码-对应字典值的编码
     */
    private String code;
    /**
     * 名称-对应字典值的value
     */
    private String name;
    /**
     * 子节点集合
     */
    private List<SysDictTreeNode> children;
    @Override
    public Long getId() {
        return this.id;
    }
    @Override
    public Long getPid() {
        return this.pid;
    }
    @Override
    public void setChildren(List children) {
        this.children = children;
    }
}

+ 10 - 0
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/dict/service/SysDictTypeService.java

@ -28,6 +28,7 @@ import cn.hutool.core.lang.Dict;
import cn.stylefeng.guns.core.pojo.page.PageResult;
import cn.stylefeng.guns.sys.modular.dict.entity.SysDictType;
import cn.stylefeng.guns.sys.modular.dict.param.SysDictTypeParam;
import cn.stylefeng.guns.sys.modular.dict.result.SysDictTreeNode;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
@ -115,4 +116,13 @@ public interface SysDictTypeService extends IService<SysDictType> {
     * @date 2020/4/30 22:30
     */
    void changeStatus(SysDictTypeParam sysDictTypeParam);
    /**
     * 系统字典类型与字典值构造的树
     *
     * @return 树
     * @author xuyuxiang
     * @date 2020/4/30 22:30
     */
    List<SysDictTreeNode> tree();
}

+ 27 - 0
guns-base-support/guns-system/src/main/java/cn/stylefeng/guns/sys/modular/dict/service/impl/SysDictTypeServiceImpl.java

@ -25,17 +25,21 @@ Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意
package cn.stylefeng.guns.sys.modular.dict.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjectUtil;
import cn.stylefeng.guns.core.enums.CommonStatusEnum;
import cn.stylefeng.guns.core.exception.ServiceException;
import cn.stylefeng.guns.core.exception.enums.StatusExceptionEnum;
import cn.stylefeng.guns.core.factory.PageFactory;
import cn.stylefeng.guns.core.factory.TreeBuildFactory;
import cn.stylefeng.guns.core.pojo.page.PageResult;
import cn.stylefeng.guns.sys.modular.dict.entity.SysDictData;
import cn.stylefeng.guns.sys.modular.dict.entity.SysDictType;
import cn.stylefeng.guns.sys.modular.dict.enums.SysDictTypeExceptionEnum;
import cn.stylefeng.guns.sys.modular.dict.mapper.SysDictTypeMapper;
import cn.stylefeng.guns.sys.modular.dict.param.SysDictTypeParam;
import cn.stylefeng.guns.sys.modular.dict.result.SysDictTreeNode;
import cn.stylefeng.guns.sys.modular.dict.service.SysDictDataService;
import cn.stylefeng.guns.sys.modular.dict.service.SysDictTypeService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -184,6 +188,29 @@ public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDi
        }
    }
    @Override
    public List<SysDictTreeNode> tree() {
        List<SysDictTreeNode> resultList = CollectionUtil.newArrayList();
        LambdaQueryWrapper<SysDictType> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.ne(SysDictType::getStatus, CommonStatusEnum.DELETED.getCode());
        this.list(queryWrapper).forEach(sysDictType -> {
            SysDictTreeNode sysDictTreeNode = new SysDictTreeNode();
            BeanUtil.copyProperties(sysDictType, sysDictTreeNode);
            sysDictTreeNode.setPid(0L);
            resultList.add(sysDictTreeNode);
        });
        sysDictDataService.list(new LambdaQueryWrapper<SysDictData>().ne(SysDictData::getStatus, CommonStatusEnum.DELETED.getCode()))
                .forEach(sysDictData -> {
                    SysDictTreeNode sysDictTreeNode = new SysDictTreeNode();
                    sysDictTreeNode.setId(sysDictData.getId());
                    sysDictTreeNode.setPid(sysDictData.getTypeId());
                    sysDictTreeNode.setCode(sysDictData.getCode());
                    sysDictTreeNode.setName(sysDictData.getValue());
                    resultList.add(sysDictTreeNode);
                });
        return new TreeBuildFactory<SysDictTreeNode>().doTreeBuild(resultList);
    }
    /**
     * 校验参数,检查是否存在重复的编码或者名称
     *