소스 검색

邮件签名,消息类型拆分

1811872455@163.com 3 시간 전
부모
커밋
361a6362e5
21개의 변경된 파일534개의 추가작업 그리고 115개의 파일을 삭제
  1. 19 0
      java/storlead-mail/sql/email_signature.sql
  2. 161 0
      java/storlead-mail/storlead-mail-api/src/main/java/com/storlead/mail/controller/MailSignatureApiController.java
  3. 10 0
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/EmailSignatureMapper.java
  4. 46 0
      java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/EmailSignatureServiceImpl.java
  5. 26 0
      java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/EmailSignatureMapper.xml
  6. 26 0
      java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/dto/EmailSignatureDTO.java
  7. 45 0
      java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/EmailSignatureEntity.java
  8. 15 0
      java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/EmailSignatureService.java
  9. 30 4
      java/storlead-message/storlead-message-api/src/main/java/com/storlead/message/controller/MessageApiController.java
  10. 21 0
      java/storlead-message/storlead-message-core/src/main/java/com/storlead/message/catalog/MessageTypeCatalog.java
  11. 8 8
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/controller/task/TaskApiController.java
  12. 6 6
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/controller/task/TestApiController.java
  13. 24 31
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/enums/SalesMessageTypeEnum.java
  14. 25 0
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/message/SalesMessageTypeCatalog.java
  15. 19 19
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/CustomerFollowUpServiceImpl.java
  16. 9 9
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/MessageAssembleServiceImpl.java
  17. 13 13
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/task/TaskServiceImpl.java
  18. 0 1
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/task/TaskService.java
  19. 12 12
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/task/dispatch/TaskMessageOutTimeRemindAutoTask.java
  20. 12 12
      java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/task/dispatch/TaskMessageRemindAutoTask.java
  21. 7 0
      java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/enums/TradeMessageTypeEnum.java

+ 19 - 0
java/storlead-mail/sql/email_signature.sql

