Procházet zdrojové kódy

Merge branch 'mazq-0226-resourceModify' into 'develop'

Mazq 0226 resource modify

See merge request dcuc/app-service!17
黄资权 před 4 roky
rodič
revize
26c0a897e2
15 změnil soubory, kde provedl 636 přidání a 33 odebrání
  1. 8 0
      dcuc-app-api/src/main/java/com/dragoninfo/dcuc/app/facade/IResourceFacade.java
  2. 34 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/HttpResult.java
  3. 24 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/ListingParamDTO.java
  4. 36 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/ResourceRequestParamDTO.java
  5. 43 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/ResourceRequestResultDTO.java
  6. 20 3
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/enumresources/WorkFlowStatusEnum.java
  7. 15 1
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/IResourceBusiness.java
  8. 316 1
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/impl/ResourceBusiness.java
  9. 98 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/config/DcucResourceConfig.java
  10. 0 19
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/config/DcucServiceIndexConfig.java
  11. 7 6
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/ResourceFacade.java
  12. 6 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/IResourceSyncService.java
  13. 3 3
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/ResourceServiceImpl.java
  14. 7 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/ResourceSyncServiceImpl.java
  15. 19 0
      dcuc-app-service/src/main/resources/application-app.yml

+ 8 - 0
dcuc-app-api/src/main/java/com/dragoninfo/dcuc/app/facade/IResourceFacade.java

@@ -94,4 +94,12 @@ public interface IResourceFacade {
      */
     @PostMapping(value = "getByCodes")
     List<ServiceResource> getServiceByServiceCodes(List<String> list);
+
+    /**
+     * 从总线获取应用、服务、菜单资源
+     * @param requestParam
+     * @return
+     */
+    @PostMapping(value = "getResourceRemote")
+    List<ResourceRequestResultDTO> getResourceRequestResults(@RequestBody ResourceRequestParamDTO requestParam);
 }

+ 34 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/HttpResult.java

@@ -0,0 +1,34 @@
+package com.dragoninfo.dcuc.app.dto;
+
+import com.alibaba.fastjson.JSONArray;
+import lombok.Data;
+
+/**
+ * 调用总线结果封装
+ * @author mazq
+ * @date 2021/2/18
+ */
+@Data
+public class HttpResult {
+    /**
+     * 响应码
+     */
+    private String code;
+    /**
+     * 总页数
+     */
+    private Integer pages;
+    /**
+     * 总数量
+     */
+    private Integer totals;
+    /**
+     * 列表集合
+     */
+    private JSONArray records;
+    /**
+     * 错误说明
+     */
+    private String error;
+}
+

+ 24 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/ListingParamDTO.java

@@ -0,0 +1,24 @@
+package com.dragoninfo.dcuc.app.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 应用服务资源获取参数封装类
+ * @author mazq
+ * @date 2020/11/26
+ */
+@Data
+public class ListingParamDTO {
+
+    /**
+     * 资源枚举类ResourceTypeEnum 资源id 表示想要获取哪一类的资源
+     */
+    private String resourceId;
+
+    /**
+     * 想要获取该类资源哪些页码的数据
+     */
+    private List<Integer> pageNo;
+}

+ 36 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/ResourceRequestParamDTO.java

@@ -0,0 +1,36 @@
+package com.dragoninfo.dcuc.app.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 获取资源数据请求数据封装对象
+ * @author mazq
+ * @date 2020/11/26
+ */
+@Data
+public class ResourceRequestParamDTO {
+
+    /**
+     * 是否获取全量应用和服务资源数据
+     */
+    private boolean listingAll;
+
+    /**
+     * 不全量获取时,获取资源数据参数封装集合
+     * 当listingAll为false时有用
+     */
+    private List<ListingParamDTO> listingParams;
+
+    /**
+     * 获取每页的数量
+     */
+    private Integer pageSize;
+
+    /**
+     * 全量获取时有用
+     * 从currentPageNo页开始获取
+     */
+    private Integer currentPageNo;
+}

+ 43 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/ResourceRequestResultDTO.java

