package com.m2pool.lease.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.m2pool.lease.dto.*;
import com.m2pool.lease.entity.LeaseProduct;
import com.m2pool.lease.vo.BaseVo;
import com.m2pool.lease.vo.ProductMachineVo;
import com.m2pool.lease.vo.ProductPageVo;
import com.m2pool.lease.vo.ProductURDVo;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * <p>
 * 商品表 服务类
 * </p>
 *
 * @author yyb
 * @since 2025-07-23
 */
public interface LeaseProductService extends IService<LeaseProduct> {
    /**
     * 查询商品列表
     *
     * @return Result<List<ProductDto>> 封装后的商品 DTO 列表
     */
    PageResult<ProductDto> getProductList(ProductPageVo productPageVo);


    /**
     * 根据商品 ID 查询商品详情
     *
     * @param BaseVo 商品 ID
     * @return Result<ProductDto> 封装后的商品 DTO
     */
    Result<ProductDto> getMachineInfoById( BaseVo baseVo);

    /**
     * 根据商品 ID 查询商品详情
     *
     * @param productId 商品 ID
     * @return Result<ProductDto> 封装后的商品 DTO
     */
    PageResult<ProductMachineDto> getProductMachineInfo(ProductMachineVo productMachineVo);


    /**
     * 单个商品矿机列表页面---获取支付方式
     * @return
     */
    Result<List<PayConfigDto>> getPayTypes();
    /**
     * 新增商品
     *
     * @param productURDVo 商品 DTO
     * @return Result<Boolean> 操作结果
     */
    Result<String> addProduct(ProductURDVo productURDVo);

    /**
     * 编辑商品
     *
     * @param productURDVo 商品 DTO
     * @return Result<Boolean> 操作结果
     */
    Result<String>  updateProduct(ProductURDVo productURDVo);


    /**
     * 删除商品
     * @param id
     * @return
     */
    Result<String>  deleteProduct(Long id);

    /**
     * 查询用户店铺支持的支付方式
     * @return
     */
    Result<List<PayTypeDto>> getSupportPayType();


    /**
     * 获取商品列表用于店铺钱包配置
     * @return
     */
    Result<List<ProductForWalletConfigDto>> getProductListForShopWalletConfig();


    /**
     * 修改商品列表用于店铺钱包配置
     * @return
     */
    Result<String> updateProductListForShopWalletConfig(ProductMachineForWalletConfigVo productMachineForWalletConfigVo);
}
