From 1266e430d1ef58c167ccc58a4197d703d6bdd251 Mon Sep 17 00:00:00 2001
From: qfrjava <13402782+qfrjava@user.noreply.gitee.com>
Date: 星期五, 14 三月 2025 17:32:32 +0800
Subject: [PATCH] feat(SMTAIServerControl): 添加微信 openid 是否存在的判断

---
 JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTAIServerControl.java |   61 ++++++++++++++++++++++++++----
 1 files changed, 52 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..0a16d4f 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 {
@@ -213,6 +211,8 @@
     	jsonWr.addKeyValue("sex", recUser.getString("user_sex"));
     	jsonWr.addKeyValue("email", recUser.getString("user_email"));
     	jsonWr.addKeyValue("note", recUser.getString("note"));
+		boolean b1 = recUser.getString("weixin_openid") != null;
+		jsonWr.addKeyValue("weixin_openid",b1);
     	jsonWr.addKeyValue("web_login", "Y".equals(recUser.getString("web_login")));
     	
 	   	return tranReq.returnJson(jsonWr);   	
@@ -277,10 +277,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 +298,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 +986,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.returnJsonState(true, "缁戝畾鎴愬姛", null);
+	}
+
 }

--
Gitblit v1.9.3