/** ================================= 信息 - 现货商品信息 ================================**/

import APP from '@/services';
import { getUserId } from "@/services/bus/account";
import { getUserAccountType } from "@/services/bus/user";
import { commonSearch_go } from '@/services/go/index';
import { QueryQuoteDay } from '../../quote';
import {
    Ermcp3Brand, Ermcp3GoodsGroup, Ermcp3MiddleGoodsDetailEx,
    Ermcp3Wrstandard,
    ErmcpDeliveryGoodsDetailEx,
    ErmcpDeliveryGoodsReq,
    ErmcpDeliveryGoodsRsp, ErmcpMiddleGoodsChangeLog, ErmcpMiddleGoodsModel,
    Goods
} from './interface';

/**
 * 查询现货商品 /Ermcp3/QueryDeliveryGoods
 * @param excluudecfg 排除已配置的现货商品 1-排除
 * @constructor
 */
export function QueryDeliveryGoods(req: ErmcpDeliveryGoodsReq): Promise<ErmcpDeliveryGoodsRsp[]> {
    const userid = getUserId(); // 所属机构id
    const usertype = getUserAccountType();  //  用户类型 2-机构 7-企业成员
    return commonSearch_go('/Ermcp3/QueryDeliveryGoods', { usertype, userid, ...req }).catch((err) => {
        throw new Error(`查询现货商品: ${err}`);
    });
}

/**
 * 查询商品品类 /Ermcp3/QueryGoodsWrstandard
 * @param deliverygoodsid 现货商品id
 * @constructor
 */
export function QueryGoodsWrstandard(deliverygoodsid: number): Promise<Ermcp3Wrstandard[]> {
    const userid = getUserId(); // 所属机构id
    const usertype = getUserAccountType(); //  用户类型 2-机构 7-企业成员
    return commonSearch_go('/Ermcp3/QueryGoodsWrstandard', { userid, usertype, deliverygoodsid }).catch((err) => {
        throw new Error(`查询商品品类: ${err}`);
    });
}

/**
 * 查询商品品牌 /Ermcp3/QueryGoodsbrand
 * @constructor
 */
export function QueryGoodsbrand(): Promise<Ermcp3Brand[]> {
    const userid = getUserId(); // 用户id
    const usertype = getUserAccountType();  // 用户类型 2-机构 7-企业成员
    return commonSearch_go('/Ermcp3/QueryGoodsbrand', { userid, usertype }).catch((err) => {
        throw new Error(`查询商品品牌: ${err}`);
    });
}

/**
 * 查询现货商品详情 /Ermcp3/QueryDeliveryGoodsDetail
 * @param deliverygoodsid 现货商品id
 * @constructor
 */
export function QueryDeliveryGoodsDetail(): Promise<ErmcpDeliveryGoodsDetailEx[]> {
    return commonSearch_go('/Ermcp3/QueryDeliveryGoodsDetail', { userid: getUserId(), usertype: getUserAccountType() }).then(res => {
        APP.set('DeliveryGoodsList', res)
        return res
    }).catch((err) => {
        throw new Error(`查询现货商品详情: ${err}`);
    });
}

/**
 * 查询商品组 /Ermcp3/QueryGoodsGroup
 * @param excludecfg 排除套保品中已关联的商品组 1-排除
 * @constructor
 */
export function QueryGoodsfGroup(excludecfg?: number): Promise<Ermcp3GoodsGroup[]> {
    const userid = getUserId(); // 用户id
    const usertype = getUserAccountType(); // 用户类型 2-机构 7-企业成员
    const param = excludecfg ? { userid, excludecfg, usertype } : { userid, usertype }
    return commonSearch_go('/Ermcp3/QueryGoodsGroup', param).catch((err) => {
        throw new Error(`查询期货商品组: ${err}`);
    });
}

/** ================================= 信息 - 套保品种 ================================**/
/**
 * 查询套保品种(菜单:套保品种) /Ermcp/QueryMiddleGoods
 * @param status 状态 0-停用 1-正常
 * @constructor
 */
export function QueryMiddleGoods(status: number): Promise<ErmcpMiddleGoodsModel[]> {
    const userid = getUserId(); // 所属机构id
    return commonSearch_go('/Ermcp/QueryMiddleGoods', { userid, status }).catch((err) => {
        throw new Error(`查询套保品种: ${err}`);
    });
}

/**
 * 查询套保品种详情(套保品种/商品详情) /Ermcp3/QueryMiddleGoodsDetail
 * @param middlegoodsid 套保品种id
 * @constructor
 */
export function QueryMiddleGoodsDetail(middlegoodsid?: number): Promise<Ermcp3MiddleGoodsDetailEx[]> {
    const userid = getUserId(); // 用户id
    const usertype = getUserAccountType()  // 用户类型 2-机构 7-企业成员
    const param = middlegoodsid ? { userid, usertype, middlegoodsid } : { userid, usertype }

    return commonSearch_go('/Ermcp3/QueryMiddleGoodsDetail', param).catch((err) => {
        throw new Error(`查询套保品种详情(套保品种/商品详情): ${err}`);
    });
}

/**
 * 查询企业风管期货商品信息 /Ermcp/GetErmcpGoods （此接口需要优化，需要前端存入本地，目前项目赶，有时间优化)
 * @param lastUpdateTime 最后修改时间 - 闭区间，格式：yyyy-MM-dd HH:mm:ss
 * @constructor
 */
export function GetErmcpGoods(lastUpdateTime?: string): Promise<string> {
    const param = lastUpdateTime ? { lastUpdateTime } : {}
    return commonSearch_go('/Ermcp/GetErmcpGoods', param).then(res => {

        if (res.length) {
            const result = res.reduce((acc: string, obj: Goods) => acc + obj.goodscode + ',', '')
            // 登录的时候或者刷新的时候，需要获取一次盘面信息
            QueryQuoteDay(result)
        }
        // console.log('查询企业风管期货商品信息', res);
        APP.set('Goods', res)
        return 'ok'
    }).catch((err) => {
        throw new Error(`查询企业风管期货商品信息: ${err}`);
    });
}

/**
 *  查询套保品种变更记录(菜单:套保品种/商品详情/变更记录) /Ermcp/QueryMiddleGoodsChangeLog
 * @param middlegoodsid 套保品种id
 * @constructor
 */
export function QueryMiddleGoodsChange(middlegoodsid: number): Promise<ErmcpMiddleGoodsChangeLog[]> {
    const userid = getUserId(); // 用户id
    return commonSearch_go('/Ermcp/QueryMiddleGoodsChangeLog', { userid, middlegoodsid }).catch((err) => {
        throw new Error(`查询套保品种详情(套保品种/商品详情): ${err}`);
    });
}

