Browse Source

补充 /sys

chenkq 1 month ago
parent
commit
e2e71a30e9
14 changed files with 196 additions and 226 deletions
  1. 1 1
      java/storlead-message/storlead-message-api/src/main/java/com/storlead/message/controller/MessageTemplateApiController.java
  2. 1 1
      java/storlead-message/storlead-message-api/src/main/java/com/storlead/message/controller/UserMessageConfigApiController.java
  3. 0 101
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/controller/customized/ListColumnPersonalizeApiController.java
  4. 0 20
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/controller/mail/ColumnPersonalizeRecordController.java
  5. 0 16
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/mapper/mail/ColumnPersonalizeRecordMapper.java
  6. 0 16
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/ColumnPersonalizeRecordService.java
  7. 0 20
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/ColumnPersonalizeRecordServiceImpl.java
  8. 0 33
      java/storlead-sasa/storlead-sales/src/main/resources/mapper/ColumnPersonalizeRecordMapper.xml
  9. 16 0
      java/storlead-system/sql/column_personalize_record.sql
  10. 54 0
      java/storlead-system/storlead-system-api/src/main/java/com/storlead/system/controller/ListColumnPersonalizeApiController.java
  11. 10 0
      java/storlead-system/storlead-system-biz/src/main/java/com/storlead/system/mapper/ColumnPersonalizeRecordMapper.java
  12. 79 0
      java/storlead-system/storlead-system-biz/src/main/java/com/storlead/system/service/impl/ColumnPersonalizeRecordServiceImpl.java
  13. 8 18
      java/storlead-system/storlead-system-core/src/main/java/com/storlead/system/pojo/entity/ColumnPersonalizeRecordEntity.java
  14. 27 0
      java/storlead-system/storlead-system-spi/src/main/java/com/storlead/system/service/ColumnPersonalizeRecordService.java

+ 1 - 1
java/storlead-message/storlead-message-api/src/main/java/com/storlead/message/controller/MessageTemplateApiController.java

@@ -40,7 +40,7 @@ import java.util.stream.Collectors;
  * @create: 2024-04-26 15:15
  */
 @RestController
