|
@@ -9,6 +9,7 @@ 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.IApplyInfoService;
|
|
|
import com.dragoninfo.dcuc.app.service.IResourceService;
|
|
|
import com.dragoninfo.dcuc.app.service.IResourceSyncService;
|
|
|
import com.dragoninfo.dcuc.auth.auth.enumresources.YesNotEnum;
|
|
@@ -54,6 +55,9 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
@Autowired
|
|
|
DcucResourceConfig resourceConfig;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ IApplyInfoService applyInfoService;
|
|
|
+
|
|
|
/**
|
|
|
* 使用线程池异步获取应用菜单
|
|
|
*/
|
|
@@ -84,6 +88,29 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ public boolean appIncrSync(String appCode) {
|
|
|
+ //调用总线接口根据appCode获取应用详情
|
|
|
+ AppResourceAcceptDTO appMenuDTO;
|
|
|
+ try {
|
|
|
+ String appStr = getAppRemoteDetailByCode(appCode);
|
|
|
+ appMenuDTO = JSON.parseObject(appStr, AppResourceAcceptDTO.class);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("get app info from remote error.", e);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (null == appMenuDTO) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ acceptAppResource(appMenuDTO);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 增量新增/更新应用资源和应用相关的菜单资源
|
|
|
+ *
|
|
|
+ * @param acceptDTO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
public boolean acceptAppResource(AppResourceAcceptDTO acceptDTO) {
|
|
|
ResourceTypeEnum appEnum = ResourceTypeEnum.TJ_APP;
|
|
|
ResourceSyncDTO syncDTO = new ResourceSyncDTO(appEnum.getResourceId()
|
|
@@ -93,7 +120,7 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
syncDTO.setAppName(appAcceptDTO.getYyxtmc());
|
|
|
syncDTO.setExtId(appAcceptDTO.getId());
|
|
|
syncDTO.setContent(JSON.toJSONString(appAcceptDTO));
|
|
|
- syncDTO.setSync(com.dragoninfo.dcuc.user.user.enumresources.YesNotEnum.YES.getValue());
|
|
|
+ syncDTO.setSync(YesNotEnum.YES.getValue());
|
|
|
syncService.insertRemoteResourceSync(syncDTO);
|
|
|
//同步更新应用表
|
|
|
AppResourceDTO appResourceDTO = convertToAppDTO(acceptDTO);
|
|
@@ -147,11 +174,10 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 应用资源接收类转为应用DTO
|
|
|
+ * 增量新增服务资源
|
|
|
* @param acceptDTO
|
|
|
* @return
|
|
|
*/
|
|
|
- @Override
|
|
|
public boolean acceptServiceResource(ServiceResourceAcceptDTO acceptDTO) {
|
|
|
ResourceTypeEnum serviceEnum = ResourceTypeEnum.TJ_SERVICE;
|
|
|
ResourceSyncDTO syncDTO = new ResourceSyncDTO(serviceEnum.getResourceId()
|
|
@@ -286,50 +312,72 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
executor.submit(new MenuTask(extAppIds));
|
|
|
}
|
|
|
|
|
|
- class MenuTask implements Runnable {
|
|
|
-
|
|
|
- private List<String> appIds;
|
|
|
-
|
|
|
- public MenuTask(List<String> appIds) {
|
|
|
- this.appIds = appIds;
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 从总线获取应用详细信息
|
|
|
+ *
|
|
|
+ * @param appId 资源提供方应用id
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ */
|
|
|
+ private String getAppRemoteDetailById(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());
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- logger.info("get menu resource start");
|
|
|
- ArrayList<ResourceSyncDTO> list = new ArrayList<>();
|
|
|
- try {
|
|
|
- for (String appId : appIds) {
|
|
|
- String menuStr = getAppMenuFromRemote(appId);
|
|
|
- AppResourceAcceptDTO resourceAcceptDTO = JSON.parseObject(menuStr, AppResourceAcceptDTO.class);
|
|
|
- AppInfoAcceptDTO appInfo = resourceAcceptDTO.getTappSystem();
|
|
|
- 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.getYyxtbh());
|
|
|
- dto.setAppName(appInfo.getYyxtmc());
|
|
|
- dto.setContent(JSON.toJSONString(resourceAcceptDTO.getTappFunctionList()));
|
|
|
- list.add(dto);
|
|
|
- }
|
|
|
- syncService.batchInsertResourceSync(list);
|
|
|
- } catch (Exception e){
|
|
|
- logger.info("get MenuResource wrong in appIds:{}",JSON.toJSONString(appIds));
|
|
|
- logger.error("get MenuResource exception.",e);
|
|
|
- }
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 从总线获取应用详细信息
|
|
|
+ *
|
|
|
+ * @param appCode 应用code
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String getAppRemoteDetailByCode(String appCode) throws IOException {
|
|
|
+ String busSraId = resourceConfig.getMenuResource().getBusSraId();
|
|
|
+ String busServiceId = resourceConfig.getMenuResource().getBusServiceId();
|
|
|
+ String busServiceFunc = resourceConfig.getMenuResource().getBusServiceFuncAppUpdate();
|
|
|
+ List<Header> heards = getHeaders(busSraId, busServiceId, busServiceFunc);
|
|
|
+ String url = resourceConfig.getResourceUrl();
|
|
|
+ Map<String, String> param = new HashMap<>();
|
|
|
+ param.put("yyxtbh", appCode);
|
|
|
+ CloseableHttpResponse response = HttpUtil.get(url, param, heards);
|
|
|
+ return EntityUtils.toString(response.getEntity());
|
|
|
+ }
|
|
|
|
|
|
- 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());
|
|
|
+ /**
|
|
|
+ * 从总线分页查询服务资源
|
|
|
+ *
|
|
|
+ * @param pageNo
|
|
|
+ * @param pageSize
|
|
|
+ * @param url
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private HttpResult getServiceResource(Integer pageNo, Integer pageSize, String url) {
|
|
|
+ HttpResult httpResult = new HttpResult();
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("page", String.valueOf(pageNo - 1));
|
|
|
+ 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;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -402,31 +450,13 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
return httpResult;
|
|
|
}
|
|
|
|
|
|
- private HttpResult getServiceResource(Integer pageNo, Integer pageSize,String url) {
|
|
|
- HttpResult httpResult = new HttpResult();
|
|
|
- Map<String, Object> map = new HashMap<>();
|
|
|
- map.put("page", String.valueOf(pageNo - 1));
|
|
|
- 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;
|
|
|
- }
|
|
|
-
|
|
|
+ /**
|
|
|
+ * 从总线分页查询应用资源
|
|
|
+ * @param pageNo
|
|
|
+ * @param pageSize
|
|
|
+ * @param url
|
|
|
+ * @return
|
|
|
+ */
|
|
|
private HttpResult getAppResource(Integer pageNo, Integer pageSize, String url) {
|
|
|
HttpResult httpResult = new HttpResult();
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
@@ -451,7 +481,14 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
return httpResult;
|
|
|
}
|
|
|
|
|
|
- private List<Header> getHeaders(String busSraId,String busServiceId,String busServiceFunc) {
|
|
|
+ /**
|
|
|
+ * 总线调用设置请求头
|
|
|
+ * @param busSraId
|
|
|
+ * @param busServiceId
|
|
|
+ * @param busServiceFunc
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ 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);
|
|
@@ -462,6 +499,12 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
return heardList;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 插入资源同步表
|
|
|
+ * @param resourceEnum
|
|
|
+ * @param records
|
|
|
+ * @return
|
|
|
+ */
|
|
|
private List<ResourceSyncDTO> insertRemoteResourceSync(ResourceTypeEnum resourceEnum, JSONArray records) {
|
|
|
List<ResourceSyncDTO> list = new ArrayList<>();
|
|
|
for (Object record : records) {
|
|
@@ -488,4 +531,42 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+ class MenuTask implements Runnable {
|
|
|
+
|
|
|
+ private List<String> appIds;
|
|
|
+
|
|
|
+ public MenuTask(List<String> appIds) {
|
|
|
+ this.appIds = appIds;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ logger.info("get menu resource start");
|
|
|
+ ArrayList<ResourceSyncDTO> list = new ArrayList<>();
|
|
|
+ try {
|
|
|
+ for (String appId : appIds) {
|
|
|
+ String menuStr = getAppRemoteDetailById(appId);
|
|
|
+ AppResourceAcceptDTO resourceAcceptDTO = JSON.parseObject(menuStr, AppResourceAcceptDTO.class);
|
|
|
+ AppInfoAcceptDTO appInfo = resourceAcceptDTO.getTappSystem();
|
|
|
+ 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.getYyxtbh());
|
|
|
+ dto.setAppName(appInfo.getYyxtmc());
|
|
|
+ dto.setContent(JSON.toJSONString(resourceAcceptDTO.getTappFunctionList()));
|
|
|
+ list.add(dto);
|
|
|
+ }
|
|
|
+ syncService.batchInsertResourceSync(list);
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.info("get MenuResource wrong in appIds:{}", JSON.toJSONString(appIds));
|
|
|
+ logger.error("get MenuResource exception.", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|