Ver Fonte

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

1.同步时新增appSecret字段
2.json数据保存修改
3.重复代码重构
mazq há 4 anos atrás
pai
commit
bc90556421

+ 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;
+
     /**
      * 应用关联菜单DTOs
      */

+ 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;
+
+
+}

+ 27 - 84
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/impl/ResourceBusiness.java

@@ -17,6 +17,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.auth.auth.enumresources.YesNotEnum;
 import com.dragoninfo.dcuc.common.http.HttpUtil;
 import com.dragoninfo.duceap.core.response.Result;
@@ -45,6 +46,8 @@ import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
+import static com.dragoninfo.dcuc.app.service.impl.ResourceServiceImpl.convertToMenuDTOs;
+
 /**
  * @author mazq
  * @date 2021/2/26
@@ -117,7 +120,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;
     }
 
@@ -139,7 +142,7 @@ public class ResourceBusiness implements IResourceBusiness {
             logger.info("appIncrSync get serviceInfo is null. serviceCode is:{}", serviceCode);
             return false;
         }
-        acceptServiceResource(serviceDTO);
+        acceptServiceResource(serviceStr,serviceDTO);
         return true;
     }
 
@@ -288,19 +291,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.getResouProvider());
         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);
@@ -311,7 +317,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);
@@ -324,56 +330,16 @@ public class ResourceBusiness implements IResourceBusiness {
 
     /**
      * 应用资源接收类转为应用DTO
-     *
      * @param acceptDTO
      * @return
      */
     private AppResourceDTO convertToAppDTO(AppResourceAcceptDTO acceptDTO) {
         AppInfoAcceptDTO appInfoAcceptDTO = acceptDTO.getTappSystem();
-        AppResourceDTO dto = new AppResourceDTO();
-        dto.setDeleted(appInfoAcceptDTO.getXtzxbs());
-        dto.setAppCode(appInfoAcceptDTO.getYyxtbh());
-        dto.setAppName(appInfoAcceptDTO.getYyxtmc());
-        String xtzybs = appInfoAcceptDTO.getXtzybs();
-        if (StringUtils.isNotBlank(xtzybs)) {
-            if (BooleanEnum.TRUE.getValue().equals(xtzybs)) {
-                xtzybs = BooleanEnum.FALSE.getValue();
-            } else {
-                xtzybs = BooleanEnum.TRUE.getValue();
-            }
-        }
-        dto.setAppStatus(xtzybs);
-        dto.setAppUrl(appInfoAcceptDTO.getYyxtfwdz());
-        dto.setBuildUnitCode(appInfoAcceptDTO.getYyxtsqdwdm());
-        dto.setManagerUnitCode(appInfoAcceptDTO.getYyxtgldwdm());
-        dto.setContractUnit(appInfoAcceptDTO.getYyxtcjdwmc());
-        dto.setResourceId(ResourceTypeEnum.TJ_APP.getResourceId());
-        dto.setResourceType(ResourceTypeEnum.TJ_APP.getResourceType());
-        dto.setResourceProvider(ResourceTypeEnum.TJ_APP.getResouProvider());
-        String sxrq = appInfoAcceptDTO.getSxrq();
-        if (!org.springframework.util.StringUtils.isEmpty(sxrq)) {
-            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            try {
-                Date parse = format.parse(sxrq);
-                dto.setRegistrationTime(parse);
-            } catch (Exception e) {
-
-            }
-        }
-        dto.setApplyCategory(appInfoAcceptDTO.getYyxtfldm());
-        dto.setPoliceSpecies(appInfoAcceptDTO.getGajzfldm());
+        AppResourceDTO dto = ResourceServiceImpl.convertToAppDTO(appInfoAcceptDTO);
         //设置菜单资源
         List<MenuResourceAcceptDTO> tAppFunctionList = acceptDTO.getTappFunctionList();
-        List<MenuResourceDTO> menusDTOs = new ArrayList<>();
-        for (MenuResourceAcceptDTO mADTO : tAppFunctionList) {
-            MenuResourceDTO menuDTO = new MenuResourceDTO();
-            menuDTO.setFunCode(mADTO.getGnbh());
-            menuDTO.setPFunCode(mADTO.getSjgnbh());
-            menuDTO.setFunName(mADTO.getGnmc());
-            menuDTO.setAppCode(appInfoAcceptDTO.getYyxtbh());
-            menuDTO.setStatus(mADTO.getZyzt());
-            menusDTOs.add(menuDTO);
-        }
+        String appCode = appInfoAcceptDTO.getYyxtbh();
+        List<MenuResourceDTO> menusDTOs = convertToMenuDTOs(appCode,tAppFunctionList);
         dto.setMenusResources(menusDTOs);
         return dto;
     }
