Prechádzať zdrojové kódy

refactor(优化调用竹云接口):

huangzqa 4 rokov pred
rodič
commit
a7d8bf70b4
27 zmenil súbory, kde vykonal 687 pridanie a 138 odobranie
  1. 44 0
      dcuc-auth-api/src/main/java/com/dragoninfo/dcuc/auth/auth/facade/IBimBusinessFacade.java
  2. 0 10
      dcuc-auth-api/src/main/java/com/dragoninfo/dcuc/auth/auth/facade/IStaffAssignAuthInfoFacade.java
  3. 39 0
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/enumresources/BimTokenResultEnum.java
  4. 0 40
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/HwAppPermissionUpdateNotificationReqVO.java
  5. 0 38
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/HwAppPermissionUpdateNotificationRespVO.java
  6. 16 0
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimAppPermissionUpdateContentRespVO.java
  7. 32 0
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimAppPermissionUpdateReqVO.java
  8. 23 0
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimAppPermissionUpdateRespVo.java
  9. 15 0
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimLoginReqVo.java
  10. 13 0
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimLogoutReqVo.java
  11. 18 0
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimRespException.java
  12. 23 0
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimRespVo.java
  13. 15 0
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimTokenCheckContentRespVO.java
  14. 17 0
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimTokenCheckItemReqVO.java
  15. 20 0
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimTokenCheckItemRespVO.java
  16. 17 0
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimTokenCheckReqVO.java
  17. 23 0
      dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimTokenCheckRespVO.java
  18. 5 0
      dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/AuthRedisConstant.java
  19. 33 0
      dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/facade/BimBusinessFacade.java
  20. 0 5
      dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/facade/StaffAssignAuthInfoFacade.java
  21. 0 9
      dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/service/IStaffAssignAuthInfoService.java
  22. 0 11
      dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/service/impl/StaffAssignAuthInfoService.java
  23. 52 0
      dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/business/IBimBusiness.java
  24. 237 0
      dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/business/impl/BimBusinessImpl.java
  25. 28 21
      dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/business/impl/NotifyBusinessImpl.java
  26. 13 2
      dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/config/DcucAuthConfig.java
  27. 4 2
      dcuc-auth-service/src/main/resources/application-auth.yml

+ 44 - 0
dcuc-auth-api/src/main/java/com/dragoninfo/dcuc/auth/auth/facade/IBimBusinessFacade.java

@@ -0,0 +1,44 @@
+package com.dragoninfo.dcuc.auth.auth.facade;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@FeignClient(name = "dcuc-auth", path = "/dcuc/auth/bimBusinessFacade")
+public interface IBimBusinessFacade {
+
+    /**
+     * 校验令牌
+     *
+     * @param userToken 用户令牌
+     * @param appToken  应用令牌
+     * @return 是否有效
+     */
+    @GetMapping("checkToken")
+    boolean checkToken(@RequestParam("userToken") String userToken, @RequestParam("appToken") String appToken);
+
+    /**
+     * 校验用户令牌
+     *
+     * @param userToken 用户令牌
+     * @return 是否有效
+     */
+    @GetMapping("checkUserToken")
+    boolean checkUserToken(@RequestParam("userToken") String userToken);
+
+    /**
+     * 缓存用户令牌
+     *
+     * @param idcard    身份证号
+     * @param userToken 用户令牌
+     * @param expAt     失效时间(秒)
+     */
+    @PostMapping("cacheUserToken")
+    void cacheUserToken(@RequestParam("idcard") String idcard, @RequestParam("userToken") String userToken, @RequestParam("expAt") Integer expAt);
+
+}

+ 0 - 10
dcuc-auth-api/src/main/java/com/dragoninfo/dcuc/auth/auth/facade/IStaffAssignAuthInfoFacade.java

@@ -210,14 +210,4 @@ public interface IStaffAssignAuthInfoFacade {
     @GetMapping("getAppLitByUserId")
     List<AppDataSensitiveLevelDTO> getAppLitByUserId(@RequestParam("userId") String userId);
 
-    /**
-     * 缓存用户令牌
-     *
-     * @param idcard    身份证号
-     * @param userToken 用户令牌
-     * @param expAt     失效时间(秒)
-     */
-    @PostMapping("cacheUserToken")
-    void cacheUserToken(@RequestParam("idcard") String idcard, @RequestParam("userToken") String userToken, @RequestParam("expAt") Integer expAt);
-
 }

