1811872455@163.com hai 1 mes
pai
achega
4aa582a359
Modificáronse 100 ficheiros con 1947 adicións e 299 borrados
  1. 1 1
      java/storlead-account/pom.xml
  2. 5 0
      java/storlead-account/storlead-account-api/pom.xml
  3. 5 0
      java/storlead-account/storlead-account-biz/pom.xml
  4. 6 1
      java/storlead-api/pom.xml
  5. 1 1
      java/storlead-dependencies/pom.xml
  6. 8 1
      java/storlead-es/pom.xml
  7. 0 1
      java/storlead-es/src/main/java/com/storlead/es/pojo/vo/EsGenericVO.java
  8. 6 7
      java/storlead-es/src/main/java/com/storlead/es/server/BaseSearchService.java
  9. 6 6
      java/storlead-es/src/main/java/com/storlead/es/server/impl/BaseSearchServiceImpl.java
  10. 1 1
      java/storlead-framework/pom.xml
  11. 20 0
      java/storlead-framework/storlead-common/src/main/java/com/storlead/framework/common/dto/page/PageDTO.java
  12. 36 0
      java/storlead-framework/storlead-common/src/main/java/com/storlead/framework/common/dto/query/QueryBaseDTO.java
  13. 5 0
      java/storlead-framework/storlead-core/pom.xml
  14. 10 0
      java/storlead-framework/storlead-mybatis/src/main/java/com/storlead/framework/mybatis/query/page/PageQuery.java
  15. 0 24
      java/storlead-framework/storlead-web/src/main/java/com/storlead/framework/web/assemble/QueryBaseDTO.java
  16. 2 21
      java/storlead-framework/storlead-web/src/main/java/com/storlead/framework/web/assemble/QueryBaseEntity.java
  17. 19 1
      java/storlead-message/pom.xml
  18. 1 1
      java/storlead-message/src/main/java/com/storlead/message/entity/UserMessageNoticeConfigEntity.java
  19. 0 96
      java/storlead-message/src/main/java/com/storlead/message/enums/MessageTypeEnum.java
  20. 0 77
      java/storlead-message/src/main/java/com/storlead/message/enums/OperationEventEnum.java
  21. 1 1
      java/storlead-message/src/main/java/com/storlead/message/mapper/InsideMessageRecordMapper.java
  22. 1 1
      java/storlead-message/src/main/java/com/storlead/message/mapper/InsideMessageSendLogMapper.java
  23. 1 1
      java/storlead-message/src/main/java/com/storlead/message/mapper/MessageTemplateEventDetailMapper.java
  24. 1 1
      java/storlead-message/src/main/java/com/storlead/message/mapper/MessageTemplateEventGroupMapper.java
  25. 1 1
      java/storlead-message/src/main/java/com/storlead/message/mapper/UserMessageNoticeConfigMapper.java
  26. 2 2
      java/storlead-message/src/main/java/com/storlead/message/pojo/dto/MessageDTO.java
  27. 1 2
      java/storlead-message/src/main/java/com/storlead/message/pojo/dto/MessageTemplateEventDTO.java
  28. 1 1
      java/storlead-message/src/main/java/com/storlead/message/pojo/entity/InsideMessageRecordEntity.java
  29. 1 1
      java/storlead-message/src/main/java/com/storlead/message/pojo/entity/InsideMessageSendLogEntity.java
  30. 1 1
      java/storlead-message/src/main/java/com/storlead/message/pojo/entity/MessageTemplateEventDetailEntity.java
  31. 1 1
      java/storlead-message/src/main/java/com/storlead/message/pojo/entity/MessageTemplateEventGroupEntity.java
  32. 3 3
      java/storlead-message/src/main/java/com/storlead/message/service/InsideMessageRecordService.java
  33. 1 1
      java/storlead-message/src/main/java/com/storlead/message/service/InsideMessageSendLogService.java
  34. 1 1
      java/storlead-message/src/main/java/com/storlead/message/service/MessageTemplateEventDetailService.java
  35. 1 1
      java/storlead-message/src/main/java/com/storlead/message/service/MessageTemplateEventGroupService.java
  36. 1 1
      java/storlead-message/src/main/java/com/storlead/message/service/UserMessageNoticeConfigService.java
  37. 1 1
      java/storlead-message/src/main/java/com/storlead/message/service/WechatMessageService.java
  38. 1 1
      java/storlead-message/src/main/java/com/storlead/message/service/impl/InsideMessageRecordServiceImpl.java
  39. 1 1
      java/storlead-message/src/main/java/com/storlead/message/service/impl/InsideMessageSendLogServiceImpl.java
  40. 1 1
      java/storlead-message/src/main/java/com/storlead/message/service/impl/MessageTemplateEventDetailServiceImpl.java
  41. 1 1
      java/storlead-message/src/main/java/com/storlead/message/service/impl/MessageTemplateEventGroupServiceImpl.java
  42. 1 1
      java/storlead-message/src/main/java/com/storlead/message/service/impl/UserMessageNoticeConfigServiceImpl.java
  43. 3 1
      java/storlead-message/src/main/java/com/storlead/message/service/impl/WechatMessageServiceImpl.java
  44. 9 1
      java/storlead-sasa/storlead-okr/pom.xml
  45. 9 1
      java/storlead-sasa/storlead-project/pom.xml
  46. 9 1
      java/storlead-sasa/storlead-salary/pom.xml
  47. 9 1
      java/storlead-sasa/storlead-sales/pom.xml
  48. 6 1
      java/storlead-sasa/storlead-trade/storlead-acquisition/pom.xml
  49. 6 1
      java/storlead-sasa/storlead-trade/storlead-customer/pom.xml
  50. 6 1
      java/storlead-sasa/storlead-trade/storlead-marketing/pom.xml
  51. 8 26
      java/storlead-system/pom.xml
  52. 24 0
      java/storlead-thirdparty/pom.xml
  53. 24 0
      java/storlead-thirdparty/storlead-thirdparty-api/pom.xml
  54. 21 0
      java/storlead-thirdparty/storlead-thirdparty-api/src/main/java/com/storlead/thirdparty/api/dto/ThirdPartyTextMessageDTO.java
  55. 6 0
      java/storlead-thirdparty/storlead-thirdparty-api/src/main/java/com/storlead/thirdparty/api/enums/ThirdPartyChannel.java
  56. 9 0
      java/storlead-thirdparty/storlead-thirdparty-api/src/main/java/com/storlead/thirdparty/api/service/ThirdPartyDirectorySyncService.java
  57. 8 0
      java/storlead-thirdparty/storlead-thirdparty-api/src/main/java/com/storlead/thirdparty/api/service/ThirdPartyNotificationService.java
  58. 28 0
      java/storlead-thirdparty/storlead-thirdparty-core/pom.xml
  59. 60 0
      java/storlead-thirdparty/storlead-thirdparty-core/src/main/java/com/storlead/thirdparty/core/service/DefaultThirdPartyService.java
  60. 11 0
      java/storlead-thirdparty/storlead-thirdparty-core/src/main/java/com/storlead/thirdparty/core/spi/ThirdPartyDirectorySyncClient.java
  61. 10 0
      java/storlead-thirdparty/storlead-thirdparty-core/src/main/java/com/storlead/thirdparty/core/spi/ThirdPartyMessageClient.java
  62. 24 0
      java/storlead-thirdparty/storlead-thirdparty-dingtalk/pom.xml
  63. 9 0
      java/storlead-thirdparty/storlead-thirdparty-dingtalk/src/main/java/com/storlead/thirdparty/dingtalk/DingTalkModulePlaceholder.java
  64. 32 0
      java/storlead-thirdparty/storlead-thirdparty-wecom/pom.xml
  65. 35 0
      java/storlead-thirdparty/storlead-thirdparty-wecom/src/main/java/com/storlead/thirdparty/wecom/WecomDirectorySyncClient.java
  66. 31 0
      java/storlead-thirdparty/storlead-thirdparty-wecom/src/main/java/com/storlead/thirdparty/wecom/WecomMessageClient.java
  67. 89 0
      java/storlead-user/pom.xml
  68. 37 0
      java/storlead-user/src/main/java/com/storlead/user/constant/JurisdictionConstant.java
  69. 18 0
      java/storlead-user/src/main/java/com/storlead/user/mapper/CompanyMapper.java
  70. 45 0
      java/storlead-user/src/main/java/com/storlead/user/mapper/DeptMapper.java
  71. 16 0
      java/storlead-user/src/main/java/com/storlead/user/mapper/HrmcompanyMapper.java
  72. 16 0
      java/storlead-user/src/main/java/com/storlead/user/mapper/HrmdepartmentMapper.java
  73. 16 0
      java/storlead-user/src/main/java/com/storlead/user/mapper/HrmdepartmentdefinedMapper.java
  74. 16 0
      java/storlead-user/src/main/java/com/storlead/user/mapper/HrmjobtitlesMapper.java
  75. 46 0
      java/storlead-user/src/main/java/com/storlead/user/mapper/HrmresourceMapper.java
  76. 15 0
      java/storlead-user/src/main/java/com/storlead/user/mapper/HrmsubcompanyMapper.java
  77. 8 0
      java/storlead-user/src/main/java/com/storlead/user/mapper/JobMapper.java
  78. 19 0
      java/storlead-user/src/main/java/com/storlead/user/mapper/SubCompanyMapper.java
  79. 72 0
      java/storlead-user/src/main/java/com/storlead/user/mapper/UserMapper.java
  80. 91 0
      java/storlead-user/src/main/java/com/storlead/user/model/DepartIdModel.java
  81. 187 0
      java/storlead-user/src/main/java/com/storlead/user/model/DeptTreeModel.java
  82. 25 0
      java/storlead-user/src/main/java/com/storlead/user/model/SysLoginModel.java
  83. 30 0
      java/storlead-user/src/main/java/com/storlead/user/model/TreeSelectModel.java
  84. 37 0
      java/storlead-user/src/main/java/com/storlead/user/model/UserBaseInfo.java
  85. 68 0
      java/storlead-user/src/main/java/com/storlead/user/model/UserInfo.java
  86. 21 0
      java/storlead-user/src/main/java/com/storlead/user/model/UserQueryModel.java
  87. 15 0
      java/storlead-user/src/main/java/com/storlead/user/pojo/dto/CompanyDTO.java
  88. 48 0
      java/storlead-user/src/main/java/com/storlead/user/pojo/dto/DepartmentParam.java
  89. 16 0
      java/storlead-user/src/main/java/com/storlead/user/pojo/dto/DeptParam.java
  90. 27 0
      java/storlead-user/src/main/java/com/storlead/user/pojo/dto/EmployeeParam.java
  91. 22 0
      java/storlead-user/src/main/java/com/storlead/user/pojo/dto/JobDTO.java
  92. 20 0
      java/storlead-user/src/main/java/com/storlead/user/pojo/dto/MenuParam.java
  93. 34 0
      java/storlead-user/src/main/java/com/storlead/user/pojo/dto/MenuTreeParam.java
  94. 56 0
      java/storlead-user/src/main/java/com/storlead/user/pojo/dto/RoleParam.java
  95. 78 0
      java/storlead-user/src/main/java/com/storlead/user/pojo/dto/SetUserDetailDTO.java
  96. 27 0
      java/storlead-user/src/main/java/com/storlead/user/pojo/dto/UserLoginDTO.java
  97. 33 0
      java/storlead-user/src/main/java/com/storlead/user/pojo/dto/UserLoginParam.java
  98. 64 0
      java/storlead-user/src/main/java/com/storlead/user/pojo/dto/UserParam.java
  99. 35 0
      java/storlead-user/src/main/java/com/storlead/user/pojo/dto/UserRoleParam.java
  100. 46 0
      java/storlead-user/src/main/java/com/storlead/user/pojo/entity/CompanyEntity.java

+ 1 - 1
java/storlead-account/pom.xml

@@ -5,7 +5,7 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>com.storlead.boot</groupId>
-        <artifactId>storlead-smarttrade-platform</artifactId>
+        <artifactId>storlead-saas-platform</artifactId>
         <version>1.0</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>

