using Newtonsoft.Json; namespace Application.Web.Controllers.User; /// /// 用户背包信息 /// [ApiExplorerSettings(GroupName = "User")] [Route("User/[controller]/[action]")] [ApiController] [Authorize] public class BagController : ControllerBase { private readonly IUnitUserWeight _weightService; private readonly IGameGoodsService _goodsService; private readonly IGameEquService _equService; private readonly IUnitUserAccService _accService; public BagController(IUnitUserWeight weightService, IGameGoodsService goodsService, IGameEquService equService, IUnitUserAccService accService) { _weightService = weightService; _goodsService = goodsService; _equService = equService; _accService = accService; } /// /// 获取背包信息 /// /// [HttpGet] public async Task GetUserBagData() { string userId = StateHelper.userId; var accInfo = await _accService.GetUserAccInfo(userId); long gold = (long)accInfo.gold; long cowry = (long)accInfo.cowry; long copper = await _accService.GetUserAccInfo(userId, nameof(AccEnum.AccType.copper)); var userWeight = await _weightService.GetUserWeightInfo(userId); int onWeight = (int)userWeight.onWeight; int maxWeight = (int)userWeight.maxWeight; return PoAction.Ok(new { onWeight, maxWeight, cowry, gold, copper }); } /// /// 获取用户道具数据 /// /// /// /// /// /// [HttpGet] public async Task GetUserBagProp(int type, int ch, string? query, int page) { RefAsync total = 0; string userId = StateHelper.userId; if (type == 0) { int _t = 0; switch (ch) { case 1: _t = 1; break; case 2: _t = 2; break; case 3: _t = 3; break; } var data = await _equService.GetUserEquData(userId, _t, query, page, 10, total); return PoAction.Ok(new { data, total = total.Value}); } else if (type == 1) { List code = new List() { nameof(GoodsEnum.Code.Drug) }; var data = await _goodsService.GetUserGoodsData(userId, code, new List(), query, page, 10, total); return PoAction.Ok(new { data, total = total.Value }); } else if (type == 2) { List code = new List(); List noCode = new List() { nameof(GoodsEnum.Code.Drug) }; switch (ch) { case 1: code.Add(nameof(GoodsEnum.Code.Gem)); break; case 2: code.Add(nameof(GoodsEnum.Code.Palace)); break; case 3: code.Add(nameof(GoodsEnum.Code.Mark)); break; case 4: code.Add(nameof(GoodsEnum.Code.Pack)); code.Add(nameof(GoodsEnum.Code.ChoicePack)); break; case 5: code.Add(nameof(GoodsEnum.Code.Mak)); break; case 6: code.Add(nameof(GoodsEnum.Code.Paper)); break; case 7: code.Add(nameof(GoodsEnum.Code.Card)); break; case 8: code.Add(nameof(GoodsEnum.Code.Cargo)); break; case 9: code.Add(nameof(GoodsEnum.Code.Prop)); break; } var data = await _goodsService.GetUserGoodsData(userId, code, noCode, query, page, 10, total); return PoAction.Ok(new { data, total = total.Value }); } else { return PoAction.Ok(new { data = new List(), total = total.Value }); } } /// /// 验证用户道具 /// /// /// [HttpPost] public async Task CheckUserProp([FromBody] CheckUserPropParms parms) { string userId = StateHelper.userId; parms.count = parms.count < 1 ? 1 : parms.count; if (parms.type == 0) { List needs = JsonConvert.DeserializeObject>(parms.needs); var result = await GameBus.CheckNeed(userId, needs, parms.count); return PoAction.Ok(result); } else { List needs = JsonConvert.DeserializeObject>(parms.needs); var result = await GameBus.CheckNeeds(userId, needs, parms.count); return PoAction.Ok(result); } } }