package com.hzs.system.config.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.system.config.BdAccount;
import com.hzs.common.domain.system.config.ext.BdAccountExt;
import com.hzs.common.domain.system.ext.AreaCurrencyExt;

import java.util.Collection;
import java.util.List;

/**
 * 币种配置表 服务类
 */
public interface IBdAccountService extends IService<BdAccount> {

    /**
     * 根据条件查找对应的币种配置
     *
     * @param specialArea 所属专区
     * @param pkCountry   国家
     */
    List<AreaCurrencyExt> queryAreaCurrencyByCondition(Integer specialArea, Integer pkCountry);

    /**
     * 根据币种属性查询币种列表（账户类型）
     **/
    List<BdAccount> queryAccountByType(Integer accountProperty, Integer pkCountry);

    /**
     * 根据币种、国家列表，查询币种列表
     *
     * @param accountType   币种类型
     * @param pkCountryList 国家列表
     * @return
     */
    List<BdAccount> queryAccountByType(Integer accountType, Collection<Integer> pkCountryList);

    /**
     * 根据pkid查询币种信息
     **/
    BdAccount getBdAccount(Integer pkId);

    /**
     * 根据币种值查询币种
     **/
    BdAccount getBdAccountByFieldValue(Integer pkCountry, Integer fieldValue);

    /**
     * 会员端账户查询
     **/
    List<BdAccount> memberAccountByType(Integer pkCountry);


    /**
     * 查询币种配置列表
     **/
    List<BdAccountExt> selectBdAccountList(BdAccountExt bdAccountExt);

    /**
     * 更新账户生效根据主键
     *
     * @param pkId 主键
     */
    void updateAccountById(Integer pkId);

    /**
     * 查询所有会员账户是否有值
     **/
    Integer selectMemberAccountCount(BdAccountExt bdAccountExt);

    /**
     * 查询币种
     *
     * @param pkCountry 国家
     */
    BdAccount queryAccountByCondition(Integer pkCountry);

    /**
     * 查询币种转换
     **/
    Integer getPkAccount(Integer pkId);

    /**
     * 查询邮费扣除币种
     *
     * @param pkCountry 所属国家
     * @return
     */
    BdAccount queryPostageAccount(Integer pkCountry);

    /*
     *  查询国家所有启用的币种
     **/
    List<BdAccount> queryBdAccount(Integer pkCountry);

    /**
     * 根据国家查询手续费列表 -- 2023.11.08 运营需求，中国手续费为可选消费账户、现金账户、奖金账户
     *
     * @param pkCountry 所属国家
     * @return
     */
    List<BdAccount> queryCommissionAccount(Integer pkCountry);

}