+ 5 - 0
java/storlead-account/storlead-account-api/pom.xml

@@ -15,6 +15,11 @@
     <name>${project.artifactId}</name>
 
     <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-common</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.storlead.boot</groupId>
             <artifactId>storlead-account-biz</artifactId>

+ 5 - 0
java/storlead-account/storlead-account-biz/pom.xml

@@ -15,6 +15,11 @@
     <name>${project.artifactId}</name>
 
     <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-common</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.storlead.boot</groupId>
             <artifactId>storlead-web</artifactId>

+ 6 - 1
java/storlead-api/pom.xml

@@ -5,7 +5,7 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>com.storlead.boot</groupId>
-        <artifactId>storlead-smarttrade-platform</artifactId>
+        <artifactId>storlead-saas-platform</artifactId>
         <version>1.0</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
@@ -15,6 +15,11 @@
     <name>storlead-api</name>
 
     <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-common</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.storlead.boot</groupId>
             <artifactId>storlead-web</artifactId>

+ 1 - 1
java/storlead-dependencies/pom.xml

@@ -14,7 +14,7 @@
 
     <properties>
         <!-- 与根工程保持一致的统一版本号 -->
-        <revision>1.0.1</revision>
+        <revision>1.0</revision>
         <flatten-maven-plugin.version>1.6.0</flatten-maven-plugin.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <spring.boot.starter.parent>2.7.0</spring.boot.starter.parent>

+ 8 - 1
java/storlead-es/pom.xml

@@ -4,7 +4,7 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <artifactId>storlead-smarttrade-platform</artifactId>
+        <artifactId>storlead-saas-platform</artifactId>
         <groupId>com.storlead.boot</groupId>
         <version>1.0</version>
         <relativePath>../../pom.xml</relativePath>
@@ -24,6 +24,13 @@
             <scope>compile</scope>
         </dependency>
 
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-mybatis</artifactId>
+            <version>1.0</version>
+            <scope>compile</scope>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-elasticsearch</artifactId>

+ 0 - 1
java/storlead-es/src/main/java/com/storlead/es/pojo/vo/EsGenericVO.java

@@ -1,6 +1,5 @@
 package com.storlead.es.pojo.vo;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 

+ 6 - 7
java/storlead-es/src/main/java/com/storlead/es/server/BaseSearchService.java

@@ -1,9 +1,8 @@
 package com.storlead.es.server;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.storlead.common.object.Page;
+import com.storlead.framework.common.dto.page.PageDTO;
 
-import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -25,10 +24,10 @@ public interface BaseSearchService<T> {
      * @param clazz
      * @return
      */
-    IPage<T> queryPage(Class<T> clazz, String keyword, Page page, String indexName);
+    IPage<T> queryPage(Class<T> clazz, String keyword, PageDTO page, String indexName);
 
 
-    IPage<T> queryHitPage(Class<T> clazz, String keyword, Page page, String... hightFields);
+    IPage<T> queryHitPage(Class<T> clazz, String keyword, PageDTO page, String... hightFields);
 
     /**
      * 搜索高亮显示
@@ -40,13 +39,13 @@ public interface BaseSearchService<T> {
      */
     List<T> queryHit(Class<T> clazz, String keyword, String indexName, String... fieldNames);
 
-    List<T> queryHitByPage(Class<T> clazz, Page page, String keyword, String indexName, String... fieldNames);
+    List<T> queryHitByPage(Class<T> clazz, PageDTO page, String keyword, String indexName, String... fieldNames);
 
     List<T> queryHit(Class<T> clazz, String keyword, String fieldName, String indexName);
 
-    List<T> queryHitByPage(Class<T> clazz, Page page, String keyword, String fieldName, String indexName);
+    List<T> queryHitByPage(Class<T> clazz, PageDTO page, String keyword, String fieldName, String indexName);
 
-    List<T> querySimilarityPage(Class<T> clazz, Page page, String keyword, String indexName, String... fieldNames);
+    List<T> querySimilarityPage(Class<T> clazz, PageDTO page, String keyword, String indexName, String... fieldNames);
 
     List<Map<String, Object>> searchByNameSimilarity(String inputName);
 }

+ 6 - 6
java/storlead-es/src/main/java/com/storlead/es/server/impl/BaseSearchServiceImpl.java

@@ -2,7 +2,7 @@ package com.storlead.es.server.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.storlead.es.server.BaseSearchService;
-import com.storlead.common.object.Page;
+import com.storlead.framework.common.dto.page.PageDTO;
 import org.elasticsearch.action.search.SearchRequest;
 import org.elasticsearch.common.unit.Fuzziness;
 import org.elasticsearch.index.query.QueryBuilder;
@@ -83,7 +83,7 @@ public class BaseSearchServiceImpl<T> implements BaseSearchService<T> {
     }
 
     @Override
