1811872455@163.com 6 годин тому
батько
коміт
b9157ea27e

+ 15 - 0
java/storlead-system/sql/app_id_increment.sql

@@ -99,6 +99,13 @@ CALL proc_add_column_if_not_exists(
     '`app_id` BIGINT(20) NULL COMMENT ''所属应用 ID,对应 sys_app.id'' AFTER `template_event_id`'
 );
 
+-- 数据字典组
+CALL proc_add_column_if_not_exists(
+    'sys_dict',
+    'app_id',
+    '`app_id` BIGINT(20) NULL COMMENT ''所属应用 ID,对应 sys_app.id;空表示平台通用'' AFTER `dict_id`'
+);
+
 DROP PROCEDURE IF EXISTS `proc_add_column_if_not_exists`;
 
 -- -----------------------------------------------------------------------------
@@ -136,6 +143,14 @@ SET @idx_exists := (
 SET @sql := IF(@idx_exists = 0, 'ALTER TABLE `message_template_event_group` ADD INDEX `idx_msg_tpl_group_app_id` (`app_id`)', 'SELECT 1');
 PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
 
+-- sys_dict
+SET @idx_exists := (
+    SELECT COUNT(1) FROM information_schema.STATISTICS
+    WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sys_dict' AND INDEX_NAME = 'idx_sys_dict_app_id'
+);
+SET @sql := IF(@idx_exists = 0, 'ALTER TABLE `sys_dict` ADD INDEX `idx_sys_dict_app_id` (`app_id`)', 'SELECT 1');
+PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
+
 -- -----------------------------------------------------------------------------
 -- 4. 初始化 sys_app(与历史 magic number 对齐,id 固定便于 menu.app_id 引用)
 -- -----------------------------------------------------------------------------

+ 11 - 0
java/storlead-system/sql/sys_dict_app_id.sql

@@ -0,0 +1,11 @@
+-- sys_dict 增加 app_id(手工执行一次即可)
+ALTER TABLE `sys_dict`
+    ADD COLUMN `app_id` BIGINT(20) NULL
+        COMMENT '所属应用 ID,对应 sys_app.id;空表示平台通用'
+        AFTER `dict_id`;
+
+ALTER TABLE `sys_dict`
+    ADD INDEX `idx_sys_dict_app_id` (`app_id`);
+
+-- 可选:历史数据默认归到销售应用
+-- UPDATE `sys_dict` SET `app_id` = 20 WHERE `app_id` IS NULL;

+ 12 - 1
java/storlead-system/storlead-system-api/src/main/java/com/storlead/system/controller/SysDictApiController.java

@@ -49,7 +49,15 @@ public class SysDictApiController {
         if (StrUtil.isBlank(sysDict.getCode())) {
             return Result.error("参数错误,字典编码不能为空");
         }
-        SysDictEntity entity = sysDictService.getOne(new LambdaQueryWrapper<SysDictEntity>().eq(SysDictEntity::getCode,sysDict.getCode()));
+        LambdaQueryWrapper<SysDictEntity> codeWrapper = new LambdaQueryWrapper<SysDictEntity>()
+                .eq(SysDictEntity::getCode, sysDict.getCode())
+                .eq(SysDictEntity::getIsDelete, 0);
+        if (Objects.nonNull(sysDict.getAppId())) {
+            codeWrapper.eq(SysDictEntity::getAppId, sysDict.getAppId());
+        } else {
+            codeWrapper.isNull(SysDictEntity::getAppId);
+        }
+        SysDictEntity entity = sysDictService.getOne(codeWrapper);
         if (Objects.nonNull(entity)) {
             if (Objects.isNull(sysDict.getDictId())) {
                 return Result.error("字典"+sysDict.getCode()+"已被占用,请修改编码!");
@@ -93,6 +101,9 @@ public class SysDictApiController {
         if (Objects.nonNull(dto.getDictType())) {
             queryWrapper.eq(SysDictEntity::getDictType, dto.getDictType());
         }
+        if (Objects.nonNull(dto.getAppId())) {
+            queryWrapper.eq(SysDictEntity::getAppId, dto.getAppId());
+        }
         queryWrapper.like(SysDictEntity::getIsDelete, Integer.valueOf(0));
         IPage<SysDictEntity> vos = sysDictService.page(page,queryWrapper);
         return Result.result(vos);

+ 4 - 0
java/storlead-system/storlead-system-biz/src/main/java/com/storlead/system/service/impl/SysDictServiceImpl.java

@@ -18,6 +18,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -43,6 +44,9 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDictEntity
         LambdaQueryWrapper<SysDictEntity> queryWrapper = new LambdaQueryWrapper();
         queryWrapper.eq(SysDictEntity::getIsDelete,Integer.valueOf(0));
         queryWrapper.eq(SysDictEntity::getEnabled,1);
+        if (Objects.nonNull(dto.getAppId())) {
+            queryWrapper.eq(SysDictEntity::getAppId, dto.getAppId());
+        }
         if (StrUtil.isNotBlank(dto.getCode())) {
             queryWrapper.eq(SysDictEntity::getCode,dto.getCode());
         } else {

+ 3 - 1
java/storlead-system/storlead-system-biz/src/main/resources/mapper/SysDictMapper.xml

@@ -5,6 +5,8 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" extends="com.storlead.framework.mybatis.mapper.SysBaseFieldMapper.BaseResultMap" type="com.storlead.system.pojo.entity.SysDictEntity">
         <id column="dict_id" property="dictId" />
+        <result column="app_id" property="appId" />
+        <result column="dict_type" property="dictType" />
         <result column="code" property="code" />
         <result column="name" property="name" />
         <result column="description" property="description" />
@@ -12,7 +14,7 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        dict_id, code, `name`, description,<include refid="com.storlead.framework.mybatis.mapper.SysBaseFieldMapper.Base_Column_List"></include>
+        dict_id, app_id, dict_type, code, `name`, description,<include refid="com.storlead.framework.mybatis.mapper.SysBaseFieldMapper.Base_Column_List"></include>
     </sql>
 
 </mapper>

+ 2 - 0
java/storlead-system/storlead-system-core/src/main/java/com/storlead/system/pojo/dto/SysDictDTO.java

@@ -23,6 +23,8 @@ public class SysDictDTO extends PageDTO {
     private Long dictId;
     @ApiModelProperty(value = "类型:1 系统,2:业务")
     private Integer dictType;
+    @ApiModelProperty(value = "所属应用 ID,对应 sys_app.id")
+    private Long appId;
     @ApiModelProperty(value = "字典code集合")
     private List<String> codels;
 }

+ 3 - 0
java/storlead-system/storlead-system-core/src/main/java/com/storlead/system/pojo/entity/SysDictEntity.java

@@ -34,6 +34,9 @@ public class SysDictEntity extends SysBaseField {
     @ApiModelProperty(value = "字典数据id")
     private Long dictId;
 
+    @ApiModelProperty(value = "所属应用 ID,对应 sys_app.id;空表示平台通用字典")
+    private Long appId;
+
     @ApiModelProperty(value = "0:系统字典,1:业务字典")
     private Integer dictType;