using HoneyBox.Admin.Business.Models;
using HoneyBox.Admin.Business.Models.Diamond;

namespace HoneyBox.Admin.Business.Services.Interfaces;

/// <summary>
/// 钻石商品管理服务接口
/// </summary>
public interface IDiamondService
{
    /// <summary>
    /// 获取钻石商品列表
    /// </summary>
    /// <param name="request">查询请求</param>
    /// <returns>分页钻石商品列表</returns>
    Task<PagedResult<DiamondProductResponse>> GetDiamondProductsAsync(DiamondProductListRequest request);

    /// <summary>
    /// 获取钻石商品详情
    /// </summary>
    /// <param name="id">商品ID</param>
    /// <returns>商品详情</returns>
    Task<DiamondProductResponse?> GetDiamondProductByIdAsync(int id);

    /// <summary>
    /// 创建钻石商品
    /// </summary>
    /// <param name="request">创建请求</param>
    /// <returns>新商品ID</returns>
    Task<int> CreateDiamondProductAsync(DiamondProductCreateRequest request);

    /// <summary>
    /// 更新钻石商品
    /// </summary>
    /// <param name="id">商品ID</param>
    /// <param name="request">更新请求</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateDiamondProductAsync(int id, DiamondProductUpdateRequest request);

    /// <summary>
    /// 删除钻石商品
    /// </summary>
    /// <param name="id">商品ID</param>
    /// <returns>是否成功</returns>
    Task<bool> DeleteDiamondProductAsync(int id);

    /// <summary>
    /// 更新钻石商品状态
    /// </summary>
    /// <param name="id">商品ID</param>
    /// <param name="status">状态：0-禁用 1-启用</param>
    /// <returns>是否成功</returns>
    Task<bool> UpdateDiamondProductStatusAsync(int id, int status);

    /// <summary>
    /// 获取最大排序值
    /// </summary>
    /// <returns>最大排序值</returns>
    Task<int> GetMaxSortOrderAsync();
}
