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