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.PayDeviceDTO;
import com.zanxiang.game.module.manage.pojo.params.GamePayWayAddUpdateParam;
import com.zanxiang.game.module.manage.pojo.params.GamePayWayListParam;
import com.zanxiang.game.module.manage.pojo.vo.GamePayWayListVO;
import com.zanxiang.game.module.manage.pojo.vo.GamePayWayVO;
import com.zanxiang.game.module.mybatis.entity.GamePayWay;

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

/**
 * @author : lingfeng
 * @time : 2022-06-23
 * @description : 游戏支付配置
 */
public interface IGamePayWayService extends IService<GamePayWay> {

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

    /**
     * 根据游戏id查询
     *
     * @param gameId 游戏id
     * @return {@link List}<{@link GamePayWayVO}>
     */
    List<GamePayWayVO> getByGameId(Long gameId);

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

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

    /**
     * 带分页列表
     *
     * @param param 参数
     * @return {@link IPage}<{@link GamePayWayListVO}>
     */
    IPage<GamePayWayListVO> pageList(GamePayWayListParam param);

    /**
     * 被游戏支付设备id
     *
     * @param gameId 游戏id
     * @return {@link Map}<{@link Long}, {@link PayDeviceDTO}>
     */
    Map<Long, PayDeviceDTO> getPayDeviceByGameId(Long gameId);

    /**
     * 让游戏商人没有
     *
     * @param gameId 游戏id
     * @return {@link Set}<{@link String}>
     */
    Set<String> getGameMerchantNo(Long gameId);
}
