From 89ad0fa748b1773d58822290e4822a4bbbb1d9f9 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期五, 22 八月 2025 17:29:28 +0800
Subject: [PATCH] 添加蓉政通登陆接口

---
 ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java |   61 +++++++++++++++++++++++++++++-
 1 files changed, 59 insertions(+), 2 deletions(-)

diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
index a541e1f..4e3a53c 100644
--- a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
+++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
@@ -3,7 +3,9 @@
 import cn.dev33.satoken.annotation.SaIgnore;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.aliyun.dingtalkcontact_1_0.models.GetUserHeaders;
 import com.aliyun.dingtalkcontact_1_0.models.GetUserResponseBody;
 import com.aliyun.dingtalkoauth2_1_0.models.GetUserTokenRequest;
@@ -14,9 +16,7 @@
 import com.dingtalk.api.DingTalkClient;
 import com.dingtalk.api.request.*;
 import com.dingtalk.api.response.OapiUserGetbyunionidResponse;
-import com.dingtalk.api.response.OapiUserGetuserinfoResponse;
 import com.dingtalk.api.response.OapiV2UserGetResponse;
-import com.dingtalk.api.response.OapiV2UserGetuserinfoResponse;
 import com.taobao.api.ApiException;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.RequiredArgsConstructor;
@@ -33,6 +33,7 @@
 import org.dromara.common.core.utils.MessageUtils;
 import org.dromara.common.core.utils.StreamUtils;
 import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.social.config.properties.SocialLoginConfigProperties;
 import org.dromara.common.social.config.properties.SocialProperties;
 import org.dromara.common.social.utils.SocialUtils;
@@ -50,12 +51,16 @@
 import org.dromara.web.service.IAuthStrategy;
 import org.dromara.web.service.SysLoginService;
 import org.dromara.web.service.SysRegisterService;
+import org.dromara.web.utils.RZTHttpUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import com.aliyun.teaopenapi.models.Config;
 
 import java.net.URL;
+import java.time.Duration;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 璁よ瘉
@@ -79,6 +84,7 @@
     private final ISysClientService clientService;
     private final ISysUserService userService;
     private final SysUserMapper userMapper;
+    private final RZTHttpUtils rzthttpUtils;
 
 
     /**
@@ -315,4 +321,55 @@
         return rsp.getResult();
     }
 
+
+    final String redisKey = "RZT_TOKEN";
+
+    @RequestMapping(value = "/rztLogin", method = RequestMethod.GET)
+    public String getRztAccessToken(@RequestParam(value = "code") String code) {
+        try {
+
+            log.info("code鍊硷細{}", code);
+            String accessToken = getRztToken();
+            if (StrUtil.isNotBlank(accessToken)) {
+                Map<String, String> hashMap = new HashMap<>();
+                hashMap.put("code", code);
+                hashMap.put("token", accessToken);
+                String userJson = rzthttpUtils.sendGetRequest("/login/info", hashMap);
+                log.info("鐢ㄦ埛淇℃伅锛歿}", userJson);
+                JSONObject userObject = JSON.parseObject(userJson);
+                if (userObject.getIntValue("errcode") == 0) {
+                    return userObject.getString("userid");
+                } else {
+                    log.error("鑾峰彇鐢ㄦ埛淇℃伅澶辫触锛歿}", userObject.getString("errmsg"));
+                }
+            }
+
+        } catch (Exception e) {
+            log.error("鑾峰彇鐢ㄦ埛淇℃伅寮傚父锛歿}", e.getMessage());
+        }
+        return "";
+    }
+
+    private String getRztToken() throws Exception {
+        String token = RedisUtils.getCacheObject(redisKey);
+        if (StrUtil.isEmpty(token)) {
+
+            String corpId = "ww9904fd98c1b0df9e";
+            String corpSecret = "mZdTP-ULDWHEPgFCpl62OwudbP3bODgqN9lC-rUtNSA";
+            String accessJson = rzthttpUtils.sendGetRequest("/gettoken?corpId=" + corpId + "&corpsecret=" + corpSecret, null);
+            JSONObject jsonObject = JSON.parseObject(accessJson);
+            if (jsonObject.getIntValue("errcode") == 0) {
+                String accessToken = jsonObject.getString("access_token");
+                Integer expiresIn = jsonObject.getIntValue("expires_in");
+                RedisUtils.setCacheObject(redisKey, accessToken, Duration.ofSeconds(expiresIn));
+                return accessToken;
+            } else {
+                log.error("鑾峰彇token澶辫触锛歿},{}", jsonObject.getIntValue("errcode"), jsonObject.getString("errmsg"));
+                return null;
+            }
+
+        } else {
+            return token;
+        }
+    }
 }

--
Gitblit v1.8.0