@@ -381,50 +347,27 @@ public class ResourceBusiness implements IResourceBusiness {
     /**
      * 增量新增服务资源
      *
+     * @param serviceStr
      * @param acceptDTO
      * @return
      */
-    public boolean acceptServiceResource(ServiceResourceAcceptDTO acceptDTO) {
+    public boolean acceptServiceResource(String serviceStr, ServiceResourceAcceptDTO acceptDTO) {
         ResourceTypeEnum serviceEnum = ResourceTypeEnum.TJ_SERVICE;
-//        ResourceSyncDTO syncDTO = new ResourceSyncDTO(serviceEnum.getResourceId()
-//                , serviceEnum.getResourceType(), serviceEnum.getResouProvider());
-//        syncDTO.setServiceCode(acceptDTO.getFWZYBSF());
-//        syncDTO.setServiceName(acceptDTO.getFWZYMC());
-//        syncDTO.setExtId(acceptDTO.getId());
-//        syncDTO.setContent(JSON.toJSONString(acceptDTO));
-//        syncDTO.setSync(BooleanEnum.TRUE.getValue());
-//        syncDTO.setDeleted(BooleanEnum.FALSE.getValue());
-//        syncService.insertRemoteResourceSync(syncDTO);
+        ResourceSyncDTO syncDTO = new ResourceSyncDTO(serviceEnum.getResourceId()
+                , serviceEnum.getResourceType(), serviceEnum.getResouProvider());
+        syncDTO.setServiceCode(acceptDTO.getFWZYBSF());
+        syncDTO.setServiceName(acceptDTO.getFWZYMC());
+        syncDTO.setExtId(acceptDTO.getId());
+        syncDTO.setContent(serviceStr);
+        syncDTO.setSync(BooleanEnum.TRUE.getValue());
+        syncDTO.setDeleted(BooleanEnum.FALSE.getValue());
+        syncService.insertRemoteResourceSync(syncDTO);
         //同步更新服务表
-        ServiceResourceDTO serviceResourceDTO = convertToServiceDTO(acceptDTO);
-        serviceResourceDTO.setResourceId(serviceEnum.getResourceId());
-        serviceResourceDTO.setResourceType(serviceEnum.getResourceType());
-        serviceResourceDTO.setResourceProvider(serviceEnum.getResouProvider());
+        ServiceResourceDTO serviceResourceDTO = ResourceServiceImpl.convertToServiceDTO(acceptDTO);
         resourceService.insertServiceResource(serviceResourceDTO);
         return true;
     }
 
-    private ServiceResourceDTO convertToServiceDTO(ServiceResourceAcceptDTO acceptDTO) {
-        ServiceResourceDTO dto = new ServiceResourceDTO();
-        dto.setServiceCode(acceptDTO.getFWZYBSF());
-        dto.setServiceName(acceptDTO.getFWZYMC());
-        dto.setManagerUnitCode(acceptDTO.getFWZYGLDW_GAJGJGDM());
-        dto.setBuildUnitCode(acceptDTO.getFWZYSQDW_JGDM());
-        dto.setServiceUrl(acceptDTO.getFWFWDZ());
-        String fwzyztdm = acceptDTO.getFWZYZTDM();
-        dto.setServiceStatus(fwzyztdm);
-        dto.setDeleted(BooleanEnum.FALSE.getValue());
-        if (ServiceStatusCons.STATUS_DELETED.equals(fwzyztdm)) {
-            dto.setDeleted(BooleanEnum.TRUE.getValue());
-        }
-        dto.setServiceType(acceptDTO.getFWLXDM());
-        dto.setServiceProvideWay(acceptDTO.getFWTGFSDM());
-        //是否自用服务,服务资源未返回
-//        dto.setMustSelf();
-        dto.setAppCode(acceptDTO.getTGFWZYD_YYZYBS());
-        return dto;
-    }
-
 
     @Override
     public List<ResourceRequestResultDTO> getResourceRequestResults(ResourceRequestParamDTO requestParamDTO) {

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

@@ -40,4 +40,11 @@ public interface IApplyOauthService extends IBaseService<ApplyOauth, String> {
     @AuditLog(module = "根据Map里面的条件查询所有应用授权")
     List<ApplyOauth> applyOauthList(Map<String, Object> map);
 
+    /**
+     * 根据Appid获取应用密钥
+     * @param applyId
+     * @return
+     */
+    ApplyOauth getByAppId(String applyId);
+
 }

+ 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);
+    }
 }

+ 23 - 7
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.*;
@@ -276,18 +277,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;
@@ -301,6 +306,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());
@@ -327,9 +337,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.getResouProvider());
@@ -362,6 +377,7 @@ public class ResourceServiceImpl extends BaseMybatisService<ServiceResource,Stri
         }
         dto.setApplyCategory(acceptDTO.getYyxtfldm());
         dto.setPoliceSpecies(acceptDTO.getGajzfldm());
+        dto.setAppSecret(acceptDTO.getAppsecret());
         return dto;
     }
 

+ 35 - 8
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/strategy/AppResourceStrategy.java

@@ -5,10 +5,12 @@ 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.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;
 
@@ -49,26 +51,51 @@ public class AppResourceStrategy implements ResourceOperateStrategy<AppResourceD
         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);
+        String appSecret = dto.getAppSecret();
+        if(StringUtils.isNotBlank(appSecret)){
+            insertAppOauth(applyInfo, appSecret);
+        }
         applyInfoService.save(applyInfo);
-        applyOauthService.saveOauth(applyInfo);
         return applyInfo;
     }
 
     private ApplyInfo updateApplyInfo(ApplyInfo applyInfo, AppResourceDTO dto) {
+        //是需要删除的应用
+        if(BooleanEnum.TRUE.getValue().equals(dto.getDeleted())){
+            applyInfoService.deleteById(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());
         }
         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();