using System.Collections; using System.Data; using Milimoe.FunGame.Core.Api.Transmittal; using Milimoe.FunGame.Core.Api.Utility; using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Library.SQLScript.Common; using Milimoe.FunGame.Core.Library.SQLScript.Entity; using Milimoe.FunGame.Server.Model; using Milimoe.FunGame.Server.Others; using Milimoe.FunGame.Server.Utility; namespace Milimoe.FunGame.Server.Controller { public class DataRequestController { public ServerModel Server { get; } public MySQLHelper SQLHelper => Server.SQLHelper ?? throw new MySQLConfigException(); public MailSender? MailSender => Server.MailSender; public Authenticator Authenticator { get; } public DataRequestType LastRequest => _LastRequest; private string ForgetVerify = ""; private string RegVerify = ""; private DataRequestType _LastRequest = DataRequestType.UnKnown; private readonly bool[] isReadyCheckCD = [false, false]; public DataRequestController(ServerModel server) { Server = server; Authenticator = new(Server, SQLHelper, MailSender); } public Hashtable GetResultData(DataRequestType type, Hashtable data) { Hashtable result = []; _LastRequest = type; switch (type) { case DataRequestType.UnKnown: break; case DataRequestType.RunTime_Logout: LogOut(data, result); break; case DataRequestType.Main_GetNotice: GetServerNotice(result); break; case DataRequestType.Main_CreateRoom: CreateRoom(data, result); break; case DataRequestType.Main_UpdateRoom: UpdateRoom(result); break; case DataRequestType.Main_IntoRoom: IntoRoom(data, result); break; case DataRequestType.Main_QuitRoom: QuitRoom(data, result); break; case DataRequestType.Main_MatchRoom: MatchRoom(data, result); break; case DataRequestType.Main_Chat: Chat(data); break; case DataRequestType.Main_Ready: SetReady(data, result); break; case DataRequestType.Main_CancelReady: CancelReady(data, result); break; case DataRequestType.Main_StartGame: StartGame(data, result); break; case DataRequestType.Reg_GetRegVerifyCode: Reg(data, result); break; case DataRequestType.Login_Login: Login(data, result); break; case DataRequestType.Login_GetFindPasswordVerifyCode: ForgetPassword(data, result); break; case DataRequestType.Login_UpdatePassword: UpdatePassword(data, result); break; case DataRequestType.Room_GetRoomSettings: break; case DataRequestType.Room_GetRoomPlayerCount: GetRoomPlayerCount(data, result); break; case DataRequestType.Room_UpdateRoomMaster: break; default: break; } return result; } #region RunTime /// /// 退出登录 /// /// /// private void LogOut(Hashtable RequestData, Hashtable ResultData) { string msg = ""; Guid key = Guid.Empty; if (RequestData.Count >= 1) { ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest), InvokeMessageType.DataRequest); key = DataRequest.GetHashtableJsonObject(RequestData, "key"); if (Server.IsLoginKey(key)) { Server.LogOut(); msg = "你已成功退出登录! "; } } ResultData.Add("msg", msg); ResultData.Add("key", key); } #endregion #region Main /// /// 获取公告 /// /// private void GetServerNotice(Hashtable ResultData) { ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest), InvokeMessageType.DataRequest); ResultData.Add("notice", Config.ServerNotice); } /// /// 创建房间 /// /// /// private void CreateRoom(Hashtable RequestData, Hashtable ResultData) { Room room = General.HallInstance; if (RequestData.Count >= 3) { RoomType type = DataRequest.GetHashtableJsonObject(RequestData, "roomtype"); string gamemode = DataRequest.GetHashtableJsonObject(RequestData, "gamemode") ?? ""; string gamemap = DataRequest.GetHashtableJsonObject(RequestData, "gamemap") ?? ""; bool isrank = DataRequest.GetHashtableJsonObject(RequestData, "isrank"); ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest) + " : " + RoomSet.GetTypeString(type) + " (" + string.Join(", ", [gamemode, gamemap]) + ")", InvokeMessageType.DataRequest); if (gamemode == "" || gamemap == "") { ServerHelper.WriteLine("缺少对应的模组或地图,无法创建房间。"); ResultData.Add("room", room); return; } User user = DataRequest.GetHashtableJsonObject(RequestData, "master") ?? Factory.GetUser(); string password = DataRequest.GetHashtableJsonObject(RequestData, "password") ?? ""; if (user.Id != 0) { string roomid = Verification.CreateVerifyCode(VerifyCodeType.MixVerifyCode, 7).ToUpper(); SQLHelper.Execute(RoomQuery.Insert_CreateRoom(roomid, user.Id, type, gamemode, gamemap, isrank, password ?? "")); if (SQLHelper.Result == SQLResult.Success) { ServerHelper.WriteLine("[CreateRoom] Master: " + user.Username + " RoomID: " + roomid); SQLHelper.ExecuteDataSet(RoomQuery.Select_IsExistRoom(roomid)); if (SQLHelper.Result == SQLResult.Success && SQLHelper.DataSet.Tables[0].Rows.Count > 0) { room = Factory.GetRoom(SQLHelper.DataSet.Tables[0].Rows[0], user); Config.RoomList.AddRoom(room); } } } } ResultData.Add("room", room); } /// /// 更新房间列表 /// /// private void UpdateRoom(Hashtable ResultData) { ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest), InvokeMessageType.DataRequest); ResultData.Add("rooms", Config.RoomList.ListRoom); // 传RoomList } /// /// 退出房间,并更新房主 /// /// /// private void QuitRoom(Hashtable RequestData, Hashtable ResultData) { bool result = false; if (RequestData.Count >= 2) { ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest), InvokeMessageType.DataRequest); string roomid = DataRequest.GetHashtableJsonObject(RequestData, "roomid") ?? "-1"; bool isMaster = DataRequest.GetHashtableJsonObject(RequestData, "isMaster"); if (roomid != "-1" && Config.RoomList.IsExist(roomid)) { result = Server.QuitRoom(roomid, isMaster); } } ResultData.Add("result", result); } /// /// 进入房间 /// /// /// private void IntoRoom(Hashtable RequestData, Hashtable ResultData) { bool result = false; if (RequestData.Count >= 1) { ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest), InvokeMessageType.DataRequest); string roomid = DataRequest.GetHashtableJsonObject(RequestData, "roomid") ?? "-1"; if (roomid != "-1") { SQLHelper.ExecuteDataSet(RoomQuery.Select_IsExistRoom(roomid)); if (SQLHelper.Success) { Config.RoomList.IntoRoom(roomid, Server.User); Server.IntoRoom(roomid); result = true; } else { Config.RoomList.RemoveRoom(roomid); } } } ResultData.Add("result", result); } /// /// 匹配房间 /// /// /// private void MatchRoom(Hashtable RequestData, Hashtable ResultData) { bool result = true; if (RequestData.Count >= 1) { bool iscancel = DataRequest.GetHashtableJsonObject(RequestData, "iscancel"); if (!iscancel) { ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest) + " : Start", InvokeMessageType.DataRequest); RoomType type = DataRequest.GetHashtableJsonObject(RequestData, "roomtype"); User user = DataRequest.GetHashtableJsonObject(RequestData, "matcher") ?? Factory.GetUser(); Server.StartMatching(type, user); } else { // 取消匹配 ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest) + " : Cancel", InvokeMessageType.DataRequest); Server.StopMatching(); } } ResultData.Add("result", result); } /// /// 设置已准备状态 /// /// /// private void SetReady(Hashtable RequestData, Hashtable ResultData) { bool result = false; string roomid = "-1"; if (RequestData.Count >= 1) { ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest), InvokeMessageType.DataRequest); roomid = DataRequest.GetHashtableJsonObject(RequestData, "roomid") ?? "-1"; User user = Server.User; if (roomid != "-1" && user.Id != 0 && !Config.RoomList.GetReadyPlayerList(roomid).Contains(user)) { Config.RoomList.SetReady(roomid, user); result = true; } } ResultData.Add("result", result); ResultData.Add("ready", Config.RoomList.GetReadyPlayerList(roomid)); ResultData.Add("notready", Config.RoomList.GetNotReadyPlayerList(roomid)); } /// /// 取消已准备状态 /// /// /// private void CancelReady(Hashtable RequestData, Hashtable ResultData) { bool result = false; string roomid = "-1"; if (RequestData.Count >= 1) { ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest), InvokeMessageType.DataRequest); roomid = DataRequest.GetHashtableJsonObject(RequestData, "roomid") ?? "-1"; User user = Server.User; if (roomid != "-1" && user.Id != 0 && Config.RoomList.GetReadyPlayerList(roomid).Contains(user)) { Config.RoomList.CancelReady(roomid, user); result = true; } } ResultData.Add("result", result); ResultData.Add("ready", Config.RoomList.GetReadyPlayerList(roomid)); ResultData.Add("notready", Config.RoomList.GetNotReadyPlayerList(roomid)); } /// /// 发送聊天消息 /// /// private void Chat(Hashtable RequestData) { if (RequestData.Count >= 1) { string msg = DataRequest.GetHashtableJsonObject(RequestData, "msg") ?? ""; if (msg.Trim() != "") Server.Chat(msg); } } /// /// 开始游戏 /// /// /// private void StartGame(Hashtable RequestData, Hashtable ResultData) { bool result = false; if (RequestData.Count >= 2) { ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest), InvokeMessageType.DataRequest); string roomid = DataRequest.GetHashtableJsonObject(RequestData, "roomid") ?? "-1"; bool isMaster = DataRequest.GetHashtableJsonObject(RequestData, "isMaster"); if (roomid != "-1") { if (isMaster) { string[] usernames = Config.RoomList.GetNotReadyPlayerList(roomid).Select(user => user.Username).ToArray(); if (usernames.Length > 0) { if (isReadyCheckCD[0] == false) { // 提醒玩家准备 Server.SendSystemMessage(ShowMessageType.None, "还有玩家尚未准备,无法开始游戏。", "", 0, Server.User.Username); Server.SendSystemMessage(ShowMessageType.Tip, "房主即将开始游戏,请准备!", "请准备就绪", 10, usernames); isReadyCheckCD[0] = true; TaskUtility.RunTimer(() => { isReadyCheckCD[0] = false; }, 15000); } else { Server.SendSystemMessage(ShowMessageType.None, "还有玩家尚未准备,无法开始游戏。15秒内只能发送一次准备提醒。", "", 0, Server.User.Username); } } else { List users = Config.RoomList.GetPlayerList(roomid); if (users.Count < 2) { Server.SendSystemMessage(ShowMessageType.None, "玩家数量不足,无法开始游戏。", "", 0, Server.User.Username); } else { usernames = users.Select(user => user.Username).ToArray(); Server.SendSystemMessage(ShowMessageType.None, "所有玩家均已准备,游戏将在10秒后开始。", "", 0, usernames); Server.StartGame(roomid, users, usernames); result = true; } } } else if (isReadyCheckCD[1] == false) { // 提醒房主开始游戏 Server.SendSystemMessage(ShowMessageType.None, "已提醒房主立即开始游戏。", "", 0, Server.User.Username); Server.SendSystemMessage(ShowMessageType.Tip, "房间中的玩家已请求你立即开始游戏。", "请求开始", 10, Config.RoomList[roomid].RoomMaster.Username); isReadyCheckCD[1] = true; TaskUtility.RunTimer(() => { isReadyCheckCD[1] = false; }, 15000); } else { Server.SendSystemMessage(ShowMessageType.None, "15秒内只能发送一次提醒,请稍后再试。", "", 0, Server.User.Username); } } } ResultData.Add("result", result); } #endregion #region Reg /// /// 接收并验证注册验证码 /// /// /// private void Reg(Hashtable RequestData, Hashtable ResultData) { string msg = ""; RegInvokeType returnType = RegInvokeType.None; bool success = false; if (RequestData.Count >= 4) { ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest), InvokeMessageType.DataRequest); string username = DataRequest.GetHashtableJsonObject(RequestData, "username") ?? ""; string password = DataRequest.GetHashtableJsonObject(RequestData, "password") ?? ""; string email = DataRequest.GetHashtableJsonObject(RequestData, "email") ?? ""; string verifycode = DataRequest.GetHashtableJsonObject(RequestData, "verifycode") ?? ""; // 如果没发验证码,就生成验证码 if (verifycode.Trim() == "") { // 先检查账号是否重复 SQLHelper.ExecuteDataSet(UserQuery.Select_IsExistUsername(username)); if (SQLHelper.Result == SQLResult.Success) { ServerHelper.WriteLine(Server.GetClientName() + " 账号已被注册"); msg = "此账号名已被使用!"; returnType = RegInvokeType.DuplicateUserName; } else { // 检查邮箱是否重复 SQLHelper.ExecuteDataSet(UserQuery.Select_IsExistEmail(email)); if (SQLHelper.Result == SQLResult.Success) { ServerHelper.WriteLine(Server.GetClientName() + " 邮箱已被注册"); msg = "此邮箱已被注册!"; returnType = RegInvokeType.DuplicateEmail; } else { // 检查验证码是否发送过 SQLHelper.ExecuteDataSet(RegVerifyCodes.Select_HasSentRegVerifyCode(username, email)); if (SQLHelper.Result == SQLResult.Success) { DateTime RegTime = (DateTime)SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegTime]; string RegVerifyCode = (string)SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegVerifyCode]; if ((DateTime.Now - RegTime).TotalMinutes < 10) { ServerHelper.WriteLine(Server.GetClientName() + $" 十分钟内已向{email}发送过验证码:{RegVerifyCode}"); } returnType = RegInvokeType.InputVerifyCode; } else { // 发送验证码,需要先删除之前过期的验证码 SQLHelper.NewTransaction(); SQLHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(username, email)); RegVerify = Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 6); SQLHelper.Execute(RegVerifyCodes.Insert_RegVerifyCode(username, email, RegVerify)); if (SQLHelper.Result == SQLResult.Success) { SQLHelper.Commit(); if (MailSender != null) { // 发送验证码 string ServerName = Config.ServerName; string Subject = $"[{ServerName}] FunGame 注册验证码"; string Body = $"亲爱的 {username},
感谢您注册[{ServerName}],您的验证码是 {RegVerify} ,10分钟内有效,请及时输入!

{ServerName}
{DateTimeUtility.GetDateTimeToString(TimeType.LongDateOnly)}"; string[] To = [email]; if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success) { ServerHelper.WriteLine(Server.GetClientName() + $" 已向{email}发送验证码:{RegVerify}"); } else { ServerHelper.WriteLine(Server.GetClientName() + " 无法发送验证码", InvokeMessageType.Error); ServerHelper.WriteLine(MailSender.ErrorMsg, InvokeMessageType.Error); } } else // 不使用MailSender的情况 { ServerHelper.WriteLine(Server.GetClientName() + $" 验证码为:{RegVerify},请服务器管理员告知此用户"); } returnType = RegInvokeType.InputVerifyCode; } else SQLHelper.Rollback(); } } } } else { // 先检查验证码 SQLHelper.ExecuteDataSet(RegVerifyCodes.Select_RegVerifyCode(username, email, verifycode)); if (SQLHelper.Result == SQLResult.Success) { // 检查验证码是否过期 DateTime RegTime = (DateTime)SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegTime]; if ((DateTime.Now - RegTime).TotalMinutes >= 10) { ServerHelper.WriteLine(Server.GetClientName() + " 验证码已过期"); msg = "此验证码已过期,请重新注册。"; SQLHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(username, email)); } else { // 注册 if (RegVerify.Equals(SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegVerifyCode])) { SQLHelper.NewTransaction(); ServerHelper.WriteLine("[Reg] UserName: " + username + " Email: " + email); SQLHelper.Execute(UserQuery.Insert_Register(username, password, email, Server.Socket?.ClientIP ?? "")); if (SQLHelper.Result == SQLResult.Success) { success = true; msg = "注册成功!请牢记您的账号与密码!"; SQLHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(username, email)); SQLHelper.Commit(); } else { SQLHelper.Rollback(); msg = "服务器无法处理您的注册,注册失败!"; } } else msg = "验证码不正确,请重新输入!"; } } else if (SQLHelper.Result == SQLResult.NotFound) msg = "验证码不正确,请重新输入!"; else msg = "服务器无法处理您的注册,注册失败!"; } } ResultData.Add("msg", msg); ResultData.Add("type", returnType); ResultData.Add("success", success); } #endregion #region Login /// /// 登录 /// /// /// private void Login(Hashtable RequestData, Hashtable ResultData) { string msg = ""; User user = Factory.GetUser(); if (RequestData.Count >= 4) { ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest), InvokeMessageType.DataRequest); string username = DataRequest.GetHashtableJsonObject(RequestData, "username") ?? ""; string password = DataRequest.GetHashtableJsonObject(RequestData, "password") ?? ""; string autokey = DataRequest.GetHashtableJsonObject(RequestData, "autokey") ?? ""; Guid key = DataRequest.GetHashtableJsonObject(RequestData, "key"); // CheckLogin的情况 if (key != Guid.Empty) { if (Server.IsLoginKey(key)) { Server.CheckLogin(); user = Server.User; } else ServerHelper.WriteLine("客户端发送了错误的秘钥,不允许本次登录。"); } else { // 验证登录 if (username != null && password != null) { ServerHelper.WriteLine("[" + DataRequestSet.GetTypeString(DataRequestType.Login_Login) + "] UserName: " + username); SQLHelper.ExecuteDataSet(UserQuery.Select_Users_LoginQuery(username, password)); if (SQLHelper.Result == SQLResult.Success) { DataSet DsUser = SQLHelper.DataSet; if (autokey.Trim() != "") { SQLHelper.ExecuteDataSet(UserQuery.Select_CheckAutoKey(username, autokey)); if (SQLHelper.Result == SQLResult.Success) { ServerHelper.WriteLine("[" + DataRequestSet.GetTypeString(DataRequestType.Login_Login) + "] AutoKey: 已确认"); } else { msg = "AutoKey不正确,拒绝自动登录!"; ServerHelper.WriteLine("[" + DataRequestSet.GetTypeString(DataRequestType.Login_Login) + "] " + msg); } } key = Guid.NewGuid(); Server.PreLogin(DsUser, username, key); ResultData.Add("key", key); } else { msg = "用户名或密码不正确。"; ServerHelper.WriteLine(msg); } } } } ResultData.Add("msg", msg); ResultData.Add("user", user); } /// /// 接收并验证找回密码时的验证码 /// /// /// private void ForgetPassword(Hashtable RequestData, Hashtable ResultData) { string msg = "无法找回您的密码,请稍后再试。"; // 返回的验证信息 if (RequestData.Count >= 3) { ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest), InvokeMessageType.DataRequest); string username = DataRequest.GetHashtableJsonObject(RequestData, ForgetVerifyCodes.Column_Username) ?? ""; string email = DataRequest.GetHashtableJsonObject(RequestData, ForgetVerifyCodes.Column_Email) ?? ""; string verifycode = DataRequest.GetHashtableJsonObject(RequestData, ForgetVerifyCodes.Column_ForgetVerifyCode) ?? ""; // 客户端发来了验证码就进行验证,没有发就生成 if (verifycode.Trim() != "") { // 先检查验证码 SQLHelper.ExecuteDataSet(ForgetVerifyCodes.Select_ForgetVerifyCode(username, email, verifycode)); if (SQLHelper.Result == SQLResult.Success) { // 检查验证码是否过期 DateTime SendTime = (DateTime)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_SendTime]; if ((DateTime.Now - SendTime).TotalMinutes >= 10) { ServerHelper.WriteLine(Server.GetClientName() + " 验证码已过期"); msg = "此验证码已过期,请重新找回密码。"; SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email)); } else { // 检查验证码是否正确 if (ForgetVerify.Equals(SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_ForgetVerifyCode])) { ServerHelper.WriteLine("[ForgerPassword] UserName: " + username + " Email: " + email); SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email)); msg = ""; } else msg = "验证码不正确,请重新输入!"; } } else msg = "验证码不正确,请重新输入!"; } else { // 检查账号和邮箱是否匹配 SQLHelper.ExecuteDataSet(UserQuery.Select_CheckEmailWithUsername(username, email)); if (SQLHelper.Result != SQLResult.Success) { msg = "此邮箱未绑定此账号,请重试!"; } else { // 检查验证码是否发送过和是否过期 SQLHelper.ExecuteDataSet(ForgetVerifyCodes.Select_HasSentForgetVerifyCode(username, email)); if (SQLHelper.Result != SQLResult.Success || (DateTime.Now - ((DateTime)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_SendTime])).TotalMinutes >= 10) { // 发送验证码,需要先删除之前过期的验证码 SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email)); ForgetVerify = Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 6); SQLHelper.Execute(ForgetVerifyCodes.Insert_ForgetVerifyCode(username, email, ForgetVerify)); if (SQLHelper.Result == SQLResult.Success) { if (MailSender != null) { // 发送验证码 string ServerName = Config.ServerName; string Subject = $"[{ServerName}] FunGame 找回密码验证码"; string Body = $"亲爱的 {username},
您正在找回[{ServerName}]账号的密码,您的验证码是 {ForgetVerify} ,10分钟内有效,请及时输入!

{ServerName}
{DateTimeUtility.GetDateTimeToString(TimeType.LongDateOnly)}"; string[] To = [email]; if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success) { ServerHelper.WriteLine(Server.GetClientName() + $" 已向{email}发送验证码:{ForgetVerify}"); msg = ""; } else { ServerHelper.WriteLine(Server.GetClientName() + " 无法发送验证码"); ServerHelper.WriteLine(MailSender.ErrorMsg); } } else // 不使用MailSender的情况 { ServerHelper.WriteLine(Server.GetClientName() + $" 验证码为:{ForgetVerify},请服务器管理员告知此用户"); msg = ""; } } } else { // 发送过验证码且验证码没有过期 string ForgetVerifyCode = (string)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_ForgetVerifyCode]; ServerHelper.WriteLine(Server.GetClientName() + $" 十分钟内已向{email}发送过验证码:{ForgetVerifyCode}"); msg = ""; } } } } ResultData.Add("msg", msg); } /// /// 更新用户的密码 /// /// /// private void UpdatePassword(Hashtable RequestData, Hashtable ResultData) { string msg = "无法更新您的密码,请稍后再试。"; if (RequestData.Count >= 2) { ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest), InvokeMessageType.DataRequest); string username = DataRequest.GetHashtableJsonObject(RequestData, UserQuery.Column_Username) ?? ""; string password = DataRequest.GetHashtableJsonObject(RequestData, UserQuery.Column_Password) ?? ""; if (username.Trim() != "" && password.Trim() != "") { Server.SQLHelper?.Execute(UserQuery.Update_Password(username, password)); if (SQLHelper.Success) { // 更新成功返回空值 msg = ""; } } } ResultData.Add("msg", msg); } #endregion #region Room /// /// 获取房间内玩家数量 /// /// /// private void GetRoomPlayerCount(Hashtable RequestData, Hashtable ResultData) { string roomid = "-1"; if (RequestData.Count >= 1) { ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_LastRequest), InvokeMessageType.DataRequest); roomid = DataRequest.GetHashtableJsonObject(RequestData, "roomid") ?? "-1"; } ResultData.Add("count", Config.RoomList.GetPlayerCount(roomid)); } #endregion } }