@@ -0,0 +1,19 @@
+-- 邮件签名表(mail 库 sp_email_platform_*)
+CREATE TABLE IF NOT EXISTS `email_signature` (
+    `id`                BIGINT(20)    NOT NULL AUTO_INCREMENT COMMENT '主键',
+    `signature_title`   VARCHAR(128)  NOT NULL COMMENT '签名名称',
+    `signature_content` MEDIUMTEXT             COMMENT '签名内容(HTML)',
+    `is_default`        TINYINT(1)    NOT NULL DEFAULT 0 COMMENT '是否默认签名:1是 0否',
+    `smtp_pop_id`       BIGINT(20)             DEFAULT NULL COMMENT '关联邮箱账号 smtp_pop_settings.id,空表示通用',
+    `owner_by`          BIGINT(20)             DEFAULT NULL COMMENT '所属用户',
+    `create_by`         BIGINT(20)             DEFAULT NULL,
+    `update_by`         BIGINT(20)             DEFAULT NULL,
+    `create_time`       DATETIME               DEFAULT NULL,
+    `update_time`       DATETIME               DEFAULT NULL,
+    `is_delete`         TINYINT(1)    NOT NULL DEFAULT 0 COMMENT '0未删除 1已删除',
+    `enabled`           TINYINT(1)    NOT NULL DEFAULT 1 COMMENT '1启用 0禁用',
+    `sort`              INT(11)                DEFAULT 0 COMMENT '排序,越小越靠前',
+    PRIMARY KEY (`id`),
+    KEY `idx_email_signature_owner` (`owner_by`, `is_delete`),
+    KEY `idx_email_signature_smtp` (`smtp_pop_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='邮件签名';

+ 161 - 0
java/storlead-mail/storlead-mail-api/src/main/java/com/storlead/mail/controller/MailSignatureApiController.java

@@ -0,0 +1,161 @@
+package com.storlead.mail.controller;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.storlead.framework.common.result.Result;
+import com.storlead.framework.util.LoginUserUtil;
+import com.storlead.mail.pojo.dto.EmailSignatureDTO;
+import com.storlead.mail.pojo.entity.EmailSignatureEntity;
+import com.storlead.mail.service.EmailSignatureService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.log4j.Log4j2;
+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.Arrays;
+import java.util.Objects;
+
+/**
+ * 邮件签名增删改查
+ */
+@RestController
+@RequestMapping("/email/signature")
+@Api(tags = "邮件: 邮件签名")
+@Log4j2
+public class MailSignatureApiController {
+
+    @Resource
+    private EmailSignatureService emailSignatureService;
+
+    @PostMapping("/pageLlist")
+    @ApiOperation("分页查询邮件签名")
+    public Result<?> pageList(EmailSignatureDTO dto) {
+        Long currentUserId = LoginUserUtil.getCurrentUserId();
+        Page<EmailSignatureEntity> page = new Page<>(dto.getPageIndex(), dto.getPageSize());
+        LambdaQueryWrapper<EmailSignatureEntity> queryWrapper = buildQuery(dto, currentUserId);
+        IPage<EmailSignatureEntity> pageList = emailSignatureService.page(page, queryWrapper);
+        return Result.result(pageList);
+    }
+
+    @PostMapping("/list")
+    @ApiOperation("列表查询(精简字段)")
+    public Result<?> list(EmailSignatureDTO dto) {
+        Long currentUserId = LoginUserUtil.getCurrentUserId();
+        Page<EmailSignatureEntity> page = new Page<>(dto.getPageIndex(), dto.getPageSize());
+        LambdaQueryWrapper<EmailSignatureEntity> queryWrapper = buildQuery(dto, currentUserId);
+        queryWrapper.select(
+                EmailSignatureEntity::getId,
+                EmailSignatureEntity::getSignatureTitle,
+                EmailSignatureEntity::getIsDefault,
+                EmailSignatureEntity::getSmtpPopId,
+                EmailSignatureEntity::getEnabled,
+                EmailSignatureEntity::getSort,
+                EmailSignatureEntity::getCreateTime,
+                EmailSignatureEntity::getUpdateTime
+        );
+        IPage<EmailSignatureEntity> pageList = emailSignatureService.page(page, queryWrapper);
+        return Result.result(pageList);
+    }
+
+    @PostMapping("/getById")
+    @ApiOperation("签名详情")
+    public Result<?> getById(Long id) {
+        EmailSignatureEntity entity = emailSignatureService.getById(id);
+        return Result.result(entity);
+    }
+
+    @PostMapping("/getDefault")
+    @ApiOperation("获取当前用户默认签名(可选 smtpPopId)")
+    public Result<?> getDefault(Long smtpPopId) {
+        Long currentUserId = LoginUserUtil.getCurrentUserId();
+        LambdaQueryWrapper<EmailSignatureEntity> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EmailSignatureEntity::getOwnerBy, currentUserId);
+        queryWrapper.eq(EmailSignatureEntity::getIsDelete, 0);
+        queryWrapper.eq(EmailSignatureEntity::getEnabled, true);
+        queryWrapper.eq(EmailSignatureEntity::getIsDefault, 1);
+        if (Objects.nonNull(smtpPopId)) {
+            queryWrapper.eq(EmailSignatureEntity::getSmtpPopId, smtpPopId);
+        } else {
+            queryWrapper.isNull(EmailSignatureEntity::getSmtpPopId);
+        }
+        queryWrapper.last("limit 1");
+        EmailSignatureEntity entity = emailSignatureService.getOne(queryWrapper);
+        return Result.result(entity);
+    }
+
+    @PostMapping("/save")
+    @ApiOperation("新增或更新签名")
+    public Result<?> save(@RequestBody EmailSignatureEntity entity) {
+        if (StrUtil.isBlank(entity.getSignatureTitle())) {
+            return Result.error("签名名称不能为空");
+        }
+        emailSignatureService.saveSignature(entity);
+        return Result.ok();
+    }
+
+    @PostMapping("/deleteIds")
+    @ApiOperation("逻辑删除")
+    public Result<?> delete(Long[] ids) {
+        if (Objects.isNull(ids) || ids.length == 0) {
+            return Result.error("参数错误");
+        }
+        emailSignatureService.lgDelete(Arrays.asList(ids));
+        return Result.ok();
+    }
+
+    @PostMapping("/enabled")
+    @ApiOperation("启用或禁用")
+    public Result<?> enabled(Long id, Boolean enable) {
+        if (Objects.isNull(id)) {
+            return Result.error("参数错误");
+        }
+        LambdaUpdateWrapper<EmailSignatureEntity> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.set(EmailSignatureEntity::getEnabled, enable);
+        updateWrapper.eq(EmailSignatureEntity::getId, id);
+        emailSignatureService.update(updateWrapper);
+        return Result.ok();
+    }
+
+    @PostMapping("/setDefault")
+    @ApiOperation("设为默认签名")
+    public Result<?> setDefault(Long id) {
+        if (Objects.isNull(id)) {
+            return Result.error("参数错误");
+        }
+        EmailSignatureEntity entity = emailSignatureService.getById(id);
+        if (entity == null || Objects.equals(entity.getIsDelete(), 1)) {
+            return Result.error("签名不存在");
+        }
+        entity.setIsDefault(1);
+        emailSignatureService.saveSignature(entity);
+        return Result.ok();
+    }
+
+    private LambdaQueryWrapper<EmailSignatureEntity> buildQuery(EmailSignatureDTO dto, Long currentUserId) {
+        LambdaQueryWrapper<EmailSignatureEntity> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EmailSignatureEntity::getOwnerBy, currentUserId);
+        queryWrapper.eq(EmailSignatureEntity::getIsDelete, 0);
+        if (StrUtil.isNotBlank(dto.getSignatureTitle())) {
+            queryWrapper.like(EmailSignatureEntity::getSignatureTitle, dto.getSignatureTitle());
+        }
+        if (Objects.nonNull(dto.getIsDefault())) {
+            queryWrapper.eq(EmailSignatureEntity::getIsDefault, dto.getIsDefault());
+        }
+        if (Objects.nonNull(dto.getSmtpPopId())) {
+            queryWrapper.eq(EmailSignatureEntity::getSmtpPopId, dto.getSmtpPopId());
+        }
+        if (Objects.nonNull(dto.getEnabled())) {
+            queryWrapper.eq(EmailSignatureEntity::getEnabled, dto.getEnabled());
+        }
+        queryWrapper.orderByAsc(EmailSignatureEntity::getSort);
+        queryWrapper.orderByDesc(EmailSignatureEntity::getId);
+        return queryWrapper;
+    }
+}

+ 10 - 0
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/mapper/EmailSignatureMapper.java

@@ -0,0 +1,10 @@
+package com.storlead.mail.mapper;
+
+import com.storlead.mail.mapper.support.MailBaseMapper;
+import com.storlead.mail.pojo.entity.EmailSignatureEntity;
+
+/**
+ * 邮件签名 Mapper
+ */
+public interface EmailSignatureMapper extends MailBaseMapper<EmailSignatureEntity> {
+}

+ 46 - 0
java/storlead-mail/storlead-mail-biz/src/main/java/com/storlead/mail/service/impl/EmailSignatureServiceImpl.java

@@ -0,0 +1,46 @@
+package com.storlead.mail.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.storlead.framework.util.LoginUserUtil;
+import com.storlead.mail.mapper.EmailSignatureMapper;
+import com.storlead.mail.pojo.entity.EmailSignatureEntity;
+import com.storlead.mail.service.EmailSignatureService;
+import com.storlead.mail.service.impl.support.MailDataSourceServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Objects;
+
+/**
+ * 邮件签名服务实现
+ */
+@Service
+public class EmailSignatureServiceImpl
+        extends MailDataSourceServiceImpl<EmailSignatureMapper, EmailSignatureEntity>
+        implements EmailSignatureService {
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveSignature(EmailSignatureEntity entity) {
+        if (entity.getIsDefault() != null && entity.getIsDefault() == 1) {
+            Long ownerBy = entity.getOwnerBy();
+            if (ownerBy == null) {
+                ownerBy = LoginUserUtil.getCurrentUserId();
+            }
+            LambdaUpdateWrapper<EmailSignatureEntity> clearDefault = new LambdaUpdateWrapper<>();
+            clearDefault.set(EmailSignatureEntity::getIsDefault, 0);
+            clearDefault.eq(EmailSignatureEntity::getOwnerBy, ownerBy);
+            clearDefault.eq(EmailSignatureEntity::getIsDelete, 0);
+            if (Objects.nonNull(entity.getSmtpPopId())) {
+                clearDefault.eq(EmailSignatureEntity::getSmtpPopId, entity.getSmtpPopId());
+            } else {
+                clearDefault.isNull(EmailSignatureEntity::getSmtpPopId);
+            }
+            if (Objects.nonNull(entity.getId())) {
+                clearDefault.ne(EmailSignatureEntity::getId, entity.getId());
+            }
+            update(clearDefault);
+        }
+        saveOrUpdate(entity);
+    }
+}

+ 26 - 0
java/storlead-mail/storlead-mail-biz/src/main/resources/mapper/EmailSignatureMapper.xml

@@ -0,0 +1,26 @@
+<?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.mail.mapper.EmailSignatureMapper">
+
+    <resultMap id="BaseResultMap" type="com.storlead.mail.pojo.entity.EmailSignatureEntity">
+        <id column="id" property="id"/>
+        <result column="signature_title" property="signatureTitle"/>
+        <result column="signature_content" property="signatureContent"/>
+        <result column="is_default" property="isDefault"/>
+        <result column="smtp_pop_id" property="smtpPopId"/>
+        <result column="owner_by" property="ownerBy"/>
+        <result column="create_by" property="createBy"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="is_delete" property="isDelete"/>
+        <result column="enabled" property="enabled"/>
+        <result column="sort" property="sort"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id, signature_title, signature_content, is_default, smtp_pop_id,
+        owner_by, create_by, update_by, create_time, update_time, is_delete, enabled, sort
+    </sql>
+
+</mapper>

+ 26 - 0
java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/dto/EmailSignatureDTO.java

@@ -0,0 +1,26 @@
+package com.storlead.mail.pojo.dto;
+
+import com.storlead.framework.mybatis.page.Page;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 邮件签名查询
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class EmailSignatureDTO extends Page {
+
+    @ApiModelProperty(value = "签名名称(模糊)")
+    private String signatureTitle;
+
+    @ApiModelProperty(value = "是否默认:1是 0否")
+    private Integer isDefault;
+
+    @ApiModelProperty(value = "关联邮箱账号 id")
+    private Long smtpPopId;
+
+    @ApiModelProperty(value = "1启用 0禁用")
+    private Integer enabled;
+}

+ 45 - 0
java/storlead-mail/storlead-mail-core/src/main/java/com/storlead/mail/pojo/entity/EmailSignatureEntity.java

@@ -0,0 +1,45 @@
+package com.storlead.mail.pojo.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+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;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 邮件签名
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("email_signature")
+@ApiModel(value = "EmailSignatureEntity", description = "邮件签名")
+public class EmailSignatureEntity extends SysBaseField {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键id")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "签名名称")
+    @TableField("signature_title")
+    private String signatureTitle;
+
+    @ApiModelProperty(value = "签名内容(HTML)")
+    @TableField("signature_content")
+    private String signatureContent;
+
+    @ApiModelProperty(value = "是否默认签名:1是 0否")
+    @TableField("is_default")
+    private Integer isDefault;
+
+    @ApiModelProperty(value = "关联邮箱账号 smtp_pop_settings.id,空表示通用")
+    @TableField("smtp_pop_id")
+    private Long smtpPopId;
+}

+ 15 - 0
java/storlead-mail/storlead-mail-spi/src/main/java/com/storlead/mail/service/EmailSignatureService.java

@@ -0,0 +1,15 @@
+package com.storlead.mail.service;
+
+import com.storlead.framework.mybatis.service.MyBaseService;
+import com.storlead.mail.pojo.entity.EmailSignatureEntity;
+
+/**
+ * 邮件签名服务
+ */
+public interface EmailSignatureService extends MyBaseService<EmailSignatureEntity> {
+
+    /**
+     * 保存签名;若设为默认,则取消当前用户(同 smtpPopId)下其他默认。
+     */
+    void saveSignature(EmailSignatureEntity entity);
+}

+ 30 - 4
java/storlead-message/storlead-message-api/src/main/java/com/storlead/message/controller/MessageApiController.java

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.storlead.framework.common.result.Result;
 import com.storlead.framework.util.LoginUserUtil;
-import com.storlead.message.enums.MessageTypeEnum;
+import com.storlead.message.catalog.MessageTypeCatalog;
 import com.storlead.message.pojo.dto.MessageDTO;
 import com.storlead.message.pojo.dto.MessageSendDTO;
 import com.storlead.message.pojo.entity.InsideMessageSendLogEntity;
@@ -16,6 +16,7 @@ import com.storlead.message.pojo.vo.MessageTypeReadStateVO;
 import com.storlead.message.service.InsideMessageRecordService;
 import com.storlead.message.service.InsideMessageSendLogService;
 import io.swagger.annotations.*;
+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;
@@ -27,6 +28,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * @program: sp-sales-platform
@@ -45,6 +47,9 @@ public class MessageApiController {
     @Resource
     private InsideMessageRecordService messageRecordService;
 
+    @Autowired(required = false)
+    private List<MessageTypeCatalog> messageTypeCatalogs;
+
     @PostMapping(value = "/testSend")
     @ApiOperation(value = "发送站内消息(ApiPost:POST + application/json,Header 带 token)")
     public Result<?> sendMessage(@RequestBody MessageSendDTO dto) {
@@ -133,16 +138,37 @@ public class MessageApiController {
         }
         List<MessageTypeReadStateVO> statuVOS = messageSendLogService.getCountNoReadCount(buildUnreadQueryWrapper(dto));
 
-        List<MessageTypeReadStateVO> readStatels = MessageTypeEnum.getMessageTypeReadStatels(types);
+        List<MessageTypeReadStateVO> readStatels = resolveReadStateTemplates(dto.getAppId(), types);
         Map<Integer, Integer> statuMap = statuVOS.stream()
-                .collect(Collectors.toMap(MessageTypeReadStateVO::getMessageType, MessageTypeReadStateVO::getStateNumber));
+                .collect(Collectors.toMap(MessageTypeReadStateVO::getMessageType, MessageTypeReadStateVO::getStateNumber, (a, b) -> a));
         for (MessageTypeReadStateVO readState : readStatels) {
             readState.setStateNumber(statuMap.getOrDefault(readState.getMessageType(), 0));
-            readState.setAppId(dto.getAppId());
+            if (readState.getAppId() == null) {
+                readState.setAppId(dto.getAppId());
+            }
         }
         return Result.result(readStatels);
     }
 
+    /**
+     * 按 appId 取该应用注册的类型目录;未指定 appId 时合并所有已注册目录。
+     */
+    private List<MessageTypeReadStateVO> resolveReadStateTemplates(Long appId, List<String> types) {
+        if (CollectionUtils.isEmpty(messageTypeCatalogs)) {
+            return new ArrayList<>();
+        }
+        List<MessageTypeReadStateVO> result = new ArrayList<>();
+        for (MessageTypeCatalog catalog : messageTypeCatalogs) {
+            if (appId == null || Objects.equals(appId, catalog.getAppId())) {
+                List<MessageTypeReadStateVO> part = catalog.buildReadStateTemplates(types);
+                if (!CollectionUtils.isEmpty(part)) {
+                    result.addAll(part);
+                }
+            }
+        }
+        return result;
+    }
+
     @PostMapping(value = "/getNoReadCountByApp")
     @ApiOperation(value = "按应用统计未读消息数")
     public Result<?> getNoReadCountByApp(MessageDTO dto) {

+ 21 - 0
java/storlead-message/storlead-message-core/src/main/java/com/storlead/message/catalog/MessageTypeCatalog.java

@@ -0,0 +1,21 @@
+package com.storlead.message.catalog;
+
+import com.storlead.message.pojo.vo.MessageTypeReadStateVO;
+
+import java.util.List;
+
+/**
+ * 各应用注册自己的消息类型目录;按 appId 取类型列表,允许不同应用使用相同 type code。
+ */
+public interface MessageTypeCatalog {
+
+    /**
+     * 对应 sys_app.id
+     */
+    Long getAppId();
+
+    /**
+     * 构建未读统计骨架;types 为空则返回该应用全部类型。
+     */
+    List<MessageTypeReadStateVO> buildReadStateTemplates(List<String> types);
+}

+ 8 - 8
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/controller/task/TaskApiController.java

@@ -12,7 +12,7 @@ import com.storlead.framework.common.util.StringUtil;
 import com.storlead.framework.util.LoginUserUtil;
 import com.storlead.framework.common.result.Result;
 import com.storlead.framework.mybatis.entity.SysBaseField;
-import com.storlead.message.enums.MessageTypeEnum;
+import com.storlead.sales.enums.SalesMessageTypeEnum;
 import com.storlead.sales.enums.QueryRangeTypeEnum;
 import com.storlead.sales.pojo.entity.customer.*;
 import com.storlead.sales.enums.ResourceTypeEnum;
@@ -158,35 +158,35 @@ public class TaskApiController {
 
     public Long getCustomerId(TaskDTO dto,Long resourceTypeId){
         if (Objects.isNull(dto.getCustomerId())) {
-            if (MessageTypeEnum.CUSTOMER.getCode().equals(dto.getResourceType())
-                    || MessageTypeEnum.CLUS.getCode().equals(dto.getResourceType())) {
+            if (SalesMessageTypeEnum.CUSTOMER.getCode().equals(dto.getResourceType())
+                    || SalesMessageTypeEnum.CLUS.getCode().equals(dto.getResourceType())) {
                 return  resourceTypeId;
-            } else if (MessageTypeEnum.LIAISON.getCode().equals(resourceTypeId)) {
+            } else if (SalesMessageTypeEnum.LIAISON.getCode().equals(resourceTypeId)) {
                 // 联系人
                 LiaisonEntity liaison = liaisonService.getById(resourceTypeId);
                 if (Objects.nonNull(liaison)) {
                    return liaison.getCustomerId();
                 }
 
-            } else if (MessageTypeEnum.BUSINESS.getCode().equals(dto.getResourceType())) {
+            } else if (SalesMessageTypeEnum.BUSINESS.getCode().equals(dto.getResourceType())) {
                 // 商机
                 BusinessEntity business = businessService.getById(resourceTypeId);
                 if (Objects.nonNull(business)) {
                     return business.getCustomerId();
                 }
-            } else if (MessageTypeEnum.ORDER_FORM.getCode().equals(dto.getResourceType())) {
+            } else if (SalesMessageTypeEnum.ORDER_FORM.getCode().equals(dto.getResourceType())) {
                 // 订单
                 OrderFormEntity orderForm = orderFormService.getById(resourceTypeId);
                 if (Objects.nonNull(orderForm)) {
                     return orderForm.getCustomerId();
                 }
-            } else if (MessageTypeEnum.FOLLOW_UP.getCode().equals(dto.getResourceType())) {
+            } else if (SalesMessageTypeEnum.FOLLOW_UP.getCode().equals(dto.getResourceType())) {
                 // 跟进
                 CustomerFollowUpEntity followUp = customerFollowUpService.getById(resourceTypeId);
                 if (Objects.nonNull(followUp)) {
                     return followUp.getCustomerId();
                 }
-            } else if (MessageTypeEnum.WORK_ORDER.getCode().equals(dto.getResourceType())) {
+            } else if (SalesMessageTypeEnum.WORK_ORDER.getCode().equals(dto.getResourceType())) {
                 // 工单
                 WorkOrderEntity workOrder = workOrderService.getById(resourceTypeId);
                 if (Objects.nonNull(workOrder)) {

+ 6 - 6
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/controller/task/TestApiController.java

@@ -5,7 +5,7 @@ import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.storlead.framework.common.util.encryptor.AccessKeyEncryptor;
 import com.storlead.framework.common.result.Result;
-import com.storlead.message.enums.MessageTypeEnum;
+import com.storlead.sales.enums.SalesMessageTypeEnum;
 import com.storlead.message.service.impl.MessageService;
 import com.storlead.sales.pojo.dto.task.TaskTestDTO;
 import com.storlead.sales.pojo.entity.task.TaskEntity;
@@ -327,15 +327,15 @@ public class TestApiController {
     }
 
     public String getRouteUrl(String resourceType) {
-        if (MessageTypeEnum.CUSTOMER.getCode().equals(resourceType)) {
+        if (SalesMessageTypeEnum.CUSTOMER.getCode().equals(resourceType)) {
             return  "/customer/customerDetail?id=${id}$";
-        } else if (MessageTypeEnum.CLUS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.CLUS.getCode().equals(resourceType)) {
             return  "/clue/detail?id=${id}$";
-        } else if (MessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
             return  "/liaison/detail?id=${id}$";
-        } else if (MessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
             return  "/business_opportunity/detail?id=${id}$&type=detail&from=allBusiness";
-        } else if (MessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
             return  "/order/detail?id=${id}$";
         }
         return "";

+ 24 - 31
java/storlead-message/storlead-message-core/src/main/java/com/storlead/message/enums/MessageTypeEnum.java → java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/enums/SalesMessageTypeEnum.java

@@ -1,4 +1,4 @@
-package com.storlead.message.enums;
+package com.storlead.sales.enums;
 
 import com.storlead.message.pojo.vo.MessageTypeReadStateVO;
 import lombok.Getter;
@@ -10,17 +10,14 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-09-06 09:26
+ * 销售应用(sys_app.id = 20)消息 / 资源分类。
+ * <p>
+ * 类型 code 仅在应用内有意义,跨应用允许重复,靠 appId 区分。
+ * 历史 inside_message_record.message_type 数字不变。
  */
 @Getter
-public enum MessageTypeEnum {
-    /**
-     * 为了查询分类而产生
-     * 消息类型细分 0:普通消息,1:@我相关,2:审批消息,微信小程序用( 3:目标完成贡献值分配提醒,4:简报待审消息,5:赞扬,6:提升,7:报告,99:其他)
-     */
+public enum SalesMessageTypeEnum {
+
     CUSTOMER("10", "客户"),
     CLUS("11", "线索"),
     LIAISON("20", "联系人"),
@@ -35,11 +32,22 @@ public enum MessageTypeEnum {
     OTHER_EXTEND("999", "其他"),
     ;
 
-    public static final MessageTypeEnum[] messageSubTypes = MessageTypeEnum.values();
+    /** 销售应用 ID,对应 sys_app.id */
+    public static final Long APP_ID = 20L;
+
+    public static final SalesMessageTypeEnum[] messageSubTypes = SalesMessageTypeEnum.values();
+
+    private final String code;
+    private final String desc;
+
+    SalesMessageTypeEnum(String code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
 
     public static Map<String, Integer> getMessageTypeMap(List<String> types) {
         Map<String, Integer> map = new HashMap<>();
-        for (MessageTypeEnum subTypeEnum : messageSubTypes) {
+        for (SalesMessageTypeEnum subTypeEnum : messageSubTypes) {
             if (CollectionUtils.isEmpty(types)) {
                 map.put(subTypeEnum.getCode(), 0);
             } else if (types.contains(subTypeEnum.getCode())) {
@@ -51,8 +59,9 @@ public enum MessageTypeEnum {
 
     public static List<MessageTypeReadStateVO> getMessageTypeReadStatels(List<String> types) {
         List<MessageTypeReadStateVO> arr = new ArrayList<>();
-        for (MessageTypeEnum subTypeEnum : messageSubTypes) {
+        for (SalesMessageTypeEnum subTypeEnum : messageSubTypes) {
             MessageTypeReadStateVO vo = new MessageTypeReadStateVO();
+            vo.setAppId(APP_ID);
             vo.setMessageType(Integer.valueOf(subTypeEnum.getCode()));
             vo.setMessageTypeName(subTypeEnum.getDesc());
             if (CollectionUtils.isEmpty(types)) {
@@ -66,28 +75,12 @@ public enum MessageTypeEnum {
         return arr;
     }
 
-    private final String code;
-    private final String desc;
-
-    MessageTypeEnum(String code, String desc) {
-        this.code = code;
-        this.desc = desc;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public String getDesc() {
-        return desc;
-    }
-
-    public static MessageTypeEnum getByCode(Integer code) {
+    public static SalesMessageTypeEnum getByCode(Integer code) {
         if (code == null) {
             return null;
         }
         String codeStr = String.valueOf(code);
-        for (MessageTypeEnum tag : MessageTypeEnum.values()) {
+        for (SalesMessageTypeEnum tag : values()) {
             if (tag.code.equals(codeStr)) {
                 return tag;
             }

+ 25 - 0
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/message/SalesMessageTypeCatalog.java

@@ -0,0 +1,25 @@
+package com.storlead.sales.message;
+
+import com.storlead.message.catalog.MessageTypeCatalog;
+import com.storlead.message.pojo.vo.MessageTypeReadStateVO;
+import com.storlead.sales.enums.SalesMessageTypeEnum;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 销售应用消息类型目录(appId = {@link SalesMessageTypeEnum#APP_ID})。
+ */
+@Component
+public class SalesMessageTypeCatalog implements MessageTypeCatalog {
+
+    @Override
+    public Long getAppId() {
+        return SalesMessageTypeEnum.APP_ID;
+    }
+
+    @Override
+    public List<MessageTypeReadStateVO> buildReadStateTemplates(List<String> types) {
+        return SalesMessageTypeEnum.getMessageTypeReadStatels(types);
+    }
+}

+ 19 - 19
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/CustomerFollowUpServiceImpl.java

@@ -12,7 +12,7 @@ import com.storlead.framework.common.result.Result;
 import com.storlead.framework.mybatis.entity.SysBaseField;
 import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
 import com.storlead.mail.pojo.vo.UserClickTitleVO;
-import com.storlead.message.enums.MessageTypeEnum;
+import com.storlead.sales.enums.SalesMessageTypeEnum;
 import com.storlead.sales.pojo.dto.customer.CustomerFollowUpAddDTO;
 import com.storlead.sales.pojo.dto.customer.CustomerFollowUpSearchDTO;
 import com.storlead.sales.pojo.dto.customer.CustomerSearchSearchDTO;
@@ -487,30 +487,30 @@ public class CustomerFollowUpServiceImpl extends MyBaseServiceImpl<CustomerFollo
 
     @Override
     public String getResourceTyepName(String resourceType, String resourceTypeId){
-        if (MessageTypeEnum.CUSTOMER.getCode().equals(resourceType)
-                || MessageTypeEnum.CLUS.getCode().equals(resourceType)) {
+        if (SalesMessageTypeEnum.CUSTOMER.getCode().equals(resourceType)
+                || SalesMessageTypeEnum.CLUS.getCode().equals(resourceType)) {
             CustomerEntity customer = customerService.getById(resourceTypeId);
             return  customer.getCustomerName();
-        } else if (MessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
             // 联系人
             LiaisonEntity liaison = liaisonService.getById(resourceTypeId);
             if (Objects.nonNull(liaison)) {
                 return liaison.getName();
             }
 
-        } else if (MessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
             // 商机
             BusinessEntity business = businessService.getById(resourceTypeId);
             if (Objects.nonNull(business)) {
                 return business.getTitle();
             }
-        } else if (MessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
             // 订单
             OrderFormEntity orderForm = orderFormService.getById(resourceTypeId);
             if (Objects.nonNull(orderForm)) {
                 return orderForm.getTitle();
             }
-        } else if (MessageTypeEnum.WORK_ORDER.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.WORK_ORDER.getCode().equals(resourceType)) {
             // 工单
             WorkOrderEntity workOrder = workOrderService.getById(resourceTypeId);
             if (Objects.nonNull(workOrder)) {
@@ -521,29 +521,29 @@ public class CustomerFollowUpServiceImpl extends MyBaseServiceImpl<CustomerFollo
     }
 
     public Long getResourceTyepId(String resourceType, Long resourceTypeId){
-        if (MessageTypeEnum.CUSTOMER.getCode().equals(resourceType)
-                || MessageTypeEnum.CLUS.getCode().equals(resourceType)) {
+        if (SalesMessageTypeEnum.CUSTOMER.getCode().equals(resourceType)
+                || SalesMessageTypeEnum.CLUS.getCode().equals(resourceType)) {
             return resourceTypeId;
-        } else if (MessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
             // 联系人
             LiaisonEntity liaison = liaisonService.getById(resourceTypeId);
             if (Objects.nonNull(liaison)) {
                 return liaison.getCustomerId();
             }
 
-        } else if (MessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
             // 商机
             BusinessEntity business = businessService.getById(resourceTypeId);
             if (Objects.nonNull(business)) {
                 return business.getCustomerId();
             }
-        } else if (MessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
             // 订单
             OrderFormEntity orderForm = orderFormService.getById(resourceTypeId);
             if (Objects.nonNull(orderForm)) {
                 return orderForm.getCustomerId();
             }
-        } else if (MessageTypeEnum.WORK_ORDER.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.WORK_ORDER.getCode().equals(resourceType)) {
             // 工单
             WorkOrderEntity workOrder = workOrderService.getById(resourceTypeId);
             if (Objects.nonNull(workOrder)) {
@@ -555,7 +555,7 @@ public class CustomerFollowUpServiceImpl extends MyBaseServiceImpl<CustomerFollo
 
     @Override
     public String getResourceStatusTyepId(String resourceType, Long resourceTypeId){
-        if (MessageTypeEnum.CUSTOMER.getCode().equals(resourceType)) {
+        if (SalesMessageTypeEnum.CUSTOMER.getCode().equals(resourceType)) {
             CustomerEntity customer = customerService.getById(resourceTypeId);
             if (Objects.nonNull(customer)) {
                 CustomerVO vo  = new CustomerVO();
@@ -564,7 +564,7 @@ public class CustomerFollowUpServiceImpl extends MyBaseServiceImpl<CustomerFollo
                 return  vo.getCustomerStatusName();
             }
             return "";
-        }  else if (MessageTypeEnum.CLUS.getCode().equals(resourceType)) {
+        }  else if (SalesMessageTypeEnum.CLUS.getCode().equals(resourceType)) {
             CustomerEntity customer = customerService.getById(resourceTypeId);
             if (Objects.nonNull(customer)) {
                 CustomerVO vo  = new CustomerVO();
@@ -573,7 +573,7 @@ public class CustomerFollowUpServiceImpl extends MyBaseServiceImpl<CustomerFollo
                 return  vo.getClueStatusName();
             }
             return "";
-        } else if (MessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
             // 联系人
 //            LiaisonEntity liaison = liaisonService.getById(resourceTypeId);
 //            if (Objects.nonNull(liaison)) {
@@ -581,7 +581,7 @@ public class CustomerFollowUpServiceImpl extends MyBaseServiceImpl<CustomerFollo
 //            }
             return  "";
 
-        } else if (MessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
             // 商机
             BusinessEntity business = businessService.getById(resourceTypeId);
             if (Objects.nonNull(business)) {
@@ -591,14 +591,14 @@ public class CustomerFollowUpServiceImpl extends MyBaseServiceImpl<CustomerFollo
                 return vo.getStageName();
             }
             return "";
-        } else if (MessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
             // 订单
 //            OrderFormEntity orderForm = orderFormService.getById(resourceTypeId);
 //            if (Objects.nonNull(orderForm)) {
 //                return orderForm.getCustomerId();
 //            }
             return "";
-        } else if (MessageTypeEnum.WORK_ORDER.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.WORK_ORDER.getCode().equals(resourceType)) {
             // 工单
 //            WorkOrderEntity workOrder = workOrderService.getById(resourceTypeId);
 //            if (Objects.nonNull(workOrder)) {

+ 9 - 9
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/customer/MessageAssembleServiceImpl.java

@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.storlead.framework.util.LoginUserUtil;
 import com.storlead.framework.auth.vo.LoginUser;
 import com.storlead.framework.mybatis.entity.SysBaseField;
-import com.storlead.message.enums.MessageTypeEnum;
+import com.storlead.sales.enums.SalesMessageTypeEnum;
 import com.storlead.message.service.impl.MessageService;
 import com.storlead.sales.pojo.dto.customer.CustomerSearchDTO;
 import com.storlead.sales.pojo.entity.customer.*;
@@ -414,7 +414,7 @@ public class MessageAssembleServiceImpl implements MessageAssembleService {
         vo.setJump(jump);
         Map<String,Object> messageMap = BeanUtil.beanToMap(vo);
 
-        messageService.autoMatchEventSendMessage(messageMap,MessageTypeEnum.PERFORMANCE_GOAL.getCode(),messageEventCode,toUserIds,"site","wecom","sms","mail");
+        messageService.autoMatchEventSendMessage(messageMap,SalesMessageTypeEnum.PERFORMANCE_GOAL.getCode(),messageEventCode,toUserIds,"site","wecom","sms","mail");
 
     }
 
@@ -437,7 +437,7 @@ public class MessageAssembleServiceImpl implements MessageAssembleService {
         vo.setJump(jump);
         Map<String,Object> messageMap = BeanUtil.beanToMap(vo);
 
-        messageService.autoMatchEventSendMessage(messageMap,MessageTypeEnum.PERFORMANCE_GOAL.getCode(),messageEventCode,toUserIds,"site","wecom","sms","mail");
+        messageService.autoMatchEventSendMessage(messageMap,SalesMessageTypeEnum.PERFORMANCE_GOAL.getCode(),messageEventCode,toUserIds,"site","wecom","sms","mail");
 
     }
 
@@ -459,7 +459,7 @@ public class MessageAssembleServiceImpl implements MessageAssembleService {
         vo.setJump(jump);
         Map<String,Object> messageMap = BeanUtil.beanToMap(vo);
 
-        messageService.autoMatchEventSendMessage(messageMap,MessageTypeEnum.PERFORMANCE_GOAL.getCode(),messageEventCode,toUserIds,"site","wecom","sms","mail");
+        messageService.autoMatchEventSendMessage(messageMap,SalesMessageTypeEnum.PERFORMANCE_GOAL.getCode(),messageEventCode,toUserIds,"site","wecom","sms","mail");
 
     }
 
@@ -612,15 +612,15 @@ public class MessageAssembleServiceImpl implements MessageAssembleService {
 
 
     public String getRouteUrl(String resourceType) {
-        if (MessageTypeEnum.CUSTOMER.getCode().equals(resourceType)) {
+        if (SalesMessageTypeEnum.CUSTOMER.getCode().equals(resourceType)) {
             return  "/customer/customerDetail?id=${id}$";
-        } else if (MessageTypeEnum.CLUS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.CLUS.getCode().equals(resourceType)) {
             return  "/clue/detail?id=${id}$";
-        } else if (MessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
             return  "/liaison/detail?id=${id}$";
-        } else if (MessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
             return  "/business_opportunity/detail?id=${id}$&type=detail&from=allBusiness";
-        } else if (MessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
             return  "/order/detail?id=${id}$";
         }
         return "";

+ 13 - 13
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/impl/task/TaskServiceImpl.java

@@ -13,7 +13,7 @@ import com.storlead.framework.auth.vo.LoginUser;
 import com.storlead.framework.common.result.Result;
 import com.storlead.framework.mybatis.entity.SysBaseField;
 import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
-import com.storlead.message.enums.MessageTypeEnum;
+import com.storlead.sales.enums.SalesMessageTypeEnum;
 import com.storlead.sales.pojo.dto.customer.CustomerSearchSearchDTO;
 import com.storlead.sales.pojo.entity.customer.*;
 import com.storlead.sales.pojo.vo.customer.BusinessDetailVO;
@@ -132,33 +132,33 @@ public class TaskServiceImpl extends MyBaseServiceImpl<TaskMapper, TaskEntity> i
 
     @Override
     public String getResourceTyepName(String resourceType, String resourceTypeId){
-        if (MessageTypeEnum.CUSTOMER.getCode().equals(resourceType)
-                || MessageTypeEnum.CLUS.getCode().equals(resourceType)) {
+        if (SalesMessageTypeEnum.CUSTOMER.getCode().equals(resourceType)
+                || SalesMessageTypeEnum.CLUS.getCode().equals(resourceType)) {
             CustomerEntity customer = customerService.getById(resourceTypeId);
             if (Objects.nonNull(customer)){
                 return  customer.getCustomerName();
             }
 
-        } else if (MessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
             // 联系人
             LiaisonEntity liaison = liaisonService.getById(resourceTypeId);
             if (Objects.nonNull(liaison)) {
                 return liaison.getName();
             }
 
-        } else if (MessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
             // 商机
             BusinessEntity business = businessService.getById(resourceTypeId);
             if (Objects.nonNull(business)) {
                 return business.getTitle();
             }
-        } else if (MessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
             // 订单
             OrderFormEntity orderForm = orderFormService.getById(resourceTypeId);
             if (Objects.nonNull(orderForm)) {
                 return orderForm.getTitle();
             }
-        } else if (MessageTypeEnum.WORK_ORDER.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.WORK_ORDER.getCode().equals(resourceType)) {
             // 工单
             WorkOrderEntity workOrder = workOrderService.getById(resourceTypeId);
             if (Objects.nonNull(workOrder)) {
@@ -173,15 +173,15 @@ public class TaskServiceImpl extends MyBaseServiceImpl<TaskMapper, TaskEntity> i
         Map<String,Object> map = new HashMap<>();
         String name = "";
         Object value = "";
-        if (MessageTypeEnum.CUSTOMER.getCode().equals(resourceType)
-                || MessageTypeEnum.CLUS.getCode().equals(resourceType)) {
+        if (SalesMessageTypeEnum.CUSTOMER.getCode().equals(resourceType)
+                || SalesMessageTypeEnum.CLUS.getCode().equals(resourceType)) {
             CustomerEntity customer = customerService.getById(resourceTypeId);
             if (Objects.nonNull(customer)){
                 name = customer.getCustomerName();
                 value = customer;
             }
 
-        } else if (MessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
             // 联系人
             LiaisonEntity liaison = liaisonService.getById(resourceTypeId);
             if (Objects.nonNull(liaison)) {
@@ -189,7 +189,7 @@ public class TaskServiceImpl extends MyBaseServiceImpl<TaskMapper, TaskEntity> i
                 value = liaison;
             }
 
-        } else if (MessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
             // 商机
             BusinessEntity business = businessService.getById(resourceTypeId);
             if (Objects.nonNull(business)) {
@@ -200,14 +200,14 @@ public class TaskServiceImpl extends MyBaseServiceImpl<TaskMapper, TaskEntity> i
                 name = business.getTitle();
                 value = businessDetailVO;
             }
-        } else if (MessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
             // 订单
             OrderFormEntity orderForm = orderFormService.getById(resourceTypeId);
             if (Objects.nonNull(orderForm)) {
                 name = orderForm.getTitle();
                 value = orderForm;
             }
-        } else if (MessageTypeEnum.WORK_ORDER.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.WORK_ORDER.getCode().equals(resourceType)) {
             // 工单
             WorkOrderEntity workOrder = workOrderService.getById(resourceTypeId);
             if (Objects.nonNull(workOrder)) {

+ 0 - 1
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/service/task/TaskService.java

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.storlead.framework.auth.vo.LoginUser;
 import com.storlead.framework.common.result.Result;
 import com.storlead.framework.mybatis.service.MyBaseService;
-import com.storlead.message.enums.MessageTypeEnum;
 import com.storlead.sales.pojo.dto.customer.CustomerSearchSearchDTO;
 import com.storlead.sales.pojo.entity.customer.*;
 import com.storlead.sales.enums.ResourceTypeEnum;

+ 12 - 12
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/task/dispatch/TaskMessageOutTimeRemindAutoTask.java

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.storlead.framework.common.constant.CommonConstant;
 import com.storlead.framework.common.util.StringUtil;
-import com.storlead.message.enums.MessageTypeEnum;
+import com.storlead.sales.enums.SalesMessageTypeEnum;
 import com.storlead.message.service.impl.MessageService;
 import com.storlead.sales.pojo.entity.customer.*;
 import com.storlead.sales.pojo.entity.task.TaskEntity;
@@ -116,15 +116,15 @@ public class TaskMessageOutTimeRemindAutoTask  implements Job {
     }
 
     public String getRouteUrl(String resourceType) {
-        if (MessageTypeEnum.CUSTOMER.getCode().equals(resourceType)) {
+        if (SalesMessageTypeEnum.CUSTOMER.getCode().equals(resourceType)) {
             return  "/customer/customerDetail?id=${id}$";
-        } else if (MessageTypeEnum.CLUS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.CLUS.getCode().equals(resourceType)) {
             return  "/clue/detail?id=${id}$";
-        } else if (MessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
             return  "/liaison/detail?id=${id}$";
-        } else if (MessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
             return  "/business_opportunity/detail?id=${id}$&type=detail&from=allBusiness";
-        } else if (MessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
             return  "/order/detail?id=${id}$";
         }
         return "";
@@ -149,31 +149,31 @@ public class TaskMessageOutTimeRemindAutoTask  implements Job {
         if (StrUtil.isBlank(resourceType) || Objects.isNull(resourceTypeId)) {
             return false;
         }
-        if (MessageTypeEnum.CUSTOMER.getCode().equals(resourceType)
-                || MessageTypeEnum.CLUS.getCode().equals(resourceType)) {
+        if (SalesMessageTypeEnum.CUSTOMER.getCode().equals(resourceType)
+                || SalesMessageTypeEnum.CLUS.getCode().equals(resourceType)) {
             CustomerEntity customer = customerService.getById(resourceTypeId);
             if (Objects.nonNull(customer)) {
                 return Integer.valueOf(0).equals(customer.getIsDelete()) ? true : false;
             }
-        } else if (MessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
             // 联系人
             LiaisonEntity liaison = liaisonService.getById(resourceTypeId);
             if (Objects.nonNull(liaison)) {
                 return Integer.valueOf(0).equals(liaison.getIsDelete()) ? true : false;
             }
-        } else if (MessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
             // 商机
             BusinessEntity business = businessService.getById(resourceTypeId);
             if (Objects.nonNull(business)) {
                 return Integer.valueOf(0).equals(business.getIsDelete()) ? true : false;
             }
-        } else if (MessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
             // 订单
             OrderFormEntity orderForm = orderFormService.getById(resourceTypeId);
             if (Objects.nonNull(orderForm)) {
                 return Integer.valueOf(0).equals(orderForm.getIsDelete()) ? true : false;
             }
-        } else if (MessageTypeEnum.WORK_ORDER.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.WORK_ORDER.getCode().equals(resourceType)) {
             // 工单
             WorkOrderEntity workOrder = workOrderService.getById(resourceTypeId);
             if (Objects.nonNull(workOrder)) {

+ 12 - 12
java/storlead-sasa/storlead-sales/src/main/java/com/storlead/sales/task/dispatch/TaskMessageRemindAutoTask.java

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.storlead.framework.common.constant.CommonConstant;
 import com.storlead.framework.common.util.StringUtil;
-import com.storlead.message.enums.MessageTypeEnum;
+import com.storlead.sales.enums.SalesMessageTypeEnum;
 import com.storlead.message.service.impl.MessageService;
 import com.storlead.sales.pojo.entity.customer.*;
 import com.storlead.sales.enums.TaskStatusEnum;
@@ -108,15 +108,15 @@ public class TaskMessageRemindAutoTask implements Job {
     }
 
     public String getRouteUrl(String resourceType) {
-        if (MessageTypeEnum.CUSTOMER.getCode().equals(resourceType)) {
+        if (SalesMessageTypeEnum.CUSTOMER.getCode().equals(resourceType)) {
             return  "/customer/customerDetail?id=${id}$";
-        } else if (MessageTypeEnum.CLUS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.CLUS.getCode().equals(resourceType)) {
             return  "/clue/detail?id=${id}$";
-        } else if (MessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
             return  "/liaison/detail?id=${id}$";
-        } else if (MessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
             return  "/business_opportunity/detail?id=${id}$&type=detail&from=allBusiness";
-        } else if (MessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
             return  "/order/detail?id=${id}$";
         }
         return "";
@@ -141,31 +141,31 @@ public class TaskMessageRemindAutoTask implements Job {
         if (StrUtil.isBlank(resourceType) || Objects.isNull(resourceTypeId)) {
             return false;
         }
-        if (MessageTypeEnum.CUSTOMER.getCode().equals(resourceType)
-                || MessageTypeEnum.CLUS.getCode().equals(resourceType)) {
+        if (SalesMessageTypeEnum.CUSTOMER.getCode().equals(resourceType)
+                || SalesMessageTypeEnum.CLUS.getCode().equals(resourceType)) {
             CustomerEntity customer = customerService.getById(resourceTypeId);
             if (Objects.nonNull(customer)) {
                 return Integer.valueOf(0).equals(customer.getIsDelete()) ? true : false;
             }
-        } else if (MessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.LIAISON.getCode().equals(resourceType)) {
             // 联系人
             LiaisonEntity liaison = liaisonService.getById(resourceTypeId);
             if (Objects.nonNull(liaison)) {
                 return Integer.valueOf(0).equals(liaison.getIsDelete()) ? true : false;
             }
-        } else if (MessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.BUSINESS.getCode().equals(resourceType)) {
             // 商机
             BusinessEntity business = businessService.getById(resourceTypeId);
             if (Objects.nonNull(business)) {
                 return Integer.valueOf(0).equals(business.getIsDelete()) ? true : false;
             }
-        } else if (MessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.ORDER_FORM.getCode().equals(resourceType)) {
             // 订单
             OrderFormEntity orderForm = orderFormService.getById(resourceTypeId);
             if (Objects.nonNull(orderForm)) {
                  return Integer.valueOf(0).equals(orderForm.getIsDelete()) ? true : false;
             }
-        } else if (MessageTypeEnum.WORK_ORDER.getCode().equals(resourceType)) {
+        } else if (SalesMessageTypeEnum.WORK_ORDER.getCode().equals(resourceType)) {
             // 工单
             WorkOrderEntity workOrder = workOrderService.getById(resourceTypeId);
             if (Objects.nonNull(workOrder)) {

+ 7 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/enums/TradeMessageTypeEnum.java

@@ -0,0 +1,7 @@
+package com.storlead.trade.enums;
+
+import lombok.Getter;
+
+@Getter
+public enum  TradeMessageTypeEnum {
+}