From 2aebbc9601ab439707f69b08e467808df9f7549c Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期五, 07 十一月 2025 11:50:26 +0800
Subject: [PATCH] feat: weixin
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/evaluation/EvaluationController.java | 72 +++++++++++++++++++++++++++++++----
1 files changed, 63 insertions(+), 9 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/evaluation/EvaluationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/evaluation/EvaluationController.java
index a65988f..06bf884 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/evaluation/EvaluationController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/evaluation/EvaluationController.java
@@ -1,5 +1,6 @@
package com.ruoyi.web.controller.evaluation;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -7,13 +8,13 @@
import com.ruoyi.common.utils.WechatUtils;
import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.config.WechatMpConfig;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.system.domain.EvaluationDetail;
import com.ruoyi.system.service.IEvaluationDimensionService;
import com.ruoyi.system.domain.EvaluationDimension;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
@@ -46,6 +47,9 @@
@Autowired
private IEvaluationDimensionService evaluationDimensionService;
+
+ @Autowired
+ private WechatMpConfig wechatMpConfig;
/**
* 鏌ヨ瀹㈡埛璇勪环鍒楄〃
@@ -149,11 +153,42 @@
}
}
- @Value("${wechat.appId}")
- private String wechatAppId;
-
- @Value("${wechat.appSecret}")
- private String wechatAppSecret;
+ /**
+ * 鐢熸垚寰俊鎺堟潈URL
+ */
+ @Anonymous
+ @GetMapping("/wechat/authurl")
+ public AjaxResult getWechatAuthUrl(String redirectUri, String state) {
+ try {
+ if (StringUtils.isEmpty(redirectUri)) {
+ return error("鍥炶皟鍦板潃涓嶈兘涓虹┖");
+ }
+
+ logger.info("鐢熸垚寰俊鎺堟潈URL - 鍘熷redirectUri: {}", redirectUri);
+
+ // 鐢熸垚寰俊鎺堟潈URL锛屼娇鐢╯nsapi_userinfo鑾峰彇鐢ㄦ埛淇℃伅
+ String authUrl = WechatUtils.generateAuthUrl(
+ wechatMpConfig.getAppId(),
+ redirectUri,
+ "snsapi_userinfo",
+ state
+ );
+ if (authUrl == null) {
+ return error("鐢熸垚寰俊鎺堟潈URL澶辫触");
+ }
+
+ logger.info("鐢熸垚寰俊鎺堟潈URL鎴愬姛: {}", authUrl);
+
+ Map<String, String> result = new HashMap<>();
+ result.put("authUrl", authUrl);
+ result.put("originalRedirectUri", redirectUri);
+ result.put("appId", wechatMpConfig.getAppId());
+ return success(result);
+ } catch (Exception e) {
+ logger.error("鐢熸垚寰俊鎺堟潈URL澶辫触", e);
+ return error("鐢熸垚寰俊鎺堟潈URL澶辫触: " + e.getMessage());
+ }
+ }
/**
* 鑾峰彇寰俊鐢ㄦ埛淇℃伅
@@ -163,12 +198,16 @@
public AjaxResult getWechatUserInfo(String code, HttpServletRequest request) {
try {
- if (StringUtils.isEmpty(code)) {
+ if (code.isEmpty()) {
return error("鎺堟潈鐮佷笉鑳戒负绌�");
}
// 鑾峰彇缃戦〉鎺堟潈Access Token
- JSONObject tokenInfo = WechatUtils.getWebAccessToken(wechatAppId, wechatAppSecret, code);
+ JSONObject tokenInfo = WechatUtils.getWebAccessToken(
+ wechatMpConfig.getAppId(),
+ wechatMpConfig.getAppSecret(),
+ code
+ );
if (tokenInfo == null) {
return error("鑾峰彇寰俊鎺堟潈淇℃伅澶辫触");
}
@@ -182,7 +221,22 @@
return error("鑾峰彇寰俊鐢ㄦ埛淇℃伅澶辫触");
}
- return success(userInfo);
+ // 澶勭悊鐢ㄦ埛淇℃伅锛岀‘淇濆瓧娈靛悕绉颁竴鑷�
+ Map<String, Object> result = new HashMap<>();
+ result.put("openid", userInfo.getString("openid"));
+ result.put("nickname", userInfo.getString("nickname"));
+ result.put("headimgurl", userInfo.getString("headimgurl"));
+ result.put("sex", userInfo.getInteger("sex"));
+ result.put("province", userInfo.getString("province"));
+ result.put("city", userInfo.getString("city"));
+ result.put("country", userInfo.getString("country"));
+ result.put("unionid", userInfo.getString("unionid"));
+ // 娉ㄦ剰锛氬井淇$綉椤垫巿鏉冩棤娉曠洿鎺ヨ幏鍙栨墜鏈哄彿锛岄渶瑕侀�氳繃鍏朵粬鏂瑰紡
+ // 濡傞渶鑾峰彇鎵嬫満鍙凤紝闇�瑕佷娇鐢ㄥ井淇″皬绋嬪簭鐨刧etPhoneNumber鎺ュ彛鎴栧井淇″紑鏀惧钩鍙扮殑鎵嬫満鍙峰揩閫熼獙璇佺粍浠�
+ result.put("phone", "");
+ result.put("phoneNote", "寰俊缃戦〉鎺堟潈鏃犳硶鐩存帴鑾峰彇鎵嬫満鍙凤紝璇锋墜鍔ㄨ緭鍏�");
+
+ return success(result);
} catch (Exception e) {
logger.error("鑾峰彇寰俊鐢ㄦ埛淇℃伅澶辫触", e);
return error("鑾峰彇寰俊鐢ㄦ埛淇℃伅澶辫触");
--
Gitblit v1.9.1