Add forget password 第一部分 (#12)

* 添加找回密码,首次尝试使用DataRequest

* 跟随Core修改

* 完成ForgetPassword 第一部分

* Remove Newtonsoft.Json

* 跟随Core工厂方法的改动
This commit is contained in:
milimoe 2023-06-14 09:20:29 +08:00 committed by GitHub
parent ffb3561e30
commit c1bfd1e106
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 98 additions and 46 deletions

View File

@ -34,10 +34,6 @@
<Content Include="Images\logo.ico" /> <Content Include="Images\logo.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\FunGame.Implement\FunGame.Implement.csproj" /> <ProjectReference Include="..\FunGame.Implement\FunGame.Implement.csproj" />
</ItemGroup> </ItemGroup>

View File

@ -210,7 +210,7 @@ namespace Milimoe.FunGame.Desktop.Library.Component
public static string InputMessageCancel(string msg, string title, out MessageResult cancel) public static string InputMessageCancel(string msg, string title, out MessageResult cancel)
{ {
object[] objs = { title, msg, 0, MessageButtonType.Input }; object[] objs = { title, msg, 0, MessageButtonType.Input };
ShowMessage window = new ShowMessage(objs); ShowMessage window = new(objs);
string result = window.InputResult; string result = window.InputResult;
cancel = window.MessageResult; cancel = window.MessageResult;
return result; return result;

View File

@ -1,6 +1,4 @@
using System.Data; using Milimoe.FunGame.Core.Api.Utility;
using System.Windows.Forms;
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Architecture; using Milimoe.FunGame.Core.Library.Common.Architecture;
using Milimoe.FunGame.Core.Library.Common.Network; using Milimoe.FunGame.Core.Library.Common.Network;
@ -68,17 +66,14 @@ namespace Milimoe.FunGame.Desktop.Model
SetWorking(); SetWorking();
if (Socket.Send(SocketMessageType.CheckLogin, CheckLoginKey) == SocketResult.Success) if (Socket.Send(SocketMessageType.CheckLogin, CheckLoginKey) == SocketResult.Success)
{ {
DataSet ds = await Task.Factory.StartNew(GetLoginUserAsync); User user = await Task.Factory.StartNew(GetLoginUserAsync);
if (ds != null)
{
// 创建User对象并返回到Main // 创建User对象并返回到Main
RunTime.Main?.UpdateUI(MainInvokeType.SetUser, new object[] { Factory.GetInstance<User>(ds) }); RunTime.Main?.UpdateUI(MainInvokeType.SetUser, user);
return true; return true;
} }
} }
} }
} }
}
catch (Exception e) catch (Exception e)
{ {
RunTime.WritelnSystemInfo(e.GetErrorInfo()); RunTime.WritelnSystemInfo(e.GetErrorInfo());
@ -110,21 +105,20 @@ namespace Milimoe.FunGame.Desktop.Model
return (key, msg); return (key, msg);
} }
private static DataSet GetLoginUserAsync() private static User GetLoginUserAsync()
{ {
DataSet? ds = new(); User user = General.UnknownUserInstance;
try try
{ {
WaitForWorkDone(); WaitForWorkDone();
// 返回构造User对象的DataSet // 返回构造User对象的DataSet
if (Work.Length > 0) ds = Work.GetParam<DataSet>(0); if (Work.Length > 0) user = Work.GetParam<User>(0) ?? General.UnknownUserInstance;
} }
catch (Exception e) catch (Exception e)
{ {
RunTime.WritelnSystemInfo(e.GetErrorInfo()); RunTime.WritelnSystemInfo(e.GetErrorInfo());
} }
ds ??= new(); return user;
return ds;
} }
private static new void SetWorking() private static new void SetWorking()

View File

