Gaokun Wang 3 тижнів тому
батько
коміт
52c54cf4b1

+ 5 - 0
eco-common/com-core/src/main/java/org/eco/vip/orm/constant/Constants.java

@@ -14,6 +14,11 @@ package org.eco.vip.orm.constant;
  */
 public class Constants {
 
+    /**
+     * 所有顶层ID
+     */
+    public static final String PID = "0";
+
     /**
      * 正常状态
      */

+ 6 - 0
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/controller/dict/DictController.java

@@ -26,6 +26,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
+import java.util.Map;
 
 import static org.eco.vip.orm.pojo.CommonResult.fail;
 import static org.eco.vip.orm.pojo.CommonResult.success;
@@ -54,6 +55,11 @@ public class DictController {
         return success(dictService.selectList(dictBO));
     }
 
+    @GetMapping("/map")
+    public CommonResult<Map<String,List<DictVO>>> map() {
+        return success(dictService.selectMap());
+    }
+
     @GetMapping("/tree")
     public CommonResult<List<Tree<String>>> tree() {
         return success(dictService.tree());

+ 35 - 0
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/service/dict/DictService.java

@@ -27,7 +27,10 @@ import org.eco.vip.orm.utils.StrUtils;
 import org.eco.vip.orm.utils.TreeUtils;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 import static org.eco.vip.nexus.core.domain.dict.table.DictTableDef.DICT;
@@ -66,6 +69,38 @@ public class DictService extends BaseService<DictMapper, Dict> implements IDictS
         return dictMapper.selectListWithRelationsByQueryAs(queryWrapper, DictVO.class);
     }
 
+    @Override
+    public Map<String, List<DictVO>> selectMap() {
+        List<DictVO> dictList = this.listAs(QueryWrapper.create(), DictVO.class);
+
+        if (dictList.isEmpty()) {
+            return Map.of();
+        }
+        // 找出父节点
+        Map<String, List<DictVO>> result = new HashMap<>();
+        for (DictVO item : dictList) {
+            if (StrUtils.equals(Constants.PID, item.getParentId())) {
+                String dictValue = item.getDictValue();
+                result.put(dictValue, new ArrayList<>());
+            }
+        }
+        // 填充子节点
+        for (DictVO item : dictList) {
+            if (!StrUtils.equals(Constants.PID, item.getParentId())) {
+                String pid = item.getParentId();
+
+                dictList.stream()
+                        .filter(parent -> StrUtils.equals(parent.getDictId(), pid))
+                        .findFirst()
+                        .ifPresent(dict -> {
+                            String parentDictValue = dict.getDictValue();
+                            result.get(parentDictValue).add(item);
+                        });
+            }
+        }
+        return result;
+    }
+
     @Override
     public List<Tree<String>> tree() {
         QueryWrapper wrapper = QueryWrapper.create().orderBy(Dict::getOrderNum).asc();

+ 7 - 0
eco-nexus-core/nexus-core-biz/src/main/java/org/eco/vip/nexus/core/service/dict/IDictService.java

@@ -14,6 +14,7 @@ import org.eco.vip.orm.pojo.PageResult;
 import org.eco.vip.orm.service.IBaseService;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @description IDictService
@@ -37,6 +38,12 @@ public interface IDictService extends IBaseService<Dict> {
      **/
     List<DictVO> selectList(DictBO dictBO);
 
+    /**
+     * @description: 查询
+     * @return Map<String,List<DictVO>>
+     **/
+    Map<String,List<DictVO>> selectMap();
+
     /**
      * @description: 查询树
      * @return List<Tree < String>>

+ 48 - 16
eco-start/src/main/resources/db/mysql/V1_0_0_1__sys-init-ddl.sql

@@ -321,24 +321,56 @@ VALUES ('1', '', 'superadmin', '超级管理员', 'eco', 'pc_user', NULL, NULL,
 DROP TABLE IF EXISTS `system_dict_t`;
 CREATE TABLE `system_dict_t`
 (
-    `dict_id`      varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '唯一标识',
-    `parent_id`    varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父ID',
-    `dict_label`   varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典标签',
-    `dict_value`   varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典值',
-    `category`     varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分类',
-    `callback_show_style` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '回显样式',
-    `order_num`    int NULL DEFAULT NULL COMMENT '显示顺序',
-    `tenant_id`    varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '租户编号',
-    `status`       varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态(1正常 0停用)',
-    `version`      int NULL DEFAULT NULL COMMENT '乐观锁',
-    `del_flag`     varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '删除标志(1代表已删除 0代表存在)',
-    `create_by`    varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者',
-    `create_time`  datetime NULL DEFAULT NULL COMMENT '创建时间',
-    `update_by`    varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新者',
-    `update_time`  datetime NULL DEFAULT NULL COMMENT '更新时间',
-    `remark`       varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
+    `dict_id`             varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '唯一标识',
+    `parent_id`           varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父ID',
+    `dict_label`          varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典标签',
+    `dict_value`          varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典值',
+    `category`            varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分类',
+    `callback_show_style` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '回显样式',
+    `order_num`           int NULL DEFAULT NULL COMMENT '显示顺序',
+    `is_lock`             varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据锁1:锁定',
+    `tenant_id`           varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '租户编号',
+    `status`              varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态(1正常 0停用)',
+    `version`             int NULL DEFAULT NULL COMMENT '乐观锁',
+    `del_flag`            varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '删除标志(1代表已删除 0代表存在)',
+    `create_by`           varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者',
+    `create_time`         datetime NULL DEFAULT NULL COMMENT '创建时间',
+    `update_by`           varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新者',
+    `update_time`         datetime NULL DEFAULT NULL COMMENT '更新时间',
+    `remark`              varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
     PRIMARY KEY (`dict_id`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典数据表' ROW_FORMAT = DYNAMIC;
 
+-- ----------------------------
+-- Records of system_dict_t
+-- ----------------------------
+INSERT INTO `system_dict_t`
+VALUES ('71807970486000104', '0', '字典类型', 'DICT_TYPE', 'SYS', NULL, 0, '1', '1', '1', 0, '0', '1',
+        '2025-07-16 15:02:55', '1', '2025-07-16 15:02:52', NULL);
+INSERT INTO `system_dict_t`
+VALUES ('71807970486000105', '71807970486000104', '系统字典', 'SYS', 'SYS', NULL, 0, '1', '1', '1', 0, '0', '1',
+        '2025-07-16 15:02:55', '1', '2025-07-16 15:02:52', NULL);
+INSERT INTO `system_dict_t`
+VALUES ('71807970486000106', '71807970486000104', '业务字典', 'BIZ', 'SYS', NULL, 0, '1', '1', '1', 0, '0', '1',
+        '2025-07-16 15:02:55', '1', '2025-07-16 15:02:52', NULL);
+INSERT INTO `system_dict_t`
+VALUES ('72240902844000113', '0', '通用状态', 'COMMON_STATUS', NULL, 'primary', 2, '1', '1', '1', 0, '0', '1',
+        '2025-07-16 15:56:03', '1', '2025-07-16 16:17:33', NULL);
+INSERT INTO `system_dict_t`
+VALUES ('72240918022000144', '72240902844000113', '启用', '1', NULL, 'primary', 1, '1', '1', '1', 0, '0', '1',
+        '2025-07-16 15:56:18', '1', '2025-07-16 15:57:09', NULL);
+INSERT INTO `system_dict_t`
+VALUES ('72240951037000105', '72240902844000113', '停用', '0', NULL, 'primary', 2, '1', '1', '1', 0, '0', '1',
+        '2025-07-16 15:56:51', '1', '2025-07-16 15:56:51', NULL);
+INSERT INTO `system_dict_t`
+VALUES ('72248983950000119', '0', '通用是否', 'YES_NO', NULL, 'primary', 1, '1', '1', '1', 0, '0', '1',
+        '2025-07-16 18:10:44', '1', '2025-07-16 18:10:44', NULL);
+INSERT INTO `system_dict_t`
+VALUES ('72248997972000182', '72248983950000119', '是', '1', NULL, 'primary', 1, '1', '1', '1', 0, '0', '1',
+        '2025-07-16 18:10:58', '1', '2025-07-16 18:10:58', NULL);
+INSERT INTO `system_dict_t`
+VALUES ('72249010234000105', '72248983950000119', '否', '0', NULL, 'danger', 2, '1', '1', '1', 0, '0', '1',
+        '2025-07-16 18:11:10', '1', '2025-07-16 18:11:19', NULL);
+
 SET
 FOREIGN_KEY_CHECKS = 1;