package com.fzm.mall.server.admin.finance_center.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fzm.mall.server.admin.finance_center.entity.dto.*;
import com.fzm.mall.server.admin.finance_center.entity.vo.BaseIntegralDetailVO;
import com.fzm.mall.server.admin.finance_center.entity.vo.IntegralDetailVO;
import com.fzm.mall.server.admin.finance_center.entity.vo.IntegralListVO;
import com.fzm.mall.server.admin.finance_center.model.MerchantIntegral;
import com.baomidou.mybatisplus.extension.service.IService;

import java.math.BigDecimal;

/**
 * @author wangp
 * @date 2021/4/27 15:53
 * @description 服务类
 * @since JDK 1.8
 */
public interface IMerchantIntegralService extends IService<MerchantIntegral> {
    /**
     * 发行商户积分
     *
     * @param dto        积分信息
     * @param merchantId 商户id
     */
    void issueMerchantIntegral(MerchantIntegralDTO dto, String merchantId);

    /**
     * 根据商户id查询商户积分详情
     *
     * @param merchantId 商户id
     */
    IntegralDetailVO queryByMerchantId(String merchantId);

    /**
     * 分页查询-系统积分列表
     *
     * @param merchantId   商户id
     * @param label        积分标识
     * @param merchantName 商户名称
     * @param status       积分状态
     * @param pageNum      当前页数
     * @param pageSize     每页个数
     * @return
     */
    IPage<IntegralListVO> page(String merchantId, String label, String merchantName, Integer status, Integer pageNum, Integer pageSize);

    /**
     * 设置积分兑换比例
     *
     * @param ratioDTO 比例信息
     */
    void setRatio(IntegralExchangeRatioDTO ratioDTO);

    /**
     * 积分审核
     *
     * @param checkDTO 审核信息
     */
    void check(IntegralCheckDTO checkDTO);

    /**
     * 积分禁用启用
     *
     * @param disableDTO 禁用启用信息
     */
    void disable(IntegralDisableDTO disableDTO);

    /**
     * 商户积分转账单个
     *
     * @param dto        转账信息
     * @param merchantId 商户id
     * @param isBase     是否是平台基础积分
     */
    void merchantTransSingle(TransferAccountsDTO dto, String merchantId, boolean isBase);

    /**
     * 商户积分转账-批量
     *
     * @param path       转账名单路径
     * @param merchantId 商户id
     * @param isBase     是否是平台基础积分
     */
    void merchantTransBatch(String path, String merchantId, boolean isBase);

    /**
     * 根据商户id修改状态
     *
     * @param merchantId 商户id
     * @param status     状态
     * @param errMsg     错误信息
     */
    void updateStatusByMerchantId(String merchantId, Integer status, String errMsg);

    /**
     * 查询积分
     *
     * @param label      积分标识
     * @param merchantId 商户id
     * @return
     */
    MerchantIntegral queryByMerchantIdAndLabel(String label, String merchantId);

    /**
     * 平台基础积分详情
     *
     * @param label      标识
     * @param merchantId 商户id
     * @param price      价格
     */
    BaseIntegralDetailVO platformBaseIntegralDetail(String label, String merchantId, BigDecimal price);
}
