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;

/**
 * 币种配置表 服务类
 *
 * @author zhangjing
 * @since 2022-08-25
 */
public interface IBdAccountService extends IService<BdAccount> {

    /**
     * 根据条件查找对应的币种配置
     *
     * @param specialArea 所属专区
     * @param pkCountry   国家
     * @return: R<List < AreaCurrencyDTO>>
     * @Author: sui q
     * @Date: 2022/9/6 10:37
     */
    List<AreaCurrencyExt> queryAreaCurrencyByCondition(Integer specialArea, Integer pkCountry);

    /**
     * @description: 根据币种属性查询币种列表（账户类型）
     * @author: zhang jing
     * @date: 2022/9/22 10:00
     * @param: [accountProperty, pkCountry]
     * @return: java.util.List<com.hzs.common.domain.system.config.BdAccount>
     **/
    List<BdAccount> queryAccountByType(Integer accountProperty, Integer pkCountry);

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

    /**
     * @description: 根据pkid查询币种信息
     * @author: zhang jing
     * @date: 2022/10/11 17:49
     * @param: [pkId]
     * @return: com.hzs.common.domain.system.config.BdAccount
     **/
    BdAccount getBdAccount(Integer pkId);

    /**
     * @description: 根据币种值查询币种
     * @author: zhang jing
     * @date: 2023/3/17 11:05
     * @param: [fieldValue]
     * @return: com.hzs.common.domain.system.config.BdAccount
     **/
    BdAccount getBdAccountByFieldValue(Integer pkCountry, Integer fieldValue);

    /**
     * @description: 会员端账户查询
     * @author: zhang jing
     * @date: 2023/4/7 13:47
     * @param: [pkCountry]
     * @return: java.util.List<com.hzs.common.domain.system.config.BdAccount>
     **/
    List<BdAccount> memberAccountByType(Integer pkCountry);


    /**
     * @description: 查询币种配置列表
     * @author: zhang jing
     * @date: 2022/10/25 15:40
     * @param: [bdAccountExt]
     * @return: java.util.List<com.hzs.common.domain.system.config.ext.BdAccountExt>
     **/
    List<BdAccountExt> selectBdAccountList(BdAccountExt bdAccountExt);

    /**
     * 更新账户生效根据主键
     *
     * @param pkId 主键
     * @return: void
     * @Author: sui q
     * @Date: 2023/3/11 10:19
     */
    void updateAccountById(Integer pkId);

    /**
     * @description: 查询所有会员账户是否有值
     * @author: zhang jing
     * @date: 2023/3/13 11:03
     * @param: [bdAccountExt]
     * @return: java.lang.Integer
     **/
    Integer selectMemberAccountCount(BdAccountExt bdAccountExt);

    /**
     * 查询币种
     *
     * @param pkCountry 国家
     * @return: BdAccount
     * @Author: sui q
     * @Date: 2023/3/15 19:08
     */
    BdAccount queryAccountByCondition(Integer pkCountry);

    /**
     * @description: 查询币种转换
     * @author: zhang jing
     * @date: 2023/3/16 11:51
     * @param: [pkId]
     * @return: java.lang.Integer
     **/
    Integer getPkAccount(Integer pkId);

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

    /*
     * @description: 查询国家所有启用的币种
     * @author: sui q
     * @date: 2023/7/21 15:25
     * @param: null null
     **/
    List<BdAccount> queryBdAccount(Integer pkCountry);

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

}
