using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.SignalR; using Newtonsoft.Json; namespace Application.Web.Controllers.Login { /// /// 登录接口 /// [ApiExplorerSettings(GroupName = "Login")] [Route("[controller]/[action]")] [ApiController] public class LoginController : ControllerBase { private readonly IGameAccountService _accountService; public LoginController(IGameAccountService accountService) { _accountService = accountService; } /// /// 登录接口 /// /// /// [HttpPost] public async Task Login([FromBody] LoginParms parms) { return PoAction.Ok(parms.code); } /// /// 探玩自动登录 /// /// /// [HttpGet] public async Task TwLogin( string code) { if (string.IsNullOrEmpty(code)) { return PoAction.Message("code值错误!"); } AutoLogin login = new AutoLogin(); var loginInfo = await login.TwLogin(code); if (loginInfo.code == 0) { dynamic twInfo = JsonConvert.DeserializeObject(loginInfo.data.ToString()); string openId = twInfo.openid; string nick = "探玩玩家"; var accInfo = await _accountService.GetAccInfoByOpenId(openId); if (accInfo == null) { var userData = await _accountService.Regist("", nick, "", "", openId); if (userData == null) { return PoAction.Message("登录失败,请联系客服!"); } else { object ret =new { token = userData.token }; return PoAction.Ok(ret); } } else { if (accInfo.status != 1) { return PoAction.Message("账号被冻结!"); } else { object ret =new { token = accInfo.token }; return PoAction.Ok(ret); } } } else { return PoAction.Message(loginInfo.msg); } } /// /// 退出登录 /// /// /// [HttpGet] public async Task LoginOut(string? sid) { if (string.IsNullOrEmpty(sid)) { return PoAction.Message("身份信息不存在!"); } var accInfo = await _accountService.GetAccInfoByToken(sid); if (accInfo == null) { return PoAction.Message("身份信息不存在!"); } if (await _accountService.UpdateAccountToken(accInfo.accId)) { return PoAction.Ok(true); } else { return PoAction.Message("退出失败,请稍后尝试!"); } } } }