using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Library.SQLScript.Entity; using Milimoe.FunGame.WebAPI.Models; namespace Milimoe.FunGame.WebAPI.Controllers { [ApiController] [Route("[controller]")] [Authorize] public class InventoryController(RESTfulAPIModel model, ILogger logger) : ControllerBase { private readonly ILogger _logger = logger; /// /// 获取商店内容 /// [HttpGet("getstore")] public async Task GetStore(long[] ids) { PayloadModel response = new() { Event = "inventory_getstore", RequestType = DataRequestType.Inventory_GetStore }; try { Dictionary data = new() { { "ids", ids } }; Dictionary result = await model.DataRequestController.GetResultData(DataRequestType.Inventory_GetStore, 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); } /// /// 获取市场内容 /// [HttpGet("getmarket")] public async Task GetMarket(long[]? users = null, MarketItemState state = MarketItemState.Listed, long[]? items = null) { PayloadModel response = new() { Event = "inventory_getmarket", RequestType = DataRequestType.Inventory_GetMarket }; try { Dictionary data = new() { { "users", users ?? [] }, { "state", state }, { "items", items ?? [] } }; Dictionary result = await model.DataRequestController.GetResultData(DataRequestType.Inventory_GetMarket, 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); } /// /// 商店购买物品 /// [HttpPost("storebuy")] public async Task StoreBuy([FromBody] Dictionary data) { PayloadModel response = new() { Event = "inventory_storebuy", RequestType = DataRequestType.Inventory_StoreBuy }; try { Dictionary result = await model.DataRequestController.GetResultData(DataRequestType.Inventory_StoreBuy, 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); } /// /// 市场购买物品 /// [HttpPost("marketbuy")] public async Task MarketBuy([FromBody] Dictionary data) { PayloadModel response = new() { Event = "inventory_marketbuy", RequestType = DataRequestType.Inventory_MarketBuy }; try { Dictionary result = await model.DataRequestController.GetResultData(DataRequestType.Inventory_MarketBuy, 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); } /// /// 更新库存 /// [HttpPost("updateinventory")] public async Task UpdateInventory([FromBody] Dictionary data) { PayloadModel response = new() { Event = "inventory_updateinventory", RequestType = DataRequestType.Inventory_UpdateInventory }; try { Dictionary result = await model.DataRequestController.GetResultData(DataRequestType.Inventory_UpdateInventory, 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); } /// /// 使用库存物品 /// [HttpPost("useitem")] public async Task Use([FromBody] Dictionary data) { PayloadModel response = new() { Event = "inventory_use", RequestType = DataRequestType.Inventory_Use }; try { Dictionary result = await model.DataRequestController.GetResultData(DataRequestType.Inventory_Use, 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); } /// /// 商店出售物品 /// [HttpPost("storesell")] public async Task StoreSell([FromBody] Dictionary data) { PayloadModel response = new() { Event = "inventory_storesell", RequestType = DataRequestType.Inventory_StoreSell }; try { Dictionary result = await model.DataRequestController.GetResultData(DataRequestType.Inventory_StoreSell, 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); } /// /// 市场出售物品 /// [HttpPost("marketsell")] public async Task MarketSell([FromBody] Dictionary data) { PayloadModel response = new() { Event = "inventory_marketsell", RequestType = DataRequestType.Inventory_MarketSell }; try { Dictionary result = await model.DataRequestController.GetResultData(DataRequestType.Inventory_MarketSell, 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); } /// /// 下架市场物品 /// [HttpPost("marketdelist")] public async Task MarketDelist([FromBody] Dictionary data) { PayloadModel response = new() { Event = "inventory_marketdelist", RequestType = DataRequestType.Inventory_MarketDelist }; try { Dictionary result = await model.DataRequestController.GetResultData(DataRequestType.Inventory_MarketDelist, 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); } /// /// 更新市场价格 /// [HttpPost("updatemarketprice")] public async Task UpdateMarketPrice([FromBody] Dictionary data) { PayloadModel response = new() { Event = "inventory_updatemarketprice", RequestType = DataRequestType.Inventory_UpdateMarketPrice }; try { Dictionary result = await model.DataRequestController.GetResultData(DataRequestType.Inventory_UpdateMarketPrice, 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); } /// /// 获取交易报价 /// [HttpGet("getoffer")] public async Task GetOffer([FromQuery] long offerId) { PayloadModel response = new() { Event = "inventory_getoffer", RequestType = DataRequestType.Inventory_GetOffer }; try { Dictionary data = new() { { OffersQuery.Column_Id, offerId }, { "apiQuery", true } }; Dictionary result = await model.DataRequestController.GetResultData(DataRequestType.Inventory_GetOffer, 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); } /// /// 创建交易报价 /// [HttpPost("makeoffer")] public async Task MakeOffer([FromBody] Dictionary data) { PayloadModel response = new() { Event = "inventory_makeoffer", RequestType = DataRequestType.Inventory_MakeOffer }; try { Dictionary result = await model.DataRequestController.GetResultData(DataRequestType.Inventory_MakeOffer, 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); } /// /// 修改交易报价 /// [HttpPost("reviseoffer")] public async Task ReviseOffer([FromBody] Dictionary data) { PayloadModel response = new() { Event = "inventory_reviseoffer", RequestType = DataRequestType.Inventory_ReviseOffer }; try { Dictionary result = await model.DataRequestController.GetResultData(DataRequestType.Inventory_ReviseOffer, 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); } /// /// 回应交易报价 /// [HttpPost("respondoffer")] public async Task RespondOffer([FromBody] Dictionary data) { PayloadModel response = new() { Event = "inventory_respondoffer", RequestType = DataRequestType.Inventory_RespondOffer }; try { Dictionary result = await model.DataRequestController.GetResultData(DataRequestType.Inventory_RespondOffer, 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); } } }