From d9111b072c5bbf196435be9aa7f1f849cd07252b Mon Sep 17 00:00:00 2001
From: 秦芳睿 <1425609123@qq.com>
Date: 星期四, 13 三月 2025 16:28:42 +0800
Subject: [PATCH] feat(auth): 添加微信扫码登录功能

---
 JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTAIServerControl.java |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 50 insertions(+), 9 deletions(-)

diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTAIServerControl.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTAIServerControl.java
index 37703c4..96fe1cb 100644
--- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTAIServerControl.java
+++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTAIServerControl.java
@@ -1,12 +1,9 @@
 package com.smtaiserver.smtaiserver.control;
 
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
+import java.util.*;
 import java.util.Map.Entry;
-import java.util.Random;
-import java.util.Set;
 
+import com.smtaiserver.smtaiserver.weixinLogin.WeChatUtils;
 import org.apache.commons.text.similarity.JaccardSimilarity;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -25,6 +22,7 @@
 
 public class SMTAIServerControl 
 {
+
 	private static Logger 					_logger = LogManager.getLogger(SMTAIServerControl.class);
 	
     public ModelAndView swaggerConfigurationUI(SMTRequest tranReq) throws Exception {
@@ -277,10 +275,15 @@
     
     public ModelAndView login(SMTAIServerRequest tranReq) throws Exception 
     {
-    	String username = tranReq.convParamToString("user", true);
-    	String password = tranReq.convParamToString("pass", true);
+    	String username = tranReq.convParamToString("user", false);
+    	String password = tranReq.convParamToString("pass", false);
     	String client = tranReq.convParamToString("client", false);
-    	
+    	String weixinCode = tranReq.convParamToString("weixin_code", false);
+
+			if (weixinCode != null){
+				username="";
+				password="";
+			}
     	if(SMTStatic.isNullOrEmpty(client))
     		client = "Web绔�";
     	
@@ -293,7 +296,29 @@
      	SMTDatabase db = SMTAIServerApp.getApp().allocDatabase();
     	try
     	{
-    		DBRecords recs = db.querySQL("SELECT * FROM sys_user_info WHERE user_name=? AND user_state_code='Y'", new Object[] {
+			// 寰俊鎵爜鐧诲綍
+			if (weixinCode != null) {
+				Map<String, String> accessTokenMap = WeChatUtils.getAccessToken(weixinCode);
+				String openid = accessTokenMap.get("openid");
+
+				if (openid == null || openid.isEmpty()) {
+					return tranReq.returnJsonState(false, "鐧诲綍澶辫触, 鏃犳晥鐨勫井淇′簩缁寸爜", null);
+				}
+
+				DBRecords userByOpenid = db.querySQL("SELECT * FROM sys_user_info WHERE weixin_openid = ?", new Object[]{openid});
+
+				if (userByOpenid.getRowCount() == 0) {
+					return tranReq.returnJsonState(false, "鐧诲綍澶辫触, 璇风粦瀹氳处鍙�", null);
+				}
+
+				// 鑾峰彇鐢ㄦ埛鍚嶅拰瀵嗙爜
+				username = userByOpenid.getRecord(0).getString("user_name");
+				password = userByOpenid.getRecord(0).getString("user_pass");
+
+			}
+
+
+			DBRecords recs = db.querySQL("SELECT * FROM sys_user_info WHERE user_name=? AND user_state_code='Y'", new Object[] {
     			username	
     		});
     		if(recs.getRowCount() == 0)
@@ -959,4 +984,20 @@
     	}
 
     }
+
+	public ModelAndView userBindingWeChatAccount(SMTAIServerRequest tranReq) throws Exception {
+		String weixinCode = tranReq.convParamToString("weixin_code", true);
+		String userName = tranReq.convParamToString("user_name", true);
+		Map<String, String> accessTokenMap = WeChatUtils.getAccessToken(weixinCode);
+		String openid = accessTokenMap.get("openid");
+
+		if (openid == null || openid.isEmpty()) {
+			return tranReq.returnJsonState(false, "缁戝畾澶辫触, 鏃犳晥鐨勫井淇′簩缁寸爜", null);
+		}
+		try (SMTDatabase db = SMTAIServerApp.getApp().allocDatabase()) {
+			int executeSQL = db.executeSQL("UPDATE sys_user_info set weixin_openid =? where user_name=?", new Object[]{openid, userName});
+		}
+		return tranReq.returnText("缁戝畾鎴愬姛");
+	}
+
 }

--
Gitblit v1.9.3