using HoneyBox.Model.Models;
using HoneyBox.Model.Models.Order;
namespace HoneyBox.Core.Interfaces;
///
/// 订单服务接口
///
public interface IOrderService
{
#region 订单金额计算
///
/// 一番赏订单金额计算
///
/// 用户ID
/// 计算请求
/// 计算结果
Task CalculateOrderMoneyAsync(int userId, OrderMoneyRequest request);
///
/// 无限赏订单金额计算
///
/// 用户ID
/// 计算请求
/// 计算结果
Task CalculateInfiniteOrderMoneyAsync(int userId, InfiniteOrderMoneyRequest request);
///
/// 商城订单金额计算
///
/// 用户ID
/// 计算请求
/// 计算结果
Task CalculateMallOrderMoneyAsync(int userId, MallOrderMoneyRequest request);
#endregion
#region 订单创建
///
/// 一番赏订单创建
///
/// 用户ID
/// 创建请求
/// 创建结果
Task CreateOrderAsync(int userId, OrderBuyRequest request);
///
/// 无限赏订单创建
///
/// 用户ID
/// 创建请求
/// 创建结果
Task CreateInfiniteOrderAsync(int userId, InfiniteOrderBuyRequest request);
#endregion
#region 订单查询
///
/// 获取订单列表
///
/// 用户ID
/// 查询请求
/// 订单列表
Task> GetOrderListAsync(int userId, OrderListRequest request);
///
/// 获取订单详情
///
/// 用户ID
/// 订单号
/// 订单详情(扁平结构,包含goods_list)
Task GetOrderDetailAsync(int userId, string orderNum);
#endregion
#region 抽奖结果查询
///
/// 获取一番赏抽奖结果
///
/// 用户ID
/// 订单号
/// 抽奖结果响应
Task GetPrizeOrderLogAsync(int userId, string orderNum);
///
/// 获取无限赏抽奖结果
///
/// 用户ID
/// 订单号
/// 无限赏抽奖结果响应
Task GetInfinitePrizeOrderLogAsync(int userId, string orderNum);
#endregion
#region 订单模块扩展
///
/// 获取订单支付状态
///
/// 用户ID
/// 订单号
/// 订单状态响应
Task GetOrderStatusAsync(int userId, string orderNum);
///
/// 获取订单列表(GET方式)
///
/// 用户ID
/// 页码
/// 每页数量
/// 订单列表响应
Task GetOrderListByGetAsync(int userId, int page, int pageSize);
///
/// 创建网页支付订单
///
/// 用户ID
/// 订单号
/// 网页支付订单响应
Task CreateWebPayOrderAsync(int userId, string orderNum);
///
/// 获取订单URL链接
///
/// 订单号
/// 订单链接响应
Task GetOrderUrlLinkAsync(string orderNum);
///
/// 商城下单
///
/// 用户ID
/// 下单请求
/// 订单创建响应
Task CreateMallOrderAsync(int userId, MallOrderBuyRequest request);
///
/// 获取道具卡列表
///
/// 用户ID
/// 页码
/// 每页数量
/// 道具卡列表响应
Task GetItemCardListAsync(int userId, int page, int pageSize);
///
/// 连击赏秘宝下单
///
/// 用户ID
/// 下单请求
/// 订单创建响应
Task CreateInfiniteMibaoOrderAsync(int userId, InfiniteMibaoOrderBuyRequest request);
///
/// 获取测试用户Token(仅测试环境)
///
/// 当前用户ID
/// 目标用户ID
/// 测试用户Token
Task GetUserTestTokenAsync(int userId, int targetUserId);
#endregion
}