package com.m2pool.lease.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.m2pool.common.datasource.annotation.Pool2DB;
import com.m2pool.lease.dto.MachinePayTypeDto;
import com.m2pool.lease.dto.PayTypeDto;
import com.m2pool.lease.dto.ProductDto;
import com.m2pool.lease.dto.ProductForWalletConfigDto;
import com.m2pool.lease.entity.LeaseProduct;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 商品表 Mapper 接口
 * </p>
 *
 * @author yyb
 * @since 2025-07-23
 */
@Mapper
public interface LeaseProductMapper extends BaseMapper<LeaseProduct> {

    /**
     * 获取近三天币种对应的全网算力
     * @param coin
     * @return
     */
    @Pool2DB
    BigDecimal getCoinNetPower(@Param("coin") String coin);


    /**
     * 获取近三天的全网实际报块数
     * @param coin
     * @return
     */
    @Pool2DB
    BigDecimal getNetBlocks(@Param("coin") String coin);


    /**
     * 获取商品列表(弃用)
     * @param coin
     * @param algorithm
     * @return
     */
    List<ProductDto> getProductList(@Param("coin") String coin , @Param("algorithm") String algorithm);


    /**
     * 用户个人中心 和 首页商城 商品列表获取
     * @param coin 用于商城首页
     * @param algorithm 用于商城首页
     * @param shopId 用于个人中心商品列表
     * @return
     */
    List<ProductDto> getProductListForShopAndUserCenter(@Param("coin") String coin , @Param("algorithm") String algorithm,@Param("shopId") Long shopId);

    /**
     * 获取支持的支付方式
     * @param shopId
     * @return
     */
    List<PayTypeDto> getSupportPayType(@Param("shopId")Long shopId);


    /**
     * 获取商品列表(用于钱包配置)
     * @param shopId
     * @return
     */
    List<ProductForWalletConfigDto> getProductListForShopWalletConfig(@Param("shopId")Long shopId);
}