@@ -0,0 +1,43 @@
+package com.dragoninfo.dcuc.app.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 资源获取结果
+ * @author mazq
+ * @date 2021/2/27
+ */
+@Data
+public class ResourceRequestResultDTO {
+
+    /**
+     * 资源枚举类ResourceTypeEnum 资源id
+     */
+    private String resourceId;
+
+    /**
+     * 当获取失败时,失败的页码集合
+     */
+    private List<Integer> pageNos;
+
+    /**
+     * 总页码数量
+     */
+    private Integer totalPages;
+
+    /**
+     * 是否获取成功
+     */
+    private String success;
+
+    public ResourceRequestResultDTO() {
+    }
+
+    public ResourceRequestResultDTO(String resourceId, List<Integer> pageNos) {
+        this.resourceId = resourceId;
+        this.pageNos = pageNos;
+    }
+
+}

+ 20 - 3
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/enumresources/WorkFlowStatusEnum.java

@@ -6,9 +6,26 @@ package com.dragoninfo.dcuc.app.enumresources;
  */
 public enum WorkFlowStatusEnum {
 
-    APPLYING("0","申请中"),TO_BE_APPROVED("1","待审批")
-    ,CANCLEING("2","撤销中"),CANCLED("3","已撤销")
-    ,SUCCESS("4","审批完成");
+    /**
+     * 申请中
+     */
+    APPLYING("0", "申请中"),
+    /**
+     * 待审批
+     */
+    TO_BE_APPROVED("1", "待审批"),
+    /**
+     * 撤销中
+     */
+    CANCLEING("2", "撤销中"),
+    /**
+     * 已撤销
+     */
+    CANCLED("3", "已撤销"),
+    /**
+     * 审批完成
+     */
+    SUCCESS("4", "审批完成");
 
     WorkFlowStatusEnum(String value, String lable) {
         this.value = value;

+ 15 - 1
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/IResourceBusiness.java

@@ -1,11 +1,25 @@
 package com.dragoninfo.dcuc.app.business;
 
+import com.dragoninfo.dcuc.app.dto.ResourceRequestParamDTO;
+import com.dragoninfo.dcuc.app.dto.ResourceRequestResultDTO;
+
+import java.util.List;
+
 /**
  * @author mazq
  * @date 2021/2/26
  */
 public interface IResourceBusiness {
 
-    void resourceSync();
+    /**
+     * 从总线获取应用、服务、菜单资源
+     * @param requestParamDTO
+     * @return
+     */
+    List<ResourceRequestResultDTO> getResourceRequestResults(ResourceRequestParamDTO requestParamDTO);
 
+    /**
+     * 资源同步到应用和服务表
+     */
+    void resourceSync();
 }

+ 316 - 1
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/impl/ResourceBusiness.java

@@ -1,17 +1,36 @@
 package com.dragoninfo.dcuc.app.business.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.dragoninfo.dcuc.app.business.IResourceBusiness;
+import com.dragoninfo.dcuc.app.config.DcucResourceConfig;
+import com.dragoninfo.dcuc.app.dto.*;
 import com.dragoninfo.dcuc.app.entity.ResourceSync;
 import com.dragoninfo.dcuc.app.enumresources.ResourceTypeEnum;
 import com.dragoninfo.dcuc.app.service.IResourceService;
 import com.dragoninfo.dcuc.app.service.IResourceSyncService;
+import com.dragoninfo.dcuc.auth.auth.enumresources.YesNotEnum;
+import com.dragoninfo.duceap.core.response.Result;
+import com.dragoninfo.http.HttpUtil;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.enums.BooleanEnum;
 import com.dragonsoft.duceap.commons.util.collections.CollectionUtils;
+import org.apache.http.Header;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.message.BasicHeader;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
+import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.concurrent.*;
+import java.util.stream.Collectors;
 
 /**
  * @author mazq
@@ -20,12 +39,25 @@ import java.util.List;
 @Component
 public class ResourceBusiness implements IResourceBusiness {
 
+    Logger logger = LoggerFactory.getLogger(ResourceBusiness.class);
+
     @Autowired
     IResourceService resourceService;
 
     @Autowired
     IResourceSyncService syncService;
 
+    @Autowired
+    DcucResourceConfig resourceConfig;
+
+    /**
+     * 使用线程池异步获取应用菜单
+     */
+    private ExecutorService executor = new ThreadPoolExecutor(1, 1,
+                    0L, TimeUnit.MILLISECONDS,
+                    new LinkedBlockingQueue<Runnable>());
+
+
     @Override
     public void resourceSync() {
         //先同步应用和服务数据
@@ -45,4 +77,287 @@ public class ResourceBusiness implements IResourceBusiness {
             syncService.batchUpdate(resourceSyncs);
         }
     }
+
+    @Override
+    public List<ResourceRequestResultDTO> getResourceRequestResults(ResourceRequestParamDTO requestParamDTO) {
+            List<ResourceRequestResultDTO> pageInfos = new ArrayList<>();
+            Integer pageSize = requestParamDTO.getPageSize();
+            boolean listingAll = requestParamDTO.isListingAll();
+            pageSize = (pageSize == null ? 50 : pageSize);
+            //全量获取
+            //从currentPageNo页获取
+            if (listingAll) {
+                //全量同步默认每页数量,便于下次同步
+                pageSize = resourceConfig.getPageSize();
+                Integer currentPageNo = requestParamDTO.getCurrentPageNo();
+                for (ResourceTypeEnum resourceEnum : ResourceTypeEnum.values()) {
+                    //若是增量获取currentPage = 数据库中上次同步的页数
+                    //暂时手动输入currentPage
+                    //没有就从第一页开始获获取
+                    if (null == currentPageNo) {
+                        currentPageNo = 0;
+                    }
+                    ResourceRequestResultDTO listingInfo = getAllResourceListing(currentPageNo, pageSize, resourceEnum);
+                    pageInfos.add(listingInfo);
+                }
+            } else {
+                //根据页码获取
+                List<ListingParamDTO> listingParams = requestParamDTO.getListingParams();
+                for (ListingParamDTO listingParam : listingParams) {
+                    ResourceRequestResultDTO listingInfo = getPageNoResourceListing(pageSize, listingParam);
+                    pageInfos.add(listingInfo);
+                }
+            }
+            //是否需要保存已获取的页数,下次获取使用增量获取?
+            return pageInfos;
+    }
+
+
+    /**
+     * 根据页码获取资源列表
+     *
+     * @param pageSize
+     * @param listingParam
+     * @return
+     */
+    private ResourceRequestResultDTO getPageNoResourceListing(Integer pageSize, ListingParamDTO listingParam) {
+        String resourceId = listingParam.getResourceId();
+        List<Integer> pageNos = listingParam.getPageNo();
+        ResourceRequestResultDTO resourceListResult = new ResourceRequestResultDTO(resourceId, new ArrayList<Integer>());
+        resourceListResult.setSuccess(YesNotEnum.YES.getValue());
+        for (Integer pageNo : pageNos) {
+            Result<Map<String, Object>> result = getRemoteResource(resourceId, pageNo, pageSize);
+            //只收集未同步成功的资源id和页码
+            if (!ResponseStatus.SUCCESS_CODE.equals(result.getResult())) {
+                Map<String, Object> resultMap = result.getContent();
+                Integer ePageNo = (Integer) resultMap.get("pageNo");
+                resourceListResult.getPageNos().add(ePageNo);
+                resourceListResult.setSuccess(YesNotEnum.NO.getValue());
+            }
+        }
+        //不记录总页数,这里不是全量获取
+        resourceListResult.setResourceId(resourceId);
+        return resourceListResult;
+    }
+
+    /**
+     * 从currentPageNo页获取全量的资源列表
+     *
+     * @param pageSize
+     * @return
+     */
+    private ResourceRequestResultDTO getAllResourceListing(Integer currentPageNo, Integer pageSize, ResourceTypeEnum resourceTypeEnum) {
+        Integer pageNo = currentPageNo;
+        Integer pages = currentPageNo;
+        String resourceId = resourceTypeEnum.getResourceId();
+        ResourceRequestResultDTO resourceListResult = new ResourceRequestResultDTO(resourceId, new ArrayList<Integer>());
+        resourceListResult.setSuccess(YesNotEnum.YES.getValue());
+        do {
+            Result<Map<String, Object>> result = getRemoteResource(resourceId, pageNo, pageSize);
+            Map<String, Object> resultMap = result.getContent();
+            //收集未同步成功的资源id和页码
+            if (!ResponseStatus.SUCCESS_CODE.equals(result.getResult())) {
+                Integer ePageNo = (Integer) resultMap.get("pageNo");
+                resourceListResult.getPageNos().add(ePageNo);
+                resourceListResult.setSuccess(YesNotEnum.NO.getValue());
+            }
+            Integer allPages = (Integer) resultMap.get("pages");
+            if (null != allPages) {
+                pages = allPages;
+            }
+            ++pageNo;
+        } while (pageNo <= pages);
+        //收集获取列表的信息
+        //这里是全量获取,记录资源获取的总页数,便于下次全量获取使用
+        resourceListResult.setTotalPages(pages);
+        resourceListResult.setResourceId(resourceId);
+        return resourceListResult;
+    }
+
+    private void getAppMenus(List<String> extAppIds) {
+        if(CollectionUtils.isEmpty(extAppIds)){
+            return;
+        }
+        executor.submit(new MenuTask(extAppIds));
+    }
+
+    class MenuTask implements Runnable {
+
+        private List<String> appIds;
+
+        public MenuTask(List<String> appIds) {
+            this.appIds = appIds;
+        }
+
+        @Override
+        public void run() {
+            ArrayList<ResourceSyncDTO> list = new ArrayList<>();
+            try {
+                for (String appId : appIds) {
+                    String menuStr = getAppMenuFromRemote(appId);
+                    JSONObject menuJSON = JSON.parseObject(menuStr);
+                    JSONObject appInfo = menuJSON.getJSONObject("tAppSystem");
+                    ResourceSyncDTO dto = new ResourceSyncDTO();
+                    dto.setResourceId(ResourceTypeEnum.TJ_APP_MENU.getResourceId());
+                    dto.setResourceType(ResourceTypeEnum.TJ_APP_MENU.getResourceType());
+                    dto.setResourceProvider(ResourceTypeEnum.TJ_APP_MENU.getResouProvider());
+                    dto.setSync(BooleanEnum.FALSE.getValue());
+                    dto.setExtId(appId);
+                    dto.setAppCode(appInfo.getString("yyxtbh"));
+                    dto.setAppName(appInfo.getString("yyxtmc"));
+                    dto.setContent(menuJSON.getJSONArray("tAppFunctionList").toJSONString());
+                    list.add(dto);
+                }
+                syncService.batchInsertResourceSync(list);
+            }catch (Exception e){
+                logger.error("get MenuResource exception.",e);
+            }
+        }
+
+        private String getAppMenuFromRemote(String appId) throws IOException {
+            String busSraId = resourceConfig.getMenuResource().getBusSraId();
+            String busServiceId = resourceConfig.getMenuResource().getBusServiceId();
+            String busServiceFunc = resourceConfig.getMenuResource().getBusServiceFunc();
+            List<Header> heards = getHeaders(busSraId,busServiceId,busServiceFunc);
+            String url = resourceConfig.getResourceUrl() + appId;
+            CloseableHttpResponse response = HttpUtil.get(url,null,heards);
+            return  EntityUtils.toString(response.getEntity());
+        }
+    }
+
+
+    /**
+     * 从网关获取应用信息和服务信息,并录入数据
+     */
+    private Result<Map<String, Object>> getRemoteResource(String resouceId, Integer pageNo, Integer pageSize) {
+        Map<String, Object> resultMap = new HashMap<>();
+        ResourceTypeEnum resourceEnum = ResourceTypeEnum.getByResourceId(resouceId);
+        HttpResult resultFromRemote;
+        try {
+            resultFromRemote = getResourceFromRemote(resourceEnum, pageNo, pageSize);
+        } catch (Exception e) {
+            logger.info("get remote resource error from pageNo:{},pageSize:{},resourceId:{}", pageNo, pageSize, resouceId);
+            logger.error("get remote resource error", e);
+            resultMap.put("pageNo", pageNo);
+            resultMap.put("pageSize", pageSize);
+            resultMap.put("resourceId", resouceId);
+            return Result.fail("400", "get remote resource error", resultMap);
+        }
+        if (!ResponseStatus.SUCCESS_CODE.equals(resultFromRemote.getCode())) {
+            logger.info("get remote resource error from pageNo:{},pageSize:{},resourceId:{}", pageNo, pageSize, resouceId);
+            logger.info("get remote resource error:{}", JSON.toJSONString(resultFromRemote));
+            resultMap.put("pageNo", pageNo);
+            resultMap.put("pageSize", pageSize);
+            resultMap.put("resourceId", resouceId);
+            return Result.fail("400", "get remote resource failed", resultMap);
+        }
+        JSONArray records = resultFromRemote.getRecords();
+        //插入资源数据同步表
+        List<ResourceSyncDTO> dtos = insertRemoteResourceSync(resourceEnum, records);
+        if(resourceConfig.getMenuResource().isMenuEnabled() && ResourceTypeEnum.TJ_APP.equals(resourceEnum)){
+            List<String> ids = dtos.stream().map(item -> item.getExtId()).collect(Collectors.toList());
+            if(CollectionUtils.isNotEmpty(ids)){
+                getAppMenus(ids);
+            }
+        }
+        //返回总数量和总页数
+        Integer total = resultFromRemote.getTotals();
+        Integer pages = resultFromRemote.getPages();
+        resultMap.put("pageNo", pageNo);
+        resultMap.put("pageSize", pageSize);
+        resultMap.put("resourceId", resouceId);
+        resultMap.put("total", total);
+        resultMap.put("pages", pages);
+        return Result.success(resultMap);
+    }
+
+    /**
+     * 获取应用信息
+     * @return
+     */
+    private HttpResult getResourceFromRemote(ResourceTypeEnum resourceTypeEnum, Integer pageNo, Integer pageSize) throws IOException {
+        HttpResult httpResult = new HttpResult();
+        String url = resourceConfig.getResourceUrl();
+        //获取应用资源
+        if(ResourceTypeEnum.TJ_APP.equals(resourceTypeEnum)){
+            Map<String, Object> map = new HashMap<>();
+            map.put("page",pageNo);
+            map.put("size",pageSize);
+            String param = JSON.toJSONString(map);
+            String busSraId = resourceConfig.getAppResource().getBusSraId();
+            String busServiceId = resourceConfig.getAppResource().getBusServiceId();
+            String busServiceFunc = resourceConfig.getAppResource().getBusServiceFunc();
+            List<Header> headerList = getHeaders(busSraId,busServiceId,busServiceFunc);
+            String response = HttpUtil.postForm(url, param, headerList, null);
+            if(null == response){
+                httpResult.setCode(ResponseStatus.FAIL_CODE);
+            } else {
+                JSONObject parse = JSONObject.parseObject(response);
+                httpResult.setCode(ResponseStatus.SUCCESS_CODE);
+                httpResult.setPages(parse.getInteger("totalPages"));
+                httpResult.setTotals(parse.getInteger("total"));
+                httpResult.setRecords(parse.getJSONArray("content"));
+            }
+        }else if(ResourceTypeEnum.TJ_SERVICE.equals(resourceTypeEnum)){
+            Map<String, Object> map = new HashMap<>();
+            map.put("page",String.valueOf(pageNo));
+            String param = JSON.toJSONString(map);
+            //获取服务资源
+            //服务资源提供方一次查询所有服务资源,未采用分页获取方式
+            String busSraId = resourceConfig.getServiceResource().getBusSraId();
+            String busServiceId = resourceConfig.getServiceResource().getBusServiceId();
+            String busServiceFunc = resourceConfig.getServiceResource().getBusServiceFunc();
+            List<Header> headerList = getHeaders(busSraId,busServiceId,busServiceFunc);
+            String response = HttpUtil.postJSON(url, param,headerList,null);
+            if(null == response){
+                httpResult.setCode(ResponseStatus.FAIL_CODE);
+            } else {
+                JSONObject parse = JSONObject.parseObject(response);
+                JSONObject data = parse.getJSONObject("data");
+                httpResult.setRecords(data.getJSONArray("content"));
+                httpResult.setCode(parse.getString("status"));
+                httpResult.setPages(data.getInteger("totalPages"));
+                httpResult.setTotals(data.getInteger("totalElements"));
+            }
+        }
+        return httpResult;
+    }
+
+    private List<Header> getHeaders(String busSraId,String busServiceId,String busServiceFunc) {
+        List<Header> heardList = new ArrayList<>();
+        Header busSraIdHeader = new BasicHeader("bus_sra_id",busSraId);
+        Header serviceIdHeader = new BasicHeader("bus_service_id",busServiceId);
+        Header busServiceFuncHeader = new BasicHeader("bus_service_func",busServiceFunc);
+        heardList.add(busSraIdHeader);
+        heardList.add(serviceIdHeader);
+        heardList.add(busServiceFuncHeader);
+        return heardList;
+    }
+
+    private List<ResourceSyncDTO> insertRemoteResourceSync(ResourceTypeEnum resourceEnum, JSONArray records) {
+        List<ResourceSyncDTO> list = new ArrayList<>();
+        for (Object record : records) {
+            String jsonString = JSON.toJSONString(record);
+            ResourceSyncDTO dto = new ResourceSyncDTO(resourceEnum.getResourceId(),
+                    resourceEnum.getResourceType(), resourceEnum.getResouProvider());
+            dto.setContent(jsonString);
+            JSONObject jsonObject = JSONObject.parseObject(jsonString);
+            String appCode = jsonObject.getString("yyxtbh");
+            String serviceCode = jsonObject.getString("FWZYBSF");
+            String appName = jsonObject.getString("yyxtmc");
+            String serviceName = jsonObject.getString("FWZYMC");
+            dto.setExtId(jsonObject.getString("id"));
+            dto.setAppCode(appCode);
+            dto.setAppName(appName);
+            dto.setServiceCode(serviceCode);
+            dto.setServiceName(serviceName);
+            dto.setSync(YesNotEnum.NO.getValue());
+            list.add(dto);
+        }
+        if(CollectionUtils.isNotEmpty(list)){
+            syncService.batchInsertResourceSync(list);
+        }
+        return list;
+    }
+
 }

+ 98 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/config/DcucResourceConfig.java

@@ -0,0 +1,98 @@
+package com.dragoninfo.dcuc.app.config;
+
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author mazq
+ * @date 2021/2/19
+ */
+@ConfigurationProperties(prefix = "dcuc.app.resource")
+@Component
+@Data
+public class DcucResourceConfig {
+
+    /**
+     * 获取资源接口地址
+     */
+    private String resourceUrl;
+
+    /**
+     * 每页获取数量
+     */
+    private Integer pageSize;
+
+    /**
+     * 服务资源配置
+     */
+    private ServiceResourceConfig serviceResource;
+
+    /**
+     * 应用资源配置
+     */
+    private AppResourceConfig appResource;
+
+    /**
+     * 菜单资源配置
+     */
+    private MenuResourceConfig menuResource;
+
+
+    @Data
+    public static class MenuResourceConfig {
+
+        /**
+         * 总线请求头参数
+         */
+        private String busSraId;
+        /**
+         * 总线请求头参数
+         */
+        private String busServiceId;
+        /**
+         * 总线请求头参数
+         */
+        private String busServiceFunc;
+
+        /**
+         * 是否需要获取菜单数据
+         */
+        private boolean menuEnabled;
+    }
+
+    @Data
+    public static class AppResourceConfig {
+        /**
+         * 总线请求头参数
+         */
+        private String busSraId;
+        /**
+         * 总线请求头参数
+         */
+        private String busServiceId;
+        /**
+         * 总线请求头参数
+         */
+        private String busServiceFunc;
+    }
+
+    @Data
+    public static class ServiceResourceConfig {
+
+        /**
+         * 总线请求头参数
+         */
+        private String busSraId;
+        /**
+         * 总线请求头参数
+         */
+        private String busServiceId;
+        /**
+         * 总线请求头参数
+         */
+        private String busServiceFunc;
+    }
+}
+

+ 0 - 19
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/config/DcucServiceIndexConfig.java

@@ -1,19 +0,0 @@
-package com.dragoninfo.dcuc.app.config;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-/**
- * @author huangzqa
- * @date 2020/11/5
- */
-@Data
-@Component
-@ConfigurationProperties(prefix = "dcuc.app.service-index")
-public class DcucServiceIndexConfig {
-    /***
-     * 应用资源是否需要保存菜单
-     */
-    private boolean menuEnabled;
-}

+ 7 - 6
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/ResourceFacade.java

@@ -1,9 +1,7 @@
 package com.dragoninfo.dcuc.app.facade;
 
 import com.dragoninfo.dcuc.app.business.IResourceBusiness;
-import com.dragoninfo.dcuc.app.dto.AppResourceDTO;
-import com.dragoninfo.dcuc.app.dto.ResourceSyncDTO;
-import com.dragoninfo.dcuc.app.dto.ServiceResourceDTO;
+import com.dragoninfo.dcuc.app.dto.*;
 import com.dragoninfo.dcuc.app.entity.ApplyInfo;
 import com.dragoninfo.dcuc.app.entity.ResourceSync;
 import com.dragoninfo.dcuc.app.entity.ServiceResource;
@@ -43,9 +41,7 @@ public class ResourceFacade implements IResourceFacade {
 
     @Override
     public void batchInsertResourceSync(List<ResourceSyncDTO> list) {
-        for (ResourceSyncDTO dto : list) {
-            syncService.insertRemoteResourceSync(dto);
-        }
+        syncService.batchInsertResourceSync(list);
     }
 
     @Override
@@ -81,6 +77,11 @@ public class ResourceFacade implements IResourceFacade {
         return resourceService.getServiceByServiceCodes(list);
     }
 
+    @Override
+    public List<ResourceRequestResultDTO> getResourceRequestResults(ResourceRequestParamDTO requestParamDTO) {
+        return iResourceBusiness.getResourceRequestResults(requestParamDTO);
+    }
+
     @Override
     public Page<ServiceResourceDTO> serviceResourcePage(SearchDTO searchDTO) {
         Searchable searchable = Searchable.toSearchable(searchDTO);

+ 6 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/IResourceSyncService.java

@@ -37,4 +37,10 @@ public interface IResourceSyncService {
      * @return
      */
     List<ResourceSync> getNotSyncResource(String resourceId);
+
+    /**
+     * 批量插入数据
+     * @param list
+     */
+    void batchInsertResourceSync(List<ResourceSyncDTO> list);
 }

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

@@ -6,7 +6,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.dragoninfo.dcuc.app.config.DcucServiceIndexConfig;
+import com.dragoninfo.dcuc.app.config.DcucResourceConfig;
 import com.dragoninfo.dcuc.app.dto.AppResourceDTO;
 import com.dragoninfo.dcuc.app.dto.MenuResourceDTO;
 import com.dragoninfo.dcuc.app.dto.ResourceDTO;
@@ -60,7 +60,7 @@ public class ResourceServiceImpl extends BaseMybatisService<ServiceResource,Stri
     private IAppFunInfoFacade iAppFunInfoFacade;
 
     @Autowired
-    private DcucServiceIndexConfig serviceConfig;
+    private DcucResourceConfig resourceConfig;
 
     @Autowired
     private IApplyInfoService applyInfoService;
@@ -232,7 +232,7 @@ public class ResourceServiceImpl extends BaseMybatisService<ServiceResource,Stri
      * @param codeToIdMap appCode-appId 键值对Map
      */
     private void batchInsertMenu(List<MenuResourceDTO> menus, Map<String, String> codeToIdMap) {
-        if(!serviceConfig.isMenuEnabled()){
+        if(!resourceConfig.getMenuResource().isMenuEnabled()){
             return;
         }
         List<AppFunInfo> funList = new ArrayList<>();

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

@@ -82,4 +82,11 @@ public class ResourceSyncServiceImpl extends BaseMybatisService<ResourceSync,Str
                 .eq(ResourceSync::getSync,BooleanEnum.FALSE.getValue());
         return resourceSyncMapper.selectList(queryWrapper);
     }
+
+    @Override
+    public void batchInsertResourceSync(List<ResourceSyncDTO> list) {
+        for (ResourceSyncDTO dto : list) {
+            insertRemoteResourceSync(dto);
+        }
+    }
 }

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

@@ -10,3 +10,22 @@ dcuc:
     service-index:
       #应用资源是否需要保存菜单
       menuEnabled: true
+    resource:
+      #应用资源请求参数
+      pageSize: 50
+      app-resource:
+        bus-sra-id: B1200000001
+        bus-service-id: S-120000000000-0700-00006
+        bus-service-func: searchApp
+      #服务资源请求参数
+      service-resource:
+        bus-sra-id: B1200000001
+        bus-service-id: S-120000000000-0700-00070
+        bus-service-func: findAll
+      #菜单资源请求参数
+      menu-resource:
+        bus-sra-id: B0100000001
+        bus-service-id: S-120000000000-0700-00006
+        bus-service-func: findApp
+        menu-enbaled: true
+      resource-url: http://10.201.7.31:8585/bus/send