-    public IPage<T> queryPage(Class<T> clazz, String keyword, Page page, String indexName) {
+    public IPage<T> queryPage(Class<T> clazz, String keyword, PageDTO page, String indexName) {
         Pageable pageable = PageRequest.of(page.getPageIndex(), page.getPageSize());
         NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
                 .withQuery(new QueryStringQueryBuilder(keyword))
@@ -104,7 +104,7 @@ public class BaseSearchServiceImpl<T> implements BaseSearchService<T> {
     }
 
     @Override
-    public IPage<T> queryHitPage(Class<T> clazz, String keyword, Page page,String ... hightFields) {
+    public IPage<T> queryHitPage(Class<T> clazz, String keyword, PageDTO page,String ... hightFields) {
         Pageable pageable = PageRequest.of(page.getPageIndex(), page.getPageSize());
 
         HighlightBuilder highlightBuilder = builderHighlightField(hightFields);
@@ -191,7 +191,7 @@ public class BaseSearchServiceImpl<T> implements BaseSearchService<T> {
     }
 
     @Override
-    public  List<T> queryHitByPage(Class<T> clazz,Page page,String keyword,String fieldName,String indexName) {
+    public  List<T> queryHitByPage(Class<T> clazz,PageDTO page,String keyword,String fieldName,String indexName) {
 
         // 构建查询条件
         Pageable pageable = PageRequest.of(page.getPageIndex(), page.getPageSize());
@@ -240,7 +240,7 @@ public class BaseSearchServiceImpl<T> implements BaseSearchService<T> {
     }
 
     @Override
-    public  List<T> queryHitByPage(Class<T> clazz,Page page,String keyword,String indexName,String ... fieldNames) {
+    public  List<T> queryHitByPage(Class<T> clazz,PageDTO page,String keyword,String indexName,String ... fieldNames) {
 
         // 构建查询条件
         Pageable pageable = PageRequest.of(page.getPageIndex(), page.getPageSize());
@@ -263,7 +263,7 @@ public class BaseSearchServiceImpl<T> implements BaseSearchService<T> {
     }
 
     @Override
-    public  List<T> querySimilarityPage(Class<T> clazz,Page page,String keyword,String indexName,String ... fieldNames) {
+    public  List<T> querySimilarityPage(Class<T> clazz,PageDTO page,String keyword,String indexName,String ... fieldNames) {
 
         // 构建查询条件
         Pageable pageable = PageRequest.of(page.getPageIndex(), page.getPageSize());

+ 1 - 1
java/storlead-framework/pom.xml

@@ -3,7 +3,7 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
-        <artifactId>storlead-smarttrade-platform</artifactId>
+        <artifactId>storlead-saas-platform</artifactId>
         <groupId>com.storlead.boot</groupId>
         <version>1.0</version>
         <relativePath>../../pom.xml</relativePath>

+ 20 - 0
java/storlead-framework/storlead-common/src/main/java/com/storlead/framework/common/dto/page/PageDTO.java

@@ -0,0 +1,20 @@
+package com.storlead.framework.common.dto.page;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Common pagination request DTO used as API params.
+ */
+@Data
+public class PageDTO implements Serializable {
+    private static final long serialVersionUID = 4556484214576989834L;
+
+    @ApiModelProperty(value = "页码", example = "1")
+    private Integer pageIndex = 1;
+
+    @ApiModelProperty(value = "页面大小", example = "10")
+    private Integer pageSize = 10;
+}

+ 36 - 0
java/storlead-framework/storlead-common/src/main/java/com/storlead/framework/common/dto/query/QueryBaseDTO.java

@@ -0,0 +1,36 @@
+package com.storlead.framework.common.dto.query;
+
+import com.storlead.framework.common.dto.page.PageDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @program: storlead-saas-platform
+ * @description:
+ * @author: chenkq
+ * @create: 2026-04-22 14:38
+ */
+@Data
+public class QueryBaseDTO extends PageDTO {
+
+    @ApiModelProperty(value = "搜索参数")
+    private String blurry;
+
+    @ApiModelProperty(value = "菜单Id")
+    private Long scopeMenuId;
+
+    @ApiModelProperty(value = "数据权限范围sql")
+    private String dataScopeSql;
+
+    @ApiModelProperty(value = "通用查询条件")
+    private String commonQueryCondition;
+
+    @ApiModelProperty(value = "通用排序")
+    private String commonQueryOrderBy;
+
+    @ApiModelProperty(value = "排序方式")
+    private String sortMethod;
+
+    @ApiModelProperty(value = "默认0: 0 不是 ,1 是公共几口")
+    private Integer commonScope;
+}

+ 5 - 0
java/storlead-framework/storlead-core/pom.xml

@@ -20,6 +20,11 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-common</artifactId>
+        </dependency>
+
         <!-- Web 相关 -->
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 10 - 0
java/storlead-framework/storlead-mybatis/src/main/java/com/storlead/framework/mybatis/query/page/PageQuery.java

@@ -0,0 +1,10 @@
+package com.storlead.framework.mybatis.query.page;
+
+import com.storlead.framework.mybatis.page.Page;
+
+/**
+ * MyBatis query pagination object.
+ */
+public class PageQuery extends Page {
+    private static final long serialVersionUID = -5677282722081493575L;
+}

+ 0 - 24
java/storlead-framework/storlead-web/src/main/java/com/storlead/framework/web/assemble/QueryBaseDTO.java

@@ -1,24 +0,0 @@
-package com.storlead.framework.web.assemble;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.extern.log4j.Log4j2;
-
-import java.io.Serializable;
-
-/**
- * @program: storlead-storlead-mail-platform
- * @description:
- * @author: chenkq
- * @create: 2025-07-14 17:10
- */
-@NoArgsConstructor
-@AllArgsConstructor
-@Data
-@Log4j2
-public class QueryBaseDTO implements Serializable {
-    @ApiModelProperty(value = "搜索参数")
-    private String blurry;
-}

+ 2 - 21
java/storlead-framework/storlead-web/src/main/java/com/storlead/framework/web/assemble/QueryBaseEntity.java

@@ -1,7 +1,7 @@
 package com.storlead.framework.web.assemble;
 
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.storlead.framework.mybatis.page.Page;
+import com.storlead.framework.mybatis.query.page.PageQuery;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -18,31 +18,12 @@ import lombok.extern.log4j.Log4j2;
 @AllArgsConstructor
 @Data
 @Log4j2
-public class QueryBaseEntity extends Page {
+public class QueryBaseEntity extends PageQuery {
 
     @TableField(exist = false)
     @ApiModelProperty(value = "搜索参数")
     private String blurry;
 
-//    @TableField(exist = false)
-//    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
-//    @ApiModelProperty(value = "点击左侧树节点的Id")
-//    private Long treeId;
-//
-//    @TableField(exist = false)
-//    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
-//    @ApiModelProperty(value = "点击左侧树节点是否是部门")
-//    private Boolean isDept;
-//
-//    @TableField(exist = false)
-//    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
-//    @ApiModelProperty(value = "部门id列表")
-//    private Set<Long> deptIds;
-//
-//    @TableField(exist = false)
-//    @ApiModelProperty(value = "路由path 用作获取部门tree权限")
-//    private Long menuId;
-
     @TableField(exist = false)
     @ApiModelProperty(value = "菜单Id")
     private Long scopeMenuId;

+ 19 - 1
java/storlead-message/pom.xml

@@ -6,7 +6,7 @@
 
     <parent>
         <groupId>com.storlead.boot</groupId>
-        <artifactId>storlead-smarttrade-platform</artifactId>
+        <artifactId>storlead-saas-platform</artifactId>
         <version>1.0</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
@@ -17,6 +17,24 @@
     <version>1.0</version>
 
     <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-common</artifactId>
+        </dependency>
 
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-mybatis</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-user</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/entity/UserMessageNoticeConfigEntity.java

@@ -2,7 +2,7 @@ package com.storlead.message.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
-import com.storlead.frame.mybatis.entity.SysBaseField;
+import com.storlead.framework.mybatis.entity.SysBaseField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;

+ 0 - 96
java/storlead-message/src/main/java/com/storlead/message/enums/MessageTypeEnum.java

@@ -1,96 +0,0 @@
-package com.storlead.message.enums;
-
-import com.storlead.common.constant.CodeGenerateInterface;
-import com.storlead.message.pojo.vo.MessageTypeReadStateVO;
-import lombok.Getter;
-import org.springframework.util.CollectionUtils;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-09-06 09:26
- */
-@Getter
-public enum MessageTypeEnum {
-    /**
-     * 为了查询分类而产生
-     * 消息类型细分 0:普通消息,1:@我相关,2:审批消息,微信小程序用( 3:目标完成贡献值分配提醒,4:简报待审消息,5:赞扬,6:提升,7:报告,99:其他)
-     */
-    CUSTOMER("10", "客户"),
-    CLUS("11", "线索"),
-    LIAISON("20", "联系人"),
-    BUSINESS("30", "商机"),
-    ORDER_FORM("40", "订单"),
-    //    TASK_CANCELED("50", "回款"),
-//    TASK_CANCELED("60", "退款"),
-//    TASK_CANCELED("70", "费用"),
-    TASK_CANCELED("80", "任务"),
-    FOLLOW_UP("90", "跟进"),
-    WORK_ORDER("100", "工单"),
-    BULLETIN("120", "公告"),
-    PERFORMANCE_GOAL("130", "目标"),
-    BROADCAST("200", "统计"),
-    OTHER_EXTEND("999", "其他"),
-    /**
-     *  首页的消息需要查
-     *  首页包含:目标和简报
-     */
-    ;
-    public static MessageTypeEnum [] messageSubTypes = MessageTypeEnum.values();
-
-    public static Map getMessageTypeMap(List<String> types) {
-        Map<String,Integer> map = new HashMap<>();
-        for(MessageTypeEnum subTypeEnum: messageSubTypes) {
-            if (CollectionUtils.isEmpty(types)) {
-                map.put(subTypeEnum.getCode(),Integer.valueOf(0));
-            } else {
-                if (types.contains(subTypeEnum.getCode())) {
-                    map.put(subTypeEnum.getCode(),Integer.valueOf(0));
-                }
-            }
-        }
-        return map;
-    }
-
-    public static List<MessageTypeReadStateVO> getMessageTypeReadStatels(List<String> types) {
-        List<MessageTypeReadStateVO> arr = new ArrayList<>();
-        for(MessageTypeEnum subTypeEnum: messageSubTypes) {
-            MessageTypeReadStateVO vo = new MessageTypeReadStateVO();
-            vo.setMessageType(Integer.valueOf(subTypeEnum.getCode()));
-            vo.setMessageTypeName(subTypeEnum.getDesc());
-            if (CollectionUtils.isEmpty(types)) {
-                vo.setStateNumber(Integer.valueOf(0));
-                arr.add(vo);
-            } else {
-                if (types.contains(subTypeEnum.getCode())) {
-                    vo.setStateNumber(Integer.valueOf(0));
-                    arr.add(vo);
-                }
-            }
-        }
-        return arr;
-    }
-
-    private String code;
-    private String desc;
-
-    MessageTypeEnum(String code, String desc) {
-        this.code = code;
-        this.desc = desc;
-    }
-
-    public static MessageTypeEnum getByCode(Integer code) {
-        for (MessageTypeEnum tag : MessageTypeEnum.values()) {
-            if (tag.code.equals(code)) {
-                return tag;
-            }
-        }
-        return null; // 如果找不到对应的枚举值,可以返回null或者抛出异常
-    }
-}

+ 0 - 77
java/storlead-message/src/main/java/com/storlead/message/enums/OperationEventEnum.java

@@ -1,77 +0,0 @@
-package com.storlead.message.enums;
-
-/**
- * @program: sp-sales-platform
- * @description:
- * @author: chenkq
- * @create: 2024-08-19 14:44
- */
-public enum OperationEventEnum {
-    MEMBER_ADD_CLUE("MEMBER_ADD_CLUE", "成员新增线索"),
-    MEMBER_RECEIVE_CLUE("MEMBER_RECEIVE_CLUE", "成员领取线索"),
-    DISTRIBUTE_CLUE("DISTRIBUTE_CLUE", "分配线索"),
-    TRANSFER_CLUE("TRANSFER_CLUE", "转移线索"),
-    CONVERT_TO_CUSTOMER("CONVERT_TO_CUSTOMER", "转为客户"),
-    PUBLIC_WARNING("PUBLIC_WARNING", "置公预警"),
-    CLEAR_WARNING("CLEAR_WARNING", "清除预警"),
-    DATA_CHANGE("DATA_CHANGE", "数据变更"),
-    COMMENT_FOLLOW_UP("COMMENT_FOLLOW_UP", "评论跟进"),
-    NEW_EMAIL("NEW_EMAIL", "新邮件"),
-    NEW_TASK("NEW_TASK", "新建任务"),
-    FOLLOW_UP_REMINDER("FOLLOW_UP_REMINDER", "跟进提醒"),
-    FOLLOW_UP_OVERDUE("FOLLOW_UP_OVERDUE", "跟进逾期"),
-    DUPLICATE_WARNING("DUPLICATE_WARNING", "查重预警"),
-    ADD_CUSTOMER("ADD_CUSTOMER", "新增客户"),
-    TRANSFER_CUSTOMER("TRANSFER_CUSTOMER", "转移客户"),
-    MOVE_TO_PUBLIC("MOVE_TO_PUBLIC", "移入公海"),
-    DUPLICATE_WARNING_AGAIN("DUPLICATE_WARNING", "查重预警"),
-    DELETE_CUSTOMER("DELETE_CUSTOMER", "删除客户"),
-    PUBLIC_WARNING_AGAIN("PUBLIC_WARNING", "置公预警"),
-    GARBAGE_CUSTOMER_WARNING("GARBAGE_CUSTOMER_WARNING", "置垃圾客户预警"),
-    CLEAR_WARNING_AGAIN("CLEAR_WARNING", "清除预警"),
-    DATA_CHANGE_AGAIN("DATA_CHANGE", "数据变更"),
-    ADD_SAMPLE("ADD_SAMPLE", "新增寄样"),
-    CUSTOMER_COLLABORATION("CUSTOMER_COLLABORATION", "客户协作"),
-    CUSTOMER_MERGE("CUSTOMER_MERGE", "客户合并"),
-    COMMENT_FOLLOW_UP_AGAIN("COMMENT_FOLLOW_UP", "评论跟进"),
-    NEW_EMAIL_AGAIN("NEW_EMAIL", "新邮件"),
-    NEW_TASK_AGAIN("NEW_TASK", "新建任务"),
-    FOLLOW_UP_REMINDER_AGAIN("FOLLOW_UP_REMINDER", "跟进提醒"),
-    FOLLOW_UP_OVERDUE_AGAIN("FOLLOW_UP_OVERDUE", "跟进逾期"),
-    ADD_OPPORTUNITY("ADD_OPPORTUNITY", "新增商机"),
-    TRANSFER_OPPORTUNITY("TRANSFER_OPPORTUNITY", "转移商机"),
-    OPPORTUNITY_COLLABORATION("OPPORTUNITY_COLLABORATION", "商机协作"),
-    ADD_QUOTE("ADD_QUOTE", "新增报价"),
-    NEW_TASK_THIRD("NEW_TASK", "新建任务"),
-    FOLLOW_UP_REMINDER_THIRD("FOLLOW_UP_REMINDER", "跟进提醒"),
-    FOLLOW_UP_OVERDUE_THIRD("FOLLOW_UP_OVERDUE", "跟进逾期"),
-    DATA_CHANGE_THIRD("DATA_CHANGE", "数据变更"),
-    COMMENT_FOLLOW_UP_THIRD("COMMENT_FOLLOW_UP", "评论跟进"),
-    CONVERT_TO_ORDER("CONVERT_TO_ORDER", "转为订单"),
-    DELETE_OPPORTUNITY("DELETE_OPPORTUNITY", "删除商机"),
-    ADD_ORDER("ADD_ORDER", "新增订单"),
-    TRANSFER_ORDER("TRANSFER_ORDER", "转移订单"),
-    ADD_COLLABORATION("ADD_COLLABORATION", "添加协作"),
-    NEW_TASK_FOURTH("NEW_TASK", "新建任务"),
-    FOLLOW_UP_REMINDER_FOURTH("FOLLOW_UP_REMINDER", "跟进提醒"),
-    FOLLOW_UP_OVERDUE_FOURTH("FOLLOW_UP_OVERDUE", "跟进逾期"),
-    DATA_CHANGE_FOURTH("DATA_CHANGE", "数据变更"),
-    ADD_BULLETIN("ADD_BULLETIN", "发布公告"),
-    DELETE_ORDER("DELETE_ORDER", "删除订单");
-
-    private final String code;
-    private final String desc;
-
-    OperationEventEnum(String code, String desc) {
-        this.code = code;
-        this.desc = desc;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public String getDesc() {
-        return desc;
-    }
-}

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/mapper/InsideMessageRecordMapper.java

@@ -1,6 +1,6 @@
 package com.storlead.message.mapper;
 
-import com.storlead.frame.mybatis.mapper.MyBaseMapper;
+import com.storlead.framework.mybatis.mapper.MyBaseMapper;
 import com.storlead.message.pojo.entity.InsideMessageRecordEntity;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/mapper/InsideMessageSendLogMapper.java

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.storlead.frame.mybatis.mapper.MyBaseMapper;
+import com.storlead.framework.mybatis.mapper.MyBaseMapper;
 import com.storlead.message.pojo.entity.InsideMessageSendLogEntity;
 import com.storlead.message.pojo.vo.MessageDetailVO;
 import com.storlead.message.pojo.vo.MessageNoReadTotalVO;

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/mapper/MessageTemplateEventDetailMapper.java

@@ -1,6 +1,6 @@
 package com.storlead.message.mapper;
 
-import com.storlead.frame.mybatis.mapper.MyBaseMapper;
+import com.storlead.framework.mybatis.mapper.MyBaseMapper;
 import com.storlead.message.pojo.entity.MessageTemplateEventDetailEntity;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/mapper/MessageTemplateEventGroupMapper.java

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.storlead.frame.mybatis.mapper.MyBaseMapper;
+import com.storlead.framework.mybatis.mapper.MyBaseMapper;
 import com.storlead.message.pojo.entity.InsideMessageSendLogEntity;
 import com.storlead.message.pojo.entity.MessageTemplateEventGroupEntity;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/mapper/UserMessageNoticeConfigMapper.java

@@ -1,7 +1,7 @@
 package com.storlead.message.mapper;
 
 import com.storlead.message.entity.UserMessageNoticeConfigEntity;
-import com.storlead.frame.mybatis.mapper.MyBaseMapper;
+import com.storlead.framework.mybatis.mapper.MyBaseMapper;
 
 /**
  * <p>

+ 2 - 2
java/storlead-message/src/main/java/com/storlead/message/pojo/dto/MessageDTO.java

@@ -1,6 +1,6 @@
 package com.storlead.message.pojo.dto;
 
-import com.storlead.common.object.Page;
+import com.storlead.framework.common.dto.page.PageDTO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -17,7 +17,7 @@ import lombok.experimental.Accessors;
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
 @ApiModel(value="站内消息", description="站内消息")
-public class MessageDTO extends Page {
+public class MessageDTO extends PageDTO {
 
     @ApiModelProperty(value = "字典")
     private String messageType;

+ 1 - 2
java/storlead-message/src/main/java/com/storlead/message/pojo/dto/MessageTemplateEventDTO.java

@@ -1,6 +1,5 @@
 package com.storlead.message.pojo.dto;
 
-import com.storlead.common.object.QueryBaseEntity;
 import lombok.Data;
 
 /**
@@ -10,6 +9,6 @@ import lombok.Data;
  * @create: 2024-04-26 17:20
  */
 @Data
-public class MessageTemplateEventDTO extends QueryBaseEntity {
+public class MessageTemplateEventDTO extends QueryBaseDTO {
     private Integer templateServiceType;
 }

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/pojo/entity/InsideMessageRecordEntity.java

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.storlead.frame.mybatis.entity.SysBaseField;
+import com.storlead.framework.mybatis.entity.SysBaseField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/pojo/entity/InsideMessageSendLogEntity.java

@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 
-import com.storlead.frame.mybatis.entity.SysBaseField;
+import com.storlead.framework.mybatis.entity.SysBaseField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/pojo/entity/MessageTemplateEventDetailEntity.java

@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 
-import com.storlead.frame.mybatis.entity.SysBaseField;
+import com.storlead.framework.mybatis.entity.SysBaseField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/pojo/entity/MessageTemplateEventGroupEntity.java

@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 
 import com.storlead.frame.annotate.Dict;
-import com.storlead.frame.mybatis.entity.SysBaseField;
+import com.storlead.framework.mybatis.entity.SysBaseField;
 import io.opentracing.tag.IntTag;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;

+ 3 - 3
java/storlead-message/src/main/java/com/storlead/message/service/InsideMessageRecordService.java

@@ -1,7 +1,7 @@
 package com.storlead.message.service;
 
-import com.storlead.frame.core.assemble.Result;
-import com.storlead.frame.mybatis.service.MyBaseService;
+import com.storlead.framework.mybatis.service.MyBaseService;
+import com.storlead.framework.web.assemble.Result;
 import com.storlead.message.pojo.entity.InsideMessageRecordEntity;
 import com.storlead.message.pojo.entity.MessageTemplateEventDetailEntity;
 import com.storlead.message.pojo.entity.MessageTemplateEventGroupEntity;
@@ -30,7 +30,7 @@ public interface InsideMessageRecordService extends MyBaseService<InsideMessageR
      * @param callbackParam 回调参数
      * @return
      */
-    Result sendInsideMessage(MessageTemplateEventGroupEntity eventGroup,MessageTemplateEventDetailEntity templateEventDetail, Map map, Long receiverUserId, String callbackParam, Long sendUserId);
+    Result sendInsideMessage(MessageTemplateEventGroupEntity eventGroup, MessageTemplateEventDetailEntity templateEventDetail, Map map, Long receiverUserId, String callbackParam, Long sendUserId);
     /**
      * @param templateEventId  消息事件模板
      * @param map 参数

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/service/InsideMessageSendLogService.java

@@ -3,7 +3,7 @@ package com.storlead.message.service;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.storlead.frame.mybatis.service.MyBaseService;
+import com.storlead.framework.mybatis.service.MyBaseService;
 import com.storlead.message.pojo.entity.InsideMessageSendLogEntity;
 import com.storlead.message.pojo.vo.MessageDetailVO;
 import com.storlead.message.pojo.vo.MessageNoReadTotalVO;

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/service/MessageTemplateEventDetailService.java

@@ -1,6 +1,6 @@
 package com.storlead.message.service;
 
-import com.storlead.frame.mybatis.service.MyBaseService;
+import com.storlead.framework.mybatis.service.MyBaseService;
 import com.storlead.message.pojo.entity.MessageTemplateEventDetailEntity;
 import com.storlead.message.pojo.entity.MessageTemplateEventGroupEntity;
 

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/service/MessageTemplateEventGroupService.java

@@ -3,7 +3,7 @@ package com.storlead.message.service;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.storlead.frame.mybatis.service.MyBaseService;
+import com.storlead.framework.mybatis.service.MyBaseService;
 import com.storlead.message.pojo.entity.MessageTemplateEventGroupEntity;
 import com.storlead.message.pojo.vo.MessageTemplateVO;
 

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/service/UserMessageNoticeConfigService.java

@@ -1,7 +1,7 @@
 package com.storlead.message.service;
 
 import com.storlead.message.entity.UserMessageNoticeConfigEntity;
-import com.storlead.frame.mybatis.service.MyBaseService;
+import com.storlead.framework.mybatis.service.MyBaseService;
 
 import java.util.Set;
 

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/service/WechatMessageService.java

@@ -1,6 +1,6 @@
 package com.storlead.message.service;
 
-import com.storlead.frame.core.assemble.Result;
+import com.storlead.framework.web.assemble.Result;
 import com.storlead.message.pojo.entity.MessageTemplateEventDetailEntity;
 import org.springframework.stereotype.Component;
 

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/service/impl/InsideMessageRecordServiceImpl.java

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.storlead.common.util.HtmlUtils;
 import com.storlead.frame.core.assemble.Result;
 import com.storlead.frame.enums.ErrorMsgCode;
-import com.storlead.frame.mybatis.service.impl.MyBaseServiceImpl;
+import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
 import com.storlead.message.pojo.entity.InsideMessageRecordEntity;
 import com.storlead.message.mapper.InsideMessageRecordMapper;
 import com.storlead.message.pojo.entity.InsideMessageSendLogEntity;

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/service/impl/InsideMessageSendLogServiceImpl.java

@@ -3,7 +3,7 @@ package com.storlead.message.service.impl;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.storlead.frame.mybatis.service.impl.MyBaseServiceImpl;
+import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
 import com.storlead.message.pojo.entity.InsideMessageSendLogEntity;
 import com.storlead.message.pojo.vo.MessageDetailVO;
 import com.storlead.message.pojo.vo.MessageNoReadTotalVO;

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/service/impl/MessageTemplateEventDetailServiceImpl.java

@@ -8,7 +8,7 @@ import com.storlead.common.util.encryptor.AccessKeyEncryptor;
 import com.storlead.frame.auth.util.LoginUserUtil;
 import com.storlead.frame.core.assemble.Result;
 import com.storlead.frame.enums.ErrorMsgCode;
-import com.storlead.frame.mybatis.service.impl.MyBaseServiceImpl;
+import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
 import com.storlead.frame.thread.ThreadPoolUtil;
 import com.storlead.message.pojo.entity.MessageTemplateEventDetailEntity;
 import com.storlead.message.mapper.MessageTemplateEventDetailMapper;

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/service/impl/MessageTemplateEventGroupServiceImpl.java

@@ -2,7 +2,7 @@ package com.storlead.message.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 
-import com.storlead.frame.mybatis.service.impl.MyBaseServiceImpl;
+import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
 import com.storlead.message.pojo.entity.InsideMessageSendLogEntity;
 import com.storlead.message.pojo.entity.MessageTemplateEventGroupEntity;
 import com.storlead.message.mapper.MessageTemplateEventGroupMapper;

+ 1 - 1
java/storlead-message/src/main/java/com/storlead/message/service/impl/UserMessageNoticeConfigServiceImpl.java

@@ -5,7 +5,7 @@ import com.storlead.common.constant.CommonConstant;
 import com.storlead.message.entity.UserMessageNoticeConfigEntity;
 import com.storlead.message.mapper.UserMessageNoticeConfigMapper;
 import com.storlead.message.service.UserMessageNoticeConfigService;
-import com.storlead.frame.mybatis.service.impl.MyBaseServiceImpl;
+import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 

+ 3 - 1
java/storlead-message/src/main/java/com/storlead/message/service/impl/WechatMessageServiceImpl.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.storlead.common.util.HtmlUtils;
 import com.storlead.frame.core.assemble.Result;
 import com.storlead.frame.enums.ErrorMsgCode;
+import com.storlead.framework.web.assemble.Result;
+import com.storlead.framework.web.enums.ErrorMsgCode;
 import com.storlead.message.pojo.entity.MessageTemplateEventDetailEntity;
 import com.storlead.message.service.WechatMessageService;
 import com.storlead.user.pojo.entity.UserEntity;
@@ -45,7 +47,7 @@ public class WechatMessageServiceImpl implements WechatMessageService {
      * @return
      */
     @Override
-    public Result sendWechatMessage(MessageTemplateEventDetailEntity eventDetail, Map map, Collection<Long> receiverUserIds,String callbackParam){
+    public Result sendWechatMessage(MessageTemplateEventDetailEntity eventDetail, Map map, Collection<Long> receiverUserIds, String callbackParam){
         //发送企业微信
         try {
             MessageTemplateEventDetailEntity templateEntity = eventDetail;

+ 9 - 1
java/storlead-sasa/storlead-okr/pom.xml

@@ -6,8 +6,9 @@
 
     <parent>
         <groupId>com.storlead.boot</groupId>
-        <artifactId>storlead-saas</artifactId>
+        <artifactId>storlead-sasa</artifactId>
         <version>1.0</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
 
     <artifactId>storlead-okr</artifactId>
@@ -20,4 +21,11 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
+    <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-common</artifactId>
+        </dependency>
+    </dependencies>
+
 </project>

+ 9 - 1
java/storlead-sasa/storlead-project/pom.xml

@@ -5,8 +5,9 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>com.storlead.boot</groupId>
-        <artifactId>storlead-saas</artifactId>
+        <artifactId>storlead-sasa</artifactId>
         <version>1.0</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
 
     <artifactId>storlead-project</artifactId>
@@ -19,4 +20,11 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
+    <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-common</artifactId>
+        </dependency>
+    </dependencies>
+
 </project>

+ 9 - 1
java/storlead-sasa/storlead-salary/pom.xml

@@ -5,8 +5,9 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>com.storlead.boot</groupId>
-        <artifactId>storlead-saas</artifactId>
+        <artifactId>storlead-sasa</artifactId>
         <version>1.0</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
 
     <artifactId>storlead-salary</artifactId>
@@ -19,4 +20,11 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
+    <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-common</artifactId>
+        </dependency>
+    </dependencies>
+
 </project>

+ 9 - 1
java/storlead-sasa/storlead-sales/pom.xml

@@ -5,8 +5,9 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>com.storlead.boot</groupId>
-        <artifactId>storlead-saas</artifactId>
+        <artifactId>storlead-sasa</artifactId>
         <version>1.0</version>
+        <relativePath>../pom.xml</relativePath>
     </parent>
 
     <artifactId>storlead-sales</artifactId>
@@ -19,4 +20,11 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
+    <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-common</artifactId>
+        </dependency>
+    </dependencies>
+
 </project>

+ 6 - 1
java/storlead-sasa/storlead-trade/storlead-acquisition/pom.xml

@@ -5,7 +5,7 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>com.storlead.boot</groupId>
-        <artifactId>storlead-crm</artifactId>
+        <artifactId>storlead-trade</artifactId>
         <version>1.0</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
@@ -16,6 +16,11 @@
     <description>获客</description>
 
     <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-common</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.storlead.boot</groupId>
             <artifactId>storlead-web</artifactId>

+ 6 - 1
java/storlead-sasa/storlead-trade/storlead-customer/pom.xml

@@ -5,7 +5,7 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>com.storlead.boot</groupId>
-        <artifactId>storlead-crm</artifactId>
+        <artifactId>storlead-trade</artifactId>
         <version>1.0</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
@@ -16,6 +16,11 @@
     <description>客户资源池</description>
 
     <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-common</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.storlead.boot</groupId>
             <artifactId>storlead-web</artifactId>

+ 6 - 1
java/storlead-sasa/storlead-trade/storlead-marketing/pom.xml

@@ -5,7 +5,7 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>com.storlead.boot</groupId>
-        <artifactId>storlead-crm</artifactId>
+        <artifactId>storlead-trade</artifactId>
         <version>1.0</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
@@ -16,6 +16,11 @@
     <description>营销记录</description>
 
     <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-common</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.storlead.boot</groupId>
             <artifactId>storlead-web</artifactId>

+ 8 - 26
java/storlead-system/pom.xml

@@ -4,15 +4,16 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <artifactId>storlead-smarttrade-platform</artifactId>
+        <artifactId>storlead-saas-platform</artifactId>
         <groupId>com.storlead.boot</groupId>
         <version>1.0</version>
         <relativePath>../../pom.xml</relativePath>
     </parent>
 
     <artifactId>storlead-system</artifactId>
-    <packaging>jar</packaging>
+    <packaging>pom</packaging>
     <name>storlead-system</name>
+
     <build>
         <plugins>
             <plugin>
@@ -30,6 +31,11 @@
     <description>common project for Spring Boot</description>
 
     <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-common</artifactId>
+        </dependency>
+
         <!--  jwt 需要,移除会报错  -->
         <dependency>
             <groupId>io.jsonwebtoken</groupId>
@@ -37,30 +43,6 @@
             <version>${io.jsonwebtoken.version}</version>
         </dependency>
 
-        <dependency>
-            <groupId>com.storlead.sales</groupId>
-            <artifactId>sp-sales-frame</artifactId>
-            <version>1.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.storlead.sales</groupId>
-            <artifactId>sp-sales-common</artifactId>
-            <version>1.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.storlead.sales</groupId>
-            <artifactId>sp-sales-user</artifactId>
-            <version>1.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.storlead.sales</groupId>
-            <artifactId>sp-sales-wx</artifactId>
-            <version>1.0</version>
-        </dependency>
-
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>

+ 24 - 0
java/storlead-thirdparty/pom.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.storlead.boot</groupId>
+        <artifactId>storlead-saas-platform</artifactId>
+        <version>1.0</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>storlead-thirdparty</artifactId>
+    <packaging>pom</packaging>
+    <name>storlead-thirdparty</name>
+
+    <modules>
+        <module>storlead-thirdparty-api</module>
+        <module>storlead-thirdparty-core</module>
+        <module>storlead-thirdparty-wecom</module>
+        <module>storlead-thirdparty-dingtalk</module>
+    </modules>
+</project>

+ 24 - 0
java/storlead-thirdparty/storlead-thirdparty-api/pom.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.storlead.boot</groupId>
+        <artifactId>storlead-thirdparty</artifactId>
+        <version>1.0</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>storlead-thirdparty-api</artifactId>
+    <packaging>jar</packaging>
+    <name>storlead-thirdparty-api</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-common</artifactId>
+        </dependency>
+    </dependencies>
+</project>

+ 21 - 0
java/storlead-thirdparty/storlead-thirdparty-api/src/main/java/com/storlead/thirdparty/api/dto/ThirdPartyTextMessageDTO.java

@@ -0,0 +1,21 @@
+package com.storlead.thirdparty.api.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Set;
+
+@Data
+public class ThirdPartyTextMessageDTO implements Serializable {
+    private static final long serialVersionUID = 9042427887979280210L;
+
+    @ApiModelProperty(value = "消息内容")
+    private String content;
+
+    @ApiModelProperty(value = "接收用户ID集合")
+    private Set<String> userIds;
+
+    @ApiModelProperty(value = "接收部门ID集合")
+    private Set<Long> deptIds;
+}

+ 6 - 0
java/storlead-thirdparty/storlead-thirdparty-api/src/main/java/com/storlead/thirdparty/api/enums/ThirdPartyChannel.java

@@ -0,0 +1,6 @@
+package com.storlead.thirdparty.api.enums;
+
+public enum ThirdPartyChannel {
+    WECOM,
+    DINGTALK
+}

+ 9 - 0
java/storlead-thirdparty/storlead-thirdparty-api/src/main/java/com/storlead/thirdparty/api/service/ThirdPartyDirectorySyncService.java

@@ -0,0 +1,9 @@
+package com.storlead.thirdparty.api.service;
+
+import com.storlead.thirdparty.api.enums.ThirdPartyChannel;
+
+public interface ThirdPartyDirectorySyncService {
+    String syncOrganization(ThirdPartyChannel channel);
+
+    String syncUsers(ThirdPartyChannel channel);
+}

+ 8 - 0
java/storlead-thirdparty/storlead-thirdparty-api/src/main/java/com/storlead/thirdparty/api/service/ThirdPartyNotificationService.java

@@ -0,0 +1,8 @@
+package com.storlead.thirdparty.api.service;
+
+import com.storlead.thirdparty.api.dto.ThirdPartyTextMessageDTO;
+import com.storlead.thirdparty.api.enums.ThirdPartyChannel;
+
+public interface ThirdPartyNotificationService {
+    boolean sendText(ThirdPartyChannel channel, ThirdPartyTextMessageDTO message);
+}

+ 28 - 0
java/storlead-thirdparty/storlead-thirdparty-core/pom.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.storlead.boot</groupId>
+        <artifactId>storlead-thirdparty</artifactId>
+        <version>1.0</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>storlead-thirdparty-core</artifactId>
+    <packaging>jar</packaging>
+    <name>storlead-thirdparty-core</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-thirdparty-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+    </dependencies>
+</project>

+ 60 - 0
java/storlead-thirdparty/storlead-thirdparty-core/src/main/java/com/storlead/thirdparty/core/service/DefaultThirdPartyService.java

@@ -0,0 +1,60 @@
+package com.storlead.thirdparty.core.service;
+
+import com.storlead.thirdparty.api.dto.ThirdPartyTextMessageDTO;
+import com.storlead.thirdparty.api.enums.ThirdPartyChannel;
+import com.storlead.thirdparty.api.service.ThirdPartyDirectorySyncService;
+import com.storlead.thirdparty.api.service.ThirdPartyNotificationService;
+import com.storlead.thirdparty.core.spi.ThirdPartyDirectorySyncClient;
+import com.storlead.thirdparty.core.spi.ThirdPartyMessageClient;
+import org.springframework.stereotype.Service;
+
+import java.util.EnumMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class DefaultThirdPartyService implements ThirdPartyNotificationService, ThirdPartyDirectorySyncService {
+    private final Map<ThirdPartyChannel, ThirdPartyMessageClient> messageClients = new EnumMap<>(ThirdPartyChannel.class);
+    private final Map<ThirdPartyChannel, ThirdPartyDirectorySyncClient> syncClients = new EnumMap<>(ThirdPartyChannel.class);
+
+    public DefaultThirdPartyService(List<ThirdPartyMessageClient> messageClientList,
+                                    List<ThirdPartyDirectorySyncClient> syncClientList) {
+        for (ThirdPartyMessageClient client : messageClientList) {
+            messageClients.put(client.channel(), client);
+        }
+        for (ThirdPartyDirectorySyncClient client : syncClientList) {
+            syncClients.put(client.channel(), client);
+        }
+    }
+
+    @Override
+    public boolean sendText(ThirdPartyChannel channel, ThirdPartyTextMessageDTO message) {
+        return getMessageClient(channel).sendText(message);
+    }
+
+    @Override
+    public String syncOrganization(ThirdPartyChannel channel) {
+        return getSyncClient(channel).syncOrganization();
+    }
+
+    @Override
+    public String syncUsers(ThirdPartyChannel channel) {
+        return getSyncClient(channel).syncUsers();
+    }
+
+    private ThirdPartyMessageClient getMessageClient(ThirdPartyChannel channel) {
+        ThirdPartyMessageClient client = messageClients.get(channel);
+        if (client == null) {
+            throw new IllegalArgumentException("Unsupported third-party message channel: " + channel);
+        }
+        return client;
+    }
+
+    private ThirdPartyDirectorySyncClient getSyncClient(ThirdPartyChannel channel) {
+        ThirdPartyDirectorySyncClient client = syncClients.get(channel);
+        if (client == null) {
+            throw new IllegalArgumentException("Unsupported third-party sync channel: " + channel);
+        }
+        return client;
+    }
+}

+ 11 - 0
java/storlead-thirdparty/storlead-thirdparty-core/src/main/java/com/storlead/thirdparty/core/spi/ThirdPartyDirectorySyncClient.java

@@ -0,0 +1,11 @@
+package com.storlead.thirdparty.core.spi;
+
+import com.storlead.thirdparty.api.enums.ThirdPartyChannel;
+
+public interface ThirdPartyDirectorySyncClient {
+    ThirdPartyChannel channel();
+
+    String syncOrganization();
+
+    String syncUsers();
+}

+ 10 - 0
java/storlead-thirdparty/storlead-thirdparty-core/src/main/java/com/storlead/thirdparty/core/spi/ThirdPartyMessageClient.java

@@ -0,0 +1,10 @@
+package com.storlead.thirdparty.core.spi;
+
+import com.storlead.thirdparty.api.dto.ThirdPartyTextMessageDTO;
+import com.storlead.thirdparty.api.enums.ThirdPartyChannel;
+
+public interface ThirdPartyMessageClient {
+    ThirdPartyChannel channel();
+
+    boolean sendText(ThirdPartyTextMessageDTO message);
+}

+ 24 - 0
java/storlead-thirdparty/storlead-thirdparty-dingtalk/pom.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.storlead.boot</groupId>
+        <artifactId>storlead-thirdparty</artifactId>
+        <version>1.0</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>storlead-thirdparty-dingtalk</artifactId>
+    <packaging>jar</packaging>
+    <name>storlead-thirdparty-dingtalk</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-thirdparty-core</artifactId>
+        </dependency>
+    </dependencies>
+</project>

+ 9 - 0
java/storlead-thirdparty/storlead-thirdparty-dingtalk/src/main/java/com/storlead/thirdparty/dingtalk/DingTalkModulePlaceholder.java

@@ -0,0 +1,9 @@
+package com.storlead.thirdparty.dingtalk;
+
+/**
+ * Placeholder for future DingTalk channel implementation.
+ */
+public final class DingTalkModulePlaceholder {
+    private DingTalkModulePlaceholder() {
+    }
+}

+ 32 - 0
java/storlead-thirdparty/storlead-thirdparty-wecom/pom.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.storlead.boot</groupId>
+        <artifactId>storlead-thirdparty</artifactId>
+        <version>1.0</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>storlead-thirdparty-wecom</artifactId>
+    <packaging>jar</packaging>
+    <name>storlead-thirdparty-wecom</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-thirdparty-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.storlead.boot</groupId>
+            <artifactId>storlead-wx</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+    </dependencies>
+</project>

+ 35 - 0
java/storlead-thirdparty/storlead-thirdparty-wecom/src/main/java/com/storlead/thirdparty/wecom/WecomDirectorySyncClient.java

@@ -0,0 +1,35 @@
+package com.storlead.thirdparty.wecom;
+
+import com.storlead.thirdparty.api.enums.ThirdPartyChannel;
+import com.storlead.thirdparty.core.spi.ThirdPartyDirectorySyncClient;
+import com.storlead.wx.pojo.vo.WechatToken;
+import com.storlead.wx.service.CorpWeChatService;
+import com.storlead.wx.service.WxDataSyncService;
+import org.springframework.stereotype.Component;
+
+@Component
+public class WecomDirectorySyncClient implements ThirdPartyDirectorySyncClient {
+    private final CorpWeChatService corpWeChatService;
+    private final WxDataSyncService wxDataSyncService;
+
+    public WecomDirectorySyncClient(CorpWeChatService corpWeChatService, WxDataSyncService wxDataSyncService) {
+        this.corpWeChatService = corpWeChatService;
+        this.wxDataSyncService = wxDataSyncService;
+    }
+
+    @Override
+    public ThirdPartyChannel channel() {
+        return ThirdPartyChannel.WECOM;
+    }
+
+    @Override
+    public String syncOrganization() {
+        WechatToken token = corpWeChatService.getAccessToken();
+        return wxDataSyncService.syncWxOrganizData(token);
+    }
+
+    @Override
+    public String syncUsers() {
+        return wxDataSyncService.syncWxUserData();
+    }
+}

+ 31 - 0
java/storlead-thirdparty/storlead-thirdparty-wecom/src/main/java/com/storlead/thirdparty/wecom/WecomMessageClient.java

@@ -0,0 +1,31 @@
+package com.storlead.thirdparty.wecom;
+
+import com.storlead.thirdparty.api.dto.ThirdPartyTextMessageDTO;
+import com.storlead.thirdparty.api.enums.ThirdPartyChannel;
+import com.storlead.thirdparty.core.spi.ThirdPartyMessageClient;
+import com.storlead.wx.service.CorpWeChatService;
+import org.springframework.stereotype.Component;
+
+@Component
+public class WecomMessageClient implements ThirdPartyMessageClient {
+    private final CorpWeChatService corpWeChatService;
+
+    public WecomMessageClient(CorpWeChatService corpWeChatService) {
+        this.corpWeChatService = corpWeChatService;
+    }
+
+    @Override
+    public ThirdPartyChannel channel() {
+        return ThirdPartyChannel.WECOM;
+    }
+
+    @Override
+    public boolean sendText(ThirdPartyTextMessageDTO message) {
+        return corpWeChatService.sendTextMsg(
+                message.getContent(),
+                message.getUserIds(),
+                message.getDeptIds(),
+                null
+        );
+    }
+}

+ 89 - 0
java/storlead-user/pom.xml

@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>storlead-saas-platform</artifactId>
+        <groupId>com.storlead.boot</groupId>
+        <version>1.0</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>storlead-user</artifactId>
+    <packaging>jar</packaging>
+    <name>storlead-user</name>
+    <version>1.0</version>
+    <description>common project for Spring Boot</description>
+
+
+    <dependencies>
+        <!--  jwt 需要,移除会报错  -->
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt</artifactId>
+            <version>${io.jsonwebtoken.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.storlead.sales</groupId>
+            <artifactId>sp-sales-frame</artifactId>
+            <version>1.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.storlead.sales</groupId>
+            <artifactId>sp-sales-common</artifactId>
+            <version>1.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.storlead.sales</groupId>
+            <artifactId>sp-sales-wx</artifactId>
+            <version>1.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.storlead.sales</groupId>
+            <artifactId>sp-sales-sms</artifactId>
+            <version>1.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.stylefeng.roses</groupId>
+            <artifactId>pinyin-sdk-pinyin4j</artifactId>
+            <version>7.2.3</version>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <finalName>sp-sales-user</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.0</version>
+                <configuration>
+                    <source>11</source>
+                    <target>11</target>
+                </configuration>
+            </plugin>
+        </plugins>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+            </resource>
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                    <include>**/*.json</include>
+                    <include>**/*.ftl</include>
+                </includes>
+            </resource>
+        </resources>
+    </build>
+</project>

+ 37 - 0
java/storlead-user/src/main/java/com/storlead/user/constant/JurisdictionConstant.java

@@ -0,0 +1,37 @@
+package com.storlead.user.constant;
+
+/**
+ * @program: 权限相关常量
+ * @description:
+ * @author: chenkq
+ * @create: 2022-04-20 17:06
+ */
+
+public class JurisdictionConstant {
+
+    /**
+     * 动态权限sql属性标记
+     */
+    public static final String SqlScriptProperty = "jurisdictionSql";
+
+    /**
+     * 权限按钮集合属性标记
+     */
+    public static final String BtnProperty = "jurisdictionBtns";
+
+    /**
+     * 字典缓存reis key
+     */
+    public static final String RedisDictKey = "redis-permission-dict-";
+
+    /**
+     * 缓存需要权限的资源
+     */
+    public static final String RedisApiCodeKey = "redis-permission-api-code-";
+
+    /**
+     *  记录是否需要权限
+     */
+    public static final String PermissionVerificationTrack = "context-permission-verification-track";
+
+}

+ 18 - 0
java/storlead-user/src/main/java/com/storlead/user/mapper/CompanyMapper.java

@@ -0,0 +1,18 @@
+package com.storlead.user.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.storlead.frame.mybatis.mapper.MyBaseMapper;
+import com.storlead.user.pojo.entity.CompanyEntity;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+public interface CompanyMapper extends MyBaseMapper<CompanyEntity> {
+
+
+    @Select("select * from company")
+    List<CompanyEntity> projectCompanyList();
+
+    @Select("truncate table company")
+    void truncateTable();
+}

+ 45 - 0
java/storlead-user/src/main/java/com/storlead/user/mapper/DeptMapper.java

@@ -0,0 +1,45 @@
+package com.storlead.user.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.storlead.frame.mybatis.mapper.MyBaseMapper;
+import com.storlead.user.pojo.entity.DeptEntity;
+import com.storlead.user.model.DeptTreeModel;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ * 部门 Mapper 接口
+ * <p>
+ *
+ * @Author: Steve
+ * @Since:   2019-01-22
+ */
+public interface DeptMapper extends MyBaseMapper<DeptEntity> {
+
+    List<DeptTreeModel> queryDeptBySubList(Integer subCompanyId);
+
+    @Select("truncate table dept;")
+    Boolean truncateDept();
+
+    List<Long> queryDeptIdListByDeptId(Long deptId);
+
+    List<DeptEntity> findByPid(Long deptId);
+
+    /**
+     * 根据角色ID查询部门列表
+     *
+     * @param roleId 角色ID
+     * @return java.util.Set<com.storlead.web.model.entity.Dept>
+     * @author blank
+     * @date 2021-3-31 下午 5:14
+     */
+    Set<DeptEntity> findByRoleId(Long roleId);
+
+
+    List<DeptEntity> getDeptTreeIdsByDeptIds(Long deptId);
+}

+ 16 - 0
java/storlead-user/src/main/java/com/storlead/user/mapper/HrmcompanyMapper.java

@@ -0,0 +1,16 @@
+package com.storlead.user.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.storlead.user.pojo.entity.Hrmcompany;
+
+/**
+ * Mapper 接口
+ *
+ * @author blank
+ * @since 2021-03-04
+ */
+//@DS(DSConstants.DATASOURCE_OA)
+public interface HrmcompanyMapper extends BaseMapper<Hrmcompany> {
+
+}

+ 16 - 0
java/storlead-user/src/main/java/com/storlead/user/mapper/HrmdepartmentMapper.java

@@ -0,0 +1,16 @@
+package com.storlead.user.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.storlead.user.pojo.entity.Hrmdepartment;
+
+/**
+ * Mapper 接口
+ *
+ * @author blank
+ * @since 2021-03-04
+ */
+//@DS(DSConstants.DATASOURCE_OA)
+public interface HrmdepartmentMapper extends BaseMapper<Hrmdepartment> {
+
+}

+ 16 - 0
java/storlead-user/src/main/java/com/storlead/user/mapper/HrmdepartmentdefinedMapper.java

@@ -0,0 +1,16 @@
+package com.storlead.user.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.storlead.user.pojo.entity.Hrmdepartmentdefined;
+
+/**
+ * Mapper 接口
+ *
+ * @author YPZ
+ * @since 2022-04-21
+ */
+//@DS(DSConstants.DATASOURCE_OA)
+public interface HrmdepartmentdefinedMapper extends BaseMapper<Hrmdepartmentdefined> {
+
+}

+ 16 - 0
java/storlead-user/src/main/java/com/storlead/user/mapper/HrmjobtitlesMapper.java

@@ -0,0 +1,16 @@
+package com.storlead.user.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.storlead.user.pojo.entity.Hrmjobtitles;
+
+/**
+ *  Mapper 接口
+ *
+ * @author blank
+ * @since 2021-6-15
+ */
+//@DS(DSConstants.DATASOURCE_OA)
+public interface HrmjobtitlesMapper extends BaseMapper<Hrmjobtitles> {
+
+}

+ 46 - 0
java/storlead-user/src/main/java/com/storlead/user/mapper/HrmresourceMapper.java

@@ -0,0 +1,46 @@
+package com.storlead.user.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.storlead.user.pojo.entity.Hrmresource;
+import com.storlead.user.pojo.entity.UserEntity;
+
+import java.util.List;
+
+/**
+ * Mapper 接口
+ *
+ * @author blank
+ * @since 2021-03-04
+ */
+//@DS(DSConstants.DATASOURCE_OA)
+public interface HrmresourceMapper extends BaseMapper<Hrmresource> {
+
+    /**
+     * 查询OA全部用户转成WEB user实体返回
+     *
+     * @return java.util.List<com.storlead.web.model.entity.User>
+     * @author blank
+     * @date 2021-3-9 上午 10:56
+     */
+    List<UserEntity> getUserList();
+
+    /**
+     * 同步OA流程中的转正日期到OA人力资源表中
+     * 离职日期使用 datefield1 字段
+     *
+     * @return java.lang.Long
+     * @author blank
+     * @date 2021-3-23 下午 4:31
+     */
+    Long updatePermanentDate();
+
+    /**
+     * 同步OA流程中的离职日期到OA人力资源表中
+     * 离职日期使用 datefield1 字段
+     *
+     * @return java.lang.Long
+     * @author blank
+     * @date 2021-3-23 下午 5:25
+     */
+    Long updateResignDate();
+}

+ 15 - 0
java/storlead-user/src/main/java/com/storlead/user/mapper/HrmsubcompanyMapper.java

@@ -0,0 +1,15 @@
+package com.storlead.user.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.storlead.user.pojo.entity.Hrmsubcompany;
+
+/**
+ * Mapper 接口
+ *
+ * @author blank
+ * @since 2021-03-04
+ */
+//@DS(DSConstants.DATASOURCE_OA)
+public interface HrmsubcompanyMapper extends BaseMapper<Hrmsubcompany> {
+
+}

+ 8 - 0
java/storlead-user/src/main/java/com/storlead/user/mapper/JobMapper.java

@@ -0,0 +1,8 @@
+package com.storlead.user.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.storlead.user.pojo.entity.JobEntity;
+
+public interface JobMapper extends BaseMapper<JobEntity> {
+
+}

+ 19 - 0
java/storlead-user/src/main/java/com/storlead/user/mapper/SubCompanyMapper.java

@@ -0,0 +1,19 @@
+package com.storlead.user.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.storlead.common.constant.DSConstants;
+import com.storlead.user.pojo.entity.SubCompanyEntity;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+public interface SubCompanyMapper extends BaseMapper<SubCompanyEntity> {
+
+    @Select("truncate table sub_company")
+    void truncateTable();
+
+    List<SubCompanyEntity> getHasSublist(Long roleId);
+}

+ 72 - 0
java/storlead-user/src/main/java/com/storlead/user/mapper/UserMapper.java

@@ -0,0 +1,72 @@
+package com.storlead.user.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.storlead.frame.auth.vo.LoginUser;
+import com.storlead.frame.mybatis.mapper.MyBaseMapper;
+import com.storlead.user.pojo.entity.UserEntity;
+import com.storlead.user.model.UserBaseInfo;
+import com.storlead.user.model.UserInfo;
+import com.storlead.user.model.UserQueryModel;
+import com.storlead.user.pojo.vo.UserVo;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+public interface UserMapper extends MyBaseMapper<UserEntity> {
+
+    @Select("select u.id,u.user_name,u.password,u.avatar,u.sex,u.nick_name,u.real_name,u.mobile,u.email,u.job_id," +
+            "u.dept_id,1 AS test,u.sub_company_id,u.company_id,u.enabled,u.status,u.is_leader,u.manager_id,u.managers,r.data_scope from user u left join user_role ur on ur.user_id = u.id left join role r on r.id = ur.role_id  where user_name = #{username} limit 1")
+    UserEntity getUserByName(String username);
+
+    @Select("select id,user_name,avatar,sex,nick_name,real_name,mobile,email,job_id,dept_id,sub_company_id,company_id,enabled,status from user")
+    List<UserEntity> getUserList();
+
+    UserBaseInfo queryByUserId(Long id);
+
+//    List<UserVo> list(IPage<UserVo> page, @Param(Constants.WRAPPER) Wrapper<UserVo> wrapper);
+
+    List<UserVo> searchHomeUserList(IPage<UserVo> page, @Param(Constants.WRAPPER) Wrapper<UserVo> wrapper);
+
+
+    List<UserBaseInfo> queryByUserIdList(@Param("ids") Collection<Long> ids);
+
+    List<UserInfo> queryList(@Param("query") UserQueryModel userQueryModel);
+
+    List<Long> getListByUserRole(LoginUser loginUser);
+
+    /**
+    * 获取所有下级id
+    * @Author: xiaojiawei
+    * @Date: 2022/5/7
+    */
+    List<Long> getAllSubordinate(@Param("currentUserId") Long currentUserId);
+
+    @Select("select u.id,u.user_name,u.password,u.avatar,u.sex,u.nick_name,u.real_name,u.mobile,u.email,u.job_id," +
+            "u.dept_id,1 AS test,u.sub_company_id,u.company_id,u.enabled,u.status,u.is_leader,u.manager_id,u.managers,r.data_scope from user u left join user_role ur on ur.user_id = u.id left join role r on r.id = ur.role_id  where mobile = #{mobile} limit 0,1")
+    UserEntity getUserByMobile(String mobile);
+
+    UserVo getUserInfoById(@Param("userId") Long userId);
+
+    void addUserAvatar();
+
+    Set<Long> selectUserRoleIdsByApiUrl(@Param("userId") Long userId, @Param("apiUrl") String apiUrl);
+
+    Set<Long> selectUserRoleIdsByMenuId(@Param("userId") Long userId, @Param("menuId") String menuId);
+
+    Set<Long> selectUserRoleIdsByCommonScopeType(@Param("userId") Long userId, @Param("commonScopeType") String commonScopeType);
+
+    /**
+     * 根据部门id获取用户id
+     * @param deptIds
+     * @return
+     */
+    Set<Long> getUserIdsByDeptIds(@Param("deptIds") List<Long> deptIds);
+
+    void updateLastFollowUpTime(@Param("ownerByIds") List<Long> ownerByIds);
+}

+ 91 - 0
java/storlead-user/src/main/java/com/storlead/user/model/DepartIdModel.java

@@ -0,0 +1,91 @@
+package com.storlead.user.model;
+
+import com.storlead.user.pojo.entity.DeptEntity;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 部门表 封装树结构的部门的名称的实体类
+ * <p>
+ *
+ * @Author Steve
+ * @Since 2019-01-22
+ *
+ */
+public class DepartIdModel implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    // 主键ID
+    private String key;
+
+    // 主键ID
+    private String value;
+
+    // 部门名称
+    private String title;
+
+    List<DepartIdModel> children = new ArrayList<>();
+
+    /**
+     * 将SysDepartTreeModel的部分数据放在该对象当中
+     * @param treeModel
+     * @return
+     */
+    public DepartIdModel convert(DeptTreeModel treeModel) {
+        this.key = treeModel.getId().toString();
+        this.value = treeModel.getId().toString();
+        this.title = treeModel.getName();
+        return this;
+    }
+    /**
+     * 该方法为用户部门的实现类所使用
+     * @param dept
+     * @return
+     */
+    public DepartIdModel convertByUserDepart(DeptEntity dept) {
+        this.key = String.valueOf(dept.getId());
+        this.value = String.valueOf(dept.getId());
+        this.title = dept.getName();
+        return this;
+    }
+
+    public List<DepartIdModel> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<DepartIdModel> children) {
+        this.children = children;
+    }
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+}

+ 187 - 0
java/storlead-user/src/main/java/com/storlead/user/model/DeptTreeModel.java

@@ -0,0 +1,187 @@
+package com.storlead.user.model;
+
+import com.storlead.user.pojo.entity.DeptEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 部门表 存储树结构数据的实体类
+ * <p>
+ *
+ * @Author Steve
+ * @Since 2019-01-22
+ */
+@ApiModel(value="部门tree对象", description="部门tree对象详细信息")
+public class DeptTreeModel implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /** 对应SysDepart中的id字段,前端数据树中的key*/
+    @ApiModelProperty(value = "对应dept中的id字段,前端数据树中的key")
+    private String key;
+
+    /** 对应SysDepart中的id字段,前端数据树中的value*/
+    @ApiModelProperty(value = "对应dept中的id字段,前端数据树中的value")
+    private String value;
+
+    /** 对应depart_name字段,前端数据树中的title*/
+    @ApiModelProperty(value = "对应dept中的name字段,前端数据树中的title")
+    private String title;
+
+    @ApiModelProperty(value = "部门名称")
+    private String name;
+
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
+    @ApiModelProperty(value = "分公司ID")
+    private Long subCompanyId;
+
+    private boolean isLeaf;
+    // 以下所有字段均与SysDepart相同
+
+    @ApiModelProperty(value = "部门ID")
+    private Long id;
+
+    @ApiModelProperty(value = "上级部门ID")
+    private Long pid;
+
+    @ApiModelProperty(value = "是否启用(1:启用 2:禁用)")
+    private Integer enabled;
+
+    private List<DeptTreeModel> children = new ArrayList<>();
+
+
+    /**
+     * 将SysDepart对象转换成SysDepartTreeModel对象
+     * @param dept
+     */
+	public DeptTreeModel(DeptEntity dept) {
+		this.key = String.valueOf(dept.getId());
+        this.value = String.valueOf(dept.getId());
+        this.title = dept.getName();
+        this.id = dept.getId();
+        this.pid = dept.getPid();
+        this.enabled = dept.getEnabled() ? 1 : 0;
+        this.name = dept.getName();
+        this.sort = dept.getSort();
+        this.subCompanyId = dept.getSubCompanyId();
+    }
+
+    public boolean getIsLeaf() {
+        return isLeaf;
+    }
+
+    public void setIsLeaf(boolean isleaf) {
+         this.isLeaf = isleaf;
+    }
+
+    public String getKey() {
+		return key;
+	}
+
+
+	public void setKey(String key) {
+		this.key = key;
+	}
+
+
+    public String getName() {
+        return name;
+    }
+
+    public Integer getSort() {
+        return sort;
+    }
+
+    public Long getSubCompanyId() {
+        return subCompanyId;
+    }
+
+    public Long getPid() {
+        return pid;
+    }
+
+    public Integer getEnabled() {
+        return enabled;
+    }
+
+    public String getValue() {
+		return value;
+	}
+
+
+	public void setValue(String value) {
+		this.value = value;
+	}
+
+
+	public String getTitle() {
+		return title;
+	}
+
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+
+	public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public List<DeptTreeModel> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<DeptTreeModel> children) {
+        if (children==null){
+            this.isLeaf=true;
+        }
+        this.children = children;
+    }
+
+    public DeptTreeModel() { }
+
+    /**
+     * 重写equals方法
+     */
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+			return true;
+		}
+        if (o == null || getClass() != o.getClass()) {
+			return false;
+		}
+        DeptTreeModel model = (DeptTreeModel) o;
+        return Objects.equals(id, model.id) &&
+                Objects.equals(pid, model.pid) &&
+                Objects.equals(sort, model.sort) &&
+                Objects.equals(name, model.name) &&
+                Objects.equals(subCompanyId, subCompanyId) &&
+                Objects.equals(enabled, enabled) &&
+                Objects.equals(children, model.children);
+    }
+
+    /**
+     * 重写hashCode方法
+     */
+    @Override
+    public int hashCode() {
+
+        return Objects.hash(id, pid, sort, name, subCompanyId, enabled,
+        		children);
+    }
+
+}

+ 25 - 0
java/storlead-user/src/main/java/com/storlead/user/model/SysLoginModel.java

@@ -0,0 +1,25 @@
+package com.storlead.user.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 登录表单
+ *
+ * @Author scott
+ * @since  2019-01-18
+ */
+@Data
+public class SysLoginModel {
+
+	@ApiModelProperty(value = "账号")
+    private String username;
+	@ApiModelProperty(value = "密码")
+    private String password;
+	@ApiModelProperty(value = "验证码")
+    private String captcha;
+	@ApiModelProperty(value = "验证码key")
+    private String checkKey;
+
+}

+ 30 - 0
java/storlead-user/src/main/java/com/storlead/user/model/TreeSelectModel.java

@@ -0,0 +1,30 @@
+package com.storlead.user.model;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+  * 树形下拉框
+ */
+@Data
+public class TreeSelectModel implements Serializable {
+
+	private static final long serialVersionUID = 9016390975325574747L;
+
+	private String key;
+
+	private String title;
+
+	private boolean isLeaf;
+
+	private String icon;
+
+	private String parentId;
+
+	private String value;
+
+	private String code;
+
+}

+ 37 - 0
java/storlead-user/src/main/java/com/storlead/user/model/UserBaseInfo.java

@@ -0,0 +1,37 @@
+package com.storlead.user.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class UserBaseInfo implements Serializable {
+
+    private Long deptId;
+
+    private String deptName;
+
+    private Long subCompanyId;
+
+    private String subCompanyName;
+
+    private Integer jobId;
+
+    private String jobName;
+
+    private Long companyId;
+
+    private String companyName;
+
+    private Integer isLeader;
+
+    @ApiModelProperty(value = "是否冻结: 1 冻结,0:未冻结")
+    private Integer isFreeze;
+
+    private Long createBy;
+
+    private String createName;
+
+    private String createPhoto;
+}

+ 68 - 0
java/storlead-user/src/main/java/com/storlead/user/model/UserInfo.java

@@ -0,0 +1,68 @@
+package com.storlead.user.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class UserInfo implements Serializable {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "用户ID")
+    private Long id;
+
+    @ApiModelProperty(value = "用户名")
+    private String username;
+
+    @ApiModelProperty(value = "头像")
+    private String avatar;
+
+    @ApiModelProperty(value = "性别")
+    private String sex;
+
+    @ApiModelProperty(value = "昵称")
+    private String nickName;
+
+    @ApiModelProperty(value = "姓名")
+    private String realName;
+
+    @ApiModelProperty(value = "姓名")
+    private String mobile;
+
+    @ApiModelProperty(value = "email")
+    private String email;
+
+    @ApiModelProperty(value = "岗位ID")
+    private Integer jobId;
+
+    @ApiModelProperty(value = "部门ID")
+    private Long deptId;
+
+    @ApiModelProperty(value = "分公司ID")
+    private Long subCompanyId;
+
+    @ApiModelProperty(value = "公司ID")
+    private Long companyId;
+
+    @ApiModelProperty(value = "公司名称")
+    private String companyName;
+
+    @ApiModelProperty(value = "状态 1:试用期 2:正式期 3:保护期 4:待岗 5:产假 6:离职流程")
+    private String status;
+
+    @ApiModelProperty(value = "职位名称")
+    private String jobName;
+
+    @ApiModelProperty(value = "子公司名称")
+    private String subCompanyName;
+
+    @ApiModelProperty(value = "部门名称")
+    private String deptName;
+
+    @ApiModelProperty(value = "是否冻结: 1 冻结,0:未冻结")
+    private Integer isFreeze;
+
+}

+ 21 - 0
java/storlead-user/src/main/java/com/storlead/user/model/UserQueryModel.java

@@ -0,0 +1,21 @@
+package com.storlead.user.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class UserQueryModel implements Serializable {
+
+
+    @ApiModelProperty(value = "关键字")
+    private String keyword;
+
+    @ApiModelProperty(value = "子公司ID")
+    private Long subCompanyId;
+
+    @ApiModelProperty(value = "部门ID")
+    private Long deptId;
+
+}

+ 15 - 0
java/storlead-user/src/main/java/com/storlead/user/pojo/dto/CompanyDTO.java

@@ -0,0 +1,15 @@
+package com.storlead.user.pojo.dto;
+
+import com.storlead.common.object.Page;
+import lombok.Data;
+
+/**
+ * @program: sp-sales
+ * @description:
+ * @author: chenkq
+ * @create: 2022-06-29 17:37
+ */
+
+@Data
+public class CompanyDTO extends Page {
+}

+ 48 - 0
java/storlead-user/src/main/java/com/storlead/user/pojo/dto/DepartmentParam.java

@@ -0,0 +1,48 @@
+package com.storlead.user.pojo.dto;
+
+import com.storlead.common.object.Page;
+import lombok.Data;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @program: sp-cloud
+ * @description:
+ * @author: chenkq
+ * @create: 2022-05-13 14:20
+ */
+@Data
+public class DepartmentParam extends Page {
+
+    /**
+     * 类型:10 集团,20:公司(分公司),30:部门,40:小组,50:雇员
+     */
+    private List<Integer> orgTypes;
+
+    private Integer reviewTag;
+
+    /**
+     * 上级id
+     */
+    private Long parentId;
+
+    /**
+     * 可选节点类型
+     */
+    private List<Integer> checkNodes = Arrays.asList(10,20,30,40,99);
+
+    /**
+     * 公司id
+     */
+    private Long subCompanyId;
+
+    /**
+     * 部门id
+     */
+    private Long deptId;
+
+    private String scopeMenuId;
+
+    private Integer enabled = 1;
+}

+ 16 - 0
java/storlead-user/src/main/java/com/storlead/user/pojo/dto/DeptParam.java

@@ -0,0 +1,16 @@
+package com.storlead.user.pojo.dto;
+
+import com.storlead.user.pojo.entity.DeptEntity;
+import lombok.Data;
+
+/**
+ * @program: sp-sales
+ * @description:
+ * @author: chenkq
+ * @create: 2022-06-29 09:25
+ */
+
+@Data
+public class DeptParam extends DeptEntity {
+
+}

+ 27 - 0
java/storlead-user/src/main/java/com/storlead/user/pojo/dto/EmployeeParam.java

@@ -0,0 +1,27 @@
+package com.storlead.user.pojo.dto;
+
+import com.storlead.common.object.Page;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @program: sp-cloud
+ * @description:
+ * @author: chenkq
+ * @create: 2022-05-19 17:58
+ */
+public class EmployeeParam extends Page {
+
+    @ApiModelProperty("职位id")
+    private List<Long> jobIds;
+
+    @ApiModelProperty("组织")
+    private List<Long> orgIds;
+
+    @ApiModelProperty(value = "用户名")
+    private String username;
+
+    @ApiModelProperty(value = "手机号")
+    private String mobile;
+}

+ 22 - 0
java/storlead-user/src/main/java/com/storlead/user/pojo/dto/JobDTO.java

@@ -0,0 +1,22 @@
+package com.storlead.user.pojo.dto;
+
+import com.storlead.common.object.Page;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @program: sp-cloud
+ * @description:
+ * @author: chenkq
+ * @create: 2022-05-24 11:08
+ */
+@Data
+public class JobDTO extends Page {
+
+    @ApiModelProperty(value = "角色ID")
+    private Long id;
+
+    @ApiModelProperty(value = "角色名称")
+    private String jobName;
+
+}

+ 20 - 0
java/storlead-user/src/main/java/com/storlead/user/pojo/dto/MenuParam.java

@@ -0,0 +1,20 @@
+package com.storlead.user.pojo.dto;
+
+import com.storlead.common.object.Page;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @program: sp-sales
+ * @description:
+ * @author: chenkq
+ * @create: 2022-06-29 17:22
+ */
+@Data
+public class MenuParam  extends Page {
+
+    @ApiModelProperty(value = "所属服务类型: 0:PC,1:移动")
+    private String serviceModeType;
+
+    private Long resourceId;
+}

+ 34 - 0
java/storlead-user/src/main/java/com/storlead/user/pojo/dto/MenuTreeParam.java

@@ -0,0 +1,34 @@
+package com.storlead.user.pojo.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @program: sp-cloud
+ * @description:
+ * @author: chenkq
+ * @create: 2021-11-23 10:29
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+public class MenuTreeParam implements Serializable {
+
+    @ApiModelProperty(value = "查询应用应用菜单")
+    private List<Long> appIds;
+
+    @ApiModelProperty(value = "角色")
+    private Long roleId;
+
+    @ApiModelProperty(value = "是否需要将应用作为顶级菜单,默认不需要")
+    private Boolean needService = false;
+
+    @ApiModelProperty(value = "查询应用应用菜单")
+    private Long appId;
+
+}

+ 56 - 0
java/storlead-user/src/main/java/com/storlead/user/pojo/dto/RoleParam.java

@@ -0,0 +1,56 @@
+package com.storlead.user.pojo.dto;
+
+import com.storlead.common.object.Page;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Set;
+
+/**
+ * 角色参数
+ *
+ * @author blank
+ * @date 2021-1-7 上午 11:23
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "RoleParam对象", description = "角色请求参数对象")
+public class RoleParam extends Page {
+
+    private static final long serialVersionUID = 269890957793662474L;
+
+    @ApiModelProperty(value = "角色id")
+    private Long id;
+
+    @ApiModelProperty(value = "角色名称")
+    private String name;
+
+    @ApiModelProperty(value = "角色描述")
+    private String desc;
+
+    @ApiModelProperty(value = "权限范围(全部 本公司 自定义 自己,本部门)")
+    private String dataScope;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "菜单列表")
+    private Set<Long> menus;
+
+    @ApiModelProperty(value = "部门列表")
+    private Set<Long> depts;
+
+    @ApiModelProperty(value = "是否启用")
+    private Boolean enabled;
+
+    @ApiModelProperty(value = "是否移动端 1:是,0 :不是")
+    private Integer isApp;
+}

+ 78 - 0
java/storlead-user/src/main/java/com/storlead/user/pojo/dto/SetUserDetailDTO.java

@@ -0,0 +1,78 @@
+package com.storlead.user.pojo.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+
+/**
+ * @program: sp-sales
+ * @description:
+ * @author: chenkq
+ * @create: 2022-08-23 17:55
+ */
+@Data
+public class SetUserDetailDTO implements Serializable {
+
+    @ApiModelProperty(value = "用户名")
+    private String userName;
+
+    @ApiModelProperty(value = "头像")
+    private String avatar;
+
+    @ApiModelProperty(value = "岗位ID")
+    private Long jobId;
+
+    @ApiModelProperty(value = "部门ID")
+    private Long deptId;
+
+    @ApiModelProperty(value = "岗位ID")
+    private String jobName;
+
+    @ApiModelProperty(value = "部门")
+    private String deptName;
+
+    @ApiModelProperty(value = "手机号")
+    private String mobile;
+
+    @ApiModelProperty(value = "邮箱")
+    private String email;
+
+    @ApiModelProperty(value = "部门岗位职责")
+    private String deptJobDes;
+
+    @ApiModelProperty(value = "岗位职责")
+    private String jobDes;
+
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    private LocalDate birthday;
+
+    @ApiModelProperty(value = "性别")
+    private String sex;
+
+    @ApiModelProperty(value = "昵称")
+    private String nickName;
+
+    @ApiModelProperty(value = "姓名")
+    private String realName;
+
+
+    @ApiModelProperty(value = "分公司ID")
+    private Long subCompanyId;
+
+    @ApiModelProperty(value = "公司ID")
+    private Long companyId;
+
+    @ApiModelProperty(value = "直接上级ID")
+    private Long managerId;
+
+    @ApiModelProperty(value = "领导路由")
+    private String managers;
+
+    private String idNum;
+    private String address;
+}

+ 27 - 0
java/storlead-user/src/main/java/com/storlead/user/pojo/dto/UserLoginDTO.java

@@ -0,0 +1,27 @@
+package com.storlead.user.pojo.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @program: sp-sales
+ * @description:
+ * @author: chenkq
+ * @create: 2022-07-15 09:22
+ */
+@Data
+public class UserLoginDTO implements Serializable {
+    @ApiModelProperty(value = "登录账号")
+    private String account;
+
+    @ApiModelProperty(value = "密码")
+    private String password;
+
+    @ApiModelProperty(value = "微信登录code")
+    private String wxCode;
+
+    @ApiModelProperty(value = "短信验证码")
+    private String smsCode;
+}

+ 33 - 0
java/storlead-user/src/main/java/com/storlead/user/pojo/dto/UserLoginParam.java

@@ -0,0 +1,33 @@
+package com.storlead.user.pojo.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @program: sp-cloud
+ * @description: 登录参数
+ * @author: chenkq
+ * @create: 2021-10-20 17:27
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "用户登录参数", description = "用户登录参数")
+public class UserLoginParam {
+
+    @ApiModelProperty(value = "登录账号")
+    private String account;
+
+    @ApiModelProperty(value = "密码")
+    private String password;
+
+    @ApiModelProperty(value = "微信登录code")
+    private String wxCode;
+
+    @ApiModelProperty(value = "短信验证码")
+    private String smsCode;
+
+}

+ 64 - 0
java/storlead-user/src/main/java/com/storlead/user/pojo/dto/UserParam.java

@@ -0,0 +1,64 @@
+package com.storlead.user.pojo.dto;
+
+import com.storlead.common.object.QueryBaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
+import java.util.List;
+
+/**
+ * 用户相关参数
+ *
+ * @author blank
+ * @date 2020-12-31 下午 4:44
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "UserParam对象", description = "用户请求参数对象")
+public class UserParam  extends QueryBaseEntity {
+
+    private static final long serialVersionUID = -4911053849319957779L;
+
+    @ApiModelProperty(value = "用户id")
+    private Long id;
+
+    @ApiModelProperty(value = "组织路由")
+    private String orgRouteCode;
+
+    @ApiModelProperty(value = "用户名")
+    @NotBlank(message = "用户名不能为空")
+    @Length(min = 4, max = 20, message = "用户名长度为4-20位")
+    private String username;
+
+    @ApiModelProperty(value = "原密码")
+    @NotBlank(message = "原密码不能为空")
+    @Length(min = 6, max = 20, message = "原密码长度为6-20位")
+    private String password;
+
+    @ApiModelProperty(value = "新密码")
+    @NotBlank(message = "新密码不能为空")
+    @Length(min = 6, max = 20, message = "密码长度为6-20位")
+    private String newPass;
+
+    @ApiModelProperty(value = "手机号")
+    @NotBlank(message = "手机号不能为空")
+    @Length(min = 11, max = 11, message = "手机号11位")
+    @Pattern(regexp = "0?(13-9)[0-9]{9}", message = "手机号格式不正确")
+    private String mobile;
+
+    @ApiModelProperty(value = "角色ID列表")
+    private List<Long> roleIds;
+
+    @ApiModelProperty(value = "通用搜索条件")
+    private Integer status;
+
+    @ApiModelProperty(value = "查询离职人员:0 在职,1:在职 + 离职 ")
+    private Boolean isIncludeResign = false;
+}

+ 35 - 0
java/storlead-user/src/main/java/com/storlead/user/pojo/dto/UserRoleParam.java

@@ -0,0 +1,35 @@
+package com.storlead.user.pojo.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Set;
+
+/**
+ * 用户角色参数
+ *
+ * @author blank
+ * @date 2021-4-6 下午 7:50
+ */
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "RoleParam对象", description = "角色请求参数对象")
+public class UserRoleParam  implements Serializable {
+
+    private static final long serialVersionUID = 4270688918860415511L;
+
+    @ApiModelProperty(value = "用户id")
+    @NotNull(message = "用户id不能为空")
+    private Long userId;
+
+    @ApiModelProperty(value = "角色列表ID")
+    @NotNull(message = "角色id不能为空")
+    private Set<Long> roleIds;
+
+}

+ 46 - 0
java/storlead-user/src/main/java/com/storlead/user/pojo/entity/CompanyEntity.java

@@ -0,0 +1,46 @@
+package com.storlead.user.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.frame.mybatis.entity.SysBaseField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="总公司对象", description="总公司对象详细信息")
+@TableName("company")
+public class CompanyEntity extends SysBaseField {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "公司ID")
+    @TableId(value = "id", type = IdType.INPUT)
+    private Long id;
+
+    @ApiModelProperty(value = "公司名称")
+    private String name;
+
+    @ApiModelProperty(value = "公司描述(全称)")
+    @TableField("`desc`")
+    private String desc;
+
+    @ApiModelProperty(value = "领导ID")
+    @TableField("manager_id")
+    private Long managerId;
+
+    @ApiModelProperty(value = "路由code")
+    private String routeCode;
+
+    @ApiModelProperty(value = "数据来源")
+    private Integer dataSource;
+}

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio