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" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\FunGame.Implement\FunGame.Implement.csproj" />
</ItemGroup>

View File

@ -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;

View File

@ -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,17 +66,14 @@ 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 user = await Task.Factory.StartNew(GetLoginUserAsync);
// 创建User对象并返回到Main
RunTime.Main?.UpdateUI(MainInvokeType.SetUser, new object[] { Factory.GetInstance<User>(ds) });
RunTime.Main?.UpdateUI(MainInvokeType.SetUser, user);
return true;
}
}
}
}
}
catch (Exception e)
{
RunTime.WritelnSystemInfo(e.GetErrorInfo());
@ -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<DataSet>(0);
if (Work.Length > 0) user = Work.GetParam<User>(0) ?? General.UnknownUserInstance;
}
catch (Exception e)
{
RunTime.WritelnSystemInfo(e.GetErrorInfo());
}
ds ??= new();
return ds;
return user;
}
private static new void SetWorking()

View File

@ -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<DataSet>(0);
if (SocketObject.Length > 1) room = SocketObject.GetParam<DataSet>(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<User>(0) ?? General.UnknownUserInstance;
if (SocketObject.Length > 1) room = SocketObject.GetParam<Room>(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<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);
}
if (Work.Length > 0) list = Work.GetParam<List<Room>>(0) ?? new();
}
catch (Exception e)
{

View File

@ -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,22 +33,90 @@ namespace Milimoe.FunGame.Desktop.UI
return;
}
bool finding = false;
string msg = "";
bool success = false;
try
{
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)
{
finding = request.GetResult<bool>("finding");
ShowMessage.TipMessage(finding.ToString());
msg = request.GetResult<string>("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<string>("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);
}
}
catch (Exception ex)
{
RunTime.WritelnSystemInfo(ex.GetErrorInfo());
}
}
}
}
}