瀏覽代碼

Merge branch 'huangzqa-addapi-20220824' of http://192.168.0.144/dcuc-tjdsj/auth-service into mazq-220825-xqkf

mazq 2 年之前
父節點
當前提交
1d11240e07

+ 5 - 0
dcuc-auth-api/pom.xml

@@ -27,5 +27,10 @@
             <artifactId>dcuc-auth-model</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
 </project>

+ 15 - 0
dcuc-auth-api/src/main/java/com/dragoninfo/dcuc/auth/auth/api/IApiDataAuthFacade.java

@@ -1,6 +1,7 @@
 package com.dragoninfo.dcuc.auth.auth.api;
 
 import com.dragoninfo.dcuc.auth.auth.dto.DataItemsCheckDto;
+import com.dragoninfo.dcuc.auth.auth.dto.DataItemsDto;
 import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -8,6 +9,9 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
 
 /**
  * Created by huanghy on 2018/7/9.
@@ -19,6 +23,7 @@ public interface IApiDataAuthFacade {
 
     /**
      * 查询是否拥有数据项权限接口
+     *
      * @return
      */
     @ApiOperation(value = "查询是否拥有数据项权限接口", notes = "查询是否拥有数据项权限接口")
@@ -26,4 +31,14 @@ public interface IApiDataAuthFacade {
     ResponseDTO dataItemsCheck(@RequestBody DataItemsCheckDto dataItemsCheckDto);
 
 
+    /**
+     * 用户机构授权(应标用)
+     *
+     * @param idcard  身份证号
+     * @param orgCode 机构代码
+     * @return 数据项
+     */
+    @ApiOperation(value = "查询是否拥有数据项权限接口", notes = "查询是否拥有数据项权限接口")
+    @RequestMapping(value = "/api/auth-service/v1/data-auth/user-org-code-data-items", method = RequestMethod.POST)
+    DataItemsDto userOrgDataAuth(@RequestParam("idcard") String idcard,@RequestParam("orgCode") String orgCode);
 }

+ 2 - 1
dcuc-auth-api/src/main/java/com/dragoninfo/dcuc/auth/auth/facade/IServiceAuthFlowFacade.java

@@ -4,6 +4,7 @@ package com.dragoninfo.dcuc.auth.auth.facade;
 import com.dragoninfo.dcuc.auth.auth.dto.ServiceAuthFlowDTO;
 import com.dragoninfo.dcuc.auth.auth.dto.WorkFlowResutlAcceptDTO;
 import com.dragoninfo.dcuc.auth.auth.entity.ServiceAuthResult;