-@RequestMapping("/message/template")
+@RequestMapping("/sys/message/template")
 @Api(tags = "消息: 消息模板机制配置")
 public class MessageTemplateApiController {
 

+ 1 - 1
java/storlead-message/storlead-message-api/src/main/java/com/storlead/message/controller/UserMessageConfigApiController.java

@@ -32,7 +32,7 @@ import java.util.stream.Collectors;
  * @create: 2025-04-25 11:26
  */
 @RestController
-@RequestMapping("/message/config")
+@RequestMapping("/sys/message/config")
 @Api(tags = "消息: 用户消息设置")
 public class UserMessageConfigApiController {
 

+ 0 - 101
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/controller/customized/ListColumnPersonalizeApiController.java

@@ -1,101 +0,0 @@
-package com.storlead.sales.controller.customized;
-
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.storlead.framework.util.LoginUserUtil;
-import com.storlead.framework.common.result.Result;
-import com.storlead.sales.pojo.entity.mail.ColumnPersonalizeRecordEntity;
-import com.storlead.sales.service.ColumnPersonalizeRecordService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-08-30 16:23
- */
-@RestController
-@RequestMapping("/personalize")
-@Api(tags = "销售: 个性化设置")
-public class ListColumnPersonalizeApiController {
-
-    @Resource
-    private ColumnPersonalizeRecordService personalizeRecordService;
-
-    @ApiOperation(value = "保存列排序配置")
-    @PostMapping( "/column/save")
-    public Result<?> save(@RequestBody ColumnPersonalizeRecordEntity record) {
-        Long currentUserId = LoginUserUtil.getCurrentUserId();
-        record.setOwnerBy(currentUserId);
-        ColumnPersonalizeRecordEntity columnPersonalize = personalizeRecordService.getOne(new LambdaQueryWrapper<ColumnPersonalizeRecordEntity>().eq(ColumnPersonalizeRecordEntity::getCode, record.getCode()).last("limit 1"));
-        if (Objects.nonNull(columnPersonalize)) {
-            record.setId(columnPersonalize.getId());
-        }
-        personalizeRecordService.saveOrUpdate(record);
-        return Result.ok();
-    }
-
-    @ApiOperation(value = "查询列排序配置")
-    @PostMapping( "/column/getList")
-    public Result<?> list() {
-        Long currentUserId = LoginUserUtil.getCurrentUserId();
-        if (Objects.isNull(currentUserId)) {
-            return Result.ok();
-        }
-        LambdaQueryWrapper<ColumnPersonalizeRecordEntity> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(ColumnPersonalizeRecordEntity::getOwnerBy,currentUserId);
-        List<ColumnPersonalizeRecordEntity> columnPersonalizels = personalizeRecordService.list(wrapper);
-        if (CollectionUtils.isEmpty(columnPersonalizels)) {
-            return Result.ok();
-        }
-        Map<String, String> mapColumn = columnPersonalizels.stream()
-                .filter(column -> column.getColumnJson() != null)  // 过滤掉 columnJson 为空的条目
-                .collect(Collectors.toMap(
-                        ColumnPersonalizeRecordEntity::getCode,
-                        ColumnPersonalizeRecordEntity::getColumnJson,
-                        (existing, replacement) -> existing  // 处理重复键的情况,保留已有的值
-                ));
-
-
-        return Result.result(mapColumn);
-    }
-
-    @ApiOperation(value = "获取指定配置")
-    @PostMapping( "/column/getPersonalize")
-    public Result<?> getPersonalizeList(String code) {
-        Long currentUserId = LoginUserUtil.getCurrentUserId();
-        if (Objects.isNull(currentUserId)) {
-            return Result.ok();
-        }
-        if (StrUtil.isBlank(code)) {
-            return Result.ok();
-        }
-        LambdaQueryWrapper<ColumnPersonalizeRecordEntity> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(ColumnPersonalizeRecordEntity::getOwnerBy,currentUserId);
-        wrapper.eq(ColumnPersonalizeRecordEntity::getCode,code);
-        List<ColumnPersonalizeRecordEntity> columnPersonalizels = personalizeRecordService.list(wrapper);
-
-        if (Objects.isNull(columnPersonalizels)) {
-            return Result.ok();
-        }
-        Map<String, String> mapColumn = columnPersonalizels.stream()
-                .collect(Collectors.toMap(
-                        ColumnPersonalizeRecordEntity::getCode,
-                        ColumnPersonalizeRecordEntity::getColumnJson,
-                        (existingValue, newValue) -> existingValue // 或 newValue, 或其他逻辑
-                ));
-        return Result.result(mapColumn);
-    }
-}

+ 0 - 20
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/controller/mail/ColumnPersonalizeRecordController.java

@@ -1,20 +0,0 @@
-package com.storlead.sales.controller.mail;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 设置列结构排序结构方式 前端控制器
- * </p>
- *
- * @author chenkq
- * @since 2024-08-30
- */
-@RestController
-@RequestMapping("/column-personalize-record-entity")
-public class ColumnPersonalizeRecordController {
-
-}

+ 0 - 16
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/mapper/mail/ColumnPersonalizeRecordMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.sales.mapper.mail;
-
-import com.storlead.sales.pojo.entity.mail.ColumnPersonalizeRecordEntity;
-import com.storlead.framework.mybatis.mapper.MyBaseMapper;
-
-/**
- * <p>
- * 设置列结构排序结构方式 Mapper 接口
- * </p>
- *
- * @author chenkq
- * @since 2024-08-30
- */
-public interface ColumnPersonalizeRecordMapper extends MyBaseMapper<ColumnPersonalizeRecordEntity> {
-
-}

+ 0 - 16
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/ColumnPersonalizeRecordService.java

@@ -1,16 +0,0 @@
-package com.storlead.sales.service;
-
-import com.storlead.sales.pojo.entity.mail.ColumnPersonalizeRecordEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-/**
- * <p>
- * 设置列结构排序结构方式 服务类
- * </p>
- *
- * @author chenkq
- * @since 2024-08-30
- */
-public interface ColumnPersonalizeRecordService extends MyBaseService<ColumnPersonalizeRecordEntity> {
-
-}

+ 0 - 20
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/ColumnPersonalizeRecordServiceImpl.java

@@ -1,20 +0,0 @@
-package com.storlead.sales.service.impl;
-
-import com.storlead.sales.pojo.entity.mail.ColumnPersonalizeRecordEntity;
-import com.storlead.sales.mapper.mail.ColumnPersonalizeRecordMapper;
-import com.storlead.sales.service.ColumnPersonalizeRecordService;
-import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * 设置列结构排序结构方式 服务实现类
- * </p>
- *
- * @author chenkq
- * @since 2024-08-30
- */
-@Service
-public class ColumnPersonalizeRecordServiceImpl extends MyBaseServiceImpl<ColumnPersonalizeRecordMapper, ColumnPersonalizeRecordEntity> implements ColumnPersonalizeRecordService {
-
-}

+ 0 - 33
java/storlead-sasa/storlead-sales/src/main/resources/mapper/ColumnPersonalizeRecordMapper.xml

@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.sales.mapper.mail.ColumnPersonalizeRecordMapper">
-
-        <!-- 通用查询映射结果 -->
-        <resultMap id="BaseResultMap" type="com.storlead.sales.pojo.entity.mail.ColumnPersonalizeRecordEntity">
-                    <id column="id" property="id" />
-                <result column="owner_by" property="ownerBy" />
-                <result column="create_time" property="createTime" />
-                <result column="update_time" property="updateTime" />
-                <result column="sort" property="sort" />
-                <result column="is_delete" property="isDelete" />
-                <result column="enabled" property="enabled" />
-                <result column="create_by" property="createBy" />
-                <result column="update_by" property="updateBy" />
-                    <result column="code" property="code" />
-                    <result column="column_json" property="columnJson" />
-        </resultMap>
-
-        <!-- 通用查询结果列 -->
-        <sql id="Base_Column_List">
-                owner_by,
-                create_time,
-                update_time,
-                sort,
-                is_delete,
-                enabled,
-                create_by,
-                update_by,
-            id, code, column_json
-        </sql>
-
-</mapper>

+ 16 - 0
java/storlead-system/sql/column_personalize_record.sql

@@ -0,0 +1,16 @@
+-- 列表列个性化配置(历史数据在 sales 库;业务已迁至 storlead-system,Service 使用 @DS(sales))
+CREATE TABLE IF NOT EXISTS `column_personalize_record` (
+  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
+  `code` varchar(128) DEFAULT NULL COMMENT '页面/列表编码',
+  `column_json` text COMMENT '列配置 JSON',
+  `owner_by` bigint DEFAULT NULL,
+  `create_by` bigint DEFAULT NULL,
+  `update_by` bigint DEFAULT NULL,
+  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
+  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `is_delete` int DEFAULT 0,
+  `enabled` tinyint(1) DEFAULT 1,
+  `sort` int DEFAULT NULL,
+  PRIMARY KEY (`id`),
+  KEY `idx_owner_code` (`owner_by`, `code`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设置列结构排序结构方式';

+ 54 - 0
java/storlead-system/storlead-system-api/src/main/java/com/storlead/system/controller/ListColumnPersonalizeApiController.java

@@ -0,0 +1,54 @@
+package com.storlead.system.controller;
+
+import com.storlead.framework.common.result.Result;
+import com.storlead.system.pojo.entity.ColumnPersonalizeRecordEntity;
+import com.storlead.system.service.ColumnPersonalizeRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * 列表列个性化配置(接口路径保持与原 sales 模块一致,兼容前端)
+ */
+@RestController
+@RequestMapping("/personalize")
+@Api(tags = "系统: 列表列个性化设置")
+public class ListColumnPersonalizeApiController {
+
+    @Resource
+    private ColumnPersonalizeRecordService personalizeRecordService;
+
+    @ApiOperation(value = "保存列排序配置")
+    @PostMapping("/column/save")
+    public Result<?> save(@RequestBody ColumnPersonalizeRecordEntity record) {
+        personalizeRecordService.savePersonalize(record);
+        return Result.ok();
+    }
+
+    @ApiOperation(value = "查询列排序配置")
+    @PostMapping("/column/getList")
+    public Result<?> list() {
+        Map<String, String> mapColumn = personalizeRecordService.listPersonalizeMap();
+        if (CollectionUtils.isEmpty(mapColumn)) {
+            return Result.ok();
+        }
+        return Result.result(mapColumn);
+    }
+
+    @ApiOperation(value = "获取指定配置")
+    @PostMapping("/column/getPersonalize")
+    public Result<?> getPersonalizeList(String code) {
+        Map<String, String> mapColumn = personalizeRecordService.getPersonalizeMap(code);
+        if (CollectionUtils.isEmpty(mapColumn)) {
+            return Result.ok();
+        }
+        return Result.result(mapColumn);
+    }
+}

+ 10 - 0
java/storlead-system/storlead-system-biz/src/main/java/com/storlead/system/mapper/ColumnPersonalizeRecordMapper.java

@@ -0,0 +1,10 @@
+package com.storlead.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.storlead.system.pojo.entity.ColumnPersonalizeRecordEntity;
+
+/**
+ * 列表列个性化配置 Mapper
+ */
+public interface ColumnPersonalizeRecordMapper extends BaseMapper<ColumnPersonalizeRecordEntity> {
+}

+ 79 - 0
java/storlead-system/storlead-system-biz/src/main/java/com/storlead/system/service/impl/ColumnPersonalizeRecordServiceImpl.java

@@ -0,0 +1,79 @@
+package com.storlead.system.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.storlead.framework.common.constant.DSConstants;
+import com.storlead.framework.util.LoginUserUtil;
+import com.storlead.system.mapper.ColumnPersonalizeRecordMapper;
+import com.storlead.system.pojo.entity.ColumnPersonalizeRecordEntity;
+import com.storlead.system.service.ColumnPersonalizeRecordService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * 列表列个性化配置(表仍在 sales 库,保持历史数据可用)
+ */
+@Service
+@DS(DSConstants.DATASOURCE_SALES)
+public class ColumnPersonalizeRecordServiceImpl
+        extends ServiceImpl<ColumnPersonalizeRecordMapper, ColumnPersonalizeRecordEntity>
+        implements ColumnPersonalizeRecordService {
+
+    @Override
+    public void savePersonalize(ColumnPersonalizeRecordEntity record) {
+        Long currentUserId = LoginUserUtil.getCurrentUserId();
+        record.setOwnerBy(currentUserId);
+        ColumnPersonalizeRecordEntity existing = getOne(new LambdaQueryWrapper<ColumnPersonalizeRecordEntity>()
+                .eq(ColumnPersonalizeRecordEntity::getOwnerBy, currentUserId)
+                .eq(ColumnPersonalizeRecordEntity::getCode, record.getCode())
+                .last("limit 1"));
+        if (Objects.nonNull(existing)) {
+            record.setId(existing.getId());
+        }
+        saveOrUpdate(record);
+    }
+
+    @Override
+    public Map<String, String> listPersonalizeMap() {
+        Long currentUserId = LoginUserUtil.getCurrentUserId();
+        if (Objects.isNull(currentUserId)) {
+            return Collections.emptyMap();
+        }
+        List<ColumnPersonalizeRecordEntity> list = list(new LambdaQueryWrapper<ColumnPersonalizeRecordEntity>()
+                .eq(ColumnPersonalizeRecordEntity::getOwnerBy, currentUserId));
+        return toCodeJsonMap(list);
+    }
+
+    @Override
+    public Map<String, String> getPersonalizeMap(String code) {
+        Long currentUserId = LoginUserUtil.getCurrentUserId();
+        if (Objects.isNull(currentUserId) || StrUtil.isBlank(code)) {
+            return Collections.emptyMap();
+        }
+        List<ColumnPersonalizeRecordEntity> list = list(new LambdaQueryWrapper<ColumnPersonalizeRecordEntity>()
+                .eq(ColumnPersonalizeRecordEntity::getOwnerBy, currentUserId)
+                .eq(ColumnPersonalizeRecordEntity::getCode, code));
+        return toCodeJsonMap(list);
+    }
+
+    private Map<String, String> toCodeJsonMap(List<ColumnPersonalizeRecordEntity> list) {
+        if (CollectionUtils.isEmpty(list)) {
+            return Collections.emptyMap();
+        }
+        return list.stream()
+                .filter(column -> column.getColumnJson() != null)
+                .collect(Collectors.toMap(
+                        ColumnPersonalizeRecordEntity::getCode,
+                        ColumnPersonalizeRecordEntity::getColumnJson,
+                        (existing, replacement) -> existing
+                ));
+    }
+}

+ 8 - 18
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/pojo/entity/mail/ColumnPersonalizeRecordEntity.java → java/storlead-system/storlead-system-core/src/main/java/com/storlead/system/pojo/entity/ColumnPersonalizeRecordEntity.java

@@ -1,10 +1,10 @@
-package com.storlead.sales.pojo.entity.mail;
+package com.storlead.system.pojo.entity;
 
-import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.storlead.framework.mybatis.entity.SysBaseField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.storlead.framework.mybatis.entity.SysBaseField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -12,36 +12,26 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 
 /**
- * <p>
- * 设置列结构排序结构方式
- * </p>
- *
- * @author chenkq
- * @since 2024-08-30
+ * 列表列个性化配置
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
 @Accessors(chain = true)
 @TableName("column_personalize_record")
-@ApiModel(value="ColumnPersonalizeRecordEntity对象", description="设置列结构排序结构方式")
+@ApiModel(value = "ColumnPersonalizeRecordEntity", description = "设置列结构排序结构方式")
 public class ColumnPersonalizeRecordEntity extends SysBaseField {
 
     private static final long serialVersionUID = 1L;
 
-
-
-
     @ApiModelProperty(value = "主键id")
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
-    @ApiModelProperty(value = "显示顺序")
+    @ApiModelProperty(value = "页面/列表编码")
     @TableField("code")
     private String code;
 
-    @ApiModelProperty(value = "主题")
+    @ApiModelProperty(value = "列配置 JSON")
     @TableField("column_json")
     private String columnJson;
-
-
 }

+ 27 - 0
java/storlead-system/storlead-system-spi/src/main/java/com/storlead/system/service/ColumnPersonalizeRecordService.java

@@ -0,0 +1,27 @@
+package com.storlead.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.storlead.system.pojo.entity.ColumnPersonalizeRecordEntity;
+
+import java.util.Map;
+
+/**
+ * 列表列个性化配置
+ */
+public interface ColumnPersonalizeRecordService extends IService<ColumnPersonalizeRecordEntity> {
+
+    /**
+     * 保存当前用户指定 code 的列配置
+     */
+    void savePersonalize(ColumnPersonalizeRecordEntity record);
+
+    /**
+     * 查询当前用户全部列配置:code -> columnJson
+     */
+    Map<String, String> listPersonalizeMap();
+
+    /**
+     * 查询当前用户指定 code 的列配置:code -> columnJson
+     */
+    Map<String, String> getPersonalizeMap(String code);
+}