package com.zanxiang.game.module.manage.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zanxiang.game.module.manage.pojo.dto.PayMerchantDTO;
import com.zanxiang.game.module.manage.pojo.params.PayMerchantAddUpdateParam;
import com.zanxiang.game.module.manage.pojo.params.PayMerchantListParam;
import com.zanxiang.game.module.manage.pojo.vo.PayMerchantChoiceVO;
import com.zanxiang.game.module.manage.pojo.vo.PayMerchantListVO;
import com.zanxiang.game.module.mybatis.entity.PayMerchant;

import java.util.List;
import java.util.Map;

/**
 * @author : lingfeng
 * @time : 2022-11-25
 * @description : 商户管理
 */
public interface IPayMerchantService extends IService<PayMerchant> {

    /**
     * 添加或更新
     *
     * @param param 参数
     * @return boolean
     */
    boolean addOrUpdate(PayMerchantAddUpdateParam param);

    /**
     * 支付方式选择列表查询
     *
     * @return : 返回支付方式列表
     */
    List<PayMerchantChoiceVO> payMerchantChoiceList();

    /**
     * 列表
     *
     * @param param 参数
     * @return {@link IPage}<{@link PayMerchantListVO}>
     */
    IPage<PayMerchantListVO> pageList(PayMerchantListParam param);

    /**
     * 状态更新
     *
     * @param id     id
     * @param status 状态
     * @return {@link Boolean}
     */
    boolean statusUpdate(Long id, Integer status);

    /**
     * 密钥更新
     *
     * @param id        id
     * @param secretKey 秘密密钥
     * @return boolean
     */
    boolean secretKeyUpdate(Long id, String secretKey);

    /**
     * 删除通过id
     *
     * @param id id
     * @return boolean
     */
    boolean deleteById(Long id);

    /**
     * 商户条件查询
     *
     * @param merchantNo   商户号
     * @param merchantName 商户名称
     * @return {@link Map}<{@link String}, {@link PayMerchantDTO}>
     */
    Map<String, PayMerchantDTO> payMerchantCondition(String merchantNo, String merchantName);

    /**
     * 商户列表
     *
     * @return {@link Map}<{@link String}, {@link PayMerchantDTO}>
     */
    Map<String, PayMerchantDTO> payMerchantMap();

    /**
     * 由商人没有得到
     *
     * @param merchantNo 商人没有
     * @return {@link PayMerchantDTO}
     */
    PayMerchantDTO getByMerchantNo(String merchantNo);
}
