From 13a31edf7f569cdcf15d3c43a476a2c947f47fbf Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 09 十一月 2025 22:33:24 +0800
Subject: [PATCH] feat: 增加hospdata表,同步sqlserver过来
---
ruoyi-common/src/main/java/com/ruoyi/common/utils/WechatUtils.java | 72 ++++++++++++++++++++++++++++--------
1 files changed, 56 insertions(+), 16 deletions(-)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/WechatUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/WechatUtils.java
index 5b3e6e8..53ff3a3 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/WechatUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/WechatUtils.java
@@ -4,7 +4,7 @@
import com.alibaba.fastjson2.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.web.client.RestTemplate;
+import com.ruoyi.common.utils.http.HttpUtils;
import java.util.HashMap;
import java.util.Map;
@@ -18,7 +18,8 @@
private static final Logger log = LoggerFactory.getLogger(WechatUtils.class);
- private static final String WECHAT_API_BASE_URL = "https://api.weixin.qq.com";
+ private static final String WECHAT_API_BASE_URL = "https://open.weixin.qq.com";
+ private static final String WECHAT_API_BASE_URL_SERVER = "https://api.weixin.qq.com";
/**
* 鑾峰彇寰俊Access Token
@@ -29,10 +30,10 @@
*/
public static String getAccessToken(String appId, String appSecret) {
try {
- String url = WECHAT_API_BASE_URL + "/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
+ String url = WECHAT_API_BASE_URL_SERVER + "/cgi-bin/token";
+ String param = "grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
- RestTemplate restTemplate = new RestTemplate();
- String response = restTemplate.getForObject(url, String.class);
+ String response = HttpUtils.sendGet(url, param);
JSONObject jsonObject = JSON.parseObject(response);
if (jsonObject.containsKey("access_token")) {
@@ -56,10 +57,10 @@
*/
public static JSONObject getWechatUserInfo(String accessToken, String openid) {
try {
- String url = WECHAT_API_BASE_URL + "/cgi-bin/user/info?access_token=" + accessToken + "&openid=" + openid + "&lang=zh_CN";
+ String url = WECHAT_API_BASE_URL_SERVER + "/cgi-bin/user/info";
+ String param = "access_token=" + accessToken + "&openid=" + openid + "&lang=zh_CN";
- RestTemplate restTemplate = new RestTemplate();
- String response = restTemplate.getForObject(url, String.class);
+ String response = HttpUtils.sendGet(url, param);
JSONObject jsonObject = JSON.parseObject(response);
if (jsonObject.containsKey("openid")) {
@@ -84,10 +85,10 @@
*/
public static JSONObject getWebAccessToken(String appId, String appSecret, String code) {
try {
- String url = WECHAT_API_BASE_URL + "/sns/oauth2/access_token?appid=" + appId + "&secret=" + appSecret + "&code=" + code + "&grant_type=authorization_code";
+ String url = WECHAT_API_BASE_URL_SERVER + "/sns/oauth2/access_token";
+ String param = "appid=" + appId + "&secret=" + appSecret + "&code=" + code + "&grant_type=authorization_code";
- RestTemplate restTemplate = new RestTemplate();
- String response = restTemplate.getForObject(url, String.class);
+ String response = HttpUtils.sendGet(url, param);
JSONObject jsonObject = JSON.parseObject(response);
if (jsonObject.containsKey("access_token")) {
@@ -111,10 +112,10 @@
*/
public static JSONObject getWebUserInfo(String accessToken, String openid) {
try {
- String url = WECHAT_API_BASE_URL + "/sns/userinfo?access_token=" + accessToken + "&openid=" + openid + "&lang=zh_CN";
+ String url = WECHAT_API_BASE_URL_SERVER + "/sns/userinfo";
+ String param = "access_token=" + accessToken + "&openid=" + openid + "&lang=zh_CN";
- RestTemplate restTemplate = new RestTemplate();
- String response = restTemplate.getForObject(url, String.class);
+ String response = HttpUtils.sendGet(url, param);
JSONObject jsonObject = JSON.parseObject(response);
if (jsonObject.containsKey("openid")) {
@@ -140,8 +141,16 @@
*/
public static String generateAuthUrl(String appId, String redirectUri, String scope, String state) {
try {
- String encodedRedirectUri = java.net.URLEncoder.encode(redirectUri, "UTF-8");
- return WECHAT_API_BASE_URL + "/connect/oauth2/authorize?appid=" + appId + "&redirect_uri=" + encodedRedirectUri + "&response_type=code&scope=" + scope + "&state=" + state + "#wechat_redirect";
+ // 娓呯悊鍜岄獙璇乺edirectUri
+ String cleanRedirectUri = cleanRedirectUri(redirectUri);
+
+ // URL缂栫爜
+ String encodedRedirectUri = java.net.URLEncoder.encode(cleanRedirectUri, "UTF-8");
+
+ return WECHAT_API_BASE_URL + "/connect/oauth2/authorize?appid=" + appId +
+ "&redirect_uri=" + encodedRedirectUri +
+ "&response_type=code&scope=" + scope +
+ "&state=" + state + "#wechat_redirect";
} catch (Exception e) {
log.error("鐢熸垚寰俊鎺堟潈URL寮傚父: {}", e.getMessage());
return null;
@@ -149,6 +158,37 @@
}
/**
+ * 娓呯悊鍜岄獙璇乺edirectUri
+ *
+ * @param redirectUri 鍘熷鍥炶皟鍦板潃
+ * @return 娓呯悊鍚庣殑鍥炶皟鍦板潃
+ */
+ private static String cleanRedirectUri(String redirectUri) {
+ if (StringUtils.isEmpty(redirectUri)) {
+ return redirectUri;
+ }
+
+ try {
+ // 绉婚櫎绔彛鍙凤紙寰俊鎺堟潈涓嶆敮鎸佺鍙e彿锛�
+ if (redirectUri.contains(":81") || redirectUri.contains(":8080") || redirectUri.contains(":3000")) {
+ redirectUri = redirectUri.replaceAll(":(81|8080|3000|8081|8082|8083|8084|8085|8086|8087|8088|8089|8090)", "");
+ log.warn("妫�娴嬪埌绔彛鍙凤紝宸茶嚜鍔ㄧЩ闄�: {}", redirectUri);
+ }
+
+ // 纭繚浣跨敤HTTPS锛堢敓浜х幆澧冿級
+ if (redirectUri.startsWith("http://") && !redirectUri.contains("localhost") && !redirectUri.contains("127.0.0.1")) {
+ redirectUri = redirectUri.replace("http://", "https://");
+ log.warn("鐢熶骇鐜寤鸿浣跨敤HTTPS锛屽凡鑷姩杞崲: {}", redirectUri);
+ }
+
+ return redirectUri;
+ } catch (Exception e) {
+ log.error("娓呯悊redirectUri寮傚父: {}", e.getMessage());
+ return redirectUri;
+ }
+ }
+
+ /**
* 鍒ゆ柇鏄惁涓哄井淇℃祻瑙堝櫒
*
* @param userAgent 鐢ㄦ埛浠g悊瀛楃涓�
--
Gitblit v1.9.1