+ 39 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/enumresources/BimTokenResultEnum.java

@@ -0,0 +1,39 @@
+package com.dragoninfo.dcuc.auth.auth.enumresources;
+
+import com.dragonsoft.duceap.base.enums.ICodeEnum;
+
+/**
+ * @author huangzqa
+ * @date 2021/3/30
+ **/
+public enum BimTokenResultEnum implements ICodeEnum {
+
+    /**
+     * 有效
+     */
+    VALID("valid", "有效"),
+    /**
+     * 无效
+     */
+    INVALID("invalid", "无效");
+
+    private String value;
+
+    private String label;
+
+
+    BimTokenResultEnum(String value, String label) {
+        this.value = value;
+        this.label = label;
+    }
+
+    @Override
+    public String getValue() {
+        return this.value;
+    }
+
+    @Override
+    public String getLabel() {
+        return this.label;
+    }
+}

+ 0 - 40
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/HwAppPermissionUpdateNotificationReqVO.java

@@ -1,40 +0,0 @@
-package com.dragoninfo.dcuc.auth.auth.vo;
-
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * 应用权限变更通知请求
- *
- * @author huangzqa
- * @date 2021/4/6
- **/
-@Data
-public class HwAppPermissionUpdateNotificationReqVO {
-
-    /**
-     * 消息ID
-     */
-    private String messageId;
-
-    /**
-     * 操作类型
-     */
-    private String operateType;
-
-    /**
-     * 变更的用户令牌
-     */
-    private List<String> tokens;
-
-    /**
-     * 原因
-     */
-    private String reason;
-
-    /**
-     * 是否通知两个网关
-     */
-    private Boolean notify;
-}

+ 0 - 38
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/HwAppPermissionUpdateNotificationRespVO.java

@@ -1,38 +0,0 @@
-package com.dragoninfo.dcuc.auth.auth.vo;
-
-import lombok.Data;
-
-/**
- * 应用权限变更通知请求
- *
- * @author huangzqa
- * @date 2021/4/6
- **/
-@Data
-public class HwAppPermissionUpdateNotificationRespVO {
-
-    public static final String SUCCESS_STATUS = "success";
-
-    public static final String SUCCESS_CODE = "1000";
-
-    /**
-     * 消息ID
-     */
-    private String messageId;
-
-    /**
-     * 状态
-     */
-    private String status;
-
-    /**
-     * 状态码
-     */
-    private String code;
-
-    /**
-     * 消息
-     */
-    private String message;
-
-}

+ 16 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimAppPermissionUpdateContentRespVO.java

@@ -0,0 +1,16 @@
+package com.dragoninfo.dcuc.auth.auth.vo.bim;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimAppPermissionUpdateContentRespVO {
+
+    private String messageId;
+
+    private Boolean result;
+
+}

+ 32 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimAppPermissionUpdateReqVO.java

@@ -0,0 +1,32 @@
+package com.dragoninfo.dcuc.auth.auth.vo.bim;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 应用权限变更通知请求
+ *
+ * @author huangzqa
+ * @date 2021/4/6
+ **/
+@Data
+public class BimAppPermissionUpdateReqVO {
+
+    /**
+     * 消息ID
+     */
+    private String messageId;
+
+    /**
+     * token
+     */
+    private String token;
+
+    /**
+     * 变更的用户令牌
+     */
+    private List<String> userTokens;
+
+
+}

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

@@ -0,0 +1,23 @@
+package com.dragoninfo.dcuc.auth.auth.vo.bim;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimAppPermissionUpdateRespVo {
+
+    private Boolean success;
+
+    private BimAppPermissionUpdateContentRespVO data;
+
+    private String errorCode;
+
+    private String errorMessage;
+
+    private BimRespException errorException;
+
+
+}

+ 15 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimLoginReqVo.java

@@ -0,0 +1,15 @@
+package com.dragoninfo.dcuc.auth.auth.vo.bim;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimLoginReqVo {
+
+    private String loginId;
+
+    private String secretKey;
+}

+ 13 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimLogoutReqVo.java

@@ -0,0 +1,13 @@
+package com.dragoninfo.dcuc.auth.auth.vo.bim;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimLogoutReqVo {
+
+    private String token;
+}

+ 18 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimRespException.java

