From c1bfd1e106252248bcf801ebc1fb2b915d7d6d2c Mon Sep 17 00:00:00 2001
From: milimoe <110188673+milimoe@users.noreply.github.com>
Date: Wed, 14 Jun 2023 09:20:29 +0800
Subject: [PATCH] =?UTF-8?q?Add=20forget=20password=20=E7=AC=AC=E4=B8=80?=
=?UTF-8?q?=E9=83=A8=E5=88=86=20(#12)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* 添加找回密码,首次尝试使用DataRequest
* 跟随Core修改
* 完成ForgetPassword 第一部分
* Remove Newtonsoft.Json
* 跟随Core工厂方法的改动
---
FunGame.Desktop/FunGame.Desktop.csproj | 6 +-
.../Library/Component/ShowMessage.cs | 2 +-
FunGame.Desktop/Model/LoginModel.cs | 24 ++---
FunGame.Desktop/Model/MainModel.cs | 22 ++---
FunGame.Desktop/UI/Login/ForgetPassword.cs | 90 ++++++++++++++++---
5 files changed, 98 insertions(+), 46 deletions(-)
diff --git a/FunGame.Desktop/FunGame.Desktop.csproj b/FunGame.Desktop/FunGame.Desktop.csproj
index fe502ab..4537ec6 100644
--- a/FunGame.Desktop/FunGame.Desktop.csproj
+++ b/FunGame.Desktop/FunGame.Desktop.csproj
@@ -34,10 +34,6 @@
-
-
-
-
@@ -76,4 +72,4 @@
-
\ No newline at end of file
+
diff --git a/FunGame.Desktop/Library/Component/ShowMessage.cs b/FunGame.Desktop/Library/Component/ShowMessage.cs
index 1c07fa8..405666f 100644
--- a/FunGame.Desktop/Library/Component/ShowMessage.cs
+++ b/FunGame.Desktop/Library/Component/ShowMessage.cs
@@ -210,7 +210,7 @@ namespace Milimoe.FunGame.Desktop.Library.Component
public static string InputMessageCancel(string msg, string title, out MessageResult cancel)
{
object[] objs = { title, msg, 0, MessageButtonType.Input };
- ShowMessage window = new ShowMessage(objs);
+ ShowMessage window = new(objs);
string result = window.InputResult;
cancel = window.MessageResult;
return result;
diff --git a/FunGame.Desktop/Model/LoginModel.cs b/FunGame.Desktop/Model/LoginModel.cs
index 1e35846..e498387 100644
--- a/FunGame.Desktop/Model/LoginModel.cs
+++ b/FunGame.Desktop/Model/LoginModel.cs
@@ -1,6 +1,4 @@
-using System.Data;
-using System.Windows.Forms;
-using Milimoe.FunGame.Core.Api.Utility;
+using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Architecture;
using Milimoe.FunGame.Core.Library.Common.Network;
@@ -68,13 +66,10 @@ namespace Milimoe.FunGame.Desktop.Model
SetWorking();
if (Socket.Send(SocketMessageType.CheckLogin, CheckLoginKey) == SocketResult.Success)
{
- DataSet ds = await Task.Factory.StartNew(GetLoginUserAsync);
- if (ds != null)
- {
- // 创建User对象并返回到Main
- RunTime.Main?.UpdateUI(MainInvokeType.SetUser, new object[] { Factory.GetInstance(ds) });
- return true;
- }
+ User user = await Task.Factory.StartNew(GetLoginUserAsync);
+ // 创建User对象并返回到Main
+ RunTime.Main?.UpdateUI(MainInvokeType.SetUser, user);
+ return true;
}
}
}
@@ -110,21 +105,20 @@ namespace Milimoe.FunGame.Desktop.Model
return (key, msg);
}
- private static DataSet GetLoginUserAsync()
+ private static User GetLoginUserAsync()
{
- DataSet? ds = new();
+ User user = General.UnknownUserInstance;
try
{
WaitForWorkDone();
// 返回构造User对象的DataSet
- if (Work.Length > 0) ds = Work.GetParam(0);
+ if (Work.Length > 0) user = Work.GetParam(0) ?? General.UnknownUserInstance;
}
catch (Exception e)
{
RunTime.WritelnSystemInfo(e.GetErrorInfo());
}
- ds ??= new();
- return ds;
+ return user;
}
private static new void SetWorking()
diff --git a/FunGame.Desktop/Model/MainModel.cs b/FunGame.Desktop/Model/MainModel.cs
index 72026e9..928ad80 100644
--- a/FunGame.Desktop/Model/MainModel.cs
+++ b/FunGame.Desktop/Model/MainModel.cs
@@ -1,6 +1,4 @@
-using System.Collections;
-using System.Data;
-using Milimoe.FunGame.Core.Entity;
+using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Architecture;
using Milimoe.FunGame.Core.Library.Common.Network;
using Milimoe.FunGame.Core.Library.Constant;
@@ -223,11 +221,11 @@ namespace Milimoe.FunGame.Desktop.Model
else if (SocketObject.SocketType == SocketMessageType.UpdateRoomMaster)
{
// 收到房间更换房主的信息
- DataSet? user = null, room = null;
- if (SocketObject.Length > 0) user = SocketObject.GetParam(0);
- if (SocketObject.Length > 1) room = SocketObject.GetParam(1);
- Room r = Core.Api.Utility.Factory.GetRoom(room, user);
- if (r.Roomid != "-1" && r.Roomid == Usercfg.InRoom.Roomid) Main.UpdateUI(MainInvokeType.UpdateRoomMaster, r);
+ User user = General.UnknownUserInstance;
+ Room room = General.HallInstance;
+ if (SocketObject.Length > 0) user = SocketObject.GetParam(0) ?? General.UnknownUserInstance;
+ if (SocketObject.Length > 1) room = SocketObject.GetParam(1) ?? General.HallInstance;
+ if (room.Roomid != "-1" && room.Roomid == Usercfg.InRoom.Roomid) Main.UpdateUI(MainInvokeType.UpdateRoomMaster, room);
}
else if (SocketMessageTypes.Contains(SocketObject.SocketType))
{
@@ -332,13 +330,7 @@ namespace Milimoe.FunGame.Desktop.Model
try
{
WaitForWorkDone();
- DataSet? DsRoom = new(), DsUser = new();
- if (Work.Length > 0) DsRoom = Work.GetParam(0);
- if (Work.Length > 1) DsUser = Work.GetParam(1);
- if (DsRoom != null && DsUser != null)
- {
- list = Core.Api.Utility.Factory.GetList(DsRoom, DsUser);
- }
+ if (Work.Length > 0) list = Work.GetParam>(0) ?? new();
}
catch (Exception e)
{
diff --git a/FunGame.Desktop/UI/Login/ForgetPassword.cs b/FunGame.Desktop/UI/Login/ForgetPassword.cs
index f278c4e..cc05f7a 100644
--- a/FunGame.Desktop/UI/Login/ForgetPassword.cs
+++ b/FunGame.Desktop/UI/Login/ForgetPassword.cs
@@ -1,5 +1,7 @@
using Milimoe.FunGame.Core.Api.Transmittal;
using Milimoe.FunGame.Core.Library.Constant;
+using Milimoe.FunGame.Core.Library.Exception;
+using Milimoe.FunGame.Core.Library.SQLScript.Common;
using Milimoe.FunGame.Core.Library.SQLScript.Entity;
using Milimoe.FunGame.Desktop.Library;
using Milimoe.FunGame.Desktop.Library.Component;
@@ -31,20 +33,88 @@ namespace Milimoe.FunGame.Desktop.UI
return;
}
- bool finding = false;
+ string msg = "";
+ bool success = false;
- DataRequest request = RunTime.NewDataRequest(DataRequestType.GetFindPasswordVerifyCode);
- request.AddRequestData(UserQuery.Column_Username, username);
- request.AddRequestData(UserQuery.Column_Email, email);
- request.SendRequest();
- if (request.Result == RequestResult.Success)
+ try
{
- finding = request.GetResult("finding");
- ShowMessage.TipMessage(finding.ToString());
+ DataRequest request = RunTime.NewDataRequest(DataRequestType.GetFindPasswordVerifyCode);
+ request.AddRequestData(UserQuery.Column_Username, username);
+ request.AddRequestData(UserQuery.Column_Email, email);
+ request.AddRequestData(ForgetVerifyCodes.Column_ForgetVerifyCode, "");
+ request.SendRequest();
+ if (request.Result == RequestResult.Success)
+ {
+ msg = request.GetResult("msg") ?? "";
+ if (msg.Trim() != "")
+ {
+ // 如果返回一个信息,则停止找回密码
+ ShowMessage.ErrorMessage(msg);
+ }
+ else
+ {
+ while (!success)
+ {
+ request[ForgetVerifyCodes.Column_ForgetVerifyCode] = "";
+ string verifycode = ShowMessage.InputMessageCancel("请输入找回密码邮件中的6位数字验证码", "注册验证码", out MessageResult result);
+ if (result != MessageResult.Cancel)
+ {
+ if (verifycode.Trim() != "")
+ {
+ request[ForgetVerifyCodes.Column_ForgetVerifyCode] = verifycode;
+ request.SendRequest();
+ if (request.Result == RequestResult.Success)
+ {
+ msg = request.GetResult("msg") ?? "";
+ if (msg.Trim() != "")
+ {
+ ShowMessage.ErrorMessage(msg);
+ }
+ else
+ {
+ success = true;
+ break;
+ }
+ }
+ else
+ {
+ RunTime.WritelnSystemInfo(request.Error);
+ }
+ }
+ else
+ {
+ ShowMessage.WarningMessage("不能输入空值!");
+ }
+ }
+ else break;
+ }
+ if (success)
+ {
+ bool checkpass = true;
+ while (checkpass)
+ {
+ string newpass = ShowMessage.InputMessageCancel("请输入新密码", "新密码", out MessageResult result);
+ if (newpass.Trim() != "")
+ {
+ if (newpass.Length < 6 || newpass.Length > 15) // 字节范围 3~12
+ {
+ ShowMessage.ErrorMessage("密码长度不符合要求:6~15个字符数");
+ }
+ else checkpass = false;
+ }
+ }
+ // TODO. 等更新UpdatePassword
+ }
+ }
+ }
+ else
+ {
+ RunTime.WritelnSystemInfo(request.Error);
+ }
}
- else
+ catch (Exception ex)
{
- RunTime.WritelnSystemInfo(request.Error);
+ RunTime.WritelnSystemInfo(ex.GetErrorInfo());
}
}
}