mirror of
https://github.com/project-redbud/FunGame-Server.git
synced 2025-12-15 04:48:21 +00:00
PayloadModel 添加 event 属性,添加 Room,Main 的 API 控制器
This commit is contained in:
parent
47d29ced5e
commit
4f6d70abc3
@ -125,6 +125,7 @@ namespace Milimoe.FunGame.Server.Controller
|
||||
break;
|
||||
|
||||
case DataRequestType.Room_UpdateRoomMaster:
|
||||
await UpdateRoomMaster(data, result);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -569,18 +570,6 @@ namespace Milimoe.FunGame.Server.Controller
|
||||
ServerHelper.WriteLine("客户端提供的参数不足。", InvokeMessageType.DataRequest, LogLevel.Warning);
|
||||
}
|
||||
|
||||
LoginEventArgs eventArgs = new(username, password, autokey);
|
||||
FunGameSystem.ServerPluginLoader?.OnBeforeLoginEvent(this, eventArgs);
|
||||
FunGameSystem.WebAPIPluginLoader?.OnBeforeLoginEvent(this, eventArgs);
|
||||
if (eventArgs.Cancel)
|
||||
{
|
||||
msg = $"{DataRequestSet.GetTypeString(_lastRequest)} 请求已取消。{(eventArgs.EventMsg != "" ? $"原因:{eventArgs.EventMsg}" : "")}";
|
||||
ServerHelper.WriteLine(msg);
|
||||
resultData.Add("msg", msg);
|
||||
resultData.Add("user", user);
|
||||
return;
|
||||
}
|
||||
|
||||
// CheckLogin的情况
|
||||
if (key != Guid.Empty)
|
||||
{
|
||||
@ -606,8 +595,6 @@ namespace Milimoe.FunGame.Server.Controller
|
||||
}
|
||||
}
|
||||
|
||||
FunGameSystem.ServerPluginLoader?.OnAfterLoginEvent(this, eventArgs);
|
||||
FunGameSystem.WebAPIPluginLoader?.OnAfterLoginEvent(this, eventArgs);
|
||||
resultData.Add("msg", msg);
|
||||
resultData.Add("user", user);
|
||||
}
|
||||
@ -688,8 +675,8 @@ namespace Milimoe.FunGame.Server.Controller
|
||||
{
|
||||
// 发送验证码
|
||||
string ServerName = Config.ServerName;
|
||||
string Subject = $"[{ServerName}] FunGame 找回密码验证码";
|
||||
string Body = $"亲爱的 {username}, <br/> 您正在找回[{ServerName}]账号的密码,您的验证码是 {forgetVerify} ,10分钟内有效,请及时输入!<br/><br/>{ServerName}<br/>{DateTimeUtility.GetDateTimeToString(TimeType.LongDateOnly)}";
|
||||
string Subject = $"[{ServerName}] 找回密码验证码";
|
||||
string Body = $"亲爱的 {username}, <br/> 您正在找回 [{ServerName}] 账号的密码,您的验证码是 {forgetVerify} ,10分钟内有效,请及时输入!<br/><br/>{ServerName}<br/>{DateTimeUtility.GetDateTimeToString(TimeType.LongDateOnly)}";
|
||||
string[] To = [email];
|
||||
if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
|
||||
{
|
||||
@ -771,6 +758,49 @@ namespace Milimoe.FunGame.Server.Controller
|
||||
resultData.Add("count", FunGameSystem.RoomList.GetUserCount(roomid));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新房主
|
||||
/// </summary>
|
||||
/// <param name="requestData"></param>
|
||||
/// <param name="resultData"></param>
|
||||
/// <returns></returns>
|
||||
private async Task UpdateRoomMaster(Dictionary<string, object> requestData, Dictionary<string, object> resultData)
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
if (requestData.Count >= 2)
|
||||
{
|
||||
ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_lastRequest), InvokeMessageType.DataRequest);
|
||||
string roomid = DataRequest.GetDictionaryJsonObject<string>(requestData, "roomid") ?? "-1";
|
||||
User newMaster = DataRequest.GetDictionaryJsonObject<User>(requestData, "newMaster") ?? Factory.GetUser();
|
||||
|
||||
if (roomid != "-1" && FunGameSystem.RoomList.IsExist(roomid) && newMaster.Id != 0)
|
||||
{
|
||||
Room room = FunGameSystem.RoomList[roomid];
|
||||
User oldMaster = room.RoomMaster;
|
||||
room.RoomMaster = newMaster;
|
||||
result = true;
|
||||
|
||||
if (SQLHelper != null)
|
||||
{
|
||||
SQLHelper.Execute(RoomQuery.Update_UpdateRoomMaster(SQLHelper, roomid, newMaster.Id));
|
||||
if (SQLHelper.Result == SQLResult.Success)
|
||||
{
|
||||
await Server.UpdateRoomMaster(room, true);
|
||||
ServerHelper.WriteLine($"[UpdateRoomMaster] RoomID: {roomid} 房主变更: {oldMaster.Username} -> {newMaster.Username}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ServerHelper.WriteLine("客户端提供的参数不足。", InvokeMessageType.DataRequest, LogLevel.Warning);
|
||||
}
|
||||
|
||||
// 返回结果
|
||||
resultData.Add("result", result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 开始匹配
|
||||
/// </summary>
|
||||
|
||||
@ -23,7 +23,7 @@ namespace Milimoe.FunGame.Server.Services
|
||||
FunGameSystem.WebAPIPluginLoader?.OnBeforeRegEvent(sender, eventArgs);
|
||||
if (eventArgs.Cancel)
|
||||
{
|
||||
msg = $"{DataRequestSet.GetTypeString(DataRequestType.Reg_Reg)} 请求已取消。{(eventArgs.EventMsg != "" ? $"原因:{eventArgs.EventMsg}" : "")}";
|
||||
msg = GetPluginCancelString(DataRequestType.Reg_Reg, eventArgs);
|
||||
ServerHelper.WriteLine(msg, InvokeMessageType.DataRequest, LogLevel.Warning);
|
||||
return (eventArgs.EventMsg, RegInvokeType.None, false);
|
||||
}
|
||||
@ -77,8 +77,8 @@ namespace Milimoe.FunGame.Server.Services
|
||||
{
|
||||
// 发送验证码
|
||||
string ServerName = Config.ServerName;
|
||||
string Subject = $"[{ServerName}] FunGame 注册验证码";
|
||||
string Body = $"亲爱的 {username}, <br/> 感谢您注册[{ServerName}],您的验证码是 {regVerify} ,10分钟内有效,请及时输入!<br/><br/>{ServerName}<br/>{DateTimeUtility.GetDateTimeToString(TimeType.LongDateOnly)}";
|
||||
string Subject = $"[{ServerName}] 注册验证码";
|
||||
string Body = $"亲爱的 {username}, <br/> 感谢您注册 [{ServerName}],您的验证码是 {regVerify} ,10分钟内有效,请及时输入!<br/><br/>{ServerName}<br/>{DateTimeUtility.GetDateTimeToString(TimeType.LongDateOnly)}";
|
||||
string[] To = [email];
|
||||
if (mailSender.Send(mailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
|
||||
{
|
||||
@ -169,7 +169,7 @@ namespace Milimoe.FunGame.Server.Services
|
||||
FunGameSystem.WebAPIPluginLoader?.OnBeforeLoginEvent(sender, eventArgs);
|
||||
if (eventArgs.Cancel)
|
||||
{
|
||||
msg = $"{DataRequestSet.GetTypeString(DataRequestType.Login_Login)} 请求已取消。{(eventArgs.EventMsg != "" ? $"原因:{eventArgs.EventMsg}" : "")}";
|
||||
msg = GetPluginCancelString(DataRequestType.Login_Login, eventArgs);
|
||||
ServerHelper.WriteLine(msg, InvokeMessageType.DataRequest, LogLevel.Warning);
|
||||
return (success, dsUser, eventArgs.EventMsg, key);
|
||||
}
|
||||
@ -214,5 +214,7 @@ namespace Milimoe.FunGame.Server.Services
|
||||
ServerHelper.WriteLine(msg, InvokeMessageType.Core);
|
||||
return (success, dsUser, msg, key);
|
||||
}
|
||||
|
||||
private static string GetPluginCancelString(DataRequestType type, GeneralEventArgs e) => $"{DataRequestSet.GetTypeString(type)} 请求已取消。{(e.EventMsg != "" ? $"原因:{e.EventMsg}" : "")}";
|
||||
}
|
||||
}
|
||||
|
||||
@ -19,6 +19,7 @@ namespace Milimoe.FunGame.WebAPI.Controllers
|
||||
{
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "data_request",
|
||||
RequestType = payload.RequestType
|
||||
};
|
||||
|
||||
|
||||
@ -19,6 +19,7 @@ namespace Milimoe.FunGame.WebAPI.Controllers
|
||||
{
|
||||
PayloadModel<GamingType> response = new()
|
||||
{
|
||||
Event = "gaming_request",
|
||||
RequestType = payload.RequestType
|
||||
};
|
||||
if (model.RequestID == Guid.Empty)
|
||||
|
||||
73
FunGame.WebAPI/Controllers/MainController.cs
Normal file
73
FunGame.WebAPI/Controllers/MainController.cs
Normal file
@ -0,0 +1,73 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Milimoe.FunGame.WebAPI.Models;
|
||||
|
||||
namespace Milimoe.FunGame.WebAPI.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("[controller]")]
|
||||
[Authorize]
|
||||
public class MainController(RESTfulAPIModel model, ILogger<MainController> logger) : ControllerBase
|
||||
{
|
||||
private readonly ILogger<MainController> _logger = logger;
|
||||
|
||||
/// <summary>
|
||||
/// 获取公告
|
||||
/// </summary>
|
||||
[HttpGet("notice")]
|
||||
public async Task<IActionResult> GetNotice()
|
||||
{
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "main_getnotice",
|
||||
RequestType = DataRequestType.Main_GetNotice
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> result = await model.DataRequestController.GetResultData(DataRequestType.Main_GetNotice, []);
|
||||
response.StatusCode = 200;
|
||||
response.Data = result;
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError("Error: {e}", e);
|
||||
}
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = "服务器暂时无法处理此请求。";
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发送聊天消息
|
||||
/// </summary>
|
||||
[HttpPost("chat")]
|
||||
public async Task<IActionResult> Chat([FromBody] Dictionary<string, object> data)
|
||||
{
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "main_chat",
|
||||
RequestType = DataRequestType.Main_Chat
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> result = await model.DataRequestController.GetResultData(DataRequestType.Main_Chat, data);
|
||||
response.StatusCode = 200;
|
||||
response.Data = result;
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError("Error: {e}", e);
|
||||
}
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = "服务器暂时无法处理此请求。";
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
}
|
||||
}
|
||||
311
FunGame.WebAPI/Controllers/RoomController.cs
Normal file
311
FunGame.WebAPI/Controllers/RoomController.cs
Normal file
@ -0,0 +1,311 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Milimoe.FunGame.Core.Entity;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Milimoe.FunGame.WebAPI.Models;
|
||||
|
||||
namespace Milimoe.FunGame.WebAPI.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("[controller]")]
|
||||
[Authorize]
|
||||
public class RoomController(RESTfulAPIModel model, ILogger<RoomController> logger) : ControllerBase
|
||||
{
|
||||
private readonly ILogger<RoomController> _logger = logger;
|
||||
|
||||
/// <summary>
|
||||
/// 创建房间
|
||||
/// </summary>
|
||||
[HttpPost("create")]
|
||||
public async Task<IActionResult> CreateRoom([FromBody] Dictionary<string, object> data)
|
||||
{
|
||||
string msg = "服务器暂时无法处理此请求。";
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "room_create",
|
||||
RequestType = DataRequestType.Main_CreateRoom
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> result = await model.DataRequestController.GetResultData(DataRequestType.Main_CreateRoom, data);
|
||||
if (result.TryGetValue("room", out object? value) && value is Room room && room.Roomid != "-1")
|
||||
{
|
||||
response.StatusCode = 200;
|
||||
response.Data = result;
|
||||
return Ok(response);
|
||||
}
|
||||
msg = "创建房间失败!";
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError("Error: {e}", e);
|
||||
}
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = msg;
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取/更新房间列表
|
||||
/// </summary>
|
||||
[HttpGet("list")]
|
||||
public async Task<IActionResult> GetRoomList()
|
||||
{
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "room_list",
|
||||
RequestType = DataRequestType.Main_UpdateRoom
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> result = await model.DataRequestController.GetResultData(DataRequestType.Main_UpdateRoom, []);
|
||||
response.StatusCode = 200;
|
||||
response.Data = result;
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError("Error: {e}", e);
|
||||
}
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = "服务器暂时无法处理此请求。";
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 进入房间
|
||||
/// </summary>
|
||||
[HttpPost("join")]
|
||||
public async Task<IActionResult> IntoRoom([FromBody] Dictionary<string, object> data)
|
||||
{
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "room_join",
|
||||
RequestType = DataRequestType.Main_IntoRoom
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> result = await model.DataRequestController.GetResultData(DataRequestType.Main_IntoRoom, data);
|
||||
response.StatusCode = 200;
|
||||
response.Data = result;
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError("Error: {e}", e);
|
||||
}
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = "服务器暂时无法处理此请求。";
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 退出房间
|
||||
/// </summary>
|
||||
[HttpPost("quit")]
|
||||
public async Task<IActionResult> QuitRoom([FromBody] Dictionary<string, object> data)
|
||||
{
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "room_quit",
|
||||
RequestType = DataRequestType.Main_QuitRoom
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> result = await model.DataRequestController.GetResultData(DataRequestType.Main_QuitRoom, data);
|
||||
response.StatusCode = 200;
|
||||
response.Data = result;
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError("Error: {e}", e);
|
||||
}
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = "服务器暂时无法处理此请求。";
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 匹配房间
|
||||
/// </summary>
|
||||
[HttpPost("match")]
|
||||
public async Task<IActionResult> MatchRoom([FromBody] Dictionary<string, object> data)
|
||||
{
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "room_match",
|
||||
RequestType = DataRequestType.Main_MatchRoom
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> result = await model.DataRequestController.GetResultData(DataRequestType.Main_MatchRoom, data);
|
||||
response.StatusCode = 200;
|
||||
response.Data = result;
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError("Error: {e}", e);
|
||||
}
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = "服务器暂时无法处理此请求。";
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置准备状态
|
||||
/// </summary>
|
||||
[HttpPost("ready")]
|
||||
public async Task<IActionResult> SetReady([FromBody] Dictionary<string, object> data)
|
||||
{
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "room_ready",
|
||||
RequestType = DataRequestType.Main_Ready
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> result = await model.DataRequestController.GetResultData(DataRequestType.Main_Ready, data);
|
||||
response.StatusCode = 200;
|
||||
response.Data = result;
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError("Error: {e}", e);
|
||||
}
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = "服务器暂时无法处理此请求。";
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取消准备状态
|
||||
/// </summary>
|
||||
[HttpPost("cancelready")]
|
||||
public async Task<IActionResult> CancelReady([FromBody] Dictionary<string, object> data)
|
||||
{
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "room_cancelready",
|
||||
RequestType = DataRequestType.Main_CancelReady
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> result = await model.DataRequestController.GetResultData(DataRequestType.Main_CancelReady, data);
|
||||
response.StatusCode = 200;
|
||||
response.Data = result;
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError("Error: {e}", e);
|
||||
}
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = "服务器暂时无法处理此请求。";
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 开始游戏
|
||||
/// </summary>
|
||||
[HttpPost("start")]
|
||||
public async Task<IActionResult> StartGame([FromBody] Dictionary<string, object> data)
|
||||
{
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "room_start",
|
||||
RequestType = DataRequestType.Main_StartGame
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> result = await model.DataRequestController.GetResultData(DataRequestType.Main_StartGame, data);
|
||||
response.StatusCode = 200;
|
||||
response.Data = result;
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError("Error: {e}", e);
|
||||
}
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = "服务器暂时无法处理此请求。";
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取房间内玩家数量
|
||||
/// </summary>
|
||||
[HttpPost("playercount")]
|
||||
public async Task<IActionResult> GetRoomPlayerCount([FromBody] Dictionary<string, object> data)
|
||||
{
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "room_playercount",
|
||||
RequestType = DataRequestType.Room_GetRoomPlayerCount
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> result = await model.DataRequestController.GetResultData(DataRequestType.Room_GetRoomPlayerCount, data);
|
||||
response.StatusCode = 200;
|
||||
response.Data = result;
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError("Error: {e}", e);
|
||||
}
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = "服务器暂时无法处理此请求。";
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新房主
|
||||
/// </summary>
|
||||
[HttpPost("updatemaster")]
|
||||
public async Task<IActionResult> UpdateRoomMaster([FromBody] Dictionary<string, object> data)
|
||||
{
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "room_updatemaster",
|
||||
RequestType = DataRequestType.Room_UpdateRoomMaster
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> result = await model.DataRequestController.GetResultData(DataRequestType.Room_UpdateRoomMaster, data);
|
||||
response.StatusCode = 200;
|
||||
response.Data = result;
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError("Error: {e}", e);
|
||||
}
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = "服务器暂时无法处理此请求。";
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -28,6 +28,13 @@ namespace Milimoe.FunGame.WebAPI.Controllers
|
||||
[Authorize(AuthenticationSchemes = "APIBearer")]
|
||||
public IActionResult Register([FromBody] RegDTO dto)
|
||||
{
|
||||
string msg = "服务器暂时无法处理注册请求。";
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "user_register",
|
||||
RequestType = DataRequestType.Reg_Reg
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
string clientIP = HttpContext.Connection.RemoteIpAddress?.ToString() + ":" + HttpContext.Connection.RemotePort;
|
||||
@ -37,39 +44,40 @@ namespace Milimoe.FunGame.WebAPI.Controllers
|
||||
string email = dto.Email;
|
||||
string verifycode = dto.VerifyCode;
|
||||
|
||||
(string msg, RegInvokeType type, bool success) = DataRequestService.Reg(apiListener, username, password, email, verifycode, clientIP);
|
||||
(msg, RegInvokeType type, bool success) = DataRequestService.Reg(apiListener, username, password, email, verifycode, clientIP);
|
||||
|
||||
return Ok(new PayloadModel<DataRequestType>()
|
||||
response.StatusCode = 200;
|
||||
response.Message = msg;
|
||||
response.Data = new()
|
||||
{
|
||||
RequestType = DataRequestType.Reg_Reg,
|
||||
StatusCode = 200,
|
||||
Message = msg,
|
||||
Data = new()
|
||||
{
|
||||
{ "success", success },
|
||||
{ "type", type }
|
||||
}
|
||||
});
|
||||
{ "success", success },
|
||||
{ "type", type }
|
||||
};
|
||||
return Ok(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
logger.LogError("Error: {e}", e);
|
||||
}
|
||||
return BadRequest("服务器暂时无法处理注册请求。");
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = msg;
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
|
||||
[HttpPost("login")]
|
||||
public async Task<IActionResult> Login([FromBody] LoginDTO dto)
|
||||
{
|
||||
string msg = "服务器暂时无法处理登录请求。";
|
||||
Config.ConnectingPlayerCount++;
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "user_login",
|
||||
RequestType = DataRequestType.Login_Login
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
RequestType = DataRequestType.Login_Login
|
||||
};
|
||||
string msg = "服务器暂时无法处理登录请求。";
|
||||
|
||||
string clientIP = HttpContext.Connection.RemoteIpAddress?.ToString() + ":" + HttpContext.Connection.RemotePort;
|
||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientIP) + " 通过 RESTful API 连接至服务器,正在登录 . . .", InvokeMessageType.Core);
|
||||
string username = dto.Username;
|
||||
@ -109,21 +117,26 @@ namespace Milimoe.FunGame.WebAPI.Controllers
|
||||
Config.ConnectingPlayerCount--;
|
||||
logger.LogError("Error: {e}", e);
|
||||
}
|
||||
return BadRequest();
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = msg;
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
|
||||
[HttpPost("logout")]
|
||||
[Authorize]
|
||||
public async Task<IActionResult> LogOut()
|
||||
{
|
||||
string msg = "退出登录失败!服务器可能暂时无法处理此请求。";
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
Event = "user_logout",
|
||||
RequestType = DataRequestType.RunTime_Logout
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
PayloadModel<DataRequestType> response = new()
|
||||
{
|
||||
RequestType = DataRequestType.RunTime_Logout
|
||||
};
|
||||
string username = User.FindFirstValue(ClaimTypes.NameIdentifier) ?? "";
|
||||
|
||||
if (apiListener.UserList.ContainsKey(username))
|
||||
{
|
||||
RESTfulAPIModel model = (RESTfulAPIModel)apiListener.UserList[username];
|
||||
@ -134,16 +147,15 @@ namespace Milimoe.FunGame.WebAPI.Controllers
|
||||
response.StatusCode = 200;
|
||||
return Ok(response);
|
||||
}
|
||||
|
||||
response.Message = "退出登录失败!";
|
||||
response.StatusCode = 400;
|
||||
return BadRequest(response);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
logger.LogError("Error: {e}", e);
|
||||
}
|
||||
return BadRequest();
|
||||
|
||||
response.StatusCode = 500;
|
||||
response.Message = msg;
|
||||
return StatusCode(500, response);
|
||||
}
|
||||
|
||||
[HttpPost("refresh")]
|
||||
@ -163,7 +175,7 @@ namespace Milimoe.FunGame.WebAPI.Controllers
|
||||
{
|
||||
logger.LogError("Error: {e}", e);
|
||||
}
|
||||
return BadRequest();
|
||||
return StatusCode(500);
|
||||
}
|
||||
|
||||
private async Task<RESTfulAPIModel?> CheckConnection(string username, string clientIP)
|
||||
|
||||
@ -2,6 +2,11 @@
|
||||
{
|
||||
public class PayloadModel<T> where T : struct, Enum
|
||||
{
|
||||
/// <summary>
|
||||
/// 业务事件
|
||||
/// </summary>
|
||||
public string Event { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// 请求类型
|
||||
/// </summary>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user