添加 InventoryController

This commit is contained in:
milimoe 2025-04-09 01:06:06 +08:00
parent 8c6d125c96
commit d322a97712
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
2 changed files with 144 additions and 1 deletions

View File

@ -1435,7 +1435,7 @@ namespace Milimoe.FunGame.Server.Controller
break;
case OfferActionType.OffereeReject:
if (offer.Status == OfferState.Sent || offer.Status == OfferState.Negotiating)
if (offer.Status == OfferState.Sent || offer.Status == OfferState.Negotiating || offer.Status == OfferState.NegotiationAccepted)
{
SQLHelper.UpdateOfferStatus(offerId, OfferState.Rejected);
SQLHelper.UpdateOfferFinishTime(offerId, DateTime.Now);
@ -1465,6 +1465,8 @@ namespace Milimoe.FunGame.Server.Controller
if (offeree.Inventory.Items.FirstOrDefault(i => i.Guid == itemGuid) is Item item)
{
offeree.Inventory.Items.Remove(item);
item.EntityState = EntityState.Deleted;
Item newItem = item.Copy();
newItem.User = offeror;
newItem.IsSellable = false;
@ -1472,6 +1474,7 @@ namespace Milimoe.FunGame.Server.Controller
newItem.NextSellableTime = DateTimeUtility.GetTradableTime();
newItem.NextTradableTime = DateTimeUtility.GetTradableTime();
offeror.Inventory.Items.Add(newItem);
newItem.EntityState = EntityState.Added;
}
}
foreach (Guid itemGuid in offer.OfferorItems)
@ -1479,6 +1482,8 @@ namespace Milimoe.FunGame.Server.Controller
if (offeror.Inventory.Items.FirstOrDefault(i => i.Guid == itemGuid) is Item item)
{
offeror.Inventory.Items.Remove(item);
item.EntityState = EntityState.Deleted;
Item newItem = item.Copy();
newItem.User = offeree;
newItem.IsSellable = false;
@ -1486,6 +1491,7 @@ namespace Milimoe.FunGame.Server.Controller
newItem.NextSellableTime = DateTimeUtility.GetTradableTime();
newItem.NextTradableTime = DateTimeUtility.GetTradableTime();
offeree.Inventory.Items.Add(newItem);
newItem.EntityState = EntityState.Added;
}
}
SQLHelper.UpdateInventory(offeror.Inventory);

View File

@ -0,0 +1,137 @@
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<InventoryController> logger) : ControllerBase
{
private readonly ILogger<InventoryController> _logger = logger;
/// <summary>
/// 获取交易报价
/// </summary>
[HttpGet("getoffer")]
public async Task<IActionResult> GetOffer([FromQuery] long offerId)
{
PayloadModel<DataRequestType> response = new()
{
Event = "inventory_getoffer",
RequestType = DataRequestType.Inventory_GetOffer
};
try
{
Dictionary<string, object> data = new()
{
{ OffersQuery.Column_Id, offerId },
{ "apiQuery", true }
};
Dictionary<string, object> 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);
}
/// <summary>
/// 创建交易报价
/// </summary>
[HttpPost("makeoffer")]
public async Task<IActionResult> MakeOffer([FromBody] Dictionary<string, object> data)
{
PayloadModel<DataRequestType> response = new()
{
Event = "inventory_makeoffer",
RequestType = DataRequestType.Inventory_MakeOffer
};
try
{
Dictionary<string, object> 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);
}
/// <summary>
/// 修改交易报价
/// </summary>
[HttpPost("reviseoffer")]
public async Task<IActionResult> ReviseOffer([FromBody] Dictionary<string, object> data)
{
PayloadModel<DataRequestType> response = new()
{
Event = "inventory_reviseoffer",
RequestType = DataRequestType.Inventory_ReviseOffer
};
try
{
Dictionary<string, object> 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);
}
/// <summary>
/// 回应交易报价
/// </summary>
[HttpPost("respondoffer")]
public async Task<IActionResult> RespondOffer([FromBody] Dictionary<string, object> data)
{
PayloadModel<DataRequestType> response = new()
{
Event = "inventory_respondoffer",
RequestType = DataRequestType.Inventory_RespondOffer
};
try
{
Dictionary<string, object> 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);
}
}
}