@@ -0,0 +1,18 @@
+package com.dragoninfo.dcuc.auth.auth.vo.bim;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimRespException {
+
+    private String name;
+
+    private String message;
+
+    private String trace;
+
+}

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

@@ -0,0 +1,23 @@
+package com.dragoninfo.dcuc.auth.auth.vo.bim;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimRespVo {
+
+    private Boolean success;
+
+    private Object data;
+
+    private String errorCode;
+
+    private String errorMessage;
+
+    private BimRespException errorException;
+
+
+}

+ 15 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimTokenCheckContentRespVO.java

@@ -0,0 +1,15 @@
+package com.dragoninfo.dcuc.auth.auth.vo.bim;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimTokenCheckContentRespVO {
+
+    private List<BimTokenCheckItemRespVO> content;
+}

+ 17 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimTokenCheckItemReqVO.java

@@ -0,0 +1,17 @@
+package com.dragoninfo.dcuc.auth.auth.vo.bim;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimTokenCheckItemReqVO {
+
+    private String messageId;
+
+    private String userToken;
+
+    private String appToken;
+}

+ 20 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimTokenCheckItemRespVO.java

@@ -0,0 +1,20 @@
+package com.dragoninfo.dcuc.auth.auth.vo.bim;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimTokenCheckItemRespVO {
+
+    private String userCheckResult;
+
+    private String appCheckResult;
+
+    private String messageId;
+
+    private String resultDescription;
+
+}

+ 17 - 0
dcuc-auth-model/src/main/java/com/dragoninfo/dcuc/auth/auth/vo/bim/BimTokenCheckReqVO.java

@@ -0,0 +1,17 @@
+package com.dragoninfo.dcuc.auth.auth.vo.bim;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimTokenCheckReqVO {
+
+    private String token;
+
+    private List<BimTokenCheckItemReqVO> content;
+}

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

@@ -0,0 +1,23 @@
+package com.dragoninfo.dcuc.auth.auth.vo.bim;
+
+import lombok.Data;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Data
+public class BimTokenCheckRespVO {
+
+    private Boolean success;
+
+    private BimTokenCheckContentRespVO data;
+
+    private String errorCode;
+
+    private String errorMessage;
+
+    private BimRespException errorException;
+
+
+}

+ 5 - 0
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/AuthRedisConstant.java

@@ -18,4 +18,9 @@ public class AuthRedisConstant {
      * 用户令牌命名空间
      */
     public static final String REDIS_USER_TOKEN_NAMESPACE = REDIS_TOKEN_NAMESPACE + "USER:";
+
+    /**
+     * BIM token命名空间
+     */
+    public static final String REDIS_BIM_TOKEN_NAMESPACE = REDIS_TOKEN_NAMESPACE + "TOKEN:";
 }

+ 33 - 0
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/facade/BimBusinessFacade.java

@@ -0,0 +1,33 @@
+package com.dragoninfo.dcuc.auth.auth.facade;
+
+import com.dragoninfo.dcuc.auth.business.IBimBusiness;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@RestController
+@RequestMapping(value = "/dcuc/auth/bimBusinessFacade")
+public class BimBusinessFacade implements IBimBusinessFacade {
+
+    @Autowired
+    private IBimBusiness bimBusiness;
+
+    @Override
+    public boolean checkToken(String userToken, String appToken) {
+        return bimBusiness.checkToken(userToken, appToken);
+    }
+
+    @Override
+    public boolean checkUserToken(String userToken) {
+        return bimBusiness.checkUserToken(userToken);
+    }
+
+    @Override
+    public void cacheUserToken(String idcard, String userToken, Integer expAt) {
+        bimBusiness.cacheUserToken(idcard, userToken, expAt);
+    }
+}

+ 0 - 5
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/facade/StaffAssignAuthInfoFacade.java

@@ -118,9 +118,4 @@ public class StaffAssignAuthInfoFacade implements IStaffAssignAuthInfoFacade {
         return staffAssignAuthInfoService.getAppLitByUserId(userId);
     }
 
-    @Override
-    public void cacheUserToken(String idcard, String userToken, Integer expAt) {
-        staffAssignAuthInfoService.cacheUserToken(idcard, userToken, expAt);
-    }
-
 }

+ 0 - 9
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/service/IStaffAssignAuthInfoService.java

