Procházet zdrojové kódy

Merge branch 'release/v2.2.4' into 'master'

feature(新增appSecret字段): 新增appSecret字段

See merge request dcuc-tjdsj/app-service!78
黄资权 před 3 roky
rodič
revize
7d200cb5a1
49 změnil soubory, kde provedl 1311 přidání a 920 odebrání
  1. 4 4
      Jenkinsfile
  2. 37 10
      README.md
  3. 1 1
      dcuc-app-api/pom.xml
  4. 29 9
      dcuc-app-api/src/main/java/com/dragoninfo/dcuc/app/facade/IApplyInfoFacade.java
  5. 1 1
      dcuc-app-model/pom.xml
  6. 5 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/AppInfoAcceptDTO.java
  7. 2 5
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/AppResourceAcceptDTO.java
  8. 5 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/AppResourceDTO.java
  9. 25 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/AppStrAcceptDTO.java
  10. 0 16
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/ResourceDTO.java
  11. 0 6
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/entity/ApplyInfo.java
  12. 0 16
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/entity/ServiceResource.java
  13. 25 25
      dcuc-app-service/pom.xml
  14. 3 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/DcucAppApplication.java
  15. 35 24
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/impl/ResourceBusiness.java
  16. 25 25
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/event/AppEvent.java
  17. 105 105
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/event/AppEventListener.java
  18. 45 45
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/event/EventPublisher.java
  19. 25 25
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/event/ManufacturerEvent.java
  20. 85 85
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/event/ManufacturerEventListener.java
  21. 24 24
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/event/UpdateUserInfoEvent.java
  22. 43 43
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/event/UpdateUserInfoEventListener.java
  23. 10 5
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/ApplyInfoFacade.java
  24. 0 9
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/mapper/ApplyInfoMapper.java
  25. 17 17
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/IApplyInfoService.java
  26. 7 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/IApplyOauthService.java
  27. 310 280
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/ApplyInfoServiceImpl.java
  28. 8 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/ApplyOauthServiceImpl.java
  29. 19 25
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/ManufacturerInfoServiceImpl.java
  30. 25 11
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/ResourceServiceImpl.java
  31. 10 2
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/ServiceResourceServiceImpl.java
  32. 51 17
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/strategy/AppResourceStrategy.java
  33. 32 6
      dcuc-app-service/src/main/resources/application-base.yml
  34. 0 6
      dcuc-app-service/src/main/resources/application-oracle.yml
  35. 1 13
      dcuc-app-service/src/main/resources/config/mysql/V4_1_0005__alert_column.sql
  36. 12 0
      dcuc-app-service/src/main/resources/config/mysql/V4_1_0006__sub_auth_init.sql
  37. 15 0
      dcuc-app-service/src/main/resources/config/mysql/V4_1_0007__app_del_orgid.sql
  38. 5 0
      dcuc-app-service/src/main/resources/config/sql/V4_1_0007__app_del_orgid.sql
  39. 0 6
      dcuc-app-service/src/main/resources/mapping/ApplyInfoMapper.xml
  40. 81 0
      dcuc-app-service/src/main/resources/sql.mysql.app/V4_1_0001__Init_Tables.sql
  41. 1 0
      dcuc-app-service/src/main/resources/sql.mysql.app/V4_1_0002__Add_Index.sql
  42. 47 0
      dcuc-app-service/src/main/resources/sql.mysql.app/V4_1_0003__Init_Tables.sql
  43. 12 0
      dcuc-app-service/src/main/resources/sql.mysql.app/V4_1_0004__Update_Tables.sql
  44. 5 0
      dcuc-app-service/src/main/resources/sql.mysql.app/V4_1_0005__alert_column.sql
  45. 102 0
      dcuc-app-service/src/main/resources/sql.mysql.app/V4_1_0006__sub_auth_init.sql
  46. 15 0
      dcuc-app-service/src/main/resources/sql.mysql.app/V4_1_0007__app_del_orgid.sql
  47. 0 28
      dcuc-app-service/src/test/java/com/dragoninfo/dcuc/app/mapper/ApplyInfoMapperTest.java
  48. 0 24
      dcuc-app-service/src/test/java/com/dragoninfo/dcuc/app/service/impl/ApplyInfoServiceImplTest.java
  49. 2 2
      pom.xml

+ 4 - 4
Jenkinsfile

@@ -5,9 +5,9 @@ def build = new org.devops.build()
 def color = new org.devops.color()
 def systemtime = new org.devops.systemtime()
 
