using System.Security.Claims; using System.Text; using JWTHelper; using Microsoft.AspNetCore.Mvc; namespace FishGameHost.Controllers; [ApiController] [Route("api/[controller]")] public class PlayerController : ControllerBase { private readonly JwtTools _jwtTools; public PlayerController(JwtTools jwtTools) { _jwtTools = jwtTools; } /// /// 玩家登录 - 生成 JWT token 并返回玩家基础信息(调试用) /// [HttpPost("login")] public IActionResult Login([FromBody] PlayerLoginRequest request) { if (string.IsNullOrWhiteSpace(request.UserId)) request.UserId = "u_" + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); if (string.IsNullOrWhiteSpace(request.Nickname)) request.Nickname = "玩家"; var userIdReversed = Reverse(request.UserId); var claims = new[] { new Claim("uid", userIdReversed), new Claim("uname", request.Nickname), }; var token = _jwtTools.CreateToken(claims); return Ok(new { code = 200, data = new { token, player = new { userId = request.UserId, playerId = 1, nickname = request.Nickname, gold = 100000L, diamond = 1000, playerlvl = 1, viplvl = 0 } } }); } private static string Reverse(string s) { var arr = s.ToCharArray(); Array.Reverse(arr); return new string(arr); } } public class PlayerLoginRequest { public string? UserId { get; set; } public string? Nickname { get; set; } }