package com.m2pool.lease.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.m2pool.lease.dto.PageResult;
import com.m2pool.lease.dto.ProductUpdateMachineDto;
import com.m2pool.lease.dto.Result;
import com.m2pool.lease.dto.UserMinerDto;
import com.m2pool.lease.entity.LeaseProductMachine;
import com.m2pool.lease.vo.*;

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

/**
 * <p>
 * 商品表对应的物品机器表 服务类
 * </p>
 *
 * @author yyb
 * @since 2025-07-23
 */
public interface LeaseProductMachineService extends IService<LeaseProductMachine> {


    /**
     * 获取当前账户对应的挖矿账户
     * @return
     */
    Result<Map<String, List<UserMinerDto>>> getUserMinersList(UserMinerVo userMinerVo);

    /**
     * 获取当前账户对应的挖矿账户的机器矿工集合
     * @param userMinerVo
     * @return
     */
    Result<List<UserMinerDto>> getUserMachineList(UserMinerVo userMinerVo);


    /**
     * 根据商品id查询商品矿机列表---用于卖方修改矿机信息
     * @param productForUpdateMachineVo
     * @return
     */
    PageResult<ProductUpdateMachineDto> getMachineListForUpdate(ProductForUpdateMachineVo productForUpdateMachineVo);

    /**
     *  新增商品库存---实际需出售机器
     * @param productMachineParamsVoList
     * @return
     */
    Result<String> addSingleOrBatchMachine(ProductMachineParamsVo productMachineParamsVoList);


    /**
     * 编辑商品 + 商品上下架---实际需出售机器
     * @param productUpdateMachineVoList
     * @return
     */
    Result<String> updateMachine(List<ProductUpdateMachineVo> productUpdateMachineVoList);


    /**
     * 删除商品---实际需出售机器
     * @param baseVo
     * @return
     */
    Result<String> deleteMachine(BaseVo baseVo);


    /**
     * 计算价格
     * @param priceCalculateVo
     * @return
     */
    Result<BigDecimal> calculatePrice(PriceCalculateVo priceCalculateVo);
}