@@ -169,13 +169,4 @@ public interface IStaffAssignAuthInfoService extends IOldBaseService<StaffAssign
      */
     List<AppDataSensitiveLevelDTO> getAppLitByUserId(String userId);
 
-    /**
-     * 缓存用户令牌
-     *
-     * @param idcard    身份证号
-     * @param userToken 用户令牌
-     * @param expAt     失效时间(秒)
-     */
-    void cacheUserToken(String idcard, String userToken, Integer expAt);
-
 }

+ 0 - 11
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/auth/service/impl/StaffAssignAuthInfoService.java

@@ -7,7 +7,6 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.dragoninfo.dcuc.app.entity.ApplyInfo;
 import com.dragoninfo.dcuc.app.facade.IApplyInfoFacade;
-import com.dragoninfo.dcuc.auth.AuthRedisConstant;
 import com.dragoninfo.dcuc.auth.auth.async.StaffAssignAuthEventCenterBus;
 import com.dragoninfo.dcuc.auth.auth.bpo.RoleAuthInfoBPO;
 import com.dragoninfo.dcuc.auth.auth.bpo.StaffAssignAuthInfoBPO;
@@ -49,16 +48,13 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Sort;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
 
-import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.util.*;
-import java.util.concurrent.TimeUnit;
 
 @Service
 @Transactional
@@ -90,9 +86,6 @@ public class StaffAssignAuthInfoService extends BaseService<StaffAssignAuthInfo,
     @Autowired
     private IOrgInfoFacade orgInfoFacade;
 
-    @Resource(name = "redisTemplate")
-    private RedisTemplate<String, Object> redisTemplate;
-
     @Override
     public List<StaffAllotVO> getStaffAuth(String orgId, String staffId, String roleId, String appId) {
         return staffAssignAuthInfoBPO.getStaffAuth(orgId, staffId, roleId, appId);
@@ -1065,8 +1058,4 @@ public class StaffAssignAuthInfoService extends BaseService<StaffAssignAuthInfo,
         return staffAssignAuthInfoBPO.getAppLitByUserId(userId);
     }
 
-    @Override
-    public void cacheUserToken(String idcard, String userToken, Integer expAt) {
-        redisTemplate.opsForValue().set(AuthRedisConstant.REDIS_USER_TOKEN_NAMESPACE + idcard, userToken, expAt, TimeUnit.SECONDS);
-    }
 }

+ 52 - 0
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/business/IBimBusiness.java

@@ -0,0 +1,52 @@
+package com.dragoninfo.dcuc.auth.business;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+public interface IBimBusiness {
+    /**
+     * 获取 token
+     *
+     * @return token
+     */
+    String loginToken();
+
+    /**
+     * 注销 token
+     */
+    void logoutToken();
+
+    /**
+     * 获取 token
+     *
+     * @return token
+     */
+    String getToken();
+
+    /**
+     * 校验令牌
+     *
+     * @param userToken 用户令牌
+     * @param appToken  应用令牌
+     * @return 是否有效
+     */
+    boolean checkToken(String userToken, String appToken);
+
+    /**
+     * 校验用户令牌
+     *
+     * @param userToken 用户令牌
+     * @return 是否有效
+     */
+    boolean checkUserToken(String userToken);
+
+    /**
+     * 缓存用户令牌
+     *
+     * @param idcard    身份证号
+     * @param userToken 用户令牌
+     * @param expAt     失效时间(秒)
+     */
+    void cacheUserToken(String idcard, String userToken, Integer expAt);
+}

+ 237 - 0
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/business/impl/BimBusinessImpl.java

