|
@@ -1,14 +1,16 @@
|
|
|
package com.dragoninfo.dcuc.app.business.impl;
|
|
|
|
|
|
import cn.hutool.core.thread.ThreadFactoryBuilder;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
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.dto.dataresource.BaseResp;
|
|
|
import com.dragoninfo.dcuc.app.config.DcucResourceConfig;
|
|
|
import com.dragoninfo.dcuc.app.cons.ServiceStatusCons;
|
|
|
import com.dragoninfo.dcuc.app.dto.*;
|
|
|
+import com.dragoninfo.dcuc.app.dto.dataresource.BaseResp;
|
|
|
import com.dragoninfo.dcuc.app.entity.ApplyInfo;
|
|
|
import com.dragoninfo.dcuc.app.entity.ResourceSync;
|
|
|
import com.dragoninfo.dcuc.app.entity.ServiceResource;
|
|
@@ -17,7 +19,9 @@ 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.auth.auth.enumresources.YesNotEnum;
|
|
|
+import com.dragoninfo.dcuc.app.vo.BusSendReqVO;
|
|
|
+import com.dragoninfo.dcuc.auth.auth.facade.IBimBusinessFacade;
|
|
|
+import com.dragoninfo.dcuc.common.Constants;
|
|
|
import com.dragoninfo.dcuc.common.http.HttpUtil;
|
|
|
import com.dragoninfo.duceap.core.response.Result;
|
|
|
import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
|
|
@@ -25,6 +29,8 @@ import com.dragonsoft.duceap.base.enums.BooleanEnum;
|
|
|
import com.dragonsoft.duceap.base.utils.UserContextUtils;
|
|
|
import com.dragonsoft.duceap.commons.util.ObjectUtils;
|
|
|
import com.dragonsoft.duceap.commons.util.collections.CollectionUtils;
|
|
|
+import com.dragonsoft.duceap.commons.util.date.DateConst;
|
|
|
+import com.dragonsoft.duceap.commons.util.date.DateUtils;
|
|
|
import com.dragonsoft.duceap.commons.util.string.StringUtils;
|
|
|
import com.google.common.reflect.TypeToken;
|
|
|
import org.apache.http.Header;
|
|
@@ -34,10 +40,12 @@ import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.web.context.request.RequestContextHolder;
|
|
|
+import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
|
|
-import java.io.IOException;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
import java.lang.reflect.Type;
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
+import java.text.ParseException;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
import java.util.concurrent.LinkedBlockingQueue;
|
|
@@ -54,29 +62,33 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
|
|
|
Logger logger = LoggerFactory.getLogger(ResourceBusiness.class);
|
|
|
|
|
|
+ /**
|
|
|
+ * 应用令牌错误信息
|
|
|
+ */
|
|
|
+ public static final String APP_TOKEN_ERROR_MESSAGE = "0302 令牌验证执行失败";
|
|
|
@Autowired
|
|
|
- IResourceService resourceService;
|
|
|
-
|
|
|
+ private IResourceService resourceService;
|
|
|
@Autowired
|
|
|
- IResourceSyncService syncService;
|
|
|
-
|
|
|
+ private IResourceSyncService syncService;
|
|
|
@Autowired
|
|
|
- DcucResourceConfig resourceConfig;
|
|
|
-
|
|
|
+ private DcucResourceConfig resourceConfig;
|
|
|
@Autowired
|
|
|
- IApplyInfoService applyInfoService;
|
|
|
-
|
|
|
+ private IApplyInfoService applyInfoService;
|
|
|
@Autowired
|
|
|
- IServiceResourceService serviceResourceService;
|
|
|
-
|
|
|
+ private IServiceResourceService serviceResourceService;
|
|
|
+ @Autowired
|
|
|
+ private IBimBusinessFacade bimBusinessFacade;
|
|
|
/**
|
|
|
* 使用线程池异步获取应用菜单
|
|
|
*/
|
|
|
private ExecutorService executor = new ThreadPoolExecutor(1, 1,
|
|
|
0L, TimeUnit.MILLISECONDS,
|
|
|
- new LinkedBlockingQueue<Runnable>(),
|
|
|
+ new LinkedBlockingQueue<>(),
|
|
|
new ThreadFactoryBuilder().setNamePrefix("menu-resource").build());
|
|
|
-
|
|
|
+ /**
|
|
|
+ * 重试次数
|
|
|
+ */
|
|
|
+ public static final int RETRY_NUMBER = 3;
|
|
|
|
|
|
@Override
|
|
|
public void resourceSync() {
|
|
@@ -93,7 +105,7 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
}
|
|
|
resourceService.resourceSync(resourceSyncs);
|
|
|
//更新sync字段
|
|
|
- resourceSyncs.stream().forEach(item -> item.setSync(BooleanEnum.TRUE.getValue()));
|
|
|
+ resourceSyncs.forEach(item -> item.setSync(BooleanEnum.TRUE.getValue()));
|
|
|
syncService.batchUpdate(resourceSyncs);
|
|
|
}
|
|
|
}
|
|
@@ -103,9 +115,12 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
//调用总线接口根据appCode获取应用详情
|
|
|
AppResourceAcceptDTO appMenuDTO;
|
|
|
String appStr = null;
|
|
|
+ String userToken = bimBusinessFacade.getUserToken(false);
|
|
|
+
|
|
|
+ String appToken = bimBusinessFacade.getAppToken(userToken, false);
|
|
|
try {
|
|
|
logger.info("-------getAppRemoteDetailByCode STATR---------------");
|
|
|
- appStr = getAppRemoteDetailByCode(appCode);
|
|
|
+ appStr = getAppRemoteDetailByCode(appCode, userToken, appToken, 0);
|
|
|
logger.info("-------getAppRemoteDetailByCode END---------------");
|
|
|
appMenuDTO = JSON.parseObject(appStr, AppResourceAcceptDTO.class);
|
|
|
} catch (Exception e) {
|
|
@@ -218,6 +233,7 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
dto.setServiceStatus(ServiceStatusCons.STATUS_DELETED);
|
|
|
dto.setDeleted(BooleanEnum.TRUE.getValue());
|
|
|
serviceResourceService.updateById(dto);
|
|
|
+ serviceResourceService.deleteById(dto.getId());
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -225,18 +241,27 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
public <T> T getDataResource(Map paramMap, Type type) {
|
|
|
// 构建header
|
|
|
String busSraId = resourceConfig.getBusSraId();
|
|
|
- busSraId = "Y-120000000000-0037";//原有身份没有权限 测试数据
|
|
|
- String busSreIdcard = resourceConfig.getBusSreIdcard();
|
|
|
+
|
|
|
+ String busSreIdcard = UserContextUtils.getCurrentUser().getIdcard();
|
|
|
+
|
|
|
String busServiceId = resourceConfig.getDataResource().getBusServiceId();
|
|
|
String busServiceFunc = resourceConfig.getDataResource().getBusServiceFunc();
|
|
|
- List<Header> heards = getHeaders(busSraId, busSreIdcard, busServiceId, busServiceFunc);
|
|
|
+
|
|
|
+ BusSendReqVO busSendReqVO = BusSendReqVO.builder()
|
|
|
+ .busSraId(busSraId)
|
|
|
+ .busServiceId(busServiceId)
|
|
|
+ .busServiceFunc(busServiceFunc)
|
|
|
+ .busSreIdcard(busSreIdcard)
|
|
|
+ .build();
|
|
|
+
|
|
|
+ List<Header> headerList = getHeaders(busSendReqVO);
|
|
|
String url = resourceConfig.getResourceUrl();
|
|
|
logger.info("getDataResource >> url:{}, busSraId:{}, busServiceId:{}, busServiceFunc:{}, busSreIdcard:{}",
|
|
|
url, busSraId, busServiceId, busServiceFunc, busSreIdcard);
|
|
|
- String response = HttpUtil.postJSON(url, JSON.toJSONString(paramMap), heards, null);
|
|
|
+ String response = HttpUtil.postJSON(url, JSON.toJSONString(paramMap), headerList, null);
|
|
|
BaseResp<String> baseResp = JSON.parseObject(response, new TypeToken<BaseResp<String>>() {
|
|
|
}.getType());
|
|
|
- if (baseResp.getCode().equals("000")) {
|
|
|
+ if ("000".equals(baseResp.getCode())) {
|
|
|
return JSON.parseObject(baseResp.getResultData(), type);
|
|
|
}
|
|
|
logger.error("调用数据失败:getDataResource >> url:{}, busSraId:{}, busServiceId:{}, busServiceFunc:{}, busSreIdcard:{}",
|
|
@@ -245,24 +270,19 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
}
|
|
|
|
|
|
private String getServiceRemoteDetailByCode(String serviceCode) {
|
|
|
- String busSraId = resourceConfig.getBusSraId();
|
|
|
- String busSreIdcard = resourceConfig.getBusSreIdcard();
|
|
|
- String busServiceId = resourceConfig.getServiceModifyResource().getBusServiceId();
|
|
|
- String busServiceFunc = resourceConfig.getServiceModifyResource().getBusServiceFunc();
|
|
|
- List<Header> heards = getHeaders(busSraId, busSreIdcard, busServiceId, busServiceFunc);
|
|
|
- String url = resourceConfig.getResourceUrl();
|
|
|
- Map<String, String> param = new HashMap<>();
|
|
|
- param.put("Condition", "FWZYBSF = '" + serviceCode + "'");
|
|
|
- param.put("page", "1");
|
|
|
- param.put("pageSize", "1");
|
|
|
- logger.info("getServiceRemoteDetailByCode >> url:{}, busSraId:{}, busServiceId:{}, busServiceFunc:{}, busSreIdcard:{}, serviceCode:{}",
|
|
|
- url, busSraId, busServiceId, busServiceFunc, busSreIdcard, serviceCode);
|
|
|
- String response = HttpUtil.postJSON(url, JSON.toJSONString(param), heards, null);
|
|
|
+
|
|
|
+ String userToken = bimBusinessFacade.getUserToken(false);
|
|
|
+
|
|
|
+ String appToken = bimBusinessFacade.getAppToken(userToken, false);
|
|
|
+
|
|
|
+ String response = getAppResource(serviceCode, userToken, appToken, 0);
|
|
|
+
|
|
|
logger.info("getServiceRemoteDetailByCode result:{}", response);
|
|
|
if (StringUtils.isBlank(response)) {
|
|
|
logger.info("getServiceRemoteDetailByCode response is null");
|
|
|
return "";
|
|
|
}
|
|
|
+
|
|
|
JSONObject jsonObject = JSONObject.parseObject(response);
|
|
|
String status = jsonObject.getString("status");
|
|
|
if (!ResponseStatus.SUCCESS_CODE.equals(status)) {
|
|
@@ -282,6 +302,53 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
return JSON.toJSONString(dataInfo);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取应用资源
|
|
|
+ *
|
|
|
+ * @param serviceCode 服务代码
|
|
|
+ * @param userToken 用户令牌
|
|
|
+ * @param appToken 应用令牌
|
|
|
+ * @param retry 重试次数
|
|
|
+ * @return 返回结果
|
|
|
+ */
|
|
|
+ private String getAppResource(String serviceCode, String userToken, String appToken, int retry) {
|
|
|
+ String busSraId = resourceConfig.getBusSraId();
|
|
|
+ String busSreIdcard = resourceConfig.getBusSreIdcard();
|
|
|
+ String busServiceId = resourceConfig.getServiceModifyResource().getBusServiceId();
|
|
|
+ String busServiceFunc = resourceConfig.getServiceModifyResource().getBusServiceFunc();
|
|
|
+
|
|
|
+ BusSendReqVO busSendReqVO = BusSendReqVO.builder()
|
|
|
+ .busSraId(busSraId)
|
|
|
+ .busServiceId(busServiceId)
|
|
|
+ .busServiceFunc(busServiceFunc)
|
|
|
+ .busSreIdcard(busSreIdcard)
|
|
|
+ .userToken(userToken)
|
|
|
+ .appToken(appToken)
|
|
|
+ .build();
|
|
|
+
|
|
|
+ List<Header> headerList = getHeaders(busSendReqVO);
|
|
|
+
|
|
|
+ String url = resourceConfig.getResourceUrl();
|
|
|
+ Map<String, String> param = new HashMap<>();
|
|
|
+ param.put("Condition", "FWZYBSF = '" + serviceCode + "'");
|
|
|
+ param.put("page", "1");
|
|
|
+ param.put("pageSize", "1");
|
|
|
+
|
|
|
+ logger.info("getServiceRemoteDetailByCode >> url:{}, busSraId:{}, busServiceId:{}, busServiceFunc:{}, busSreIdcard:{}, serviceCode:{}",
|
|
|
+ url, busSraId, busServiceId, busServiceFunc, busSreIdcard, serviceCode);
|
|
|
+
|
|
|
+ String response = HttpUtil.postJSON(url, JSON.toJSONString(param), headerList, null);
|
|
|
+
|
|
|
+ if ((retry <= RETRY_NUMBER) && (!JSONUtil.isJson(response))) {
|
|
|
+ retry++;
|
|
|
+ String retryUserToken = bimBusinessFacade.getUserToken(true);
|
|
|
+ String retryAppToken = bimBusinessFacade.getAppToken(userToken, true);
|
|
|
+ return getAppResource(serviceCode, retryUserToken, retryAppToken, retry);
|
|
|
+ }
|
|
|
+
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 增量新增/更新应用资源和应用相关的菜单资源
|
|
|
*
|
|
@@ -331,7 +398,7 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
dto.setAppCode(appInfoAcceptDTO.getYyxtbh());
|
|
|
dto.setAppName(appInfoAcceptDTO.getYyxtmc());
|
|
|
String xtzybs = appInfoAcceptDTO.getXtzybs();
|
|
|
- if (StringUtils.isNotBlank(xtzybs)) {
|
|
|
+ if (StrUtil.isNotBlank(xtzybs)) {
|
|
|
if (BooleanEnum.TRUE.getValue().equals(xtzybs)) {
|
|
|
xtzybs = BooleanEnum.FALSE.getValue();
|
|
|
} else {
|
|
@@ -340,36 +407,37 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
}
|
|
|
dto.setAppStatus(xtzybs);
|
|
|
dto.setAppUrl(appInfoAcceptDTO.getYyxtfwdz());
|
|
|
- dto.setBuildUnitCode(appInfoAcceptDTO.getYyxtgldwdm());
|
|
|
+ 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");
|
|
|
+ if (StrUtil.isNotBlank(sxrq)) {
|
|
|
+ Date date = null;
|
|
|
try {
|
|
|
- Date parse = format.parse(sxrq);
|
|
|
- dto.setRegistrationTime(parse);
|
|
|
- } catch (Exception e) {
|
|
|
-
|
|
|
+ date = DateUtils.getDate(sxrq, DateConst.HYPHEN_DISPLAY_TIME);
|
|
|
+ dto.setRegistrationTime(date);
|
|
|
+ } catch (ParseException e) {
|
|
|
+ logger.error("Parse error", e);
|
|
|
}
|
|
|
}
|
|
|
dto.setApplyCategory(appInfoAcceptDTO.getYyxtfldm());
|
|
|
dto.setPoliceSpecies(appInfoAcceptDTO.getGajzfldm());
|
|
|
//设置菜单资源
|
|
|
List<MenuResourceAcceptDTO> tAppFunctionList = acceptDTO.getTappFunctionList();
|
|
|
- List<MenuResourceDTO> menusDTOs = new ArrayList<>();
|
|
|
- for (MenuResourceAcceptDTO mADTO : tAppFunctionList) {
|
|
|
+ List<MenuResourceDTO> dtoArrayList = new ArrayList<>();
|
|
|
+ for (MenuResourceAcceptDTO menuResourceAcceptDTO : tAppFunctionList) {
|
|
|
MenuResourceDTO menuDTO = new MenuResourceDTO();
|
|
|
- menuDTO.setFunCode(mADTO.getGnbh());
|
|
|
- menuDTO.setPFunCode(mADTO.getSjgnbh());
|
|
|
- menuDTO.setFunName(mADTO.getGnmc());
|
|
|
+ menuDTO.setFunCode(menuResourceAcceptDTO.getGnbh());
|
|
|
+ menuDTO.setPFunCode(menuResourceAcceptDTO.getSjgnbh());
|
|
|
+ menuDTO.setFunName(menuResourceAcceptDTO.getGnmc());
|
|
|
menuDTO.setAppCode(appInfoAcceptDTO.getYyxtbh());
|
|
|
- menuDTO.setStatus(mADTO.getZyzt());
|
|
|
- menusDTOs.add(menuDTO);
|
|
|
+ menuDTO.setStatus(menuResourceAcceptDTO.getZyzt());
|
|
|
+ dtoArrayList.add(menuDTO);
|
|
|
}
|
|
|
- dto.setMenusResources(menusDTOs);
|
|
|
+ dto.setMenusResources(dtoArrayList);
|
|
|
return dto;
|
|
|
}
|
|
|
|
|
@@ -403,8 +471,8 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
ServiceResourceDTO dto = new ServiceResourceDTO();
|
|
|
dto.setServiceCode(acceptDTO.getFWZYBSF());
|
|
|
dto.setServiceName(acceptDTO.getFWZYMC());
|
|
|
- dto.setBuildUnitCode(acceptDTO.getFWZYGLDW_GAJGJGDM());
|
|
|
- dto.setContractUnitCode(acceptDTO.getFWZYSQDW_JGDM());
|
|
|
+ dto.setManagerUnitCode(acceptDTO.getFWZYGLDW_GAJGJGDM());
|
|
|
+ dto.setBuildUnitCode(acceptDTO.getFWZYSQDW_JGDM());
|
|
|
dto.setServiceUrl(acceptDTO.getFWFWDZ());
|
|
|
String fwzyztdm = acceptDTO.getFWZYZTDM();
|
|
|
dto.setServiceStatus(fwzyztdm);
|
|
@@ -412,6 +480,11 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
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;
|
|
|
}
|
|
|
|
|
@@ -462,7 +535,7 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
String resourceId = listingParam.getResourceId();
|
|
|
List<Integer> pageNos = listingParam.getPageNo();
|
|
|
ResourceRequestResultDTO resourceListResult = new ResourceRequestResultDTO(resourceId, new ArrayList<Integer>());
|
|
|
- resourceListResult.setSuccess(YesNotEnum.YES.getValue());
|
|
|
+ resourceListResult.setSuccess(BooleanEnum.TRUE.getValue());
|
|
|
for (Integer pageNo : pageNos) {
|
|
|
Result<Map<String, Object>> result = getRemoteResource(resourceId, pageNo, pageSize);
|
|
|
//只收集未同步成功的资源id和页码
|
|
@@ -470,7 +543,7 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
Map<String, Object> resultMap = result.getContent();
|
|
|
Integer ePageNo = (Integer) resultMap.get("pageNo");
|
|
|
resourceListResult.getPageNos().add(ePageNo);
|
|
|
- resourceListResult.setSuccess(YesNotEnum.NO.getValue());
|
|
|
+ resourceListResult.setSuccess(BooleanEnum.FALSE.getValue());
|
|
|
}
|
|
|
}
|
|
|
//不记录总页数,这里不是全量获取
|
|
@@ -488,8 +561,8 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
Integer pageNo = currentPageNo;
|
|
|
Integer pages = currentPageNo;
|
|
|
String resourceId = resourceTypeEnum.getResourceId();
|
|
|
- ResourceRequestResultDTO resourceListResult = new ResourceRequestResultDTO(resourceId, new ArrayList<Integer>());
|
|
|
- resourceListResult.setSuccess(YesNotEnum.YES.getValue());
|
|
|
+ ResourceRequestResultDTO resourceListResult = new ResourceRequestResultDTO(resourceId, new ArrayList<>());
|
|
|
+ resourceListResult.setSuccess(BooleanEnum.TRUE.getValue());
|
|
|
do {
|
|
|
Result<Map<String, Object>> result = getRemoteResource(resourceId, pageNo, pageSize);
|
|
|
Map<String, Object> resultMap = result.getContent();
|
|
@@ -497,7 +570,7 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
if (!ResponseStatus.SUCCESS_CODE.equals(result.getResult())) {
|
|
|
Integer ePageNo = (Integer) resultMap.get("pageNo");
|
|
|
resourceListResult.getPageNos().add(ePageNo);
|
|
|
- resourceListResult.setSuccess(YesNotEnum.NO.getValue());
|
|
|
+ resourceListResult.setSuccess(BooleanEnum.FALSE.getValue());
|
|
|
}
|
|
|
Integer allPages = (Integer) resultMap.get("pages");
|
|
|
if (null != allPages) {
|
|
@@ -525,16 +598,23 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
*
|
|
|
* @param appId 资源提供方应用id
|
|
|
* @return
|
|
|
- * @throws IOException
|
|
|
*/
|
|
|
- private String getAppRemoteDetailById(String appId, String idcard) throws IOException {
|
|
|
+ private String getAppRemoteDetailById(String appId, String idcard) {
|
|
|
String busSraId = resourceConfig.getBusSraId();
|
|
|
String busServiceId = resourceConfig.getMenuResource().getBusServiceId();
|
|
|
String busServiceFunc = resourceConfig.getMenuResource().getBusServiceFunc();
|
|
|
- List<Header> heards = getHeaders(busSraId, idcard, busServiceId, busServiceFunc);
|
|
|
+
|
|
|
+ BusSendReqVO busSendReqVO = BusSendReqVO.builder()
|
|
|
+ .busSraId(busSraId)
|
|
|
+ .busServiceId(busServiceId)
|
|
|
+ .busServiceFunc(busServiceFunc)
|
|
|
+ .busSreIdcard(idcard)
|
|
|
+ .build();
|
|
|
+
|
|
|
+ List<Header> headerList = getHeaders(busSendReqVO);
|
|
|
String url = resourceConfig.getResourceUrl() + "/" + appId;
|
|
|
logger.info("getAppRemoteDetailById >> url:{}", url);
|
|
|
- String result = HttpUtil.get(url, null, heards);
|
|
|
+ String result = HttpUtil.get(url, null, headerList);
|
|
|
if (StringUtils.isBlank(result)) {
|
|
|
logger.info("getAppRemoteDetailById response is null");
|
|
|
return "";
|
|
@@ -546,27 +626,47 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
/**
|
|
|
* 从总线获取应用详细信息
|
|
|
*
|
|
|
- * @param appCode 应用code
|
|
|
- * @return
|
|
|
+ * @param appCode 应用code
|
|
|
+ * @param userToken 用户令牌
|
|
|
+ * @param appToken 应用令牌
|
|
|
+ * @return 结果
|
|
|
*/
|
|
|
- private String getAppRemoteDetailByCode(String appCode) throws IOException {
|
|
|
+ private String getAppRemoteDetailByCode(String appCode, String userToken, String appToken, int retry) {
|
|
|
String busSraId = resourceConfig.getBusSraId();
|
|
|
String busSreIdcard = resourceConfig.getBusSreIdcard();
|
|
|
String busServiceId = resourceConfig.getAppModifyResource().getBusServiceId();
|
|
|
String busServiceFunc = resourceConfig.getAppModifyResource().getBusServiceFunc();
|
|
|
- List<Header> heards = getHeaders(busSraId, busSreIdcard, busServiceId, busServiceFunc);
|
|
|
+ BusSendReqVO busSendReqVO = BusSendReqVO.builder()
|
|
|
+ .busSraId(busSraId)
|
|
|
+ .busServiceId(busServiceId)
|
|
|
+ .busServiceFunc(busServiceFunc)
|
|
|
+ .busSreIdcard(busSreIdcard)
|
|
|
+ .userToken(userToken)
|
|
|
+ .appToken(appToken)
|
|
|
+ .build();
|
|
|
+
|
|
|
+ List<Header> headerList = getHeaders(busSendReqVO);
|
|
|
+
|
|
|
String url = resourceConfig.getResourceUrl();
|
|
|
Map<String, String> param = new HashMap<>();
|
|
|
param.put("yyxtbh", appCode);
|
|
|
logger.info("getAppRemoteDetailByCode >> url:{}, busSraId:{}, busServiceId:{}, busServiceFunc:{}, busSreIdcard:{}, appCode:{}",
|
|
|
url, busSraId, busServiceId, busServiceFunc, busSreIdcard, appCode);
|
|
|
- String result = HttpUtil.get(url, param, heards);
|
|
|
- if (StringUtils.isBlank(result)) {
|
|
|
+ String response = HttpUtil.get(url, param, headerList);
|
|
|
+ if (StringUtils.isBlank(response)) {
|
|
|
logger.info("getAppRemoteDetailByCode response is null");
|
|
|
return "";
|
|
|
}
|
|
|
- logger.info("getAppRemoteDetailByCode result:{}", result);
|
|
|
- return result;
|
|
|
+ logger.info("getAppRemoteDetailByCode result:{}", response);
|
|
|
+
|
|
|
+ if ((retry <= RETRY_NUMBER) && (!JSONUtil.isJson(response))) {
|
|
|
+ retry++;
|
|
|
+ String retryUserToken = bimBusinessFacade.getUserToken(true);
|
|
|
+ String retryAppToken = bimBusinessFacade.getAppToken(userToken, true);
|
|
|
+ return getAppRemoteDetailByCode(appCode, retryUserToken, retryAppToken, retry);
|
|
|
+ }
|
|
|
+
|
|
|
+ return response;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -588,7 +688,14 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
String busSreIdcard = UserContextUtils.getCurrentUser().getIdcard();
|
|
|
String busServiceId = resourceConfig.getServiceResource().getBusServiceId();
|
|
|
String busServiceFunc = resourceConfig.getServiceResource().getBusServiceFunc();
|
|
|
- List<Header> headerList = getHeaders(busSraId, busSreIdcard, busServiceId, busServiceFunc);
|
|
|
+
|
|
|
+ BusSendReqVO busSendReqVO = BusSendReqVO.builder()
|
|
|
+ .busSraId(busSraId)
|
|
|
+ .busServiceId(busServiceId)
|
|
|
+ .busServiceFunc(busServiceFunc)
|
|
|
+ .busSreIdcard(busSreIdcard)
|
|
|
+ .build();
|
|
|
+ List<Header> headerList = getHeaders(busSendReqVO);
|
|
|
logger.info("getServiceResource url:{}", url);
|
|
|
String response = HttpUtil.postJSON(url, param, headerList, null);
|
|
|
if (null == response) {
|
|
@@ -639,7 +746,7 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
if (resourceConfig.getMenuResource().isMenuEnabled() && ResourceTypeEnum.TJ_APP.equals(resourceEnum)) {
|
|
|
List<String> ids = dtos.stream()
|
|
|
.filter(item -> StringUtils.isNotBlank(item.getExtId()))
|
|
|
- .map(item -> item.getExtId())
|
|
|
+ .map(ResourceSyncDTO::getExtId)
|
|
|
.collect(Collectors.toList());
|
|
|
getAppMenus(ids);
|
|
|
}
|
|
@@ -660,7 +767,7 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
- private HttpResult getResourceFromRemote(ResourceTypeEnum resourceTypeEnum, Integer pageNo, Integer pageSize) throws IOException {
|
|
|
+ private HttpResult getResourceFromRemote(ResourceTypeEnum resourceTypeEnum, Integer pageNo, Integer pageSize) {
|
|
|
HttpResult httpResult;
|
|
|
String url = resourceConfig.getResourceUrl();
|
|
|
//获取应用资源
|
|
@@ -696,7 +803,15 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
String busSreIdcard = UserContextUtils.getCurrentUser().getIdcard();
|
|
|
String busServiceId = resourceConfig.getAppResource().getBusServiceId();
|
|
|
String busServiceFunc = resourceConfig.getAppResource().getBusServiceFunc();
|
|
|
- List<Header> headerList = getHeaders(busSraId, busSreIdcard, busServiceId, busServiceFunc);
|
|
|
+
|
|
|
+ BusSendReqVO busSendReqVO = BusSendReqVO.builder()
|
|
|
+ .busSraId(busSraId)
|
|
|
+ .busServiceId(busServiceId)
|
|
|
+ .busServiceFunc(busServiceFunc)
|
|
|
+ .busSreIdcard(busSreIdcard)
|
|
|
+ .build();
|
|
|
+
|
|
|
+ List<Header> headerList = getHeaders(busSendReqVO);
|
|
|
logger.info("getAppResource url:{}", url);
|
|
|
String response = HttpUtil.postForm(url, param, headerList, null);
|
|
|
if (null == response) {
|
|
@@ -716,24 +831,52 @@ public class ResourceBusiness implements IResourceBusiness {
|
|
|
/**
|
|
|
* 总线调用设置请求头
|
|
|
*
|
|
|
- * @param busSraId
|
|
|
- * @param busSreIdcard
|
|
|
- * @param busServiceId
|
|
|
- * @param busServiceFunc
|
|
|
- * @return
|
|
|
+ * @param busSendReqVO 请求参数
|
|
|
+ * @return Header
|
|
|
*/
|
|
|
- private List<Header> getHeaders(String busSraId, String busSreIdcard, String busServiceId, String busServiceFunc) {
|
|
|
- logger.info("getHeaders >>> busSraId:{},busSreIdcard:{},busServiceId:{},busServiceFunc:{}",
|
|
|
- busSraId, busSreIdcard, busServiceId, busServiceFunc);
|
|
|
+ private List<Header> getHeaders(BusSendReqVO busSendReqVO) {
|
|
|
+ logger.info("getHeaders >>> {}", busSendReqVO);
|
|
|
+
|
|
|
+ ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
|
|
|
+ HttpServletRequest request = servletRequestAttributes.getRequest();
|
|
|
+
|
|
|
List<Header> heardList = new ArrayList<>();
|
|
|
- Header busSraIdHeader = new BasicHeader("bus_sra_id", busSraId);
|
|
|
- Header busSreIdHeader = new BasicHeader("bus_sre_idcard", busSreIdcard);
|
|
|
- Header serviceIdHeader = new BasicHeader("bus_service_id", busServiceId);
|
|
|
- Header busServiceFuncHeader = new BasicHeader("bus_service_func", busServiceFunc);
|
|
|
+
|
|
|
+ Header busSraIdHeader = new BasicHeader("bus_sra_id", busSendReqVO.getBusSraId());
|
|
|
+ Header serviceIdHeader = new BasicHeader("bus_service_id", busSendReqVO.getBusServiceId());
|
|
|
+ Header busServiceFuncHeader = new BasicHeader("bus_service_func", busSendReqVO.getBusServiceFunc());
|
|
|
+ Header busSreIdHeader = new BasicHeader("bus_sre_idcard", busSendReqVO.getBusSreIdcard());
|
|
|
+
|
|
|
heardList.add(busSraIdHeader);
|
|
|
heardList.add(busSreIdHeader);
|
|
|
heardList.add(serviceIdHeader);
|
|
|
heardList.add(busServiceFuncHeader);
|
|
|
+
|
|
|
+ String voUserToken = busSendReqVO.getUserToken();
|
|
|
+ String voAppToken = busSendReqVO.getAppToken();
|
|
|
+ if (StrUtil.isBlank(voUserToken) && StrUtil.isBlank(voAppToken)) {
|
|
|
+ String userToken = request.getHeader(Constants.USER_TOKEN);
|
|
|
+ String appToken = request.getHeader(Constants.APP_TOKEN);
|
|
|
+
|
|
|
+ logger.info("getHeaders >>> request userToken:{},appToken:{}", userToken, appToken);
|
|
|
+ if (StrUtil.isNotBlank(userToken)) {
|
|
|
+ Header busSreTokenHeader = new BasicHeader("bus_sre_token", userToken);
|
|
|
+ heardList.add(busSreTokenHeader);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StrUtil.isNotBlank(appToken)) {
|
|
|
+ Header busSraTokenHeader = new BasicHeader("bus_sra_token", appToken);
|
|
|
+ heardList.add(busSraTokenHeader);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ logger.info("getHeaders >>> request voUserToken:{}, voAppToken {}", voUserToken, voAppToken);
|
|
|
+ Header busSraTokenHeader = new BasicHeader("bus_sra_token", voAppToken);
|
|
|
+ heardList.add(busSraTokenHeader);
|
|
|
+
|
|
|
+ Header busSreTokenHeader = new BasicHeader("bus_sre_token", voUserToken);
|
|
|
+ heardList.add(busSreTokenHeader);
|
|
|
+ }
|
|
|
+
|
|
|
return heardList;
|
|
|
}
|
|
|
|