/** ================================= 账户管理 ================================**/
import { getUserId } from "@/services/bus/account";
import {getAreaUserId, getUserAccountType} from "@/services/bus/user";
import { commonSearch_go } from "@/services/go";
import {
    ErmcpBizGroupEx,
    ErmcpBizGroupReq, ErmcpFuturesCompany,
    ErmcpLoginUserEx, ErmcpRole, ErmcpRoleMenuEx,
    ErmcpTaAccountEx, ErmcpTaAccountInfo, QueryAccMgrTaAccountInfoReq
} from "@/services/go/ermcp/account/interface";

/**
 * 查询业务类型分组(账户管理/账户设置) /Ermcp/QueryAccMgrBizGroupSet
 * @constructor
 */
export function QueryAccMgrBizGroupSet(req: ErmcpBizGroupReq): Promise<ErmcpBizGroupEx> {
    return commonSearch_go('/Ermcp/QueryUserInfo', { req }).catch((err) => {
        throw new Error(`查询业务类型分组: ${err}`);
    });
}

/**
 * 信息 - 账户管理 - 期货账户
 * 查询账户管理期货账号(账户管理/期货账号)  /Ermcp/QueryAccMgrTaaccount
 * @constructor
 */
export function QueryAccMgrTaaccount(): Promise<ErmcpTaAccountEx[]> {
    const userid = getAreaUserId();
    return commonSearch_go('/Ermcp/QueryAccMgrTaaccount', { userid }).catch((err) => {
        throw new Error(`查询账户管理期货账号: ${err}`);
    });
}

/**
 * 业务员 跟单员 接口querytype 传1 业务员roletype 22 跟单员roletype23 交易用户接口querytype 传2
 * 信息 - 账户管理 - (业务账户, 交易账户, 管理账户)
 * 查询账户管理登录账号(账户管理/登录账号) /Ermcp/QueryAccMgrLoginUser
 * @param querytype 查询类型 1-业务账户 2-交易账户 3-管理账户
 * @constructor
 */
export function QueryAccMgrLoginUser(querytype: number): Promise<ErmcpLoginUserEx[]> {
    const userid = getAreaUserId();
    const usertype = getUserAccountType()
    return commonSearch_go('/Ermcp/QueryAccMgrLoginUser', { userid, usertype, querytype }).catch((err) => {
        throw new Error(`查询账户管理登录账号: ${err}`);
    });
}

/**
 * 查询期货公司（新增期货主账户时候查询的期货公司接口） /Ermcp/QueryFuturesCompany
 * @constructor
 */
export function QueryFuturesCompany(): Promise<ErmcpFuturesCompany[]> {
    return commonSearch_go('/Ermcp/QueryFuturesCompany', {}).catch((err) => {
        throw new Error(`查询期货公司: ${err}`);
    });
}

/**
 * 查询账户管理角色详情(账户管理/角色设置/角色详情) /Ermcp/QueryAccMgrRoleMenu
 * @param roleid  角色id(可多个,逗号隔开)
 * @constructor
 */
export function QueryAccMgrRoleMenu(param: { userid: number, roleid?: string }): Promise<ErmcpRoleMenuEx[]> {
    return commonSearch_go('/Ermcp/QueryAccMgrRoleMenu', param).catch((err) => {
        throw new Error(`查询账户管理角色详情: ${err}`);
    });
}

/**
 * 查询账户管理角色设置(账户管理/角色设置) /Ermcp/QueryAccMgrRole
 * @constructor
 */
export function QueryAccMgrRole(): Promise<ErmcpRole> {
    const userid = getUserId()
    return commonSearch_go('/Ermcp/QueryAccMgrRole', { userid }).catch((err) => {
        throw new Error(`查询账户管理角色设置: ${err}`);
    });
}

/**
 * 查询账户管理授信(账户管理/账户设置/授信) /Ermcp/QueryAccMgrTaAccountInfo
 * @param req
 * @constructor
 */
export function QueryAccMgrTaAccountInfo(req: QueryAccMgrTaAccountInfoReq): Promise<ErmcpTaAccountInfo[]> {
    return commonSearch_go('/Ermcp/QueryAccMgrTaAccountInfo', req).catch((err) => {
        throw new Error(`查询账户管理授信: ${err}`);
    });
}