+import com.dragoninfo.dcuc.auth.auth.vo.ServiceAuthenticationResVO;
 import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
 import com.dragonsoft.duceap.base.entity.search.SearchDTO;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -64,7 +65,7 @@ public interface IServiceAuthFlowFacade {
      * @param appToken
      */
     @PostMapping(value = "serviceAuthentication")
-    Object serviceAuthentication(@RequestParam("idcard") String idcard, @RequestParam("appCode") String appCode, @RequestParam(value = "userToken",required = false) String userToken, @RequestParam(value = "appToken",required = false) String appToken);
+    List<ServiceAuthenticationResVO> serviceAuthentication(@RequestParam("idcard") String idcard, @RequestParam("appCode") String appCode, @RequestParam(value = "userToken",required = false) String userToken, @RequestParam(value = "appToken",required = false) String appToken);
 
 
     /**

+ 23 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/AuthNoticeReqVO.java

@@ -0,0 +1,23 @@
+package com.dragoninfo.dcuc.auth.auth.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 权限通知请求
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/8/24
+ */
+@Data
+public class AuthNoticeReqVO {
+
+    /**
+     * 用户令牌标识
+     */
+    private List<String> userTokenId;
+
+}

+ 27 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/AuthNoticeRespVO.java

@@ -0,0 +1,27 @@
+package com.dragoninfo.dcuc.auth.auth.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+/**
+ * <p>
+ * 权限通知返回
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/8/24
+ */
+@Data
+public class AuthNoticeRespVO {
+
+    /**
+     * 状态码
+     */
+    @JsonProperty("status_code")
+    private String statusCode;
+
+    /**
+     * 消息
+     */
+    private String message;
+}

+ 2 - 1
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/facade/ServiceAuthFlowFacade.java

@@ -8,6 +8,7 @@ import com.dragoninfo.dcuc.auth.auth.dto.WorkFlowResutlAcceptDTO;
 import com.dragoninfo.dcuc.auth.auth.entity.ServiceAuthResult;
 import com.dragoninfo.dcuc.auth.auth.service.IServiceAuthResultService;
 import com.dragoninfo.dcuc.auth.auth.service.IWorkFlowService;
+import com.dragoninfo.dcuc.auth.auth.vo.ServiceAuthenticationResVO;
 import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
 import com.dragonsoft.duceap.base.entity.search.SearchDTO;
 import com.dragonsoft.duceap.core.search.Searchable;
@@ -107,7 +108,7 @@ public class ServiceAuthFlowFacade implements IServiceAuthFlowFacade {
      * @param appToken
      */
     @Override
-    public Object serviceAuthentication(String idcard, String appCode, String userToken, String appToken) {
+    public List<ServiceAuthenticationResVO> serviceAuthentication(String idcard, String appCode, String userToken, String appToken) {
         return authResultService.serviceAuthentication(idcard, appCode, userToken, appToken);
     }
 

+ 12 - 4
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/facade/api/ApiDataAuthFacade.java

@@ -9,6 +9,8 @@ import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
  * 代码千万行,注释第一行,编码不规范,同事两行泪
  *
@@ -25,25 +27,31 @@ public class ApiDataAuthFacade implements IApiDataAuthFacade {
 
     /**
      * 查询是否拥有数据项权限接口
+     *
      * @return
      */
     @Override
     public ResponseDTO dataItemsCheck(DataItemsCheckDto dataItemsCheckDto) {
         String msg = checkParam(dataItemsCheckDto);
-        if (StringUtils.isNotBlank(msg)){
-            return  ResponseDTO.fail(msg, (Object) null);
+        if (StringUtils.isNotBlank(msg)) {
+            return ResponseDTO.fail(msg, (Object) null);
         }
         return dataAuthService.dataItemsCheck(dataItemsCheckDto);
     }
 
+    @Override
+    public DataItemsDto userOrgDataAuth(String idcard, String orgCode) {
+        return dataAuthService.userOrgDataAuth(idcard, orgCode);
+    }
+
     private String checkParam(DataItemsCheckDto dataItemsCheckDto) {
         String msg = "";
-        if (StringUtils.isBlank(dataItemsCheckDto.getIdcard())){
+        if (StringUtils.isBlank(dataItemsCheckDto.getIdcard())) {
             return "身份证号码不能为空";
         }
         for (int i = 0; i < dataItemsCheckDto.getDataItemsDtoList().size(); i++) {
             DataItemsDto dataItemsDto = dataItemsCheckDto.getDataItemsDtoList().get(i);
-            if (StringUtils.isBlank(dataItemsDto.getDataItemCode()) || StringUtils.isBlank(dataItemsDto.getResourceCode())){
+            if (StringUtils.isBlank(dataItemsDto.getDataItemCode()) || StringUtils.isBlank(dataItemsDto.getResourceCode())) {
                 msg += "第" + (i + 1) + "项的数据资源标识符或数据项标识符不允许为空!";
                 break;
             }

+ 13 - 0
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/service/IDataAuthService.java

@@ -1,5 +1,6 @@
 package com.dragoninfo.dcuc.auth.auth.service;
 
+import com.dragoninfo.dcuc.auth.auth.dto.DataItemsDto;
 import com.dragoninfo.dcuc.auth.auth.dto.data.DataAuthDTO;
 import com.dragoninfo.dcuc.auth.auth.dto.DataItemsCheckDto;
 import com.dragoninfo.dcuc.auth.auth.dto.data.SubDataAuthDTO;
@@ -13,6 +14,7 @@ import java.util.List;
 
 /**
  * 数据权限Service
+ *
  * @author mazq
  * @date 2021/4/9
  */
@@ -20,6 +22,7 @@ public interface IDataAuthService {
 
     /**
      * 新增数据权限
+     *
      * @param dataAuthDTO 数据权限dto
      * @return
      */
@@ -27,6 +30,7 @@ public interface IDataAuthService {
 
     /**
      * 删除数据权限
+     *
      * @param id 数据权限id
      * @return
      */
@@ -34,6 +38,7 @@ public interface IDataAuthService {
 
     /**
      * 获取数据授权
+     *
      * @param id 数据权限id
      * @return
      */
@@ -41,6 +46,7 @@ public interface IDataAuthService {
 
     /**
      * 数据权限更新
+     *
      * @param dataAuthDTO 数据权限dto
      * @return
      */
@@ -48,6 +54,7 @@ public interface IDataAuthService {
 
     /**
      * 数据权限条件搜索
+     *
      * @param searchDTO 查询条件
      * @return
      */
@@ -55,6 +62,7 @@ public interface IDataAuthService {
 
     /**
      * 主体数据权限批量新增
+     *
      * @param subDataAuthDTO 主体和授权数据DTO
      * @return
      */
@@ -62,6 +70,7 @@ public interface IDataAuthService {
 
     /**
      * 批量获取主体数据权限
+     *
      * @param list
      * @return
      */
@@ -69,9 +78,13 @@ public interface IDataAuthService {
 
     /**
      * 查询是否拥有数据项权限接口
+     *
      * @return
      */
     ResponseDTO dataItemsCheck(DataItemsCheckDto dataItemsCheckDto);
 
     BusResultVO dataDetailList(SearchDTO searchDTO);
+
+    // 应标用
+    DataItemsDto userOrgDataAuth(String idcard, String orgCode);
 }

+ 2 - 1
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/service/IServiceAuthResultService.java

@@ -4,6 +4,7 @@ package com.dragoninfo.dcuc.auth.auth.service;
 import com.dragoninfo.dcuc.auth.auth.dto.ServiceAuthResultDTO;
 import com.dragoninfo.dcuc.auth.auth.entity.ServiceAuthResult;
 import com.dragoninfo.dcuc.auth.auth.entity.WorkFlow;
+import com.dragoninfo.dcuc.auth.auth.vo.ServiceAuthenticationResVO;
 import com.dragonsoft.duceap.base.entity.http.ResponseDTO;
 import com.dragonsoft.duceap.core.search.Searchable;
 import org.springframework.data.domain.Page;
@@ -75,7 +76,7 @@ public interface IServiceAuthResultService {
      * @param userToken
      * @param appToken
      */
-    Object serviceAuthentication(String idcard, String appCode, String userToken, String appToken);
+    List<ServiceAuthenticationResVO> serviceAuthentication(String idcard, String appCode, String userToken, String appToken);
 
     /**
      * 保存

+ 87 - 8
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/service/impl/DataAuthServiceImpl.java

@@ -1,5 +1,6 @@
 package com.dragoninfo.dcuc.auth.auth.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
 import com.dragoninfo.dcuc.auth.audit.enums.AuthResultEnum;
@@ -14,6 +15,7 @@ import com.dragoninfo.dcuc.auth.auth.entity.DataAuth;
 import com.dragoninfo.dcuc.auth.auth.enumresources.YesNotEnum;
 import com.dragoninfo.dcuc.auth.auth.service.IBusService;
 import com.dragoninfo.dcuc.auth.auth.service.IDataAuthService;
+import com.dragoninfo.dcuc.auth.auth.vo.BusDataResultVO;
 import com.dragoninfo.dcuc.auth.auth.vo.BusResultVO;
 import com.dragoninfo.dcuc.auth.auth.vo.ResourceCatalogItemVO;
 import com.dragoninfo.dcuc.auth.auth.vo.ResourceCatalogVO;
@@ -29,6 +31,7 @@ import com.dragonsoft.duceap.base.utils.UserContextUtils;
 import com.dragonsoft.duceap.commons.util.MapUtils;
 import com.dragonsoft.duceap.commons.util.collections.CollectionUtils;
 import com.dragonsoft.duceap.commons.util.ip.IpUtils;
+import com.dragonsoft.duceap.commons.util.json.JsonUtils;
 import com.dragonsoft.duceap.core.context.ContextUtils;
 import com.dragonsoft.duceap.core.search.Searchable;
 import com.dragonsoft.duceap.core.search.enums.SearchOperator;
@@ -240,12 +243,12 @@ public class DataAuthServiceImpl implements IDataAuthService {
     }
 
     private void addDataAuthList(Date date, String subId, String subType, String authType, String userId, List<SubDataDTO> addList) {
-        if(CollectionUtils.isEmpty(addList)) {
-            return ;
+        if (CollectionUtils.isEmpty(addList)) {
+            return;
         }
         HttpServletRequest request = RequestUtils.getRequest();
         String userToken = request.getHeader(Constants.USER_TOKEN);
-        String appToken  = request.getHeader(Constants.APP_TOKEN);
+        String appToken = request.getHeader(Constants.APP_TOKEN);
         try {
             for (SubDataDTO dto : addList) {
                 DataAuth dataAuth = new DataAuth();
@@ -270,12 +273,12 @@ public class DataAuthServiceImpl implements IDataAuthService {
     }
 
     private void delDataAuthList(Date date, String userId, List<DataAuth> delList) {
-        if(CollectionUtils.isEmpty(delList)) {
-            return ;
+        if (CollectionUtils.isEmpty(delList)) {
+            return;
         }
         HttpServletRequest request = RequestUtils.getRequest();
         String userToken = request.getHeader(Constants.USER_TOKEN);
-        String appToken  = request.getHeader(Constants.APP_TOKEN);
+        String appToken = request.getHeader(Constants.APP_TOKEN);
         try {
             for (DataAuth dataAuth : delList) {
                 dataAuth.setDeleteUser(userId);
@@ -283,10 +286,10 @@ public class DataAuthServiceImpl implements IDataAuthService {
                 dataAuth.setDeleted(BooleanEnum.TRUE.getValue());
                 dataAuthBPO.update(dataAuth);
             }
-            logInfoFillService.sendDataDelAuthLog(AuthResultEnum.SUC,delList, IpUtils.getRealIpAdrress(request), appToken, userToken);
+            logInfoFillService.sendDataDelAuthLog(AuthResultEnum.SUC, delList, IpUtils.getRealIpAdrress(request), appToken, userToken);
         } catch (Exception e) {
             log.error("数据授权删除失败", e);
-            logInfoFillService.sendDataDelAuthLog(AuthResultEnum.FAIL,delList, IpUtils.getRealIpAdrress(request), appToken, userToken);
+            logInfoFillService.sendDataDelAuthLog(AuthResultEnum.FAIL, delList, IpUtils.getRealIpAdrress(request), appToken, userToken);
         }
     }
 
@@ -449,6 +452,82 @@ public class DataAuthServiceImpl implements IDataAuthService {
         return resultVO;
     }
 
+    @Override
+    public DataItemsDto userOrgDataAuth(String idcard, String orgCode) {
+        AuthUserInfo authUserInfo = new AuthUserInfo();
+        authUserInfo.setIdcard(idcard);
+        authUserInfo.setOrgCode(orgCode);
+        authUserInfo.setPoliceBusiness("");
+        List<DataClassifyDTO> dataClassifyDTOS = dataAuthBusiness.userDataAuthInfoByUser(authUserInfo);
+
+        Set<String> tableSet = new HashSet<>();
+        Set<String> columnSet = new HashSet<>();
+
+        for (DataClassifyDTO dataClassifyDTO : dataClassifyDTOS) {
+            List<SubDataDTO> tickedDatas = dataClassifyDTO.getTickedDatas();
+            String attrType = dataClassifyDTO.getAttrType();
+            for (SubDataDTO tickedData : tickedDatas) {
+                String dataType = tickedData.getDataType();
+                String dataId = tickedData.getDataId();
+                String condition = dataId + StrUtil.COMMA + dataType;
+                if ("TABLE".equalsIgnoreCase(attrType)) {
+                    tableSet.add(condition);
+                } else {
+                    columnSet.add(condition);
+                }
+            }
+        }
+
+        return getItemBuilder(tableSet, idcard);
+    }
+
+    private DataItemsDto getItemBuilder(Set<String> set, String idcard) {
+        List<ResourceTypeQueryDTO> tableResourceTypeQueryDTOList = new ArrayList<>();
+        for (String tableCondition : set) {
+            String[] split = tableCondition.split(StrUtil.COMMA);
+            ResourceTypeQueryDTO resourceTypeQueryDTO = new ResourceTypeQueryDTO();
+            resourceTypeQueryDTO.setCodeValue(split[0]);
+            resourceTypeQueryDTO.setTypeCode(split[1]);
+            tableResourceTypeQueryDTOList.add(resourceTypeQueryDTO);
+        }
+
+        StringBuilder tableBuilder = new StringBuilder();
+        StringBuilder columnBuilder = new StringBuilder();
+
+        for (ResourceTypeQueryDTO resourceTypeQueryDTO : tableResourceTypeQueryDTOList) {
+            BusResultVO busResultVO = dataItem(Collections.singletonList(resourceTypeQueryDTO), idcard);
+            BusDataResultVO resultData = busResultVO.getResultData();
+            List<ResourceCatalogVO> dataList = resultData.getDataList();
+            for (ResourceCatalogVO resourceCatalogVO : dataList) {
+                tableBuilder.append(resourceCatalogVO.getResourceCode()).append(StrUtil.COMMA);
+                List<ResourceCatalogItemVO> dataItems = resourceCatalogVO.getDataItems();
+                for (ResourceCatalogItemVO dataItem : dataItems) {
+                    String dataItemCode = dataItem.getDataItemCode();
+                    if (StrUtil.isNotBlank(dataItemCode)) {
+                        columnBuilder.append(dataItemCode).append(StrUtil.COMMA);
+                    }
+                }
+            }
+        }
+        DataItemsDto dataItemsDto = new DataItemsDto();
+        dataItemsDto.setResourceCode(tableBuilder.toString());
+        dataItemsDto.setDataItemCode(columnBuilder.toString());
+        return dataItemsDto;
+    }
+
+    private BusResultVO dataItem(List<ResourceTypeQueryDTO> resourceTypeQueryDTOList, String idcard) {
+        DataDetailConditionDTO dataDetailConditionDTO = new DataDetailConditionDTO();
+        dataDetailConditionDTO.setResourceTypes(resourceTypeQueryDTOList);
+        DataDetailQueryDTO queryDTO = new DataDetailQueryDTO();
+        queryDTO.setPage(1);
+        queryDTO.setPageSize(10);
+        queryDTO.setCondition(dataDetailConditionDTO);
+
+        String query = JsonUtils.toJSONString(queryDTO);
+        return busService.resourceDataItemsQuery(JSON.parseObject(query, new TypeReference<Map<String, Object>>() {{
+        }}), idcard);
+    }
+
     /**
      * 数据资源分类需要构建父级的code数组
      *

+ 1 - 1
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/service/impl/ServiceAuthResultServiceImpl.java

@@ -306,7 +306,7 @@ public class ServiceAuthResultServiceImpl implements IServiceAuthResultService {
      * @param appToken
      */
     @Override
-    public Object serviceAuthentication(String idcard, String appCode, String userToken, String appToken) {
+    public List<ServiceAuthenticationResVO> serviceAuthentication(String idcard, String appCode, String userToken, String appToken) {
 //        String redisKey = DcucConstantsUtil.AUTHENTICATION_SPACE + appCode;
 //        //PermissionUpdateService已存入鉴权结果
 //        Object redisValue = redisTemplate.opsForValue().get(redisKey);

+ 6 - 0
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/business/INotifyBusiness.java

@@ -16,4 +16,10 @@ public interface INotifyBusiness {
      */
     void sendAppPermissionUpdateNotify(List<String> userToken);
 
+    /**
+     * 发送变更通知
+     *
+     * @param userToken 用户令牌
+     */
+    void sendPermissionUpdateNotify(List<String> userToken);
 }

+ 54 - 1
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/business/impl/NotifyBusinessImpl.java

@@ -2,6 +2,8 @@ package com.dragoninfo.dcuc.auth.business.impl;
 
 import cn.hutool.http.HttpRequest;
 import cn.hutool.json.JSONUtil;
+import com.dragoninfo.dcuc.auth.auth.vo.AuthNoticeReqVO;
+import com.dragoninfo.dcuc.auth.auth.vo.AuthNoticeRespVO;
 import com.dragoninfo.dcuc.auth.auth.vo.bim.BimAppPermissionUpdateContentRespVO;
 import com.dragoninfo.dcuc.auth.auth.vo.bim.BimAppPermissionUpdateReqVO;
 import com.dragoninfo.dcuc.auth.auth.vo.bim.BimAppPermissionUpdateRespVo;
@@ -10,6 +12,8 @@ import com.dragoninfo.dcuc.auth.business.INotifyBusiness;
 import com.dragoninfo.dcuc.auth.config.DcucAuthConfig;
 import com.dragonsoft.duceap.commons.util.UUIDUtils;
 import com.dragonsoft.duceap.commons.util.json.JsonUtils;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.remoting.RemoteAccessException;
@@ -34,6 +38,7 @@ public class NotifyBusinessImpl implements INotifyBusiness {
     @Autowired
     private IBimBusiness bimBusiness;
 
+
     @Retryable(value = RemoteAccessException.class,
             maxAttempts = 5,
             backoff = @Backoff(delay = 1000)
@@ -41,7 +46,7 @@ public class NotifyBusinessImpl implements INotifyBusiness {
     @Override
     public void sendAppPermissionUpdateNotify(List<String> tokenList) {
         if (tokenList.isEmpty()) {
-            log.info("Is't have userToken notify.");
+            log.info("Isn't have userToken notify.");
             return;
         }
         String notifyUrl = dcucAuthConfig.getBimUrl() + "/api/rest/customization/ExpApiCustomDragonitService/appPermissionUpdate";
@@ -84,6 +89,54 @@ public class NotifyBusinessImpl implements INotifyBusiness {
         }
     }
 
+
+    @Override
+    public void sendPermissionUpdateNotify(List<String> userToken) {
+        List<String> notifyAppUrlList = dcucAuthConfig.getNotifyAppUrlList();
+        for (String notifyAppUrl : notifyAppUrlList) {
+            sendNotify(notifyAppUrl, userToken);
+        }
+    }
+
+    @Retryable(value = RemoteAccessException.class,
+            maxAttempts = 5,
+            backoff = @Backoff(delay = 1000)
+    )
+    public void sendNotify(String notifyUrl, List<String> userTokenList) {
+        AuthNoticeReqVO authNoticeReqVO = new AuthNoticeReqVO();
+        authNoticeReqVO.setUserTokenId(userTokenList);
+
+        String postJson = JSONUtil.toJsonStr(authNoticeReqVO);
+        log.info("App permission notify URL:{}", notifyUrl);
+        log.info("App permission notify post content:{}", postJson);
+        String postResp;
+        try {
+            postResp = HttpRequest.post(notifyUrl)
+                    .header("Message-Type", "tokencheck")
+                    .header("Content-Type", "application/json")
+                    .body(postJson)
+                    .execute()
+                    .body();
+        } catch (Exception e) {
+            log.error("Post error", e);
+            throw new RemoteAccessException(e.getMessage());
+        }
+        ObjectMapper objectMapper = new ObjectMapper();
+
+        try {
+            AuthNoticeRespVO authNoticeRespVO = objectMapper.readValue(postResp, AuthNoticeRespVO.class);
+            String statusCode = authNoticeRespVO.getStatusCode();
+            if (!"0000".equals(statusCode)) {
+                log.error("notify error:{}", authNoticeRespVO.getMessage());
+                throw new RemoteAccessException(authNoticeRespVO.getMessage());
+            }
+        } catch (JsonProcessingException e) {
+            log.error("parse json error", e);
+            throw new RemoteAccessException(e.getMessage());
+        }
+    }
+
+
     @Recover
     public void recover(RemoteAccessException e) {
         log.error("Remote error", e);

+ 8 - 1
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/config/DcucAuthConfig.java

@@ -6,6 +6,8 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+
 /**
  * @author fuzq
  * @date 2019/3/13
@@ -95,6 +97,11 @@ public class DcucAuthConfig {
     /**
      * 定时任务等系统默认操作人员身份证号
      */
-    private String operatorIdcard ;
+    private String operatorIdcard;
+
+    /**
+     * 新标准通知应用路径
+     */
+    private List<String> notifyAppUrlList;
 
 }

+ 1 - 1
pom.xml

@@ -22,7 +22,7 @@
         <duceap.version>2.1.0-SNAPSHOT</duceap.version>
         <oracle.version>11.2.0.1.0</oracle.version>
         <mysql.version>5.1.49</mysql.version>
-        <lombok.version>1.18.8</lombok.version>
+        <lombok.version>1.18.24</lombok.version>
     </properties>
 
     <dependencyManagement>