@@ -0,0 +1,237 @@
+package com.dragoninfo.dcuc.auth.business.impl;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
+import com.dragoninfo.dcuc.auth.AuthRedisConstant;
+import com.dragoninfo.dcuc.auth.auth.enumresources.BimTokenResultEnum;
+import com.dragoninfo.dcuc.auth.auth.vo.bim.*;
+import com.dragoninfo.dcuc.auth.business.IBimBusiness;
+import com.dragoninfo.dcuc.auth.config.DcucAuthConfig;
+import com.dragonsoft.duceap.commons.util.UUIDUtils;
+import com.dragonsoft.duceap.commons.util.json.JsonUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author huangzqa
+ * @date 2021/4/9
+ **/
+@Slf4j
+@Service
+public class BimBusinessImpl implements IBimBusiness {
+
+    @Autowired
+    private DcucAuthConfig dcucAuthConfig;
+
+    @Resource(name = "redisTemplate")
+    private RedisTemplate<String, Object> redisTemplate;
+
+    /**
+     * 获取 token
+     *
+     * @return token
+     */
+    @Override
+    public String loginToken() {
+
+        String url = dcucAuthConfig.getBimUrl() + "/api/rest/management/ExtApiMgmtAuthService/login";
+
+        BimLoginReqVo bimLoginReqVo = new BimLoginReqVo();
+        bimLoginReqVo.setLoginId(dcucAuthConfig.getBimLoginId());
+        bimLoginReqVo.setSecretKey(dcucAuthConfig.getBimSecretKey());
+
+        String requestJson = JsonUtils.toJSONString(bimLoginReqVo);
+        log.debug("Bim login request:{}", requestJson);
+        String respJson = HttpRequest.post(url)
+                .body(requestJson)
+                .execute()
+                .body();
+        log.debug("Bim login respJson:{}", respJson);
+
+        BimRespVo bimRespVo = JsonUtils.parseObject(respJson, BimRespVo.class);
+        if (!bimRespVo.getSuccess()) {
+            log.error("Bim login token error :{}", respJson);
+            return "";
+        }
+
+        String token = (String) bimRespVo.getData();
+        redisTemplate.opsForValue().set(AuthRedisConstant.REDIS_BIM_TOKEN_NAMESPACE, token, 9, TimeUnit.MINUTES);
+        return token;
+    }
+
+    /**
+     * 注销 token
+     */
+    @Override
+    public void logoutToken() {
+
+        String token = String.valueOf(redisTemplate.opsForValue().get(AuthRedisConstant.REDIS_BIM_TOKEN_NAMESPACE));
+        if (StrUtil.isBlank(token)) {
+            log.error("Token is not cache");
+        }
+
+        String url = dcucAuthConfig.getBimUrl() + "/api/rest/management/ExtApiMgmtAuthService/logout";
+
+        BimLogoutReqVo bimLogoutReqVo = new BimLogoutReqVo();
+        bimLogoutReqVo.setToken(token);
+
+        String requestJson = JsonUtils.toJSONString(bimLogoutReqVo);
+        log.debug("Bim logout requestJson:{}", requestJson);
+        String respJson = HttpRequest.post(url)
+                .body(requestJson)
+                .execute()
+                .body();
+        log.debug("Bim logout respJson:{}", respJson);
+
+        BimRespVo bimRespVo = JsonUtils.parseObject(respJson, BimRespVo.class);
+        if (!bimRespVo.getSuccess()) {
+            log.error("Bim logout token error :{}", respJson);
+        }
+    }
+
+    /**
+     * 获取 token
+     *
+     * @return token
+     */
+    @Override
+    public String getToken() {
+
+        String token = (String) redisTemplate.opsForValue().get(AuthRedisConstant.REDIS_BIM_TOKEN_NAMESPACE);
+
+        if (StrUtil.isBlank(token)) {
+            // 先注销token
+            logoutToken();
+            // 再获取token
+            token = loginToken();
+        }
+        return token;
+    }
+
+    /**
+     * 校验令牌
+     *
+     * @param userToken 用户令牌
+     * @param appToken  应用令牌
+     * @return 是否有效
+     */
+    @Override
+    public boolean checkToken(String userToken, String appToken) {
+        String messageId = UUIDUtils.getUUID();
+        String token = getToken();
+
+        BimTokenCheckItemReqVO bimTokenCheckItemReqVO = new BimTokenCheckItemReqVO();
+        bimTokenCheckItemReqVO.setMessageId(messageId);
+        bimTokenCheckItemReqVO.setUserToken(userToken);
+        bimTokenCheckItemReqVO.setAppToken(appToken);
+
+        BimTokenCheckReqVO bimTokenCheckReqVO = new BimTokenCheckReqVO();
+        bimTokenCheckReqVO.setToken(token);
+        bimTokenCheckReqVO.setContent(Collections.singletonList(bimTokenCheckItemReqVO));
+
+        BimTokenCheckContentRespVO bimTokenCheckContentRespVO = sendRequest(bimTokenCheckReqVO);
+
+        if (bimTokenCheckContentRespVO == null) {
+            return false;
+        }
+
+        List<BimTokenCheckItemRespVO> content = bimTokenCheckContentRespVO.getContent();
+
+        String validValue = BimTokenResultEnum.VALID.getValue();
+        for (BimTokenCheckItemRespVO hwTokenCheckRespContentVO : content) {
+            String userCheckResult = hwTokenCheckRespContentVO.getUserCheckResult();
+            String appCheckResult = hwTokenCheckRespContentVO.getAppCheckResult();
+
+            if (!userCheckResult.equals(validValue)) {
+                return false;
+            }
+
+            if (!appCheckResult.equals(validValue)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * 校验用户令牌
+     *
+     * @param userToken 用户令牌
+     * @return 是否有效
+     */
+    @Override
+    public boolean checkUserToken(String userToken) {
+        String messageId = UUIDUtils.getUUID();
+        String token = getToken();
+
+        BimTokenCheckReqVO hwTokenCheckReqVO = new BimTokenCheckReqVO();
+
+        BimTokenCheckItemReqVO hwTokenCheckReqContentVO = new BimTokenCheckItemReqVO();
+        hwTokenCheckReqContentVO.setAppToken("");
+        hwTokenCheckReqContentVO.setUserToken(userToken);
+        hwTokenCheckReqContentVO.setMessageId(messageId);
+
+        hwTokenCheckReqVO.setToken(token);
+        hwTokenCheckReqVO.setContent(Collections.singletonList(hwTokenCheckReqContentVO));
+
+        BimTokenCheckContentRespVO hwTokenCheckRespVO = sendRequest(hwTokenCheckReqVO);
+        if (hwTokenCheckRespVO == null) {
+            return false;
+        }
+
+        List<BimTokenCheckItemRespVO> content = hwTokenCheckRespVO.getContent();
+
+        String validValue = BimTokenResultEnum.VALID.getValue();
+        for (BimTokenCheckItemRespVO hwTokenCheckRespContentVO : content) {
+            String userCheckResult = hwTokenCheckRespContentVO.getUserCheckResult();
+
+            if (!userCheckResult.equals(validValue)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * 发送请求
+     *
+     * @param hwTokenCheckReqVO 请求
+     * @return 返回值
+     */
+    private BimTokenCheckContentRespVO sendRequest(BimTokenCheckReqVO hwTokenCheckReqVO) {
+        String reqJson = JsonUtils.toJSONString(hwTokenCheckReqVO);
+
+        log.info("Token check req :{}", reqJson);
+
+        String url = dcucAuthConfig.getBimUrl() + "/api/rest/customization/ExpApiCustomDragonitService/tokenCheck";
+
+        log.info("Token check req url:{}", reqJson);
+        String postResp = HttpRequest.post(url)
+                .body(reqJson)
+                .execute()
+                .body();
+        log.info("Token check resp :{}", postResp);
+
+        BimTokenCheckRespVO bimRespVo = JsonUtils.parseObject(postResp, BimTokenCheckRespVO.class);
+
+        if (!bimRespVo.getSuccess()) {
+            log.error("Token check error:{}", postResp);
+        }
+
+        return bimRespVo.getData();
+    }
+
+    @Override
+    public void cacheUserToken(String idcard, String userToken, Integer expAt) {
+        redisTemplate.opsForValue().set(AuthRedisConstant.REDIS_USER_TOKEN_NAMESPACE + idcard, userToken, expAt, TimeUnit.SECONDS);
+    }
+}

+ 28 - 21
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/business/impl/NotifyBusinessImpl.java

@@ -1,15 +1,13 @@
 package com.dragoninfo.dcuc.auth.business.impl;
 
 import cn.hutool.http.HttpRequest;
-import cn.hutool.http.HttpUtil;
 import cn.hutool.json.JSONUtil;
-import com.dragoninfo.dcuc.auth.auth.vo.HwAppPermissionUpdateNotificationReqVO;
-import com.dragoninfo.dcuc.auth.auth.vo.HwAppPermissionUpdateNotificationRespVO;
+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;
+import com.dragoninfo.dcuc.auth.business.IBimBusiness;
 import com.dragoninfo.dcuc.auth.business.INotifyBusiness;
 import com.dragoninfo.dcuc.auth.config.DcucAuthConfig;
-import com.dragoninfo.dcuc.common.utils.ResponseUtil;
-
-import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.commons.util.UUIDUtils;
 import com.dragonsoft.duceap.commons.util.json.JsonUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -33,21 +31,27 @@ public class NotifyBusinessImpl implements INotifyBusiness {
     @Autowired
     private DcucAuthConfig dcucAuthConfig;
 
+    @Autowired
+    private IBimBusiness bimBusiness;
+
     @Retryable(value = RemoteAccessException.class,
             maxAttempts = 5,
-            backoff = @Backoff(delay = 5000)
+            backoff = @Backoff(delay = 1000)
     )
     @Override
     public void sendAppPermissionUpdateNotify(List<String> tokenList) {
-        String notifyUrl = dcucAuthConfig.getAppPermissionUrl();
+        if (tokenList.isEmpty()) {
+            log.info("Is't have userToken notify.");
+            return;
+        }
+        String notifyUrl = dcucAuthConfig.getBimUrl() + "/api/rest/customization/ExpApiCustomDragonitService/appPermissionUpdate";
+        String token = bimBusiness.getToken();
 
-        HwAppPermissionUpdateNotificationReqVO reqVO = new HwAppPermissionUpdateNotificationReqVO();
-        String uuid = UUIDUtils.getUUID();
-        reqVO.setMessageId(uuid);
-        reqVO.setNotify(true);
-        reqVO.setOperateType("UPDATE");
-        reqVO.setReason("app permission update");
-        reqVO.setTokens(tokenList);
+        BimAppPermissionUpdateReqVO reqVO = new BimAppPermissionUpdateReqVO();
+        String messageId = UUIDUtils.getUUID();
+        reqVO.setToken(token);
+        reqVO.setMessageId(messageId);
+        reqVO.setUserTokens(tokenList);
 
         String postJson = JSONUtil.toJsonStr(reqVO);
         log.info("App permission notify URL:{}", notifyUrl);
@@ -66,14 +70,17 @@ public class NotifyBusinessImpl implements INotifyBusiness {
         }
 
         log.info("App permission notify post response:{}", postResp);
-        HwAppPermissionUpdateNotificationRespVO responseStatus = JsonUtils.parseObject(postResp, HwAppPermissionUpdateNotificationRespVO.class);
-        if (!responseStatus.getCode().equals(HwAppPermissionUpdateNotificationRespVO.SUCCESS_CODE)) {
-            log.error("App permission error :{}", responseStatus.getMessage());
-            throw new RemoteAccessException(responseStatus.getMessage());
+        BimAppPermissionUpdateRespVo bimAppPermissionUpdateRespVo = JsonUtils.parseObject(postResp, BimAppPermissionUpdateRespVo.class);
+
+        BimAppPermissionUpdateContentRespVO data = bimAppPermissionUpdateRespVo.getData();
+        if (!bimAppPermissionUpdateRespVo.getSuccess()) {
+            log.error("App permission error :{}", postResp);
+            throw new RemoteAccessException(postResp);
         }
 
-        if (!uuid.equals(responseStatus.getMessageId())) {
-            throw new RemoteAccessException(responseStatus.getMessage());
+
+        if ((!messageId.equals(data.getMessageId())) || (!data.getResult())) {
+            throw new RemoteAccessException(postResp);
         }
     }
 

+ 13 - 2
dcuc-auth-service/src/main/java/com/dragoninfo/dcuc/auth/config/DcucAuthConfig.java

@@ -40,8 +40,19 @@ public class DcucAuthConfig {
     private String servicePermissionUrl;
 
     /**
-     * 应用权限变更通知
+     * 竹云认证URL
      */
-    private String appPermissionUrl;
+    private String bimUrl;
+
+    /**
+     * 竹云应用方标识
+     */
+    private String bimLoginId;
+
+
+    /**
+     * 竹云调用方密钥
+     */
+    private String bimSecretKey;
 
 }

+ 4 - 2
dcuc-auth-service/src/main/resources/application-auth.yml

@@ -22,5 +22,7 @@ dcuc:
       busServiceFunc: saveUsingPOST
       #审批中心kafka topic
       topic: 10000027
-    app-permission-url: http://127.0.0.1:8080/tacs/appPermissionUpdateNotification
-    service-permission-url: http://127.0.0.1/permission/service
+    service-permission-url: http://127.0.0.1/permission/service
+    bim-url: http://localhost:8080/bim-server
+    bim-login-id: app1
+    bim-secret-key: app1@123