@ -1,6 +1,4 @@
using System.Collections; using Milimoe.FunGame.Core.Entity;
using System.Data;
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Core.Library.Common.Architecture; using Milimoe.FunGame.Core.Library.Common.Architecture;
using Milimoe.FunGame.Core.Library.Common.Network; using Milimoe.FunGame.Core.Library.Common.Network;
using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Library.Constant;
@ -223,11 +221,11 @@ namespace Milimoe.FunGame.Desktop.Model
else if (SocketObject.SocketType == SocketMessageType.UpdateRoomMaster) else if (SocketObject.SocketType == SocketMessageType.UpdateRoomMaster)
{ {
// 收到房间更换房主的信息 // 收到房间更换房主的信息
DataSet? user = null, room = null; User user = General.UnknownUserInstance;
if (SocketObject.Length > 0) user = SocketObject.GetParam<DataSet>(0); Room room = General.HallInstance;
if (SocketObject.Length > 1) room = SocketObject.GetParam<DataSet>(1); if (SocketObject.Length > 0) user = SocketObject.GetParam<User>(0) ?? General.UnknownUserInstance;
Room r = Core.Api.Utility.Factory.GetRoom(room, user); if (SocketObject.Length > 1) room = SocketObject.GetParam<Room>(1) ?? General.HallInstance;
if (r.Roomid != "-1" && r.Roomid == Usercfg.InRoom.Roomid) Main.UpdateUI(MainInvokeType.UpdateRoomMaster, r); if (room.Roomid != "-1" && room.Roomid == Usercfg.InRoom.Roomid) Main.UpdateUI(MainInvokeType.UpdateRoomMaster, room);
} }
else if (SocketMessageTypes.Contains(SocketObject.SocketType)) else if (SocketMessageTypes.Contains(SocketObject.SocketType))
{ {
@ -332,13 +330,7 @@ namespace Milimoe.FunGame.Desktop.Model
try try
{ {
WaitForWorkDone(); WaitForWorkDone();
DataSet? DsRoom = new(), DsUser = new(); if (Work.Length > 0) list = Work.GetParam<List<Room>>(0) ?? new();
if (Work.Length > 0) DsRoom = Work.GetParam<DataSet>(0);
if (Work.Length > 1) DsUser = Work.GetParam<DataSet>(1);
if (DsRoom != null && DsUser != null)
{
list = Core.Api.Utility.Factory.GetList<Room>(DsRoom, DsUser);
}
} }
catch (Exception e) catch (Exception e)
{ {

View File

@ -1,5 +1,7 @@
using Milimoe.FunGame.Core.Api.Transmittal; using Milimoe.FunGame.Core.Api.Transmittal;
using Milimoe.FunGame.Core.Library.Constant; 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.Core.Library.SQLScript.Entity;
using Milimoe.FunGame.Desktop.Library; using Milimoe.FunGame.Desktop.Library;
using Milimoe.FunGame.Desktop.Library.Component; using Milimoe.FunGame.Desktop.Library.Component;
@ -31,22 +33,90 @@ namespace Milimoe.FunGame.Desktop.UI
return; return;
} }
bool finding = false; string msg = "";
bool success = false;
try
{
DataRequest request = RunTime.NewDataRequest(DataRequestType.GetFindPasswordVerifyCode); DataRequest request = RunTime.NewDataRequest(DataRequestType.GetFindPasswordVerifyCode);
request.AddRequestData(UserQuery.Column_Username, username); request.AddRequestData(UserQuery.Column_Username, username);
request.AddRequestData(UserQuery.Column_Email, email); request.AddRequestData(UserQuery.Column_Email, email);
request.AddRequestData(ForgetVerifyCodes.Column_ForgetVerifyCode, "");
request.SendRequest(); request.SendRequest();
if (request.Result == RequestResult.Success) if (request.Result == RequestResult.Success)
{ {
finding = request.GetResult<bool>("finding"); msg = request.GetResult<string>("msg") ?? "";
ShowMessage.TipMessage(finding.ToString()); 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<string>("msg") ?? "";
if (msg.Trim() != "")
{
ShowMessage.ErrorMessage(msg);
}
else
{
success = true;
break;
}
} }
else else
{ {
RunTime.WritelnSystemInfo(request.Error); 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);
}
}
catch (Exception ex)
{
RunTime.WritelnSystemInfo(ex.GetErrorInfo());
}
}
} }
} }
} }