-def String cpu = "${env.cpu}"
-def String imagePrefix = "${env.imagePrefix}"
-def String buildImage = "${env.buildImage}"
+String cpu = "${env.cpu}"
+String imagePrefix = "${env.imagePrefix}"
+String buildImage = "${env.buildImage}"
 
 pipeline {
     agent {
@@ -60,7 +60,7 @@ pipeline {
         stage('DOCKER-BUILD') {
             when {
                 expression {
-                    return (buildImage  == 'true')
+                    return (buildImage == 'true')
                 }
             }
             steps {

+ 37 - 10
README.md

@@ -1,21 +1,48 @@
 # 应用服务组件
+
 ## 简介
+
 1. 提供对应用、厂商的增删改查
 2. 当厂商、应用状态发生变更时,会发送相应消息到消息中心
+
 ## 更新日志
+
+### 2.0.1
+
+- 从应用资源目录同步应用秘钥
+
+## 更新日志
+
 ### 2.1.0
-  - 新增同步应用资源目录、服务资源目录、数据资源目录
+
+- 新增同步应用资源目录、服务资源目录、数据资源目录
+
 ### 2.1.1
-  - 合并数据域代码
+
+- 合并数据域代码
+
 ### 2.1.2
-  - 新增服务资源目录相关字段 
+
+- 新增服务资源目录相关字段
+
 ### 2.1.3
-  - 新增根据查询条件查询应用(不分页)
+
+- 新增根据查询条件查询应用(不分页)
+
 ### 2.2.0
-  - 数据资源管理 
-  - 应用资源管理
-  - 去除老的审计埋点
-### 2.2.2 
-  - 权限自助申请提供facade接口
+
+- 数据资源管理
+- 应用资源管理
+- 去除老的审计埋点
+
+### 2.2.2
+
+- 权限自助申请提供facade接口
+
 ### 2.2.3
-  - 删除数据分级分类导入功能
+
+- 删除数据分级分类导入功能
+
+### 2.2.4
+
+- 同步BU警综的应用服务

+ 1 - 1
dcuc-app-api/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>dcuc-app</artifactId>
         <groupId>com.dragoninfo</groupId>
-        <version>2.2.3-tjdsj-SNAPSHOT</version>
+        <version>2.2.4-tjdsj-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 29 - 9
dcuc-app-api/src/main/java/com/dragoninfo/dcuc/app/facade/IApplyInfoFacade.java

@@ -12,6 +12,9 @@ import java.util.List;
 import java.util.Map;
 
 /**
+ * TODO
+ * 注意事项:权限中心调用该接口后不能使用机构id,只能使用机构code
+ *
  * @author yica
  * @date 2018/8/7
  */
@@ -100,14 +103,14 @@ public interface IApplyInfoFacade {
     @PostMapping(value = "isRepeat")
     ResponseStatus isRepeat(@RequestBody ApplyInfo applyInfo);
 
-    /**
-     * 根据机构ID获取所有应用ID
-     *
-     * @param orgId 机构id
-     * @return 应用ID集合
-     */
-    @RequestMapping(value = "getAppIdsByOrgId")
-    List<String> getAppIdsByOrgId(@RequestParam("orgId") String orgId);
+//    /**
+//     * 根据机构ID获取所有应用ID
+//     *
+//     * @param orgId 机构id
+//     * @return 应用ID集合
+//     */
+//    @RequestMapping(value = "getAppIdsByOrgId")
+//    List<String> getAppIdsByOrgId(@RequestParam("orgId") String orgId);
 
     /**
      * 根据施工人员id查看该人员负责的应用
@@ -257,6 +260,7 @@ public interface IApplyInfoFacade {
 
     /**
      * 根据应用URL获取应用信息
+     *
      * @param applyUrl
      * @return
      */
@@ -265,6 +269,7 @@ public interface IApplyInfoFacade {
 
     /**
      * 应用导入
+     *
      * @param fileId
      * @return
      */
@@ -273,14 +278,16 @@ public interface IApplyInfoFacade {
 
     /**
      * 根据查询条件查询应用
+     *
      * @param applyStatus 应用状态
      * @return
      */
     @GetMapping(value = "findList")
-    List<ApplyInfo> findList(@RequestParam(value = "applyStatus",required = false) String applyStatus);
+    List<ApplyInfo> findList(@RequestParam(value = "applyStatus", required = false) String applyStatus);
 
     /**
      * 根据code集合获取应用列表
+     *
      * @param appCodes
      * @return
      */
@@ -289,9 +296,22 @@ public interface IApplyInfoFacade {
 
     /**
      * 条件查询-不分页
+     *
      * @param searchDTO
      * @return
      */
     @PostMapping("appInfoSearch")
     List<ApplyInfo> appInfoSearch(@RequestBody SearchDTO searchDTO);
+
+    /**
+     * 更新机构信息
+     *
+     * @param targetOrgCode 目标机构代码
+     * @param fullName      完整名称
+     * @param code          机构代码
+     * @return 状态
+     */
+    @PutMapping("updateOrgInfos")
+    ResponseStatus updateOrgInfos(@RequestParam("targetOrgCode") String targetOrgCode, @RequestParam("fullName") String fullName,
+                                  @RequestParam("code") String code);
 }

+ 1 - 1
dcuc-app-model/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>dcuc-app</artifactId>
         <groupId>com.dragoninfo</groupId>
-        <version>2.2.3-tjdsj-SNAPSHOT</version>
+        <version>2.2.4-tjdsj-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 5 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/AppInfoAcceptDTO.java

@@ -92,4 +92,9 @@ public class AppInfoAcceptDTO {
      */
     private String yyxttb;
 
+    /**
+     * 应用授权码
+     */
+    private String appsecret;
+
 }

+ 2 - 5
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/AppResourceAcceptDTO.java

@@ -1,7 +1,6 @@
 package com.dragoninfo.dcuc.app.dto;
 
 
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.List;
@@ -15,14 +14,12 @@ import java.util.List;
 public class AppResourceAcceptDTO {
 
     /**
-     * 推送过来的应用实体类Vo
+     * 推送过来的应用实体类DTO
      */
-    @ApiModelProperty(value = "推送应用资源vo")
     private AppInfoAcceptDTO tappSystem;
     /**
-     * 推送过来的应用对应的菜单实体类Vo
+     * 推送过来的应用对应的菜单实体类DTO
      */
-    @ApiModelProperty(value = "推送菜单资源vo")
     private List<MenuResourceAcceptDTO> tappFunctionList;
 
 

+ 5 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/AppResourceDTO.java

@@ -49,6 +49,11 @@ public class AppResourceDTO extends ResourceDTO implements Serializable {
      */
     private Date registrationTime;
 
+    /**
+     * 应用授权码
+     */
+    private String appSecret;
+
     /**
      * 应用系统运维单位名称
      */

+ 25 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/AppStrAcceptDTO.java

@@ -0,0 +1,25 @@
+package com.dragoninfo.dcuc.app.dto;
+
+
+import lombok.Data;
+
+/**
+ * 推送应用和菜单数据DTO
+ * 为保存全量json数据,字段设置为str类型
+ * @author mazq
+ * @date 2021/2/19
+ */
+@Data
+public class AppStrAcceptDTO {
+
+    /**
+     * 推送过来的应用信息字符串
+     */
+    private String tappSystem;
+    /**
+     * 推送过来的功能信息字符串
+     */
+    private String tappFunctionList;
+
+
+}

+ 0 - 16
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/ResourceDTO.java

@@ -30,11 +30,6 @@ public class ResourceDTO implements Serializable {
      */
     private String resourceProvider;
 
-    /**
-     * 建设单位id(orgId)
-     */
-    private String buildUnitId;
-
     /**
      * 建设单位编码(orgCode)
      */
@@ -55,11 +50,6 @@ public class ResourceDTO implements Serializable {
      */
     private String buildPrincipalPhone;
 
-    /**
-     * 承建单位id(ManufacturerId)
-     */
-    private String contractUnitId;
-
     /**
      * 承建单位编码(ManufacturerCode)
      */
@@ -70,12 +60,6 @@ public class ResourceDTO implements Serializable {
      */
     private String contractUnit;
 
-
-    /**
-     * 管理单位id
-     */
-    private String managerUnitId;
-
     /**
      * 管理单位name
      */

+ 0 - 6
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/entity/ApplyInfo.java

@@ -39,9 +39,6 @@ public class ApplyInfo implements Serializable {
     @ApiModelProperty(value = "所属业务警种")
     private String policeSpecies;
 
-    @ApiModelProperty(value = "所属单位id")
-    private String orgId;
-
     @ApiModelProperty(value = "所属单位名称")
     private String orgName;
 
@@ -51,9 +48,6 @@ public class ApplyInfo implements Serializable {
     @ApiModelProperty(value = "管理单位代码")
     private String managerOrgCode;
 
-    @ApiModelProperty(value = "管理单位id")
-    private String managerOrgId;
-
     @ApiModelProperty(value = "管理单位名称")
     private String managerOrgName;
 

+ 0 - 16
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/entity/ServiceResource.java

@@ -55,11 +55,6 @@ public class ServiceResource implements Serializable {
      */
     private String serviceUrl;
 
-    /**
-     * 建设单位id(orgId)
-     */
-    private String buildUnitId;
-
     /**
      * 建设单位编码(orgCode)
      */
@@ -80,12 +75,6 @@ public class ServiceResource implements Serializable {
      */
     private String buildPrincipalPhone;
 
-
-    /**
-     * 管理单位id
-     */
-    private String managerUnitId;
-
     /**
      * 管理单位name
      */
@@ -96,11 +85,6 @@ public class ServiceResource implements Serializable {
      */
     private String managerUnitCode;
 
-    /**
-     * 承建单位id(ManufacturerId)
-     */
-    private String contractUnitId;
-
     /**
      * 承建单位编码(ManufacturerCode)
      */

+ 25 - 25
dcuc-app-service/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>dcuc-app</artifactId>
         <groupId>com.dragoninfo</groupId>
-        <version>2.2.3-tjdsj-SNAPSHOT</version>
+        <version>2.2.4-tjdsj-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -45,7 +45,7 @@
             <artifactId>duceap-cloud-starter-config-apollo</artifactId>
         </dependency>
         <!--审计-->
-        <!--<dependency>
+        <dependency>
             <groupId>com.dragonsoft</groupId>
             <artifactId>duceap-boot-starter-auditlog</artifactId>
             <exclusions>
@@ -54,26 +54,31 @@
                     <groupId>com.dragonsoft</groupId>
                 </exclusion>
             </exclusions>
-        </dependency>-->
-
-        <!--<dependency>
-            <groupId>com.dragonsoft</groupId>
-            <artifactId>auditlog-qm-tj</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-        </dependency>-->
-
-
+        </dependency>
         <!--MyBatis-Plus-->
         <dependency>
             <groupId>com.dragonsoft</groupId>
             <artifactId>duceap-boot-starter-mybatis</artifactId>
         </dependency>
-        <!--配置 duceap 结束-->
+
+        <!--redis缓存-->
+        <dependency>
+            <groupId>com.dragonsoft</groupId>
+            <artifactId>duceap-boot-starter-cache-redis</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>lettuce-core</artifactId>
+                    <groupId>io.lettuce</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
         <!--许可-->
         <dependency>
             <groupId>com.dragonsoft</groupId>
             <artifactId>duceap-support-license</artifactId>
         </dependency>
+        <!--配置 duceap 结束-->
 
         <!--许可依赖包 结束-->
 
@@ -105,31 +110,21 @@
             <version>2.1.2-SNAPSHOT</version>
         </dependency>
 
-        <dependency>
-            <groupId>com.dragoninfo</groupId>
-            <artifactId>dcuc-org-api</artifactId>
-            <version>2.0.3-tjdsj-SNAPSHOT</version>
-        </dependency>
 
         <dependency>
             <groupId>com.dragoninfo</groupId>
             <artifactId>dcuc-user-api</artifactId>
-            <version>2.0.4-tjdsj-SNAPSHOT</version>
+            <version>2.1.0-tjdsj-SNAPSHOT</version>
         </dependency>
 
         <dependency>
             <groupId>com.dragoninfo</groupId>
             <artifactId>dcuc-auth-api</artifactId>
-            <version>2.4.1-tjdsj-SNAPSHOT</version>
+            <version>2.4.2-tjdsj-SNAPSHOT</version>
         </dependency>
         <!--配置 dcuc 结束-->
 
         <!--配置第三方组件开始-->
-        <!--oracle 引入-->
-        <dependency>
-            <groupId>com.oracle</groupId>
-            <artifactId>ojdbc6</artifactId>
-        </dependency>
         <!--mysql 引入-->
         <dependency>
             <groupId>mysql</groupId>
@@ -141,6 +136,11 @@
             <artifactId>lombok</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>redis.clients</groupId>
+            <artifactId>jedis</artifactId>
+            <version>3.6.0</version>
+        </dependency>
         <!--配置第三方组件结束-->
 
         <!--配置 spring 开始-->
@@ -203,7 +203,7 @@
                     <plugin>
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-war-plugin</artifactId>
-                        <version>2.3.0</version>
+                        <version>2.1.1</version>
                         <configuration>
                             <failOnMissingWebXml>false</failOnMissingWebXml>
                             <!--排除licenseignore包,用来禁用许可开关,防止生产环境通过关闭开关,绕过许可-->

+ 3 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/DcucAppApplication.java

@@ -3,6 +3,8 @@ package com.dragoninfo.dcuc.app;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.cache.annotation.EnableCaching;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 
@@ -11,6 +13,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
  *
  * @author huangzqa
  */
+@EnableCaching
 @SpringBootApplication(scanBasePackages = {"com.dragonsoft.*", "com.dragoninfo.*"})
 @EnableDiscoveryClient
 @EnableFeignClients(basePackages = {"com.dragonsoft.*", "com.dragoninfo.*"})

+ 35 - 24
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/impl/ResourceBusiness.java

@@ -19,6 +19,7 @@ import com.dragoninfo.dcuc.app.service.IApplyInfoService;
 import com.dragoninfo.dcuc.app.service.IResourceService;
 import com.dragoninfo.dcuc.app.service.IResourceSyncService;
 import com.dragoninfo.dcuc.app.service.IServiceResourceService;
+import com.dragoninfo.dcuc.app.service.impl.ResourceServiceImpl;
 import com.dragoninfo.dcuc.app.vo.BusSendReqVO;
 import com.dragoninfo.dcuc.auth.auth.facade.IBimBusinessFacade;
 import com.dragoninfo.dcuc.common.Constants;
@@ -115,8 +116,10 @@ public class ResourceBusiness implements IResourceBusiness {
         AppResourceAcceptDTO appMenuDTO;
         String appStr = null;
         String userToken = bimBusinessFacade.getUserToken(false);
-
-        String appToken = bimBusinessFacade.getAppToken(userToken, false);
+        String appToken = "";
+        if(StringUtils.isNotBlank(userToken)) {
+            appToken = bimBusinessFacade.getAppToken(userToken, false);
+        }
         try {
             logger.info("-------getAppRemoteDetailByCode STATR---------------");
             appStr = getAppRemoteDetailByCode(appCode, userToken, appToken, 0);
@@ -131,7 +134,7 @@ public class ResourceBusiness implements IResourceBusiness {
             logger.info("appIncrSync get appInfo is null. appCode is:{}", appCode);
             return false;
         }
-        acceptAppResource(appMenuDTO);
+        acceptAppResource(appStr, appMenuDTO);
         return false;
     }
 
@@ -272,9 +275,10 @@ public class ResourceBusiness implements IResourceBusiness {
     private String getServiceRemoteDetailByCode(String serviceCode) {
 
         String userToken = bimBusinessFacade.getUserToken(false);
-
-        String appToken = bimBusinessFacade.getAppToken(userToken, false);
-
+        String appToken = "";
+        if(StringUtils.isNotBlank(userToken)) {
+            appToken = bimBusinessFacade.getAppToken(userToken, false);
+        }
         String response = getAppResource(serviceCode, userToken, appToken, 0);
 
         logger.info("getServiceRemoteDetailByCode result:{}", response);
@@ -352,18 +356,22 @@ public class ResourceBusiness implements IResourceBusiness {
     /**
      * 增量新增/更新应用资源和应用相关的菜单资源
      *
+     * @param appStr
      * @param acceptDTO
      * @return
      */
-    public boolean acceptAppResource(AppResourceAcceptDTO acceptDTO) {
+    public boolean acceptAppResource(String appStr, AppResourceAcceptDTO acceptDTO) {
+        AppStrAcceptDTO strAcceptDTO = JSON.parseObject(appStr, AppStrAcceptDTO.class);
+
         ResourceTypeEnum appEnum = ResourceTypeEnum.TJ_APP;
         ResourceSyncDTO syncDTO = new ResourceSyncDTO(appEnum.getResourceId()
                 , appEnum.getResourceType(), appEnum.getResourceProvider());
         AppInfoAcceptDTO appAcceptDTO = acceptDTO.getTappSystem();
+
         syncDTO.setAppCode(appAcceptDTO.getYyxtbh());
         syncDTO.setAppName(appAcceptDTO.getYyxtmc());
         syncDTO.setExtId(appAcceptDTO.getId());
-        syncDTO.setContent(JSON.toJSONString(appAcceptDTO));
+        syncDTO.setContent(strAcceptDTO.getTappSystem());
         syncDTO.setDeleted(BooleanEnum.FALSE.getValue());
         syncDTO.setSync(BooleanEnum.TRUE.getValue());
         syncService.insertRemoteResourceSync(syncDTO);
@@ -374,7 +382,7 @@ public class ResourceBusiness implements IResourceBusiness {
         menuSyncDTO.setAppCode(appAcceptDTO.getYyxtbh());
         menuSyncDTO.setAppName(appAcceptDTO.getYyxtmc());
         menuSyncDTO.setExtId(appAcceptDTO.getId());
-        menuSyncDTO.setContent(JSON.toJSONString(acceptDTO.getTappFunctionList()));
+        menuSyncDTO.setContent(strAcceptDTO.getTappFunctionList());
         menuSyncDTO.setDeleted(BooleanEnum.FALSE.getValue());
         menuSyncDTO.setSync(BooleanEnum.TRUE.getValue());
         syncService.insertRemoteResourceSync(menuSyncDTO);
@@ -426,6 +434,7 @@ public class ResourceBusiness implements IResourceBusiness {
         dto.setApplyCategory(appInfoAcceptDTO.getYyxtfldm());
         dto.setPoliceSpecies(appInfoAcceptDTO.getGajzfldm());
         dto.setManagerDescribe(appInfoAcceptDTO.getYyxtsm());
+        AppResourceDTO appResourceDTO = ResourceServiceImpl.convertToAppDTO(appInfoAcceptDTO);
         //设置菜单资源
         List<MenuResourceAcceptDTO> tAppFunctionList = acceptDTO.getTappFunctionList();
         List<MenuResourceDTO> dtoArrayList = new ArrayList<>();
@@ -438,8 +447,11 @@ public class ResourceBusiness implements IResourceBusiness {
             menuDTO.setStatus(menuResourceAcceptDTO.getZyzt());
             dtoArrayList.add(menuDTO);
         }
-        dto.setMenusResources(dtoArrayList);
-        return dto;
+        appResourceDTO.setMenusResources(dtoArrayList);
+        String appCode = appInfoAcceptDTO.getYyxtbh();
+        List<MenuResourceDTO> menusDTOs = ResourceServiceImpl.convertToMenuDTOs(appCode, tAppFunctionList);
+        appResourceDTO.setMenusResources(menusDTOs);
+        return appResourceDTO;
     }
 
     /**
@@ -496,10 +508,10 @@ public class ResourceBusiness implements IResourceBusiness {
         Integer pageSize = requestParamDTO.getPageSize();
         Boolean listingAll = requestParamDTO.getListingAll();
         Boolean menuSync = requestParamDTO.getMenuSync();
-        if(null == listingAll) {
+        if (null == listingAll) {
             listingAll = true;
         }
-        if(null == menuSync) {
+        if (null == menuSync) {
             menuSync = false;
         }
         pageSize = (pageSize == null ? 50 : pageSize);
@@ -511,8 +523,8 @@ public class ResourceBusiness implements IResourceBusiness {
             Integer currentPageNo = requestParamDTO.getCurrentPageNo();
             List<String> resourceTypeList = requestParamDTO.getListAllResourceType();
             for (ResourceTypeEnum resourceEnum : ResourceTypeEnum.values()) {
-                if(CollectionUtils.isNotEmpty(resourceTypeList)
-                    && !resourceTypeList.contains(resourceEnum.getResourceType())) {
+                if (CollectionUtils.isNotEmpty(resourceTypeList)
+                        && !resourceTypeList.contains(resourceEnum.getResourceType())) {
                     continue;
                 }
                 //若是增量获取currentPage = 数据库中上次同步的页数
@@ -540,7 +552,6 @@ public class ResourceBusiness implements IResourceBusiness {
     /**
      * 根据页码获取资源列表
      *
-     *
      * @param menuSync
      * @param pageSize
      * @param listingParam
@@ -569,7 +580,6 @@ public class ResourceBusiness implements IResourceBusiness {
     /**
      * 从currentPageNo页获取全量的资源列表
      *
-     *
      * @param menuSync
      * @param pageSize
      * @return
@@ -608,9 +618,9 @@ public class ResourceBusiness implements IResourceBusiness {
         }
         String idcard = UserContextUtils.getCurrentUser().getIdcard();
         MenuTask menuTask = new MenuTask(extAppIds, idcard);
-        if(!menuSync){
+        if (!menuSync) {
             executor.submit(menuTask);
-        }else {
+        } else {
             menuTask.run();
         }
     }
@@ -799,7 +809,7 @@ public class ResourceBusiness implements IResourceBusiness {
         } else if (ResourceTypeEnum.TJ_SERVICE.equals(resourceTypeEnum)) {
             httpResult = getServiceResource(pageNo, pageSize);
         } else if (ResourceTypeEnum.BU_SERVICE.equals(resourceTypeEnum)) {
-            httpResult = getBuServiceResource(pageNo,pageSize);
+            httpResult = getBuServiceResource(pageNo, pageSize);
         } else {
             httpResult = new HttpResult();
             httpResult.setCode(ResponseStatus.SUCCESS_CODE);
@@ -811,6 +821,7 @@ public class ResourceBusiness implements IResourceBusiness {
 
     /**
      * 从大数据平台获取
+     *
      * @param pageNo
      * @param pageSize
      * @return
@@ -819,12 +830,12 @@ public class ResourceBusiness implements IResourceBusiness {
         String resourceUrl = resourceConfig.getBuServiceUrl();
         HttpResult httpResult = new HttpResult();
         Map<String, Object> map = new HashMap<>();
-        map.put("page", pageNo -1);
+        map.put("page", pageNo - 1);
         map.put("size", pageSize);
         JSONArray array = new JSONArray();
         JSONObject searchCondition = new JSONObject();
-        searchCondition.put("name","isDeleted");
-        searchCondition.put("op","=");
+        searchCondition.put("name", "isDeleted");
+        searchCondition.put("op", "=");
         searchCondition.put("value", BooleanEnum.FALSE.value);
         array.add(searchCondition);
         map.put("searchCondition", array.toJSONString());
@@ -966,7 +977,7 @@ public class ResourceBusiness implements IResourceBusiness {
                     resourceEnum.getResourceType(), resourceEnum.getResourceProvider());
             dto.setContent(jsonString);
             JSONObject jsonObject = JSONObject.parseObject(jsonString);
-            if(ResourceTypeEnum.TJ_APP.equals(resourceEnum)) {
+            if (ResourceTypeEnum.TJ_APP.equals(resourceEnum)) {
                 String appCode = jsonObject.getString("yyxtbh");
                 String appName = jsonObject.getString("yyxtmc");
                 dto.setAppCode(appCode);

+ 25 - 25
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/event/AppEvent.java

@@ -1,25 +1,25 @@
-package com.dragoninfo.dcuc.app.event;
-
-import com.dragoninfo.dcuc.app.dto.AppEventDTO;
-import org.springframework.context.ApplicationEvent;
-
-/**
- * 应用改变事件
- *
- * @author huangzqa
- * @date 2020/11/9
- */
-public class AppEvent extends ApplicationEvent {
-    private static final long serialVersionUID = -5110876919669369672L;
-
-    private AppEventDTO appEventDTO;
-
-    public AppEvent(AppEventDTO appEventDTO) {
-        super(appEventDTO);
-        this.appEventDTO = appEventDTO;
-    }
-
-    public AppEventDTO getAppEventDTO() {
-        return appEventDTO;
-    }
-}
+//package com.dragoninfo.dcuc.app.event;
+//
+//import com.dragoninfo.dcuc.app.dto.AppEventDTO;
+//import org.springframework.context.ApplicationEvent;
+//
+///**
+// * 应用改变事件
+// *
+// * @author huangzqa
+// * @date 2020/11/9
+// */
+//public class AppEvent extends ApplicationEvent {
+//    private static final long serialVersionUID = -5110876919669369672L;
+//
+//    private AppEventDTO appEventDTO;
+//
+//    public AppEvent(AppEventDTO appEventDTO) {
+//        super(appEventDTO);
+//        this.appEventDTO = appEventDTO;
+//    }
+//
+//    public AppEventDTO getAppEventDTO() {
+//        return appEventDTO;
+//    }
+//}

+ 105 - 105
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/event/AppEventListener.java

@@ -1,105 +1,105 @@
-package com.dragoninfo.dcuc.app.event;
-
-import com.dragoninfo.dcuc.app.config.DcucAppKafkaConfig;
-import com.dragoninfo.dcuc.app.dto.AppEventDTO;
-import com.dragoninfo.dcuc.app.entity.ApplyInfo;
-import com.dragoninfo.dcuc.app.enumresources.AppMsgTypeEnum;
-import com.dragoninfo.duceap.commons.util.kafka.KafkaServer;
-import com.dragoninfo.mq.client.model.entity.MessageInfoVo;
-import com.dragoninfo.mq.client.model.entity.RequestVo;
-import com.dragonsoft.duceap.base.entity.security.BaseSecurityUser;
-import com.dragonsoft.duceap.commons.util.date.DateUtils;
-import com.dragonsoft.duceap.commons.util.json.JsonUtils;
-import com.dragonsoft.duceap.core.entity.response.ResponseResult;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationListener;
-import org.springframework.stereotype.Component;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author huangzqa
- * @date 2020/11/9
- */
-@Slf4j
-@Component
-public class AppEventListener implements ApplicationListener<AppEvent> {
-
-    @Autowired
-    private DcucAppKafkaConfig dcucAppKafkaConfig;
-
-    @Autowired
-    private KafkaServer kafkaServer;
-
-    @Override
-    public void onApplicationEvent(AppEvent appEvent) {
-        //应用变更消息主题
-        String topic = dcucAppKafkaConfig.getAppChangeTopic();
-
-        AppEventDTO appEventDTO = appEvent.getAppEventDTO();
-        BaseSecurityUser baseSecurityUser = appEventDTO.getBaseSecurityUser();
-        ApplyInfo applyInfo = appEventDTO.getApplyInfo();
-        AppMsgTypeEnum appMsgTypeEnum = appEventDTO.getAppMsgTypeEnum();
-        String content = appEventDTO.getContent();
-
-        log.info("消息发送参数:topic:{},content:{},applyInfo:{}", topic, content, applyInfo);
-
-        // 转换为 map
-        Map<String, String> stringStringMap = appToMap(applyInfo, appMsgTypeEnum);
-        List<Map<String, String>> infoSet = Collections.singletonList(stringStringMap);
-
-        MessageInfoVo messageInfoVo = new MessageInfoVo(baseSecurityUser, "应用信息变更", content, topic);
-        messageInfoVo.setInfoSet(infoSet);
-
-        List<MessageInfoVo> messages = Collections.singletonList(messageInfoVo);
-
-        RequestVo requestVo = new RequestVo();
-        requestVo.setTopic(topic);
-        requestVo.setAppKey(dcucAppKafkaConfig.getAppKey());
-        requestVo.setAppSecret(dcucAppKafkaConfig.getAppSecret());
-        requestVo.setMessages(messages);
-
-        ResponseResult result = kafkaServer.send(requestVo, dcucAppKafkaConfig.getServer());
-        log.info("Send result: {}", JsonUtils.toJSONString(result));
-    }
-
-    /**
-     * 将应用转换为map
-     *
-     * @param applyInfo      应用信息
-     * @param appMsgTypeEnum 操作类型
-     * @return map
-     */
-    private Map<String, String> appToMap(ApplyInfo applyInfo, AppMsgTypeEnum appMsgTypeEnum) {
-
-        Map<String, String> map = new HashMap<>();
-        map.put("OPERATE_TYPE", appMsgTypeEnum.getValue());
-        map.put("ID", applyInfo.getId());
-        map.put("APPLY_NAME", applyInfo.getApplyName());
-        map.put("APPLY_CODE", applyInfo.getApplyCode());
-        map.put("APPLY_STATUS", applyInfo.getApplyStatus());
-        map.put("APPLY_CATEGORY", applyInfo.getApplyCategory());
-        map.put("POLICE_SPECIES", applyInfo.getPoliceSpecies());
-        map.put("ORG_ID", applyInfo.getOrgId());
-        map.put("ORG_NAME", applyInfo.getOrgName());
-        map.put("APPLY_URL", applyInfo.getApplyUrl());
-        map.put("MANUFACTURER_ID", applyInfo.getManufacturerId());
-        map.put("MANUFACTURER_NAME", applyInfo.getManufacturerName());
-        map.put("MANAGER_DESCRIBE", applyInfo.getManagerDescribe());
-        map.put("API_KEY", applyInfo.getApiKey());
-        map.put("SECRET_KEY", applyInfo.getSecretKey());
-        map.put("DELETED", applyInfo.getDeleted());
-        map.put("REGISTRATION_TIME", DateUtils.getDateFormat(applyInfo.getRegistrationTime()));
-        map.put("SORT", applyInfo.getSort());
-        map.put("MANAGER_NAME", applyInfo.getManagerName());
-        map.put("MANAGER_PHONE", applyInfo.getManagerPhone());
-        map.put("FZR", applyInfo.getFzr());
-        map.put("FZR_PHONE", applyInfo.getFzrPhone());
-        map.put("APPLY_ICON", applyInfo.getApplyIcon());
-        return map;
-    }
-}
+//package com.dragoninfo.dcuc.app.event;
+//
+//import com.dragoninfo.dcuc.app.config.DcucAppKafkaConfig;
+//import com.dragoninfo.dcuc.app.dto.AppEventDTO;
+//import com.dragoninfo.dcuc.app.entity.ApplyInfo;
+//import com.dragoninfo.dcuc.app.enumresources.AppMsgTypeEnum;
+//import com.dragoninfo.duceap.commons.util.kafka.KafkaServer;
+//import com.dragoninfo.mq.client.model.entity.MessageInfoVo;
+//import com.dragoninfo.mq.client.model.entity.RequestVo;
+//import com.dragonsoft.duceap.base.entity.security.BaseSecurityUser;
+//import com.dragonsoft.duceap.commons.util.date.DateUtils;
+//import com.dragonsoft.duceap.commons.util.json.JsonUtils;
+//import com.dragonsoft.duceap.core.entity.response.ResponseResult;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.context.ApplicationListener;
+//import org.springframework.stereotype.Component;
+//
+//import java.util.Collections;
+//import java.util.HashMap;
+//import java.util.List;
+//import java.util.Map;
+//
+///**
+// * @author huangzqa
+// * @date 2020/11/9
+// */
+//@Slf4j
+//@Component
+//public class AppEventListener implements ApplicationListener<AppEvent> {
+//
+//    @Autowired
+//    private DcucAppKafkaConfig dcucAppKafkaConfig;
+//
+//    @Autowired
+//    private KafkaServer kafkaServer;
+//
+//    @Override
+//    public void onApplicationEvent(AppEvent appEvent) {
+//        //应用变更消息主题
+//        String topic = dcucAppKafkaConfig.getAppChangeTopic();
+//
+//        AppEventDTO appEventDTO = appEvent.getAppEventDTO();
+//        BaseSecurityUser baseSecurityUser = appEventDTO.getBaseSecurityUser();
+//        ApplyInfo applyInfo = appEventDTO.getApplyInfo();
+//        AppMsgTypeEnum appMsgTypeEnum = appEventDTO.getAppMsgTypeEnum();
+//        String content = appEventDTO.getContent();
+//
+//        log.info("消息发送参数:topic:{},content:{},applyInfo:{}", topic, content, applyInfo);
+//
+//        // 转换为 map
+//        Map<String, String> stringStringMap = appToMap(applyInfo, appMsgTypeEnum);
+//        List<Map<String, String>> infoSet = Collections.singletonList(stringStringMap);
+//
+//        MessageInfoVo messageInfoVo = new MessageInfoVo(baseSecurityUser, "应用信息变更", content, topic);
+//        messageInfoVo.setInfoSet(infoSet);
+//
+//        List<MessageInfoVo> messages = Collections.singletonList(messageInfoVo);
+//
+//        RequestVo requestVo = new RequestVo();
+//        requestVo.setTopic(topic);
+//        requestVo.setAppKey(dcucAppKafkaConfig.getAppKey());
+//        requestVo.setAppSecret(dcucAppKafkaConfig.getAppSecret());
+//        requestVo.setMessages(messages);
+//
+//        ResponseResult result = kafkaServer.send(requestVo, dcucAppKafkaConfig.getServer());
+//        log.info("Send result: {}", JsonUtils.toJSONString(result));
+//    }
+//
+//    /**
+//     * 将应用转换为map
+//     *
+//     * @param applyInfo      应用信息
+//     * @param appMsgTypeEnum 操作类型
+//     * @return map
+//     */
+//    private Map<String, String> appToMap(ApplyInfo applyInfo, AppMsgTypeEnum appMsgTypeEnum) {
+//
+//        Map<String, String> map = new HashMap<>();
+//        map.put("OPERATE_TYPE", appMsgTypeEnum.getValue());
+//        map.put("ID", applyInfo.getId());
+//        map.put("APPLY_NAME", applyInfo.getApplyName());
+//        map.put("APPLY_CODE", applyInfo.getApplyCode());
+//        map.put("APPLY_STATUS", applyInfo.getApplyStatus());
+//        map.put("APPLY_CATEGORY", applyInfo.getApplyCategory());
+//        map.put("POLICE_SPECIES", applyInfo.getPoliceSpecies());
+//        map.put("ORG_CODE", applyInfo.getOrgCode());
+//        map.put("ORG_NAME", applyInfo.getOrgName());
+//        map.put("APPLY_URL", applyInfo.getApplyUrl());
+//        map.put("MANUFACTURER_ID", applyInfo.getManufacturerId());
+//        map.put("MANUFACTURER_NAME", applyInfo.getManufacturerName());
+//        map.put("MANAGER_DESCRIBE", applyInfo.getManagerDescribe());
+//        map.put("API_KEY", applyInfo.getApiKey());
+//        map.put("SECRET_KEY", applyInfo.getSecretKey());
+//        map.put("DELETED", applyInfo.getDeleted());
+//        map.put("REGISTRATION_TIME", DateUtils.getDateFormat(applyInfo.getRegistrationTime()));
+//        map.put("SORT", applyInfo.getSort());
+//        map.put("MANAGER_NAME", applyInfo.getManagerName());
+//        map.put("MANAGER_PHONE", applyInfo.getManagerPhone());
+//        map.put("FZR", applyInfo.getFzr());
+//        map.put("FZR_PHONE", applyInfo.getFzrPhone());
+//        map.put("APPLY_ICON", applyInfo.getApplyIcon());
+//        return map;
+//    }
+//}

+ 45 - 45
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/event/EventPublisher.java

@@ -1,45 +1,45 @@
-package com.dragoninfo.dcuc.app.event;
-
-import com.dragoninfo.dcuc.app.dto.AppEventDTO;
-import com.dragoninfo.dcuc.app.dto.ManufacturerEventDTO;
-import com.dragoninfo.dcuc.app.dto.UpdateUserInfoEventDTO;
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Component;
-
-/**
- * 服务事件发布类
- *
- * @author huangzqa
- * @date 2020/11/9
- */
-@Component
-public class EventPublisher implements ApplicationContextAware {
-
-    private ApplicationContext applicationContext;
-
-    @Async
-    public void publishAppEvent(AppEventDTO appEventDTO) {
-        AppEvent appEvent = new AppEvent(appEventDTO);
-        applicationContext.publishEvent(appEvent);
-    }
-
-    @Async
-    public void publishManufacturerEvent(ManufacturerEventDTO manufacturerEventDTO) {
-        ManufacturerEvent manufacturerEvent = new ManufacturerEvent(manufacturerEventDTO);
-        applicationContext.publishEvent(manufacturerEvent);
-    }
-
-    @Async
-    public void publishUpdateUserInfoEvent(UpdateUserInfoEventDTO updateUserInfoEventDTO) {
-        UpdateUserInfoEvent updateUserInfoEvent = new UpdateUserInfoEvent(updateUserInfoEventDTO);
-        applicationContext.publishEvent(updateUserInfoEvent);
-    }
-
-    @Override
-    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
-        this.applicationContext = applicationContext;
-    }
-}
+//package com.dragoninfo.dcuc.app.event;
+//
+//import com.dragoninfo.dcuc.app.dto.AppEventDTO;
+//import com.dragoninfo.dcuc.app.dto.ManufacturerEventDTO;
+//import com.dragoninfo.dcuc.app.dto.UpdateUserInfoEventDTO;
+//import org.springframework.beans.BeansException;
+//import org.springframework.context.ApplicationContext;
+//import org.springframework.context.ApplicationContextAware;
+//import org.springframework.scheduling.annotation.Async;
+//import org.springframework.stereotype.Component;
+//
+///**
+// * 服务事件发布类
+// *
+// * @author huangzqa
+// * @date 2020/11/9
+// */
+//@Component
+//public class EventPublisher implements ApplicationContextAware {
+//
+//    private ApplicationContext applicationContext;
+//
+//    @Async
+//    public void publishAppEvent(AppEventDTO appEventDTO) {
+//        AppEvent appEvent = new AppEvent(appEventDTO);
+//        applicationContext.publishEvent(appEvent);
+//    }
+//
+//    @Async
+//    public void publishManufacturerEvent(ManufacturerEventDTO manufacturerEventDTO) {
+//        ManufacturerEvent manufacturerEvent = new ManufacturerEvent(manufacturerEventDTO);
+//        applicationContext.publishEvent(manufacturerEvent);
+//    }
+//
+//    @Async
+//    public void publishUpdateUserInfoEvent(UpdateUserInfoEventDTO updateUserInfoEventDTO) {
+//        UpdateUserInfoEvent updateUserInfoEvent = new UpdateUserInfoEvent(updateUserInfoEventDTO);
+//        applicationContext.publishEvent(updateUserInfoEvent);
+//    }
+//
+//    @Override
+//    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+//        this.applicationContext = applicationContext;
+//    }
+//}

+ 25 - 25
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/event/ManufacturerEvent.java

@@ -1,25 +1,25 @@
-package com.dragoninfo.dcuc.app.event;
-
-import com.dragoninfo.dcuc.app.dto.ManufacturerEventDTO;
-import org.springframework.context.ApplicationEvent;
-
-/**
- * 厂商改变事件
- *
- * @author huangzqa
- * @date 2020/11/10
- */
-public class ManufacturerEvent extends ApplicationEvent {
-    private static final long serialVersionUID = -3738969636861738884L;
-
-    private ManufacturerEventDTO manufacturerEventDTO;
-
-    public ManufacturerEvent(ManufacturerEventDTO manufacturerEventDTO) {
-        super(manufacturerEventDTO);
-        this.manufacturerEventDTO = manufacturerEventDTO;
-    }
-
-    public ManufacturerEventDTO getManufacturerEventDTO() {
-        return manufacturerEventDTO;
-    }
-}
+//package com.dragoninfo.dcuc.app.event;
+//
+//import com.dragoninfo.dcuc.app.dto.ManufacturerEventDTO;
+//import org.springframework.context.ApplicationEvent;
+//
+///**
+// * 厂商改变事件
+// *
+// * @author huangzqa
+// * @date 2020/11/10
+// */
+//public class ManufacturerEvent extends ApplicationEvent {
+//    private static final long serialVersionUID = -3738969636861738884L;
+//
+//    private ManufacturerEventDTO manufacturerEventDTO;
+//
+//    public ManufacturerEvent(ManufacturerEventDTO manufacturerEventDTO) {
+//        super(manufacturerEventDTO);
+//        this.manufacturerEventDTO = manufacturerEventDTO;
+//    }
+//
+//    public ManufacturerEventDTO getManufacturerEventDTO() {
+//        return manufacturerEventDTO;
+//    }
+//}

+ 85 - 85
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/event/ManufacturerEventListener.java

@@ -1,85 +1,85 @@
-package com.dragoninfo.dcuc.app.event;
-
-import com.dragoninfo.dcuc.app.config.DcucAppKafkaConfig;
-import com.dragoninfo.dcuc.app.dto.ManufacturerEventDTO;
-import com.dragoninfo.dcuc.app.entity.ManufacturerInfo;
-import com.dragoninfo.dcuc.app.enumresources.ManufacturerMsgTypeEnum;
-import com.dragoninfo.duceap.commons.util.kafka.KafkaServer;
-import com.dragoninfo.mq.client.model.entity.MessageInfoVo;
-import com.dragoninfo.mq.client.model.entity.RequestVo;
-import com.dragonsoft.duceap.base.entity.security.BaseSecurityUser;
-import com.dragonsoft.duceap.commons.util.json.JsonUtils;
-import com.dragonsoft.duceap.core.entity.response.ResponseResult;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationListener;
-import org.springframework.stereotype.Component;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author huangzqa
- * @date 2020/11/10
- */
-@Slf4j
-@Component
-public class ManufacturerEventListener implements ApplicationListener<ManufacturerEvent> {
-
-    @Autowired
-    private DcucAppKafkaConfig dcucAppKafkaConfig;
-
-    @Autowired
-    private KafkaServer kafkaServer;
-
-    @Override
-    public void onApplicationEvent(ManufacturerEvent event) {
-        boolean manufacturerChangeEnable = dcucAppKafkaConfig.getManufacturerChangeEnable();
-        if (manufacturerChangeEnable) {
-            ManufacturerEventDTO manufacturerEventDTO = event.getManufacturerEventDTO();
-            BaseSecurityUser baseSecurityUser = manufacturerEventDTO.getBaseSecurityUser();
-            ManufacturerInfo manufacturerInfo = manufacturerEventDTO.getManufacturerInfo();
-            String content = manufacturerEventDTO.getContent();
-            ManufacturerMsgTypeEnum manufacturerMsgTypeEnum = manufacturerEventDTO.getManufacturerMsgTypeEnum();
-
-            String topic = dcucAppKafkaConfig.getManufacturerChangeTopic();
-
-            log.info("消息发送参数:topic:{},content:{},manufacturerInfo:{}", topic, content, manufacturerInfo);
-
-            // 转换为 map
-            Map<String, String> stringStringMap = manufactureTorMap(manufacturerInfo, manufacturerMsgTypeEnum);
-            List<Map<String, String>> infoSet = Collections.singletonList(stringStringMap);
-
-            MessageInfoVo messageInfoVo = new MessageInfoVo(baseSecurityUser, "厂商信息变更", content, topic);
-            messageInfoVo.setInfoSet(infoSet);
-
-            List<MessageInfoVo> messages = Collections.singletonList(messageInfoVo);
-
-            RequestVo requestVo = new RequestVo();
-            requestVo.setTopic(topic);
-            requestVo.setAppKey(dcucAppKafkaConfig.getAppKey());
-            requestVo.setAppSecret(dcucAppKafkaConfig.getAppSecret());
-            requestVo.setMessages(messages);
-            log.info(Thread.currentThread().getName());
-            ResponseResult result = kafkaServer.send(requestVo, dcucAppKafkaConfig.getServer());
-            log.info("Send result: {}", JsonUtils.toJSONString(result));
-        }
-
-    }
-
-    public Map<String, String> manufactureTorMap(ManufacturerInfo manufacturerInfo, ManufacturerMsgTypeEnum manufacturerMsgTypeEnum) {
-        Map<String, String> map = new HashMap<>();
-        map.put("OPERATE_TYPE", manufacturerMsgTypeEnum.getValue());
-        map.put("ID", manufacturerInfo.getId());
-        map.put("MANUFACTURER_NAME", manufacturerInfo.getManufacturerName());
-        map.put("NAME", manufacturerInfo.getName());
-        map.put("IDCARD", manufacturerInfo.getIdcard());
-        map.put("PHONE", manufacturerInfo.getPhone());
-        map.put("CODE", manufacturerInfo.getCode());
-        map.put("ADDRESS", manufacturerInfo.getAddress());
-        map.put("DELETED", manufacturerInfo.getDeleted());
-        return map;
-    }
-}
+//package com.dragoninfo.dcuc.app.event;
+//
+//import com.dragoninfo.dcuc.app.config.DcucAppKafkaConfig;
+//import com.dragoninfo.dcuc.app.dto.ManufacturerEventDTO;
+//import com.dragoninfo.dcuc.app.entity.ManufacturerInfo;
+//import com.dragoninfo.dcuc.app.enumresources.ManufacturerMsgTypeEnum;
+//import com.dragoninfo.duceap.commons.util.kafka.KafkaServer;
+//import com.dragoninfo.mq.client.model.entity.MessageInfoVo;
+//import com.dragoninfo.mq.client.model.entity.RequestVo;
+//import com.dragonsoft.duceap.base.entity.security.BaseSecurityUser;
+//import com.dragonsoft.duceap.commons.util.json.JsonUtils;
+//import com.dragonsoft.duceap.core.entity.response.ResponseResult;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.context.ApplicationListener;
+//import org.springframework.stereotype.Component;
+//
+//import java.util.Collections;
+//import java.util.HashMap;
+//import java.util.List;
+//import java.util.Map;
+//
+///**
+// * @author huangzqa
+// * @date 2020/11/10
+// */
+//@Slf4j
+//@Component
+//public class ManufacturerEventListener implements ApplicationListener<ManufacturerEvent> {
+//
+//    @Autowired
+//    private DcucAppKafkaConfig dcucAppKafkaConfig;
+//
+//    @Autowired
+//    private KafkaServer kafkaServer;
+//
+//    @Override
+//    public void onApplicationEvent(ManufacturerEvent event) {
+//        boolean manufacturerChangeEnable = dcucAppKafkaConfig.getManufacturerChangeEnable();
+//        if (manufacturerChangeEnable) {
+//            ManufacturerEventDTO manufacturerEventDTO = event.getManufacturerEventDTO();
+//            BaseSecurityUser baseSecurityUser = manufacturerEventDTO.getBaseSecurityUser();
+//            ManufacturerInfo manufacturerInfo = manufacturerEventDTO.getManufacturerInfo();
+//            String content = manufacturerEventDTO.getContent();
+//            ManufacturerMsgTypeEnum manufacturerMsgTypeEnum = manufacturerEventDTO.getManufacturerMsgTypeEnum();
+//
+//            String topic = dcucAppKafkaConfig.getManufacturerChangeTopic();
+//
+//            log.info("消息发送参数:topic:{},content:{},manufacturerInfo:{}", topic, content, manufacturerInfo);
+//
+//            // 转换为 map
+//            Map<String, String> stringStringMap = manufactureTorMap(manufacturerInfo, manufacturerMsgTypeEnum);
+//            List<Map<String, String>> infoSet = Collections.singletonList(stringStringMap);
+//
+//            MessageInfoVo messageInfoVo = new MessageInfoVo(baseSecurityUser, "厂商信息变更", content, topic);
+//            messageInfoVo.setInfoSet(infoSet);
+//
+//            List<MessageInfoVo> messages = Collections.singletonList(messageInfoVo);
+//
+//            RequestVo requestVo = new RequestVo();
+//            requestVo.setTopic(topic);
+//            requestVo.setAppKey(dcucAppKafkaConfig.getAppKey());
+//            requestVo.setAppSecret(dcucAppKafkaConfig.getAppSecret());
+//            requestVo.setMessages(messages);
+//            log.info(Thread.currentThread().getName());
+//            ResponseResult result = kafkaServer.send(requestVo, dcucAppKafkaConfig.getServer());
+//            log.info("Send result: {}", JsonUtils.toJSONString(result));
+//        }
+//
+//    }
+//
+//    public Map<String, String> manufactureTorMap(ManufacturerInfo manufacturerInfo, ManufacturerMsgTypeEnum manufacturerMsgTypeEnum) {
+//        Map<String, String> map = new HashMap<>();
+//        map.put("OPERATE_TYPE", manufacturerMsgTypeEnum.getValue());
+//        map.put("ID", manufacturerInfo.getId());
+//        map.put("MANUFACTURER_NAME", manufacturerInfo.getManufacturerName());
+//        map.put("NAME", manufacturerInfo.getName());
+//        map.put("IDCARD", manufacturerInfo.getIdcard());
+//        map.put("PHONE", manufacturerInfo.getPhone());
+//        map.put("CODE", manufacturerInfo.getCode());
+//        map.put("ADDRESS", manufacturerInfo.getAddress());
+//        map.put("DELETED", manufacturerInfo.getDeleted());
+//        return map;
+//    }
+//}

+ 24 - 24
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/event/UpdateUserInfoEvent.java

@@ -1,24 +1,24 @@
-package com.dragoninfo.dcuc.app.event;
-
-import com.dragoninfo.dcuc.app.dto.UpdateUserInfoEventDTO;
-import org.springframework.context.ApplicationEvent;
-
-/**
- * @author huangzqa
- * @date 2020/11/10
- */
-public class UpdateUserInfoEvent extends ApplicationEvent {
-
-    private static final long serialVersionUID = 448843421966193765L;
-
-    private UpdateUserInfoEventDTO updateUserInfoEventDTO;
-
-    public UpdateUserInfoEvent(UpdateUserInfoEventDTO updateUserInfoEventDTO) {
-        super(updateUserInfoEventDTO);
-        this.updateUserInfoEventDTO = updateUserInfoEventDTO;
-    }
-
-    public UpdateUserInfoEventDTO getUpdateUserInfoEventDTO() {
-        return updateUserInfoEventDTO;
-    }
-}
+//package com.dragoninfo.dcuc.app.event;
+//
+//import com.dragoninfo.dcuc.app.dto.UpdateUserInfoEventDTO;
+//import org.springframework.context.ApplicationEvent;
+//
+///**
+// * @author huangzqa
+// * @date 2020/11/10
+// */
+//public class UpdateUserInfoEvent extends ApplicationEvent {
+//
+//    private static final long serialVersionUID = 448843421966193765L;
+//
+//    private UpdateUserInfoEventDTO updateUserInfoEventDTO;
+//
+//    public UpdateUserInfoEvent(UpdateUserInfoEventDTO updateUserInfoEventDTO) {
+//        super(updateUserInfoEventDTO);
+//        this.updateUserInfoEventDTO = updateUserInfoEventDTO;
+//    }
+//
+//    public UpdateUserInfoEventDTO getUpdateUserInfoEventDTO() {
+//        return updateUserInfoEventDTO;
+//    }
+//}

+ 43 - 43
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/event/UpdateUserInfoEventListener.java

@@ -1,43 +1,43 @@
-package com.dragoninfo.dcuc.app.event;
-
-import com.dragoninfo.dcuc.app.dto.UpdateUserInfoEventDTO;
-import com.dragoninfo.dcuc.app.entity.ApplyInfo;
-import com.dragoninfo.dcuc.org.entity.OrgInfo;
-import com.dragoninfo.dcuc.org.facade.IOrgInfoFacade;
-import com.dragoninfo.dcuc.user.user.facade.IUserInfoFacade;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationListener;
-import org.springframework.stereotype.Component;
-
-/**
- * @author huangzqa
- * @date 2020/11/10
- */
-@Slf4j
-@Component
-public class UpdateUserInfoEventListener implements ApplicationListener<UpdateUserInfoEvent> {
-
-    @Autowired
-    private IOrgInfoFacade orgInfoFacade;
-
-    @Autowired
-    private IUserInfoFacade userInfoFacade;
-
-    @Override
-    public void onApplicationEvent(UpdateUserInfoEvent event) {
-        UpdateUserInfoEventDTO updateUserInfoEventDTO = event.getUpdateUserInfoEventDTO();
-        ApplyInfo applyInfo = updateUserInfoEventDTO.getApplyInfo();
-
-        String applyInfoId = applyInfo.getId();
-        String orgId = applyInfo.getOrgId();
-        // 获取机构信息
-        OrgInfo orgInfo = orgInfoFacade.detail(orgId);
-        String fullName = orgInfo.getFullName();
-        String code = orgInfo.getCode();
-        // todo 使用消息
-        log.info("更新施工人员冗余信息orgId:{},fullName:{},code:{},appId:{}", orgId, fullName, code, applyInfoId);
-
-        userInfoFacade.updateExternalPersonnel(orgId, fullName, code, applyInfoId);
-    }
-}
+//package com.dragoninfo.dcuc.app.event;
+//
+//import com.dragoninfo.dcuc.app.dto.UpdateUserInfoEventDTO;
+//import com.dragoninfo.dcuc.app.entity.ApplyInfo;
+//import com.dragoninfo.dcuc.org.entity.OrgInfo;
+//import com.dragoninfo.dcuc.org.facade.IOrgInfoFacade;
+//import com.dragoninfo.dcuc.user.user.facade.IUserInfoFacade;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.context.ApplicationListener;
+//import org.springframework.stereotype.Component;
+//
+///**
+// * @author huangzqa
+// * @date 2020/11/10
+// */
+//@Slf4j
+//@Component
+//public class UpdateUserInfoEventListener implements ApplicationListener<UpdateUserInfoEvent> {
+//
+//    @Autowired
+//    private IOrgInfoFacade orgInfoFacade;
+//
+//    @Autowired
+//    private IUserInfoFacade userInfoFacade;
+//
+//    @Override
+//    public void onApplicationEvent(UpdateUserInfoEvent event) {
+//        UpdateUserInfoEventDTO updateUserInfoEventDTO = event.getUpdateUserInfoEventDTO();
+//        ApplyInfo applyInfo = updateUserInfoEventDTO.getApplyInfo();
+//
+//        String applyInfoId = applyInfo.getId();
+//        String orgId = applyInfo.getOrgId();
+//        // 获取机构信息
+//        OrgInfo orgInfo = orgInfoFacade.detail(orgId);
+//        String fullName = orgInfo.getFullName();
+//        String code = orgInfo.getCode();
+//        // todo 使用消息
+//        log.info("更新施工人员冗余信息orgId:{},fullName:{},code:{},appId:{}", orgId, fullName, code, applyInfoId);
+//
+//        userInfoFacade.updateExternalPersonnel(orgId, fullName, code, applyInfoId);
+//    }
+//}

+ 10 - 5
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/ApplyInfoFacade.java

@@ -3,7 +3,6 @@ package com.dragoninfo.dcuc.app.facade;
 import com.dragoninfo.dcuc.app.dto.ApplyInfoDTO;
 import com.dragoninfo.dcuc.app.entity.ApplyInfo;
 import com.dragoninfo.dcuc.app.service.IApplyInfoService;
-import com.dragoninfo.dcuc.user.user.enumresources.OperateTypeEnum;
 import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.entity.search.SearchDTO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -76,6 +75,12 @@ public class ApplyInfoFacade implements IApplyInfoFacade {
         return applyInfoService.appInfoSearch(searchDTO);
     }
 
+    @Override
+    public ResponseStatus updateOrgInfos(String targetOrgCode, String fullName, String code) {
+        applyInfoService.updateOrgInfos(targetOrgCode, fullName, code);
+        return ResponseStatus.success();
+    }
+
     @Override
     public String getNewSort() {
         return applyInfoService.getNewSort();
@@ -116,10 +121,10 @@ public class ApplyInfoFacade implements IApplyInfoFacade {
         return applyInfoService.isRepeat(applyInfo);
     }
 
-    @Override
-    public List<String> getAppIdsByOrgId(String orgId) {
-        return applyInfoService.getAppIdsByOrgId(orgId);
-    }
+//    @Override
+//    public List<String> getAppIdsByOrgId(String orgId) {
+//        return applyInfoService.getAppIdsByOrgId(orgId);
+//    }
 
     @Override
     public List<ApplyInfo> fzxmList(String userId) {

+ 0 - 9
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/mapper/ApplyInfoMapper.java

@@ -2,7 +2,6 @@ package com.dragoninfo.dcuc.app.mapper;
 
 import com.dragoninfo.dcuc.app.entity.ApplyInfo;
 import com.dragonsoft.duceap.mybaitsplus.core.BaseMybatisMapper;
-import org.apache.ibatis.annotations.Param;
 
 /**
  * @author huangzqa
@@ -17,12 +16,4 @@ public interface ApplyInfoMapper extends BaseMybatisMapper<ApplyInfo> {
      */
     String getNewSort();
 
-    /**
-     * 根据机构信息更新用户信息
-     *
-     * @param orgId   组织ID
-     * @param orgName 组织名称
-     */
-    void updateOrgInfo(@Param("orgId") String orgId, @Param("orgName") String orgName);
-
 }

+ 17 - 17
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/IApplyInfoService.java

@@ -4,7 +4,6 @@ import com.dragoninfo.dcuc.app.dto.ApplyInfoDTO;
 import com.dragoninfo.dcuc.app.entity.ApplyInfo;
 import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.entity.search.SearchDTO;
-import com.dragonsoft.duceap.core.service.IBaseService;
 import org.springframework.data.domain.Page;
 
 import java.util.List;
@@ -15,7 +14,7 @@ import java.util.Map;
  * @author yica huangzqa
  * @date 2018/8/7
  */
-public interface IApplyInfoService extends IBaseService<ApplyInfo, String> {
+public interface IApplyInfoService {
 
     /**
      * 详情
@@ -111,21 +110,6 @@ public interface IApplyInfoService extends IBaseService<ApplyInfo, String> {
      */
     ResponseStatus isRepeat(ApplyInfo applyInfo);
 
-    /**
-     * 应用机构信息变更
-     *
-     * @param orgId   机构ID
-     * @param orgName 机构名称
-     */
-    void updateOrgInfos(String orgId, String orgName);
-
-    /**
-     * 根据机构ID获取所有应用ID
-     *
-     * @param orgId 机构id
-     * @return 应用ID集合
-     */
-    List<String> getAppIdsByOrgId(String orgId);
 
     /**
      * 根据施工人员id查看该人员负责的应用
@@ -227,6 +211,7 @@ public interface IApplyInfoService extends IBaseService<ApplyInfo, String> {
 
     /**
      * 根据应用url获取应用信息
+     *
      * @param applyUrl
      * @return
      */
@@ -234,11 +219,16 @@ public interface IApplyInfoService extends IBaseService<ApplyInfo, String> {
 
     /**
      * 获取机构id集合
+     *
      * @param appCodes 应用code集合
      * @return
      */
     List<ApplyInfo> getIdsByCodes(List<String> appCodes);
 
+    ApplyInfo getOne(String id);
+
+    List<ApplyInfo> findAll();
+
     ResponseStatus impExcel(String fileId);
 
     /**
@@ -257,8 +247,18 @@ public interface IApplyInfoService extends IBaseService<ApplyInfo, String> {
 
     /**
      * 条件查询-不分页
+     *
      * @param searchDTO
      * @return
      */
     List<ApplyInfo> appInfoSearch(SearchDTO searchDTO);
+
+    /**
+     * 更新机构信息
+     *
+     * @param targetOrgCode 目标机构代码
+     * @param fullName      完整名称
+     * @param code          机构代码
+     */
+    void updateOrgInfos(String targetOrgCode, String fullName, String code);
 }

+ 7 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/IApplyOauthService.java

@@ -38,4 +38,11 @@ public interface IApplyOauthService extends IBaseService<ApplyOauth, String> {
      */
     List<ApplyOauth> applyOauthList(Map<String, Object> map);
 
+    /**
+     * 根据Appid获取应用密钥
+     * @param applyId
+     * @return
+     */
+    ApplyOauth getByAppId(String applyId);
+
 }

+ 310 - 280
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/ApplyInfoServiceImpl.java

@@ -1,16 +1,13 @@
 package com.dragoninfo.dcuc.app.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.dragoninfo.dcuc.app.dto.AppEventDTO;
 import com.dragoninfo.dcuc.app.dto.ApplyInfoDTO;
-import com.dragoninfo.dcuc.app.dto.UpdateUserInfoEventDTO;
 import com.dragoninfo.dcuc.app.entity.ApplyInfo;
 import com.dragoninfo.dcuc.app.entity.ManufacturerInfo;
-import com.dragoninfo.dcuc.app.enumresources.AppMsgTypeEnum;
-import com.dragoninfo.dcuc.app.event.EventPublisher;
 import com.dragoninfo.dcuc.app.mapper.ApplyInfoMapper;
 import com.dragoninfo.dcuc.app.service.IApplyInfoService;
 import com.dragoninfo.dcuc.app.service.IApplyOauthService;
@@ -21,15 +18,13 @@ import com.dragoninfo.dcuc.common.utils.LangUtil;
 import com.dragoninfo.dcuc.duceap.facade.IDuceapUploadFacade;
 import com.dragoninfo.dcuc.duceap.upload.dto.DocContentDTO;
 import com.dragoninfo.dcuc.duceap.upload.dto.FileUploadDTO;
-import com.dragoninfo.dcuc.org.entity.OrgInfo;
-import com.dragoninfo.dcuc.org.facade.IOrgInfoFacade;
+import com.dragoninfo.dcuc.user.entity.org.OrgInfo;
+import com.dragoninfo.dcuc.user.facade.org.IOrgInfoFacade;
 import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.entity.search.SearchDTO;
 import com.dragonsoft.duceap.base.entity.uploader.FileHolder;
 import com.dragonsoft.duceap.base.enums.BooleanEnum;
-import com.dragonsoft.duceap.core.context.ContextUtils;
 import com.dragonsoft.duceap.core.search.Searchable;
-import com.dragonsoft.duceap.mybaitsplus.core.services.BaseMybatisService;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -39,6 +34,9 @@ import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
@@ -52,26 +50,21 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * @author huangzqa
  * @date 2020/10/27
  */
-@Transactional(rollbackFor = Exception.class)
+@CacheConfig(cacheNames = "DCUC-APP-APP")
 @Service
-public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String> implements IApplyInfoService {
+public class ApplyInfoServiceImpl implements IApplyInfoService {
 
-    private final ApplyInfoMapper applyInfoMapper;
+    @Autowired
+    private ApplyInfoMapper applyInfoMapper;
 
     @Resource
     private IDuceapUploadFacade uploadhandler;
 
-    public ApplyInfoServiceImpl(ApplyInfoMapper applyInfoMapper) {
-        super(applyInfoMapper);
-        this.applyInfoMapper = applyInfoMapper;
-    }
-
     @Autowired
     private IManufacturerInfoService manufacturerInfoService;
 
@@ -81,135 +74,112 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
     @Autowired
     private IDuceapUploadFacade uploadHandler;
 
-    @Autowired
-    private EventPublisher eventPublisher;
-
     @Autowired
     private IPermissionNotificationFacade permissionNotificationFacade;
 
     @Autowired
     private IOrgInfoFacade orgInfoFacade;
 
+    @Cacheable(key = "targetClass +#p0")
     @Override
     public ApplyInfo applyDetail(String id) {
         return applyInfoMapper.selectById(id);
     }
 
+    @Cacheable(key = "targetClass + methodName+#p0")
     @Override
     public Page<ApplyInfo> applyInfoPage(SearchDTO searchDTO) {
 
         Searchable searchable = Searchable.toSearchable(searchDTO);
         searchable.addSort(Sort.Direction.DESC, "SORT");
         searchable.addSort(Sort.Direction.DESC, "REGISTRATION_TIME");
-      //  searchable.addSearchFilter("deleted", SearchOperator.eq, BooleanEnum.TRUE.getValue());
         return applyInfoMapper.pagingBySearchable(searchable);
     }
 
-    @Override
-    public ApplyInfo saveAppIy(ApplyInfoDTO applyInfoDTO) {
-        ApplyInfo applyInfo = new ApplyInfo();
-        BeanUtils.copyProperties(applyInfoDTO, applyInfo);
-
-        List<FileHolder> file = applyInfoDTO.getFile();
-
-        String manufacturerId = applyInfo.getManufacturerId();
-        if(StringUtils.isNotBlank(manufacturerId)) {
-            ManufacturerInfo manufacturerInfo = manufacturerInfoService.getOne(manufacturerId);
-            if (manufacturerInfo != null) {
-                String manufacturerName = manufacturerInfo.getManufacturerName();
-                applyInfo.setManufacturerName(manufacturerName);
-            }
+    /**
+     * 校验数据是否为空
+     *
+     * @param cell
+     * @param i
+     * @param row
+     */
+    private static void checkServiceResourceCellData(Cell cell, int i, int row) {
+        if (!(cell == null || StringUtils.isEmpty(cell.getStringCellValue()))) {
+            return;
         }
-
-        String applyCode = applyInfo.getApplyCode();
-        String secretKey = getApiKeys(applyCode);
-        String apiKey = getApiKeys(applyCode);
-
-        applyInfo.setSecretKey(secretKey);
-        applyInfo.setApiKey(apiKey);
-        applyInfo.setDeleted(BooleanEnum.FALSE.getValue());
-
-        applyInfoMapper.insert(applyInfo);
-        // 保存 appId
-        applyOauthService.saveOauth(applyInfo);
-        String id = applyInfo.getId();
-        // 保存图片
-        if(null != file) {
-            saveOrUpdateFile(id, file);
+        switch (i) {
+            case 0:
+                throw new NumberFormatException("第" + (row + 1) + "行'应用系统名称'为空!");
+            case 1:
+                throw new NumberFormatException("第" + (row + 1) + "行'应用系统编号'为空!");
+            case 2:
+                throw new NumberFormatException("第" + (row + 1) + "行'应用系统英文名称'为空!");
+            case 3:
+                throw new NumberFormatException("第" + (row + 1) + "行'系统在用标识'为空!");
+            default:
+                break;
         }
 
-        sendMessage(applyInfo, "应用表信息新增", AppMsgTypeEnum.SAVE);
-
-        return applyInfo;
     }
 
-
-    @Override
-    public ApplyInfo updateApply(ApplyInfoDTO applyInfoDTO) {
-        ApplyInfo applyInfo = new ApplyInfo();
-        BeanUtils.copyProperties(applyInfoDTO, applyInfo);
-        List<FileHolder> file = applyInfoDTO.getFile();
-
-        String manufacturerId = applyInfo.getManufacturerId();
-        if (!StringUtils.isEmpty(manufacturerId)) {
-            ManufacturerInfo manufacturerInfo = manufacturerInfoService.getOne(manufacturerId);
-            if (manufacturerInfo != null) {
-                String manufacturerName = manufacturerInfo.getManufacturerName();
-                applyInfo.setManufacturerName(manufacturerName);
-            }
+    /**
+     * 校验列头
+     *
+     * @param r
+     */
+    private static void checkRowTitle(Row r) {
+        if (!r.getCell(0).getStringCellValue().equals("应用系统名称")) {
+            throw new NumberFormatException("缺少'应用系统名称'列!");
         }
-
-        String id = applyInfo.getId();
-        String orgId = applyInfo.getOrgId();
-        //旧应用
-        ApplyInfo oldApplyInfo = applyInfoMapper.selectById(id);
-        if(null == oldApplyInfo) {
-            return null;
+        if (!r.getCell(1).getStringCellValue().equals("应用系统编号")) {
+            throw new NumberFormatException("缺少'应用系统编号'列!");
         }
-        String oldOrgId = oldApplyInfo.getOrgId();
-
-        applyInfo.setDeleted(BooleanEnum.FALSE.getValue());
-
-        applyOauthService.updateOauth(applyInfo);
-        applyInfoMapper.updateById(applyInfo);
-
-        // 更新施工人员冗余信息
-        if (StringUtils.isNotBlank(orgId) && StringUtils.isNotBlank(oldOrgId) && !oldOrgId.equals(orgId)) {
-            eventPublisher.publishUpdateUserInfoEvent(new UpdateUserInfoEventDTO(applyInfo));
+        if (!r.getCell(2).getStringCellValue().equals("应用系统英文名称")) {
+            throw new NumberFormatException("缺少'应用系统英文名称'列!");
         }
-        if (CollectionUtils.isNotEmpty(file)) {
-            saveOrUpdateFile(id, file);
+        if (!r.getCell(3).getStringCellValue().equals("系统在用标识")) {
+            throw new NumberFormatException("缺少'系统在用标识'列!");
         }
-
-        //发送消息
-        sendMessage(applyInfo, "应用表信息修改", AppMsgTypeEnum.UPDATE);
-        //权限变更通知
-        boolean isNotification = StringUtils.isNotEmpty(oldApplyInfo.getApplyUrl())&&( !oldApplyInfo.getApplyUrl().equals(applyInfo.getApplyUrl())
-                || !oldApplyInfo.getApplyStatus().equals(applyInfo.getApplyStatus()));
-        // 应用 url 当发送变更时进行通知
-        if (isNotification) {
-            permissionNotificationFacade.sendAppAppUpdate(id);
+        if (!r.getCell(4).getStringCellValue().equals("上线日期")) {
+            throw new NumberFormatException("缺少'上线日期'列!");
+        }
+        if (!r.getCell(5).getStringCellValue().equals("应用负责人")) {
+            throw new NumberFormatException("缺少'应用负责人'列!");
+        }
+        if (!r.getCell(6).getStringCellValue().equals("应用系统事权单位代码")) {
+            throw new NumberFormatException("缺少'应用系统事权单位代码'列!");
+        }
+        if (!r.getCell(7).getStringCellValue().equals("应用系统管理单位名称")) {
+            throw new NumberFormatException("缺少'应用系统管理单位名称'列!");
+        }
+        if (!r.getCell(8).getStringCellValue().equals("应用系统运维单位名称")) {
+            throw new NumberFormatException("缺少'应用系统运维单位名称'列!");
+        }
+        if (!r.getCell(9).getStringCellValue().equals("应用系统说明")) {
+            throw new NumberFormatException("缺少'应用系统说明'列!");
         }
-        return applyInfo;
     }
 
+    @CacheEvict(allEntries = true)
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void del(String id) {
         ApplyInfo applyInfo = applyInfoMapper.selectById(id);
         applyInfo.setDeleted(BooleanEnum.TRUE.getValue());
 
         applyInfoMapper.deleteById(id);
-        sendMessage(applyInfo, "应用表信息删除", AppMsgTypeEnum.DELETED);
-
         // 进行权限通知
         permissionNotificationFacade.sendAppAppUpdate(id);
     }
 
+    @Cacheable(key = "targetClass + methodName")
     @Override
     public String getNewSort() {
         return applyInfoMapper.getNewSort();
     }
 
+    @CacheEvict(allEntries = true)
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public String startOrStop(String id) {
         ApplyInfo applyInfo = applyInfoMapper.selectById(id);
@@ -226,12 +196,13 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         }
 
         applyInfoMapper.updateById(applyInfo);
-        sendMessage(applyInfo, "应用启动或停止", AppMsgTypeEnum.STATUS);
         // 进行权限通知
         permissionNotificationFacade.sendAppAppUpdate(id);
         return message;
     }
 
+    @CacheEvict(allEntries = true)
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void sortApp(String id, String target) {
         ApplyInfo applyInfo = applyInfoMapper.selectById(id);
@@ -249,6 +220,7 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         applyInfoMapper.updateById(targetApplyInfo);
     }
 
+    @Cacheable(key = "targetClass + methodName+#p0")
     @Override
     public String codeConvertToId(String appCode) {
 
@@ -268,6 +240,7 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         return id;
     }
 
+    @Cacheable(key = "targetClass + methodName+#p0")
     @Override
     public String convertIdsToNames(String projectIds) {
 
@@ -286,6 +259,7 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         return LangUtil.array2String(stringList, StrUtil.COMMA);
     }
 
+    @Cacheable(key = "targetClass +methodName+#p0")
     @Override
     public ApplyInfo getAppByCode(String appCode) {
         LambdaQueryWrapper<ApplyInfo> queryWrapper = Wrappers.lambdaQuery();
@@ -295,11 +269,13 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         return applyInfoMapper.selectOne(queryWrapper);
     }
 
+    @Cacheable(key = "targetClass + methodName+#p0")
     @Override
     public List<ApplyInfo> getAppById(List<String> ids) {
         return applyInfoMapper.selectBatchIds(ids);
     }
 
+    @Cacheable(key = "targetClass + methodName+#p0")
     @Override
     public List<ApplyInfo> getAppByAppNameLike(String applyName) {
         LambdaQueryWrapper<ApplyInfo> queryWrapper = Wrappers.lambdaQuery();
@@ -307,27 +283,126 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         return applyInfoMapper.selectList(queryWrapper);
     }
 
+    @Cacheable(key = "targetClass + methodName+#p0")
     @Override
     public ApplyInfo getAppByAppUrl(String applyUrl) {
         LambdaQueryWrapper<ApplyInfo> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(ApplyInfo::getApplyUrl,applyUrl);
+        queryWrapper.eq(ApplyInfo::getApplyUrl, applyUrl);
         List<ApplyInfo> applyInfos = applyInfoMapper.selectList(queryWrapper);
-        if(CollectionUtils.isNotEmpty(applyInfos)){
+        if (CollectionUtils.isNotEmpty(applyInfos)) {
             return applyInfos.get(0);
-        }else{
+        } else {
             return null;
         }
 
     }
 
+    @Cacheable(key = "targetClass + methodName+#p0")
     @Override
     public List<ApplyInfo> getIdsByCodes(List<String> appCodes) {
         LambdaQueryWrapper<ApplyInfo> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.select(ApplyInfo::getId,ApplyInfo::getApplyCode)
-                    .in(ApplyInfo::getApplyCode,appCodes);
+        queryWrapper.select(ApplyInfo::getId, ApplyInfo::getApplyCode)
+                .in(ApplyInfo::getApplyCode, appCodes);
         return applyInfoMapper.selectList(queryWrapper);
     }
 
+    @Override
+    public ApplyInfo getOne(String id) {
+        return applyInfoMapper.selectById(id);
+    }
+
+    @Override
+    public List<ApplyInfo> findAll() {
+        return applyInfoMapper.selectList(Wrappers.emptyWrapper());
+    }
+
+    @CacheEvict(allEntries = true)
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ApplyInfo saveAppIy(ApplyInfoDTO applyInfoDTO) {
+        ApplyInfo applyInfo = new ApplyInfo();
+        BeanUtils.copyProperties(applyInfoDTO, applyInfo);
+
+        List<FileHolder> file = applyInfoDTO.getFile();
+
+        String manufacturerId = applyInfo.getManufacturerId();
+        if (StringUtils.isNotBlank(manufacturerId)) {
+            ManufacturerInfo manufacturerInfo = manufacturerInfoService.getOne(manufacturerId);
+            if (manufacturerInfo != null) {
+                String manufacturerName = manufacturerInfo.getManufacturerName();
+                applyInfo.setManufacturerName(manufacturerName);
+            }
+        }
+
+        String applyCode = applyInfo.getApplyCode();
+        String secretKey = applyInfoDTO.getSecretKey();
+        if (StrUtil.isBlank(secretKey)) {
+            secretKey = getApiKeys(applyCode);
+        }
+        String apiKey = applyInfoDTO.getApiKey();
+        if (StrUtil.isBlank(apiKey)) {
+            apiKey = getApiKeys(applyCode);
+        }
+
+        applyInfo.setSecretKey(secretKey);
+        applyInfo.setApiKey(apiKey);
+        applyInfo.setDeleted(BooleanEnum.FALSE.getValue());
+
+        applyInfoMapper.insert(applyInfo);
+        // 保存 appId
+        applyOauthService.saveOauth(applyInfo);
+        String id = applyInfo.getId();
+        // 保存图片
+        if (null != file) {
+            saveOrUpdateFile(id, file);
+        }
+
+        return applyInfo;
+    }
+
+    @CacheEvict(allEntries = true)
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public ApplyInfo updateApply(ApplyInfoDTO applyInfoDTO) {
+        ApplyInfo applyInfo = new ApplyInfo();
+        BeanUtils.copyProperties(applyInfoDTO, applyInfo);
+        List<FileHolder> file = applyInfoDTO.getFile();
+
+        String manufacturerId = applyInfo.getManufacturerId();
+        if (!StringUtils.isEmpty(manufacturerId)) {
+            ManufacturerInfo manufacturerInfo = manufacturerInfoService.getOne(manufacturerId);
+            if (manufacturerInfo != null) {
+                String manufacturerName = manufacturerInfo.getManufacturerName();
+                applyInfo.setManufacturerName(manufacturerName);
+            }
+        }
+
+        String id = applyInfo.getId();
+        //旧应用
+        ApplyInfo oldApplyInfo = applyInfoMapper.selectById(id);
+        if (null == oldApplyInfo) {
+            return null;
+        }
+        applyInfo.setDeleted(BooleanEnum.FALSE.getValue());
+        applyOauthService.updateOauth(applyInfo);
+        applyInfoMapper.updateById(applyInfo);
+
+        if (CollectionUtils.isNotEmpty(file)) {
+            saveOrUpdateFile(id, file);
+        }
+
+        //发送消息
+        //权限变更通知
+        boolean isNotification = StringUtils.isNotEmpty(oldApplyInfo.getApplyUrl()) && (!oldApplyInfo.getApplyUrl().equals(applyInfo.getApplyUrl())
+                || !oldApplyInfo.getApplyStatus().equals(applyInfo.getApplyStatus()));
+        // 应用 url 当发送变更时进行通知
+        if (isNotification) {
+            permissionNotificationFacade.sendAppAppUpdate(id);
+        }
+        return applyInfo;
+    }
+
+    @CacheEvict(allEntries = true)
     @Override
     public ResponseStatus impExcel(String fileId) {
         try {
@@ -335,114 +410,76 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
             byte[] fileData = fileContent.getFileData();
             InputStream inputStream = new ByteArrayInputStream(fileData);
             List<ApplyInfo> list = loadInfo(inputStream);
-            if(list.size() > 1000) {
-                return ResponseStatus.fail("300","导入数据超过1000行");
+            if (list.size() > 1000) {
+                return ResponseStatus.fail("300", "导入数据超过1000行");
             }
             //设置事权单位id和code
             setOrgInfos(list);
-            saveAll(list);
-        }catch (IOException e) {
-            return ResponseStatus.fail("300","导入文件类型错误");
+            for (ApplyInfo applyInfo : list) {
+                applyInfoMapper.insert(applyInfo);
+            }
+        } catch (IOException e) {
+            return ResponseStatus.fail("300", "导入文件类型错误");
         } catch (NumberFormatException e) {
-            return ResponseStatus.fail("300",e.getMessage());
+            return ResponseStatus.fail("300", e.getMessage());
         } catch (Exception e) {
-            return ResponseStatus.fail("300","导入失败");
+            return ResponseStatus.fail("300", "导入失败");
         }
         return ResponseStatus.success();
 
     }
 
     private void setOrgInfos(List<ApplyInfo> list) {
-        if(CollectionUtils.isEmpty(list)) {
+        if (CollectionUtils.isEmpty(list)) {
             return;
         }
         List<ApplyInfo> apps = list.stream()
                 .filter(item -> StringUtils.isNotBlank(item.getOrgCode()))
                 .collect(Collectors.toList());
         List<String> orgCodes = apps.stream().map(ApplyInfo::getOrgCode).collect(Collectors.toList());
-        if(CollectionUtils.isNotEmpty(orgCodes)) {
+        if (CollectionUtils.isNotEmpty(orgCodes)) {
             List<OrgInfo> orgInfos = orgInfoFacade.getOrgsByCodes(orgCodes);
-            Map<String, OrgInfo> map = orgInfos.stream().collect(Collectors.toMap(OrgInfo::getCode, item->item, (old,last)->last));
+            Map<String, OrgInfo> map = orgInfos.stream().collect(Collectors.toMap(OrgInfo::getCode, item -> item, (old, last) -> last));
             for (ApplyInfo app : apps) {
                 String orgCode = app.getOrgCode();
                 OrgInfo orgInfo = map.get(orgCode);
-                if(orgInfo != null) {
-                    app.setOrgId(orgInfo.getId());
+                if (orgInfo != null) {
                     app.setOrgName(orgInfo.getFullName());
                 }
             }
         }
     }
 
-    @Override
-    public List<ApplyInfo> findList(String applyStatus) {
-        LambdaQueryWrapper<ApplyInfo> queryWrapper = new LambdaQueryWrapper<>();
-        LambdaQueryWrapper<ApplyInfo> wrapper = queryWrapper.select();
-        if(StringUtils.isNotBlank(applyStatus)){
-            wrapper.eq(ApplyInfo::getApplyStatus,applyStatus);
-        }
-        return applyInfoMapper.selectList(wrapper);
-    }
-
-    @Override
-    public List<ApplyInfo> getListByCodes(List<String> appCodes) {
-        LambdaQueryWrapper<ApplyInfo> queryWrapper = new LambdaQueryWrapper<>();
-        LambdaQueryWrapper<ApplyInfo> wrapper = queryWrapper.select().in(ApplyInfo::getApplyCode,appCodes);
-        return applyInfoMapper.selectList(wrapper);
-    }
-
     @Override
     public List<ApplyInfo> appInfoSearch(SearchDTO searchDTO) {
         return applyInfoMapper.findBySearchable(Searchable.toSearchable(searchDTO));
     }
 
-    private List<ApplyInfo> loadInfo(InputStream inputStream) throws IOException, ParseException {
-        //根据指定的文件输入流导入Excel从而产生Workbook对象
-        Workbook wb0 = new HSSFWorkbook(inputStream);
-        //获取Excel文档中的第一个表单
-        Sheet sht0 = wb0.getSheetAt(0);
-        List<ApplyInfo> list = new ArrayList<>();
-        List<String> codeList = new ArrayList<>();
-        for (Row r : sht0) {
-            if (r.getRowNum() == 0) {
-                checkRowTitle(r);
-                continue;
-            }else {
-                //循环每行的每一列
-                ApplyInfo entity = new ApplyInfo();
-                boolean isAllEmpty = true;
-                for (int i = 0; i < 10; i++){
-                    Cell cell = r.getCell(i);
-                    if (cell != null){
-                        r.getCell(i).setCellType(Cell.CELL_TYPE_STRING);
-                    }
-                    if (cell != null && StringUtils.isNotEmpty(cell.getStringCellValue())){
-                        isAllEmpty = false;
-                        break;
-                    }
-                }
-                if (!isAllEmpty){
-                    for (int i = 0; i < 10; i++) {
-                        Cell cell = r.getCell(i);
-                        if (cell != null){
-                            r.getCell(i).setCellType(Cell.CELL_TYPE_STRING);
-                        }
-                        checkServiceResourceCellData(cell, i, r.getRowNum());
-                        checkServiceResourceCellDataValid(cell, i, r.getRowNum(), entity, codeList);
-                    }
-                    entity.setDeleted(YesNotEnum.NO.getValue());
-                    list.add(entity);
-                }
-
+    @CacheEvict(allEntries = true)
+    @Override
+    public void updateOrgInfos(String targetOrgCode, String fullName, String code) {
+        LambdaQueryWrapper<ApplyInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(ApplyInfo::getOrgCode, targetOrgCode);
 
-            }
+        ApplyInfo applyInfo = new ApplyInfo();
+        applyInfo.setOrgName(fullName);
 
+        if (!targetOrgCode.equals(code)) {
+            applyInfo.setOrgCode(code);
         }
-
-        return list;
+        applyInfoMapper.update(applyInfo, queryWrapper);
     }
 
-
+    @Override
+    public List<ApplyInfo> findList(String applyStatus) {
+        LambdaQueryWrapper<ApplyInfo> queryWrapper = new LambdaQueryWrapper<>();
+        LambdaQueryWrapper<ApplyInfo> wrapper = queryWrapper.select();
+        if (StringUtils.isNotBlank(applyStatus)) {
+            wrapper.eq(ApplyInfo::getApplyStatus, applyStatus);
+        }
+        wrapper.eq(ApplyInfo::getDeleted, BooleanEnum.FALSE.value);
+        return applyInfoMapper.selectList(wrapper);
+    }
 
 
     @Override
@@ -481,25 +518,29 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         return ResponseStatus.success();
     }
 
-    @Override
-    public void updateOrgInfos(String orgId, String orgName) {
-        applyInfoMapper.updateOrgInfo(orgId, orgName);
-    }
-
-    @Override
-    public List<String> getAppIdsByOrgId(String orgId) {
-
-        LambdaQueryWrapper<ApplyInfo> queryWrapper = Wrappers.lambdaQuery();
-
-        queryWrapper.eq(ApplyInfo::getOrgId, orgId)
-                .eq(ApplyInfo::getDeleted, BooleanEnum.FALSE.getValue());
-
-        List<ApplyInfo> applyInfos = applyInfoMapper.selectList(queryWrapper);
-
-        return applyInfos.stream().map(ApplyInfo::getId)
-                .collect(Collectors.toList());
-    }
-
+//    @CacheEvict(allEntries = true)
+//    @Transactional(rollbackFor = Exception.class)
+//    @Override
+//    public void updateOrgInfos(String orgId, String orgName) {
+//        applyInfoMapper.updateOrgInfo(orgId, orgName);
+//    }
+//
+//    @Cacheable(key = "targetClass + methodName+#p0")
+//    @Override
+//    public List<String> getAppIdsByOrgId(String orgId) {
+//
+//        LambdaQueryWrapper<ApplyInfo> queryWrapper = Wrappers.lambdaQuery();
+//
+//        queryWrapper.eq(ApplyInfo::getOrgId, orgId)
+//                .eq(ApplyInfo::getDeleted, BooleanEnum.FALSE.getValue());
+//
+//        List<ApplyInfo> applyInfos = applyInfoMapper.selectList(queryWrapper);
+//
+//        return applyInfos.stream().map(ApplyInfo::getId)
+//                .collect(Collectors.toList());
+//    }
+
+    @Cacheable(key = "targetClass + methodName+#p0")
     @Override
     public List<ApplyInfo> fzxmList(String userId) {
 
@@ -511,6 +552,8 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         return applyInfoMapper.selectList(queryWrapper);
     }
 
+    @CacheEvict(allEntries = true)
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void saveDutyMan(String dutyProject, String userId, String mobileWork) {
         Object[] projectIdArray = dutyProject.split(StrUtil.COMMA);
@@ -523,6 +566,7 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         applyInfoMapper.update(new ApplyInfo(), updateWrapper);
     }
 
+    @Cacheable(key = "targetClass + methodName")
     @Override
     public Map<String, String> findAppNameMap() {
         LambdaQueryWrapper<ApplyInfo> queryWrapper = Wrappers.lambdaQuery();
@@ -537,15 +581,16 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         return stringStringMap;
     }
 
+    @Cacheable(key = "targetClass + methodName+#p0")
     @Override
     public Page<ApplyInfo> findApplyList(SearchDTO searchDTO) {
-        // todo 逻辑
         Searchable searchable = Searchable.toSearchable(searchDTO);
         searchable.removeSearchFilter("userBusiness_eq");
         searchable.addSort(Sort.Direction.DESC, "sort");
         return applyInfoMapper.pagingBySearchable(searchable);
     }
 
+    @Cacheable(key = "targetClass + methodName+#p0")
     @Override
     public Integer countByManufacturerId(String manufacturerId) {
         LambdaQueryWrapper<ApplyInfo> queryWrapper = Wrappers.lambdaQuery();
@@ -555,6 +600,7 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         return applyInfoMapper.selectCount(queryWrapper);
     }
 
+    @Cacheable(key = "targetClass + methodName+#p0")
     @Override
     public List<ApplyInfo> getAppListByManufacturerId(String manufacturerId) {
 
@@ -565,6 +611,7 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         return applyInfoMapper.selectList(queryWrapper);
     }
 
+    @Cacheable(key = "targetClass + methodName")
     @Override
     public Map<String, String> getAllIdNameMap() {
         LambdaQueryWrapper<ApplyInfo> queryWrapper = Wrappers.lambdaQuery();
@@ -576,6 +623,7 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
                 .collect(Collectors.toMap(ApplyInfo::getId, ApplyInfo::getApplyName));
     }
 
+    @Cacheable(key = "targetClass + methodName+#p0+#p1")
     @Override
     public ApplyInfo getOneByCodeAndName(String appCode, String appName) {
         LambdaQueryWrapper<ApplyInfo> queryWrapper = Wrappers.lambdaQuery();
@@ -584,6 +632,7 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         return applyInfoMapper.selectOne(queryWrapper);
     }
 
+    @Cacheable(key = "targetClass + methodName+#p0 +#p1")
     @Override
     public ApplyInfo getOneByNameAndManufacturerId(String applyName, String manufacturerId) {
         LambdaQueryWrapper<ApplyInfo> queryWrapper = Wrappers.lambdaQuery();
@@ -593,6 +642,7 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         return applyInfoMapper.selectOne(queryWrapper);
     }
 
+    @Cacheable(key = "targetClass + methodName+#p0")
     @Override
     public ApplyInfo getOneByName(String applyName) {
         LambdaQueryWrapper<ApplyInfo> queryWrapper = Wrappers.lambdaQuery();
@@ -616,21 +666,6 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         return value + num;
     }
 
-    /**
-     * 消息发送
-     *
-     * @param applyInfo 应用信息
-     */
-    private void sendMessage(ApplyInfo applyInfo, String content, AppMsgTypeEnum appMsgTypeEnum) {
-        AppEventDTO appEventDTO = new AppEventDTO();
-        appEventDTO.setBaseSecurityUser(ContextUtils.getUserInfo());
-        appEventDTO.setApplyInfo(applyInfo);
-        appEventDTO.setContent(content);
-        appEventDTO.setAppMsgTypeEnum(appMsgTypeEnum);
-
-        eventPublisher.publishAppEvent(appEventDTO);
-    }
-
     /**
      * 保存或者更新文件
      *
@@ -638,6 +673,9 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
      * @param fileHolderList 文件
      */
     private void saveOrUpdateFile(String busiId, List<FileHolder> fileHolderList) {
+        if (CollectionUtil.isEmpty(fileHolderList)) {
+            return;
+        }
         FileHolder[] fileHolders = fileHolderList.toArray(new FileHolder[]{});
 
         String busiType = "";
@@ -645,17 +683,71 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
         uploadHandler.saveOrUpdate(fileUploadDTO);
     }
 
+    @Override
+    public List<ApplyInfo> getListByCodes(List<String> appCodes) {
+        LambdaQueryWrapper<ApplyInfo> queryWrapper = new LambdaQueryWrapper<>();
+        LambdaQueryWrapper<ApplyInfo> wrapper = queryWrapper.select().in(ApplyInfo::getApplyCode, appCodes);
+        return applyInfoMapper.selectList(wrapper);
+    }
+
+    private List<ApplyInfo> loadInfo(InputStream inputStream) throws IOException, ParseException {
+        //根据指定的文件输入流导入Excel从而产生Workbook对象
+        Workbook wb0 = new HSSFWorkbook(inputStream);
+        //获取Excel文档中的第一个表单
+        Sheet sht0 = wb0.getSheetAt(0);
+        List<ApplyInfo> list = new ArrayList<>();
+        List<String> codeList = new ArrayList<>();
+        for (Row r : sht0) {
+            if (r.getRowNum() == 0) {
+                checkRowTitle(r);
+                continue;
+            } else {
+                //循环每行的每一列
+                ApplyInfo entity = new ApplyInfo();
+                boolean isAllEmpty = true;
+                for (int i = 0; i < 10; i++) {
+                    Cell cell = r.getCell(i);
+                    if (cell != null) {
+                        r.getCell(i).setCellType(Cell.CELL_TYPE_STRING);
+                    }
+                    if (cell != null && StringUtils.isNotEmpty(cell.getStringCellValue())) {
+                        isAllEmpty = false;
+                        break;
+                    }
+                }
+                if (!isAllEmpty) {
+                    for (int i = 0; i < 10; i++) {
+                        Cell cell = r.getCell(i);
+                        if (cell != null) {
+                            r.getCell(i).setCellType(Cell.CELL_TYPE_STRING);
+                        }
+                        checkServiceResourceCellData(cell, i, r.getRowNum());
+                        checkServiceResourceCellDataValid(cell, i, r.getRowNum(), entity, codeList);
+                    }
+                    entity.setDeleted(YesNotEnum.NO.getValue());
+                    list.add(entity);
+                }
+
+
+            }
+
+        }
+
+        return list;
+    }
 
     /**
      * 校验参数和设置参数
+     *
      * @param cell
      * @param num
      * @param row
      * @param resource
      */
     private void checkServiceResourceCellDataValid(Cell cell, int num, int row, ApplyInfo resource, List<String> codeList) {
-        if (cell == null)
+        if (cell == null) {
             return;
+        }
         String value = cell.getStringCellValue();
         switch (num) {
             case 0:
@@ -666,10 +758,10 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
                 break;
             case 1:
                 ApplyInfo applyInfo = getAppByCode(value);
-                if (applyInfo != null){
+                if (applyInfo != null) {
                     throw new NumberFormatException("第" + (row + 1) + "行'应用系统编号'已存在!");
                 }
-                if (codeList.contains(value)){
+                if (codeList.contains(value)) {
                     throw new NumberFormatException("第" + (row + 1) + "行'应用系统编号'重复!");
                 }
                 codeList.add(value);
@@ -683,13 +775,13 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
                 break;
             case 3:
                 String activeCode = null;
-                if (value.equals("停用")){
+                if (value.equals("停用")) {
                     activeCode = "1";
                 }
-                if (value.equals("启用")){
+                if (value.equals("启用")) {
                     activeCode = "0";
                 }
-                if (StringUtils.isEmpty(activeCode)){
+                if (StringUtils.isEmpty(activeCode)) {
                     throw new NumberFormatException("第" + (row + 1) + "行'系统在用标识'不存在!");
                 }
                 resource.setApplyStatus(activeCode);
@@ -697,7 +789,7 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
                 break;
             case 4:
 
-                if (StringUtils.isNotEmpty(value)){
+                if (StringUtils.isNotEmpty(value)) {
                     try {
                         SimpleDateFormat importFormat = new SimpleDateFormat("yyyyMMdd");
                         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -744,66 +836,4 @@ public class ApplyInfoServiceImpl extends BaseMybatisService<ApplyInfo, String>
 
         }
     }
-
-    /**
-     * 校验数据是否为空
-     * @param cell
-     * @param i
-     * @param row
-     */
-    private static void checkServiceResourceCellData(Cell cell, int i, int row) {
-        if (!(cell == null || StringUtils.isEmpty(cell.getStringCellValue()))) {
-            return;
-        }
-        switch (i) {
-            case 0:
-                throw new NumberFormatException("第" + (row + 1) + "行'应用系统名称'为空!");
-            case 1:
-                throw new NumberFormatException("第" + (row + 1) + "行'应用系统编号'为空!");
-            case 2:
-                throw new NumberFormatException("第" + (row + 1) + "行'应用系统英文名称'为空!");
-            case 3:
-                throw new NumberFormatException("第" + (row + 1) + "行'系统在用标识'为空!");
-            default:
-                break;
-        }
-
-    }
-
-    /**
-     * 校验列头
-     * @param r
-     */
-    private static void checkRowTitle(Row r) {
-        if (!r.getCell(0).getStringCellValue().equals("应用系统名称")) {
-            throw new NumberFormatException("缺少'应用系统名称'列!");
-        }
-        if (!r.getCell(1).getStringCellValue().equals("应用系统编号")) {
-            throw new NumberFormatException("缺少'应用系统编号'列!");
-        }
-        if (!r.getCell(2).getStringCellValue().equals("应用系统英文名称")) {
-            throw new NumberFormatException("缺少'应用系统英文名称'列!");
-        }
-        if (!r.getCell(3).getStringCellValue().equals("系统在用标识")) {
-            throw new NumberFormatException("缺少'系统在用标识'列!");
-        }
-        if (!r.getCell(4).getStringCellValue().equals("上线日期")) {
-            throw new NumberFormatException("缺少'上线日期'列!");
-        }
-        if (!r.getCell(5).getStringCellValue().equals("应用负责人")) {
-            throw new NumberFormatException("缺少'应用负责人'列!");
-        }
-        if (!r.getCell(6).getStringCellValue().equals("应用系统事权单位代码")) {
-            throw new NumberFormatException("缺少'应用系统事权单位代码'列!");
-        }
-        if (!r.getCell(7).getStringCellValue().equals("应用系统管理单位名称")) {
-            throw new NumberFormatException("缺少'应用系统管理单位名称'列!");
-        }
-        if (!r.getCell(8).getStringCellValue().equals("应用系统运维单位名称")) {
-            throw new NumberFormatException("缺少'应用系统运维单位名称'列!");
-        }
-        if (!r.getCell(9).getStringCellValue().equals("应用系统说明")) {
-            throw new NumberFormatException("缺少'应用系统说明'列!");
-        }
-    }
 }

+ 8 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/ApplyOauthServiceImpl.java

@@ -70,4 +70,12 @@ public class ApplyOauthServiceImpl extends BaseMybatisService<ApplyOauth, String
     public List<ApplyOauth> applyOauthList(Map<String, Object> map) {
         return applyOauthMapper.selectByMap(map);
     }
+
+    @Override
+    public ApplyOauth getByAppId(String applyId) {
+        LambdaQueryWrapper<ApplyOauth> queryWrapper = new LambdaQueryWrapper<>();
+        LambdaQueryWrapper<ApplyOauth> wrapper = queryWrapper.select()
+                .eq(ApplyOauth::getApplyId, applyId);
+        return applyOauthMapper.selectOne(wrapper);
+    }
 }

+ 19 - 25
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/ManufacturerInfoServiceImpl.java

@@ -2,20 +2,18 @@ package com.dragoninfo.dcuc.app.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.dragoninfo.dcuc.app.dto.ManufacturerEventDTO;
 import com.dragoninfo.dcuc.app.entity.ManufacturerInfo;
-import com.dragoninfo.dcuc.app.enumresources.ManufacturerMsgTypeEnum;
-import com.dragoninfo.dcuc.app.event.EventPublisher;
 import com.dragoninfo.dcuc.app.mapper.ManufacturerInfoMapper;
 import com.dragoninfo.dcuc.app.service.IManufacturerInfoService;
 import com.dragonsoft.duceap.base.entity.metadata.CodeRecord;
 import com.dragonsoft.duceap.base.entity.search.SearchDTO;
 import com.dragonsoft.duceap.base.enums.BooleanEnum;
-import com.dragonsoft.duceap.core.context.ContextUtils;
 import com.dragonsoft.duceap.core.search.Searchable;
 import com.dragonsoft.duceap.core.search.enums.SearchOperator;
 import com.dragonsoft.duceap.mybaitsplus.core.services.BaseMybatisService;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheConfig;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -28,20 +26,19 @@ import java.util.stream.Collectors;
  * @author huangzqa
  * @date 2020/10/26
  */
-@Transactional(rollbackFor = Exception.class)
+@CacheConfig(cacheNames = "DCUC-APP-MANU")
 @Service
 public class ManufacturerInfoServiceImpl extends BaseMybatisService<ManufacturerInfo, String> implements IManufacturerInfoService {
 
     private ManufacturerInfoMapper manufacturerInfoMapper;
 
-    @Autowired
-    private EventPublisher eventPublisher;
 
     public ManufacturerInfoServiceImpl(ManufacturerInfoMapper manufacturerInfoMapper) {
         super(manufacturerInfoMapper);
         this.manufacturerInfoMapper = manufacturerInfoMapper;
     }
 
+    @Cacheable(key = "targetClass +methodName +#p0")
     @Override
     public Page<ManufacturerInfo> manufacturerInfoPage(SearchDTO searchDTO) {
         Searchable searchable = Searchable.toSearchable(searchDTO);
@@ -49,37 +46,40 @@ public class ManufacturerInfoServiceImpl extends BaseMybatisService<Manufacturer
         return manufacturerInfoMapper.pagingBySearchable(searchable);
     }
 
+    @Cacheable(key = "targetClass +#p0")
     @Override
     public ManufacturerInfo manufacturerInfoDetail(String id) {
         return manufacturerInfoMapper.selectById(id);
     }
 
+    @CacheEvict(allEntries = true)
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public ManufacturerInfo saveManufacturer(ManufacturerInfo info) {
         info.setDeleted(BooleanEnum.FALSE.getValue());
         manufacturerInfoMapper.insert(info);
-
-        sendMessage("厂商表信息新增", info, ManufacturerMsgTypeEnum.SAVE);
         return info;
     }
 
+    @CacheEvict(allEntries = true)
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public ManufacturerInfo updateManufacturer(ManufacturerInfo info) {
         manufacturerInfoMapper.updateById(info);
-        sendMessage("厂商表信息修改", info, ManufacturerMsgTypeEnum.UPDATE);
         return info;
     }
 
+    @CacheEvict(allEntries = true)
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void del(String id) {
         ManufacturerInfo manufacturerInfo = manufacturerInfoMapper.selectById(id);
 
         // 有使用  @TableLogic 会进行逻辑删除
         manufacturerInfoMapper.deleteById(manufacturerInfo);
-
-        sendMessage("厂商表信息删除", manufacturerInfo, ManufacturerMsgTypeEnum.DELETED);
     }
 
+    @Cacheable(key = "targetClass +methodName +#p0")
     @Override
     public ManufacturerInfo detailByCode(String code) {
         LambdaQueryWrapper<ManufacturerInfo> queryWrapper = Wrappers.lambdaQuery();
@@ -89,6 +89,7 @@ public class ManufacturerInfoServiceImpl extends BaseMybatisService<Manufacturer
         return manufacturerInfoMapper.selectOne(queryWrapper);
     }
 
+    @Cacheable(key = "targetClass +methodName +#p0")
     @Override
     public ManufacturerInfo getOneByName(String manufacturerName) {
 
@@ -99,6 +100,7 @@ public class ManufacturerInfoServiceImpl extends BaseMybatisService<Manufacturer
         return manufacturerInfoMapper.selectOne(queryWrapper);
     }
 
+    @Cacheable(key = "targetClass +methodName +#p0+p1")
     @Override
     public ManufacturerInfo getOneByCodeName(String code, String manufacturerName) {
         LambdaQueryWrapper<ManufacturerInfo> queryWrapper = Wrappers.lambdaQuery();
@@ -107,6 +109,7 @@ public class ManufacturerInfoServiceImpl extends BaseMybatisService<Manufacturer
         return manufacturerInfoMapper.selectOne(queryWrapper);
     }
 
+    @Cacheable(key = "targetClass +methodName")
     @Override
     public List<CodeRecord> getAllCodeRecord() {
 
@@ -128,6 +131,7 @@ public class ManufacturerInfoServiceImpl extends BaseMybatisService<Manufacturer
                 .collect(Collectors.toList());
     }
 
+    @Cacheable(key = "targetClass +methodName")
     @Override
     public Map<String, String> getAllIdNameMap() {
         LambdaQueryWrapper<ManufacturerInfo> queryWrapper = Wrappers.lambdaQuery();
@@ -139,23 +143,13 @@ public class ManufacturerInfoServiceImpl extends BaseMybatisService<Manufacturer
                 .collect(Collectors.toMap(ManufacturerInfo::getId, ManufacturerInfo::getManufacturerName));
     }
 
+    @Cacheable(key = "targetClass +methodName +#p0")
     @Override
     public List<ManufacturerInfo> getByCodes(List<String> list) {
         LambdaQueryWrapper<ManufacturerInfo> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.select()
-                    .in(ManufacturerInfo::getCode);
+                .in(ManufacturerInfo::getCode);
         return manufacturerInfoMapper.selectList(queryWrapper);
     }
 
-    private void sendMessage(String content, ManufacturerInfo manufacturerInfo, ManufacturerMsgTypeEnum manufacturerMsgTypeEnum) {
-
-        ManufacturerEventDTO manufacturerEventDTO = new ManufacturerEventDTO();
-        manufacturerEventDTO.setBaseSecurityUser(ContextUtils.getUserInfo());
-        manufacturerEventDTO.setManufacturerInfo(manufacturerInfo);
-        manufacturerEventDTO.setContent(content);
-        manufacturerEventDTO.setManufacturerMsgTypeEnum(manufacturerMsgTypeEnum);
-
-        eventPublisher.publishManufacturerEvent(manufacturerEventDTO);
-    }
-
 }

+ 25 - 11
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/ResourceServiceImpl.java

@@ -3,6 +3,7 @@ package com.dragoninfo.dcuc.app.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.TypeReference;
 import com.dragoninfo.dcuc.app.config.DcucResourceConfig;
 import com.dragoninfo.dcuc.app.cons.ServiceStatusCons;
 import com.dragoninfo.dcuc.app.dto.*;
@@ -16,8 +17,8 @@ import com.dragoninfo.dcuc.app.service.IResourceService;
 import com.dragoninfo.dcuc.app.strategy.ResourceOperateStrategy;
 import com.dragoninfo.dcuc.auth.auth.entity.AppFunInfo;
 import com.dragoninfo.dcuc.auth.power.facade.IAppFunInfoFacade;
-import com.dragoninfo.dcuc.org.entity.OrgInfo;
-import com.dragoninfo.dcuc.org.facade.IOrgInfoFacade;
+import com.dragoninfo.dcuc.user.entity.org.OrgInfo;
+import com.dragoninfo.dcuc.user.facade.org.IOrgInfoFacade;
 import com.dragonsoft.duceap.base.enums.BooleanEnum;
 import com.dragonsoft.duceap.base.exception.ApplicationException;
 import com.dragonsoft.duceap.core.entity.page.PageImpl;
@@ -302,18 +303,22 @@ public class ResourceServiceImpl extends BaseMybatisService<ServiceResource,Stri
      * @return
      */
     private List<MenuResourceDTO> getMenuResourceDTOs(ResourceSync resourceSync) {
-        List<MenuResourceDTO> list = new ArrayList<>();
+        String appCode = resourceSync.getAppCode();
         String content = resourceSync.getContent();
-        JSONArray array = JSON.parseArray(content);
-        for (int i = 0; i < array.size(); i++) {
-            String menuStr = array.getJSONObject(i).toJSONString();
+        List<MenuResourceAcceptDTO> acceptDTOS = JSON.parseObject(content, new TypeReference<List<MenuResourceAcceptDTO>>() {{
+        }});
+        return convertToMenuDTOs(appCode, acceptDTOS);
+    }
+
+    public static List<MenuResourceDTO> convertToMenuDTOs(String appCode, List<MenuResourceAcceptDTO> acceptDTOS) {
+        List<MenuResourceDTO> list = new ArrayList<>();
+        for (MenuResourceAcceptDTO acceptDTO : acceptDTOS) {
             MenuResourceDTO dto = new MenuResourceDTO();
-            MenuResourceAcceptDTO acceptDTO = JSON.parseObject(menuStr, MenuResourceAcceptDTO.class);
             dto.setFunCode(acceptDTO.getGnbh());
             dto.setPFunCode(acceptDTO.getSjgnbh());
             dto.setFunName(acceptDTO.getGnmc());
             dto.setStatus(acceptDTO.getZyzt());
-            dto.setAppCode(resourceSync.getAppCode());
+            dto.setAppCode(appCode);
             list.add(dto);
         }
         return list;
@@ -357,6 +362,11 @@ public class ResourceServiceImpl extends BaseMybatisService<ServiceResource,Stri
     private ServiceResourceDTO getServiceResourceDTO(ResourceSync resourceSync) {
         String content = resourceSync.getContent();
         ServiceResourceAcceptDTO acceptDTO = JSON.parseObject(content,ServiceResourceAcceptDTO.class);
+        ServiceResourceDTO dto = convertToServiceDTO(acceptDTO);
+        return dto;
+    }
+
+    public static ServiceResourceDTO convertToServiceDTO(ServiceResourceAcceptDTO acceptDTO) {
         ServiceResourceDTO dto = new ServiceResourceDTO();
         ResourceTypeEnum resourceEnum = ResourceTypeEnum.TJ_SERVICE;
         dto.setResourceId(resourceEnum.getResourceId());
@@ -384,9 +394,14 @@ public class ResourceServiceImpl extends BaseMybatisService<ServiceResource,Stri
      */
     private AppResourceDTO getAppResourceDTO(ResourceSync resourceSync) {
         String content = resourceSync.getContent();
-        AppResourceDTO dto = new AppResourceDTO();
         AppInfoAcceptDTO acceptDTO = JSON.parseObject(content, AppInfoAcceptDTO.class);
+        AppResourceDTO dto = convertToAppDTO(acceptDTO);
+        return dto;
+    }
+
+    public static AppResourceDTO convertToAppDTO(AppInfoAcceptDTO acceptDTO) {
         ResourceTypeEnum resourceEnum = ResourceTypeEnum.TJ_APP;
+        AppResourceDTO dto = new AppResourceDTO();
         dto.setResourceId(resourceEnum.getResourceId());
         dto.setResourceType(resourceEnum.getResourceType());
         dto.setResourceProvider(resourceEnum.getResourceProvider());
@@ -422,6 +437,7 @@ public class ResourceServiceImpl extends BaseMybatisService<ServiceResource,Stri
         }
         dto.setApplyCategory(acceptDTO.getYyxtfldm());
         dto.setPoliceSpecies(acceptDTO.getGajzfldm());
+        dto.setAppSecret(acceptDTO.getAppsecret());
         return dto;
     }
 
@@ -460,14 +476,12 @@ public class ResourceServiceImpl extends BaseMybatisService<ServiceResource,Stri
             OrgInfo buildOrg = orgInfoMap.get(buildUnitCode);
             if (null != buildOrg) {
                 dto.setBuildUnit(buildOrg.getFullName());
-                dto.setBuildUnitId(buildOrg.getId());
             }
         }
         if (StringUtils.isNotBlank(buildUnitCode)) {
             OrgInfo manageOrg = orgInfoMap.get(managerUnitCode);
             if (null != manageOrg) {
                 dto.setManagerUnit(manageOrg.getFullName());
-                dto.setManagerUnitId(manageOrg.getId());
             }
         }
     }

+ 10 - 2
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/ServiceResourceServiceImpl.java

@@ -16,6 +16,7 @@ import com.dragoninfo.dcuc.duceap.enums.ServiceProvideWayEnum;
 import com.dragoninfo.dcuc.duceap.enums.ServiceResourceTypeEnum;
 import com.dragoninfo.dcuc.duceap.facade.IDuceapUploadFacade;
 import com.dragoninfo.dcuc.duceap.upload.dto.DocContentDTO;
+import com.dragoninfo.dcuc.user.facade.org.IOrgInfoFacade;
 import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.enums.BooleanEnum;
 import com.dragonsoft.duceap.commons.util.string.StringUtils;
@@ -40,7 +41,10 @@ import javax.annotation.Resource;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -57,6 +61,9 @@ public class ServiceResourceServiceImpl extends BaseMybatisService<ServiceResour
     @Autowired
     private IApplyInfoFacade applyInfoFacade;
 
+    @Autowired
+    private IOrgInfoFacade orgInfoFacade;
+
     @Resource
     private IDuceapUploadFacade uploadhandler;
 
@@ -314,8 +321,9 @@ public class ServiceResourceServiceImpl extends BaseMybatisService<ServiceResour
      * @param resource
      */
     private void checkServiceResourceCellDataValid(Cell cell, int num, int row, ServiceResource resource, List<String> codeList) {
-        if (cell == null)
+        if (cell == null) {
             return;
+        }
         String value = cell.getStringCellValue();
         switch (num) {
             case 0:

+ 51 - 17
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/strategy/AppResourceStrategy.java

@@ -3,12 +3,14 @@ package com.dragoninfo.dcuc.app.strategy;
 
 import cn.hutool.core.bean.BeanUtil;
 import com.dragoninfo.dcuc.app.dto.AppResourceDTO;
-import com.dragoninfo.dcuc.app.dto.ResourceDTO;
+import com.dragoninfo.dcuc.app.dto.ApplyInfoDTO;
 import com.dragoninfo.dcuc.app.entity.ApplyInfo;
+import com.dragoninfo.dcuc.app.entity.ApplyOauth;
 import com.dragoninfo.dcuc.app.enumresources.ResourceTypeEnum;
 import com.dragoninfo.dcuc.app.service.IApplyInfoService;
 import com.dragoninfo.dcuc.app.service.IApplyOauthService;
 import com.dragonsoft.duceap.base.enums.BooleanEnum;
+import com.dragonsoft.duceap.commons.util.string.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -18,7 +20,7 @@ import org.springframework.stereotype.Component;
  * @create 2020-11-25 14:21
  */
 @Component
-public class AppResourceStrategy implements ResourceOperateStrategy<AppResourceDTO,ApplyInfo> {
+public class AppResourceStrategy implements ResourceOperateStrategy<AppResourceDTO, ApplyInfo> {
 
     @Autowired
     private IApplyInfoService applyInfoService;
@@ -31,7 +33,7 @@ public class AppResourceStrategy implements ResourceOperateStrategy<AppResourceD
         ApplyInfo applyInfo;
         ApplyInfo exist = applyInfoService.getAppByCode(appResourceDTO.getAppCode());
         if (null == exist) {
-            applyInfo = inserApplyInfo(appResourceDTO);
+            applyInfo = insertApplyInfo(appResourceDTO);
         } else {
             applyInfo = updateApplyInfo(exist, appResourceDTO);
         }
@@ -43,41 +45,72 @@ public class AppResourceStrategy implements ResourceOperateStrategy<AppResourceD
         return ResourceTypeEnum.TJ_APP.getResourceId().equals(resourceType);
     }
 
-    private ApplyInfo inserApplyInfo(AppResourceDTO dto) {
+    private ApplyInfo insertApplyInfo(AppResourceDTO dto) {
         ApplyInfo applyInfo = convertToApplyInfo(dto);
         //删除的应用,不插入数据库
-        if(BooleanEnum.TRUE.getValue().equals(dto.getDeleted())){
+        if (BooleanEnum.TRUE.getValue().equals(dto.getDeleted())) {
             return applyInfo;
         }
-        String secretKey = getApiKeys(applyInfo.getApplyCode());
-        String apiKey = getApiKeys(applyInfo.getApplyCode());
-        applyInfo.setSecretKey(secretKey);
-        applyInfo.setApiKey(apiKey);
-        applyInfoService.save(applyInfo);
+        String appSecret = dto.getAppSecret();
+        if (StringUtils.isBlank(appSecret)) {
+            String secretKey = getApiKeys(applyInfo.getApplyCode());
+            String apiKey = getApiKeys(applyInfo.getApplyCode());
+            applyInfo.setSecretKey(secretKey);
+            applyInfo.setApiKey(apiKey);
+        }
+        ApplyInfoDTO applyInfoDTO = new ApplyInfoDTO();
+        BeanUtil.copyProperties(applyInfo, applyInfoDTO);
+        applyInfoService.saveAppIy(applyInfoDTO);
         applyOauthService.saveOauth(applyInfo);
         return applyInfo;
     }
 
     private ApplyInfo updateApplyInfo(ApplyInfo applyInfo, AppResourceDTO dto) {
+        //是需要删除的应用
+        if (BooleanEnum.TRUE.getValue().equals(dto.getDeleted())) {
+            applyInfoService.del(applyInfo.getId());
+            return applyInfo;
+        }
         ApplyInfo infoNew = convertToApplyInfo(dto);
         BeanUtil.copyProperties(infoNew, applyInfo, "id", "apiKey", "secretKey");
-        applyInfoService.update(applyInfo);
-        //删除的应用
-        if(BooleanEnum.TRUE.getValue().equals(dto.getDeleted())){
-            applyInfoService.deleteById(applyInfo.getId());
+        //更新Secret
+        String appSecret = dto.getAppSecret();
+        ApplyOauth auth = applyOauthService.getByAppId(applyInfo.getId());
+        if (null == auth && StringUtils.isNotBlank(appSecret)) {
+            insertAppOauth(applyInfo, appSecret);
+        } else if (null != auth && StringUtils.isNotBlank(appSecret)) {
+            String secretKey = auth.getSecretKey();
+            if (!appSecret.equals(secretKey)) {
+                updateAppOauth(applyInfo, appSecret);
+            }
+        } else if (null != auth && StringUtils.isBlank(appSecret)) {
+            applyOauthService.deleteById(auth.getId());
         }
+        ApplyInfoDTO applyInfoDTO = new ApplyInfoDTO();
+        BeanUtil.copyProperties(applyInfo, applyInfoDTO);
+        applyInfoService.updateApply(applyInfoDTO);
         return applyInfo;
     }
 
+    private void updateAppOauth(ApplyInfo applyInfo, String appSecret) {
+        applyInfo.setSecretKey(appSecret);
+        applyInfo.setApiKey(appSecret);
+        applyOauthService.updateOauth(applyInfo);
+    }
+
+    private void insertAppOauth(ApplyInfo applyInfo, String appSecret) {
+        applyInfo.setSecretKey(appSecret);
+        applyInfo.setApiKey(appSecret);
+        applyOauthService.saveOauth(applyInfo);
+    }
+
 
     private ApplyInfo convertToApplyInfo(AppResourceDTO dto) {
         String appCode = dto.getAppCode();
         ApplyInfo applyInfo = new ApplyInfo();
         applyInfo.setApplyCode(appCode);
         applyInfo.setApplyName(dto.getAppName());
-        applyInfo.setOrgId(dto.getBuildUnitId());
         applyInfo.setOrgName(dto.getBuildUnit());
-        applyInfo.setManagerOrgId(dto.getManagerUnitId());
         applyInfo.setManagerOrgName(dto.getManagerUnit());
         applyInfo.setJgFzr(dto.getBuildPrincipal());
         applyInfo.setJgFzrPhone(dto.getBuildPrincipalPhone());
@@ -88,9 +121,10 @@ public class AppResourceStrategy implements ResourceOperateStrategy<AppResourceD
         applyInfo.setApplyUrl(dto.getAppUrl());
         applyInfo.setApplyCategory(dto.getApplyCategory());
         applyInfo.setPoliceSpecies(dto.getPoliceSpecies());
-        applyInfo.setManufacturerId(dto.getContractUnitId());
         applyInfo.setRegistrationTime(dto.getRegistrationTime());
         applyInfo.setApplyStatus(dto.getAppStatus());
+        applyInfo.setSecretKey(dto.getAppSecret());
+        applyInfo.setApiKey(dto.getAppSecret());
         applyInfo.setAppOpsDepName(dto.getAppOpsDepName());
         applyInfo.setOrgCode(dto.getBuildUnitCode());
         applyInfo.setLineTime(dto.getLineTime());

+ 32 - 6
dcuc-app-service/src/main/resources/application-base.yml

@@ -1,13 +1,14 @@
 spring:
-  profiles:
-    active: default
   datasource:
     username: dcuc
     password: 123
     driver-class-name: com.mysql.jdbc.Driver
-    url: jdbc:mysql://10.254.10.31:3306/dcuc_tjdsj_2.0?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
+    url: jdbc:mysql://10.254.10.31:3306/dcuc_tjdsj_2.0?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false
     druid:
-      filters: sqlaudit
+      filters: stat,sqlaudit
+      max-active: 60
+      initial-size: 20
+      min-idle: 20
   application:
     name: dcuc-app
   cloud:
@@ -20,6 +21,24 @@ spring:
       # 设置文件上传大小,springboot默认的最大上传大小是1MB
       max-file-size: 150MB
       max-request-size: 150MB
+  redis:
+    host: 10.254.10.15
+    port: 6379
+    password:
+    jedis:
+      pool:
+        max-active: 500
+  cache:
+    # 缓存类型,默认根据环境自动检测,ehcache、redis、simple、caffeine、jcache、infinispan、Hazeleast、none
+    type: redis
+    # 如果底层缓存管理器支持缓存名的话,可以在这里指定要创建的缓存名列表,用逗号分 隔。通常这会禁用运行时创建其他额外缓存的能力。
+    cache-names: DCUC-APP-APP,DCUC-APP-MANU
+    # 缓存连接超时时间
+    #多cacheManager支持 CacheManager(ex:ehCacheCacheManager,simpleCacheManager,redisCacheManager,caffeineCacheManager)
+    init-cache-managers: redisCacheManager
+    redis-time-live:
+      DCUC-APP-APP: 1800000
+      DCUC-APP-MANU: 1800000
   kafka:
     producer:
       bootstrap-servers: 192.168.10.20:9093
@@ -58,10 +77,17 @@ duceap:
     # 是否执行flyway
     enabled: false
     # 执行flyway路径
-    locations: classpath:/config/mysql
+    locations: classpath:/sql/mysql/app
   mybatis-plus:
     map-camel-case-to-underscore: true
-
+  auditlog:
+    login:
+      enabled: false
+    audit:
+      enabled: false
+    sqlaudit:
+      output: kafka
+      exclude-tables: T_LOG_*
   license:
     enabled: false
     #配置用来指定license对接的后端项目地址(格式:ip:port/context,如http://10.10.10.10:8080/ctx),

+ 0 - 6
dcuc-app-service/src/main/resources/application-oracle.yml

@@ -1,6 +0,0 @@
-spring:
-  datasource:
-    username: DCUC2_GD
-    password: dragon
-    driver-class-name: oracle.jdbc.OracleDriver
-    url: jdbc:oracle:thin:@192.168.6.122:1521:orcl

+ 1 - 13
dcuc-app-service/src/main/resources/config/mysql/V4_1_0005__alert_column.sql

@@ -2,16 +2,4 @@ ALTER TABLE `t_service_resource`
 ADD COLUMN `service_type`  varchar(20) NULL COMMENT '服务类型' AFTER `manager_unit_code`,
 ADD COLUMN `service_provide_way`  varchar(20) NULL COMMENT '服务提供方式' AFTER `service_type`,
 ADD COLUMN `must_self`  varchar(1) NULL COMMENT '是否自用服务' AFTER `service_provide_way`,
-ADD COLUMN `app_code`  varchar(100) NULL COMMENT '服务提供应用系统code' AFTER `must_self`;
-
-ALTER TABLE `t_service_resource`
-ADD COLUMN `remark`  varchar(255) NULL COMMENT '服务资源描述' AFTER `app_code`;
-
-
-ALTER TABLE `t_apply_info`
-ADD COLUMN `app_ops_dep_name`  varchar(255) NULL COMMENT '应用系统运维单位名称' AFTER `manager_org_name`,
-ADD COLUMN `manager_org_code`  varchar(255) NULL COMMENT '应用系统事权单位代码' AFTER `app_ops_dep_name`;
-
-ALTER TABLE `t_apply_info`
-ADD COLUMN `app_english_name`  varchar(100) NULL COMMENT '应用英文名称' AFTER `manager_org_code`,
-ADD COLUMN `line_time`  varchar(100) NULL COMMENT '上线日期' AFTER `app_english_name`;
+ADD COLUMN `app_code`  varchar(100) NULL COMMENT '服务提供应用系统code' AFTER `must_self`;

+ 12 - 0
dcuc-app-service/src/main/resources/config/mysql/V4_1_0006__sub_auth_init.sql

@@ -83,6 +83,18 @@ CREATE TABLE T_APP_FIELD_CLA(
     PRIMARY KEY (ID)
 )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT = '字段分类分类表 ';
 
+ALTER TABLE `t_service_resource`
+ADD COLUMN `remark`  varchar(255) NULL COMMENT '服务资源描述' AFTER `app_code`;
+
+
+ALTER TABLE `t_apply_info`
+ADD COLUMN `app_ops_dep_name`  varchar(255) NULL COMMENT '应用系统运维单位名称' AFTER `manager_org_name`,
+ADD COLUMN `manager_org_code`  varchar(255) NULL COMMENT '应用系统事权单位代码' AFTER `app_ops_dep_name`;
+
+ALTER TABLE `t_apply_info`
+ADD COLUMN `app_english_name`  varchar(100) NULL COMMENT '应用英文名称' AFTER `manager_org_code`,
+ADD COLUMN `line_time`  varchar(100) NULL COMMENT '上线日期' AFTER `app_english_name`;
+
 ALTER TABLE T_APP_FIELD_CLA ADD INDEX IDX_T_APP_FIELD_CLA_FIR(FIR_ID);
 ALTER TABLE T_APP_FIELD_CLA ADD INDEX IDX_T_APP_FIELD_CLA_CODE(CODE);
 ALTER TABLE T_APPLY_INFO CHANGE `manager_org_code` `org_code`  varchar(100) NULL COMMENT '事权机构代码';

+ 15 - 0
dcuc-app-service/src/main/resources/config/mysql/V4_1_0007__app_del_orgid.sql

@@ -0,0 +1,15 @@
+-- 历史数据处理
+UPDATE t_apply_info a
+    JOIN t_org_info o ON a.org_id = o.id
+SET a.org_code = o.CODE;
+
+ALTER TABLE T_APPLY_INFO
+    DROP COLUMN ORG_ID;
+ALTER TABLE T_APPLY_INFO
+    DROP COLUMN MANAGER_ORG_ID;
+ALTER TABLE T_SERVICE_RESOURCE
+    DROP COLUMN BUILD_UNIT_ID;
+ALTER TABLE T_SERVICE_RESOURCE
+    DROP COLUMN MANAGER_UNIT_ID;
+ALTER TABLE T_SERVICE_RESOURCE
+    DROP COLUMN CONTRACT_UNIT_ID;

+ 5 - 0
dcuc-app-service/src/main/resources/config/sql/V4_1_0007__app_del_orgid.sql

@@ -0,0 +1,5 @@
+ALTER TABLE T_APPLY_INFO DROP COLUMN ORG_ID;
+ALTER TABLE T_APPLY_INFO DROP COLUMN MANAGER_ORG_ID;
+ALTER TABLE T_SERVICE_RESOURCE DROP COLUMN BUILD_UNIT_ID;
+ALTER TABLE T_SERVICE_RESOURCE DROP COLUMN MANAGER_UNIT_ID;
+ALTER TABLE T_SERVICE_RESOURCE DROP COLUMN CONTRACT_UNIT_ID;

+ 0 - 6
dcuc-app-service/src/main/resources/mapping/ApplyInfoMapper.xml

@@ -6,10 +6,4 @@
         select max(sort) as sort
         from t_apply_info
     </select>
-
-    <update id="updateOrgInfo">
-        update t_apply_info
-        set org_name = #{orgName}
-        where org_id = #{orgId}
-    </update>
 </mapper>

+ 81 - 0
dcuc-app-service/src/main/resources/sql.mysql.app/V4_1_0001__Init_Tables.sql

@@ -0,0 +1,81 @@
+CREATE TABLE `t_apply_info` (
+  `id` varchar(32) NOT NULL DEFAULT '' COMMENT 'id',
+  `apply_name` varchar(100) DEFAULT NULL COMMENT '应用名称',
+  `apply_code` varchar(32) DEFAULT NULL COMMENT '应用代码',
+  `apply_category` varchar(32) DEFAULT NULL COMMENT '应用类别',
+  `police_species` varchar(32) DEFAULT NULL COMMENT '所属业务警种',
+  `org_id` varchar(80) DEFAULT NULL COMMENT '所属单位id',
+  `org_name` varchar(100) DEFAULT NULL COMMENT '所属单位',
+  `sort` decimal(10,0) DEFAULT NULL COMMENT '排序号',
+  `apply_url` varchar(200) DEFAULT NULL COMMENT '应用URL',
+  `manufacturer_id` varchar(32) DEFAULT NULL COMMENT '应用厂商ID',
+  `manufacturer_name` varchar(80) DEFAULT NULL COMMENT '应用厂商',
+  `apply_status` varchar(32) DEFAULT NULL COMMENT '应用状态',
+  `manager_name` varchar(32) DEFAULT NULL COMMENT '应用管理员',
+  `manager_phone` varchar(32) DEFAULT NULL COMMENT '管理员联系电话',
+  `manager_describe` varchar(200) DEFAULT NULL COMMENT '应用描述',
+  `api_key` varchar(32) DEFAULT NULL COMMENT 'API Key',
+  `secret_key` varchar(32) DEFAULT NULL COMMENT 'Secret Key',
+  `apply_icon` varchar(32) DEFAULT NULL COMMENT '应用图标',
+  `deleted` varchar(32) DEFAULT NULL COMMENT '删除 0:否 ,1:是',
+  `registration_time` date DEFAULT NULL COMMENT '注册时间',
+  `FZR` varchar(50) DEFAULT NULL COMMENT '负责人',
+  `FZR_PHONE` varchar(32) DEFAULT NULL COMMENT '负责人联系电话',
+  `ICON_COLOR` varchar(10) DEFAULT NULL COMMENT '图标颜色代码,不加“#”',
+  `FACE_VERIFY_FLAG` varchar(10) DEFAULT NULL COMMENT '人脸识别标志位',
+  `JG_FZR` varchar(20) DEFAULT NULL COMMENT '建设单位负责人姓名',
+  `JG_FZR_PHONE` varchar(20) DEFAULT NULL COMMENT '建设单位负责人联系电话',
+  UNIQUE KEY `PK_T_APPLY_INFO` (`ID`),
+  PRIMARY KEY (`id`),
+  KEY `MANUFACTURER_ID_INDEX` (`manufacturer_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='应用信息表';
+
+  
+CREATE TABLE `t_manufacturer_info` (
+  `id` varchar(32)  NOT NULL   COMMENT 'ID',
+  `manufacturer_name` varchar(100) DEFAULT NULL COMMENT '厂商名称',
+  `name` varchar(100) DEFAULT NULL COMMENT '厂商负责人',
+  `idcard` varchar(32) DEFAULT NULL COMMENT '负责人身份号码',
+  `phone` varchar(32) DEFAULT NULL COMMENT '联系电话',
+  `address` varchar(500) DEFAULT NULL COMMENT '厂商地址',
+  `deleted` varchar(32) DEFAULT NULL COMMENT '删除 0:否,1:是',
+  `CODE` varchar(32) DEFAULT NULL COMMENT '组织机构代码',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='厂商信息表';
+
+  
+CREATE TABLE `t_apply_oauth` (
+                                 `id`         varchar(32) NOT NULL DEFAULT 'ID',
+                                 `apply_id`   varchar(32)          DEFAULT NULL COMMENT '应用ID',
+                                 `api_key`    varchar(32)          DEFAULT NULL COMMENT 'API_KEY',
+                                 `secret_key` varchar(32)          DEFAULT NULL COMMENT 'Secret_Key',
+                                 `deleted`    varchar(2)           DEFAULT NULL COMMENT '0.使用 1.删除',
+                                 PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8 COMMENT ='应用授权信息';
+
+insert into T_APPLY_INFO (ID, APPLY_NAME, APPLY_CODE, APPLY_CATEGORY, POLICE_SPECIES, ORG_ID, ORG_NAME, SORT, APPLY_URL,
+                          MANUFACTURER_ID, MANUFACTURER_NAME, APPLY_STATUS, MANAGER_NAME, MANAGER_PHONE,
+                          MANAGER_DESCRIBE, API_KEY, SECRET_KEY, APPLY_ICON, DELETED, REGISTRATION_TIME, FZR, FZR_PHONE,
+                          ICON_COLOR, FACE_VERIFY_FLAG, JG_FZR, JG_FZR_PHONE)
+values ('2c90e9446710758d016710d090f10000', '全国人口信息-用户中心', 'YHZX0000000000000001', '1', '02',
+        '7F08CCC3C4984A2586C9D3F0A6B804E5', '公安部', 24, 'http://192.167.10.11:8888/dcuc', 'dragonsoftcompany',
+        '厦门市巨龙信息科技有限公司1', '0', 'ADMIN', null, null, 'YHZX000000000000000118723072', 'YHZX000000000000000121798644', null, '0', str_to_date('14-11-2018', '%d-%m-%Y'), null,
+        null, null, '1', '01', null);
+
+INSERT INTO `t_apply_info`
+VALUES ('2c90e96669318cd9016931ee49bb0000', '统一授权(勿删)', 'QXXT0000000000000001', '3', '1',
+        '7F08CCC3C4984A2586C9D3F0A6B804E5', '公安部', '68', 'http://172.16.105.230:8889/dcucAuth',
+        'dragonsoftcompany', '厦门市巨龙信息科技有限公司1', '0', 'ADMIN', '', '', 'QXXT000000000000000118723072',
+        'QXXT000000000000000121798644', '7B8935CFCA97B5981031554793665622', '0', '2019-02-28', 'ADMIN', '12345678995',
+        '', '', null, null);
+
+
+insert into t_manufacturer_info (ID, MANUFACTURER_NAME, NAME, IDCARD, PHONE, ADDRESS, DELETED, CODE)
+values ('dragonsoftcompany', '厦门市巨龙信息科技有限公司1', '44y', '350524199111012121', '0592-570709', '厦门市火炬开发区创新二路一号  巨龙大厦', '0',
+        'julong');
+
+insert into t_apply_oauth (ID,APPLY_ID,API_KEY,SECRET_KEY,DELETED) VALUES
+('b222b876cf4f31111111a2360715668c', '2c90e96669318cd9016931ee49bb0000', 'QXXT000000000000000118723072', 'QXXT000000000000000121798644', '0');
+insert into t_apply_oauth (ID,APPLY_ID,API_KEY,SECRET_KEY,DELETED) VALUES
+('b222b876cf4f3b245c2ba1111115668c', '2c90e9446710758d016710d090f10000', 'YHZX000000000000000118723072', 'YHZX000000000000000121798644', '0');

+ 1 - 0
dcuc-app-service/src/main/resources/sql.mysql.app/V4_1_0002__Add_Index.sql

@@ -0,0 +1 @@
+-- mysql not need add index

+ 47 - 0
dcuc-app-service/src/main/resources/sql.mysql.app/V4_1_0003__Init_Tables.sql

@@ -0,0 +1,47 @@
+
+CREATE TABLE `t_service_resource` (
+  `id` varchar(255) NOT NULL,
+  `resource_id` varchar(50) DEFAULT NULL,
+  `resource_type` varchar(10) DEFAULT NULL,
+  `resource_provider` varchar(20) DEFAULT NULL,
+  `service_code` varchar(100) DEFAULT NULL,
+  `service_name` varchar(255) DEFAULT NULL,
+  `service_status` varchar(50) DEFAULT NULL,
+  `service_url` varchar(255) DEFAULT NULL,
+  `build_unit_id` varchar(100) DEFAULT NULL,
+  `build_unit_code` varchar(100) DEFAULT NULL,
+  `build_unit` varchar(255) DEFAULT NULL,
+  `build_principal` varchar(100) DEFAULT NULL,
+  `build_principal_phone` varchar(50) DEFAULT NULL,
+  `contract_unit_id` varbinary(100) DEFAULT NULL,
+  `contract_unit_code` varchar(100) DEFAULT NULL,
+  `contract_unit` varchar(255) DEFAULT NULL,
+  `contract_principal` varchar(100) DEFAULT NULL,
+  `contract_principal_phone` varchar(50) DEFAULT NULL,
+  `create_time` datetime DEFAULT NULL,
+  `update_time` datetime DEFAULT NULL,
+  `deleted` varchar(5) DEFAULT NULL,
+  PRIMARY KEY (`id`),
+  KEY `service_code_index` (`service_code`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+
+CREATE TABLE `t_resource_sync` (
+  `id` varchar(255) NOT NULL,
+  `content` varchar(3000) DEFAULT NULL,
+  `ext_id` varchar(255) DEFAULT NULL,
+  `service_code` varchar(100) DEFAULT NULL,
+  `service_name` varchar(100) DEFAULT NULL,
+  `app_code` varchar(100) DEFAULT NULL,
+  `app_name` varchar(100) DEFAULT NULL,
+  `resource_id` varchar(50) DEFAULT NULL,
+  `resource_type` varchar(10) DEFAULT NULL,
+  `resource_provider` varchar(10) DEFAULT NULL,
+  `create_time` datetime DEFAULT NULL,
+  `update_time` datetime DEFAULT NULL,
+  `sync` varchar(5) DEFAULT NULL,
+  `deleted` varchar(5) DEFAULT NULL,
+  PRIMARY KEY (`id`),
+  KEY `service_code_index` (`service_code`) USING BTREE,
+  KEY `app_code_index` (`app_code`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;

+ 12 - 0
dcuc-app-service/src/main/resources/sql.mysql.app/V4_1_0004__Update_Tables.sql

@@ -0,0 +1,12 @@
+-- 更新应用表
+ALTER TABLE `t_apply_info` ADD `manager_org_id` VARCHAR(100) DEFAULT NULL;
+ALTER TABLE `t_apply_info` ADD `manager_org_name` VARCHAR(255) DEFAULT NULL;
+-- 更新服务表
+ALTER TABLE `t_service_resource` ADD `manager_unit_id` VARCHAR(100) DEFAULT NULL;
+ALTER TABLE `t_service_resource` ADD `manager_unit` VARCHAR(255) DEFAULT NULL;
+ALTER TABLE `t_service_resource` ADD `manager_unit_code` VARCHAR(100) DEFAULT NULL;
+-- 修改字段长度
+ALTER TABLE `t_service_resource` MODIFY `service_name` VARCHAR(500);
+ALTER TABLE `t_service_resource` MODIFY `service_url` VARCHAR(500);
+ALTER TABLE `t_resource_sync` MODIFY `service_name` VARCHAR(500);
+ALTER TABLE `t_resource_sync` MODIFY `app_name` VARCHAR(500);

+ 5 - 0
dcuc-app-service/src/main/resources/sql.mysql.app/V4_1_0005__alert_column.sql

@@ -0,0 +1,5 @@
+ALTER TABLE `t_service_resource`
+ADD COLUMN `service_type`  varchar(20) NULL COMMENT '服务类型' AFTER `manager_unit_code`,
+ADD COLUMN `service_provide_way`  varchar(20) NULL COMMENT '服务提供方式' AFTER `service_type`,
+ADD COLUMN `must_self`  varchar(1) NULL COMMENT '是否自用服务' AFTER `service_provide_way`,
+ADD COLUMN `app_code`  varchar(100) NULL COMMENT '服务提供应用系统code' AFTER `must_self`;

+ 102 - 0
dcuc-app-service/src/main/resources/sql.mysql.app/V4_1_0006__sub_auth_init.sql

@@ -0,0 +1,102 @@
+CREATE TABLE T_APP_DATA_CLA(
+    ID VARCHAR(32) NOT NULL   COMMENT 'ID 主键' ,
+    FIR_ID VARCHAR(32)    COMMENT 'FIR_ID 一级id' ,
+    SEC_ID VARCHAR(32)    COMMENT 'SEC_ID 二级id' ,
+    LAB_CLA_ID VARCHAR(32)    COMMENT 'LAB_CLA_ID 标签分类id' ,
+    CODE VARCHAR(32)    COMMENT 'CODE 码值' ,
+    NAME VARCHAR(100)    COMMENT 'NAME 名称' ,
+    DATA_TYPE VARCHAR(100)    COMMENT 'DATA_TYPE 数据授权资源类型(第三方提供)' ,
+    LEVEL VARCHAR(5)    COMMENT 'LEVEL 层级' ,
+    TYPE VARCHAR(10)    COMMENT 'TYPE 分类类型 一级分类 二级分类 标签分类 标签' ,
+    REMARK VARCHAR(128)    COMMENT 'REMARK 说明' ,
+    DELETED VARCHAR(5)    COMMENT 'DELETED 是否删除' ,
+    CREATE_TIME DATETIME    COMMENT 'CREATE_TIME 新增时间' ,
+    CREATE_USER VARCHAR(32)    COMMENT 'CREATE_USER 新增人员账号' ,
+    UPDATE_TIME DATETIME    COMMENT 'UPDATE_TIME 修改时间' ,
+    UPDATE_USER VARCHAR(32)    COMMENT 'UPDATE_USER 更新人账号' ,
+    DELETE_TIME DATETIME    COMMENT 'DELETE_TIME 删除时间' ,
+    DELETE_USER VARCHAR(32)    COMMENT 'DELETE_USER 删除人账号' ,
+    PRIMARY KEY (ID)
+)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT = '数据资源分类表 ';
+
+
+ALTER TABLE T_APP_DATA_CLA ADD INDEX IDX_T_APP_DATA_CLA_FIR(FIR_ID);
+ALTER TABLE T_APP_DATA_CLA ADD INDEX IDX_T_APP_DATA_CLA_SEC(SEC_ID);
+ALTER TABLE T_APP_DATA_CLA ADD INDEX IDX_T_APP_DATA_CLA_LAB_CLA_ID(LAB_CLA_ID);
+ALTER TABLE T_APP_DATA_CLA ADD INDEX IDX_T_APP_DATA_CODE(CODE);
+
+
+CREATE TABLE T_APP_DATA_LEVEL(
+    ID VARCHAR(32) NOT NULL   COMMENT 'ID 主键' ,
+    LEVEL_CODE VARCHAR(32)    COMMENT 'LEVEL_CODE 码值' ,
+    LEVEL_NAME VARCHAR(100)    COMMENT 'LEVEL_NAME 名称' ,
+    DATA_TYPE VARCHAR(100)    COMMENT 'DATA_TYPE 数据授权资源类型(第三方提供)' ,
+    REMARK VARCHAR(128)    COMMENT 'REMARK 说明' ,
+    DELETED VARCHAR(5)    COMMENT 'DELETED 是否删除' ,
+    CREATE_TIME DATETIME    COMMENT 'CREATE_TIME 新增时间' ,
+    CREATE_USER VARCHAR(32)    COMMENT 'CREATE_USER 新增人员账号' ,
+    UPDATE_TIME DATETIME    COMMENT 'UPDATE_TIME 修改时间' ,
+    UPDATE_USER VARCHAR(32)    COMMENT 'UPDATE_USER 更新人账号' ,
+    DELETE_TIME DATETIME    COMMENT 'DELETE_TIME 删除时间' ,
+    DELETE_USER VARCHAR(32)    COMMENT 'DELETE_USER 删除人账号' ,
+    PRIMARY KEY (ID)
+)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT = '数据分级表 ';
+
+ALTER TABLE T_APP_DATA_LEVEL ADD INDEX IDX_T_APP_DATA_LEVEL_LEVEL_CODE(LEVEL_CODE);
+
+
+CREATE TABLE T_APP_DATA_SEC(
+    ID VARCHAR(32) NOT NULL   COMMENT 'ID 主键' ,
+    SEC_CODE VARCHAR(32)    COMMENT 'SEC_CODE 码值' ,
+    SEC_NAME VARCHAR(100)    COMMENT 'SEC_NAME 名称' ,
+    DATA_TYPE VARCHAR(100)    COMMENT 'DATA_TYPE 数据授权资源类型(第三方提供)' ,
+    REMARK VARCHAR(128)    COMMENT 'REMARK 说明' ,
+    DELETED VARCHAR(5)    COMMENT 'DELETED 是否删除' ,
+    CREATE_TIME DATETIME    COMMENT 'CREATE_TIME 新增时间' ,
+    CREATE_USER VARCHAR(32)    COMMENT 'CREATE_USER 新增人员账号' ,
+    UPDATE_TIME DATETIME    COMMENT 'UPDATE_TIME 修改时间' ,
+    UPDATE_USER VARCHAR(32)    COMMENT 'UPDATE_USER 更新人账号' ,
+    DELETE_TIME DATETIME    COMMENT 'DELETE_TIME 删除时间' ,
+    DELETE_USER VARCHAR(32)    COMMENT 'DELETE_USER 删除人账号' ,
+    PRIMARY KEY (ID)
+)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT = '数据安全等级表 ';
+
+ALTER TABLE T_APP_DATA_SEC ADD INDEX IDX_T_APP_DATA_LEVEL_SEC_CODE(SEC_CODE);
+
+
+CREATE TABLE T_APP_FIELD_CLA(
+    ID VARCHAR(32) NOT NULL   COMMENT 'ID 主键' ,
+    FIR_ID VARCHAR(32)    COMMENT 'FIR_ID 一级id' ,
+    CODE VARCHAR(32)    COMMENT 'CODE 码值' ,
+    NAME VARCHAR(100)    COMMENT 'NAME 名称' ,
+    DATA_TYPE VARCHAR(100)    COMMENT 'DATA_TYPE 数据授权资源类型(第三方提供)' ,
+    LEVEL VARCHAR(10)    COMMENT 'LEVEL 层级' ,
+    TYPE VARCHAR(10)    COMMENT 'TYPE 分类类型 一级分类 二级分类' ,
+    REMARK VARCHAR(128)    COMMENT 'REMARK 说明' ,
+    DELETED VARCHAR(5)    COMMENT 'DELETED 是否删除' ,
+    CREATE_TIME DATETIME    COMMENT 'CREATE_TIME 新增时间' ,
+    CREATE_USER VARCHAR(32)    COMMENT 'CREATE_USER 新增人员账号' ,
+    UPDATE_TIME DATETIME    COMMENT 'UPDATE_TIME 修改时间' ,
+    UPDATE_USER VARCHAR(32)    COMMENT 'UPDATE_USER 更新人账号' ,
+    DELETE_TIME DATETIME    COMMENT 'DELETE_TIME 删除时间' ,
+    DELETE_USER VARCHAR(32)    COMMENT 'DELETE_USER 删除人账号' ,
+    PRIMARY KEY (ID)
+)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT = '字段分类分类表 ';
+
+ALTER TABLE `t_service_resource`
+ADD COLUMN `remark`  varchar(255) NULL COMMENT '服务资源描述' AFTER `app_code`;
+
+
+ALTER TABLE `t_apply_info`
+ADD COLUMN `app_ops_dep_name`  varchar(255) NULL COMMENT '应用系统运维单位名称' AFTER `manager_org_name`,
+ADD COLUMN `manager_org_code`  varchar(255) NULL COMMENT '应用系统事权单位代码' AFTER `app_ops_dep_name`;
+
+ALTER TABLE `t_apply_info`
+ADD COLUMN `app_english_name`  varchar(100) NULL COMMENT '应用英文名称' AFTER `manager_org_code`,
+ADD COLUMN `line_time`  varchar(100) NULL COMMENT '上线日期' AFTER `app_english_name`;
+
+ALTER TABLE T_APP_FIELD_CLA ADD INDEX IDX_T_APP_FIELD_CLA_FIR(FIR_ID);
+ALTER TABLE T_APP_FIELD_CLA ADD INDEX IDX_T_APP_FIELD_CLA_CODE(CODE);
+ALTER TABLE T_APPLY_INFO CHANGE `manager_org_code` `org_code`  varchar(100) NULL COMMENT '事权机构代码';
+ALTER TABLE `t_apply_info` ADD COLUMN `manager_org_code`  varchar(100) NULL COMMENT '管理单位代码';
+ALTER TABLE `t_apply_info` MODIFY `manager_describe` varchar(800) DEFAULT NULL COMMENT '应用描述';

+ 15 - 0
dcuc-app-service/src/main/resources/sql.mysql.app/V4_1_0007__app_del_orgid.sql

@@ -0,0 +1,15 @@
+-- 历史数据处理
+UPDATE t_apply_info a
+    JOIN t_org_info o ON a.org_id = o.id
+SET a.org_code = o.CODE;
+
+ALTER TABLE T_APPLY_INFO
+    DROP COLUMN ORG_ID;
+ALTER TABLE T_APPLY_INFO
+    DROP COLUMN MANAGER_ORG_ID;
+ALTER TABLE T_SERVICE_RESOURCE
+    DROP COLUMN BUILD_UNIT_ID;
+ALTER TABLE T_SERVICE_RESOURCE
+    DROP COLUMN MANAGER_UNIT_ID;
+ALTER TABLE T_SERVICE_RESOURCE
+    DROP COLUMN CONTRACT_UNIT_ID;

+ 0 - 28
dcuc-app-service/src/test/java/com/dragoninfo/dcuc/app/mapper/ApplyInfoMapperTest.java

@@ -47,34 +47,6 @@ public class ApplyInfoMapperTest {
         Assert.assertTrue(notBlank);
     }
 
-    @Test
-    public void updateOrgInfo() {
-
-        ApplyInfo applyInfo = new ApplyInfo();
-        String uuid = UUIDUtils.getUUID();
-        String orgName = "组织" + DateUtil.now();
-
-        applyInfo.setOrgId(uuid);
-        applyInfo.setOrgName(orgName);
-        applyInfo.setDeleted(BooleanEnum.FALSE.value);
-
-        applyInfoMapper.insert(applyInfo);
-
-
-        String newOrgName = "new组织";
-
-        applyInfoMapper.updateOrgInfo(uuid, newOrgName);
-
-        LambdaQueryWrapper<ApplyInfo> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(ApplyInfo::getOrgId, uuid);
-
-        ApplyInfo newApplyInfo = applyInfoMapper.selectOne(queryWrapper);
-        String dbOrgName = newApplyInfo.getOrgName();
-
-        Assert.assertEquals(dbOrgName, newOrgName);
-
-    }
-
     @Test
     public void dataLevel() {
         DataLevel dataLevel = dataLevelService.getById("fabd5a433bd67d1b36373d11edd20a09");

+ 0 - 24
dcuc-app-service/src/test/java/com/dragoninfo/dcuc/app/service/impl/ApplyInfoServiceImplTest.java

@@ -194,30 +194,6 @@ public class ApplyInfoServiceImplTest {
 
     }
 
-    @Test
-    public void updateOrgInfos() {
-        String orgId = "2c90e9d266e236990166e2442c7f0000";
-        String orgName = "测试" + DateUtils.getDateFormat();
-
-        applyInfoService.updateOrgInfos(orgId, orgName);
-
-        List<String> appIdsByOrgId = applyInfoService.getAppIdsByOrgId(orgId);
-
-        for (String appId : appIdsByOrgId) {
-            ApplyInfo applyInfo = applyInfoService.applyDetail(appId);
-            String orgName1 = applyInfo.getOrgName();
-
-            Assert.assertEquals(orgName, orgName1);
-        }
-    }
-
-    @Test
-    public void getAppIdsByOrgId() {
-        String orgId = "7F08CCC3C4984A2586C9D3F0A6B804E5";
-        List<String> appIdsByOrgId = applyInfoService.getAppIdsByOrgId(orgId);
-        System.out.println(JSONUtil.toJsonStr(appIdsByOrgId));
-    }
-
     @Test
     public void fzxmList() {
         String userId = "2c90e9666903bbed016904898cf30000";

+ 2 - 2
pom.xml

@@ -5,7 +5,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.dragoninfo</groupId>
     <artifactId>dcuc-app</artifactId>
-    <version>2.2.3-tjdsj-SNAPSHOT</version>
+    <version>2.2.4-tjdsj-SNAPSHOT</version>
     <packaging>pom</packaging>
     <modules>
         <module>dcuc-app-api</module>
@@ -18,7 +18,7 @@
         <maven.compiler.source>1.8</maven.compiler.source>
         <maven.compiler.target>1.8</maven.compiler.target>
         <!--revisions需写死,用于标识打包的版本号,不可删除-->
-        <revision>2.2.3-tjdsj-SNAPSHOT</revision>
+        <revision>2.2.4-tjdsj-SNAPSHOT</revision>
         <duceap.version>2.1.0-SNAPSHOT</duceap.version>
         <oracle.version>11.2.0.1.0</oracle.version>
         <mysql.version>5.1.49</mysql.version>