GameService.ts 4.11 KB
import DataService from "./DataService";
import { SDKApi } from "../http/SDKApi";
import { __LOG__ } from "../base/SDKConst";
import WxLogin from "../wx/WxLogin";
import WxApi from "../wx/WxApi";
import WxPay from "../wx/WxPay";


export default class GameService {
    private constructor() {

    }

    env() {
        return new Promise((resolve, reject) => {
            SDKApi.Version().then((data: any) => {
                if (data) {
                    __LOG__ && console.log("版本信息", data);
                    let num = data.data ? data.data.env ? data.data.env : 2 : 2;
                    DataService.I.setEnvEnum(+num)
                    // DataService.I.setCdnUrl(data.res_url || '');
                }
                // 设置在线参数请求
                // let isAutoOnlineUse = CfgManager.I.config.IsOnlineAutoUse;
                // isAutoOnlineUse && OnlineService.I.updateOnlineConfig().then(() => EventCenter.I.emit(EventEnum.ONLINE_SUCCESS));
                resolve(data);
            }).catch((err: any) => {
                reject(err);
            });
        });
    }

    login(isAuthorize = false) {
        return WxLogin.I.login(isAuthorize);
    }


    saveData(key: string, content: string) {
        return SDKApi.saveData({ key, content, uid: DataService.I.UserId, token: DataService.I.Token });
    }

    getData(key: string) {
        return SDKApi.getData({ key, uid: DataService.I.UserId, token: DataService.I.Token });
    }

    rankAdd(key, value) {
        return SDKApi.rankAdd({ typ: key, fraction: value, uid: DataService.I.UserId, token: DataService.I.Token })
    }

    rankList(typ, t, isRankData) {
        return SDKApi.rankList({ typ, t, rankdata: isRankData ? 1 : 0, uid: DataService.I.UserId, token: DataService.I.Token })
    }

    totalrankAdd(key, value, type, sort) {
        return SDKApi.totalrankAdd({ typ: key, sort, t: type, fraction: value, uid: DataService.I.UserId, token: DataService.I.Token })
    }

    totalrankList(typ, t, isRankData, sort) {
        return SDKApi.totalrankList({ typ, t, sort, rankdata: isRankData ? 1 : 0, uid: DataService.I.UserId, token: DataService.I.Token })
    }
    adList(adtyp) {
        return SDKApi.adList({ adtyp, uid: DataService.I.UserId, token: DataService.I.Token })
    }


    subScribe(tmplIds: Array<string>, ids: Array<string>): Promise<any> {
        return new Promise((resolve, reject) => {
            WxApi.I.subscribeMessage(tmplIds)
                .then((ret: any) => {
                    ret = ret || {};
                    let acceptKeys = tmplIds.filter((idKey: string) => ret[idKey] && ret[idKey] === 'accept');
                    if (!acceptKeys.length) {
                        reject({ errCode: 0, errMsg: '点击取消订阅' });
                    } else {
                        let uid = +DataService.I.UserId;
                        let token = DataService.I.Token + '';
                        let openid = DataService.I.OpenId + '';
                        let id = ids//JSON.stringify()
                        SDKApi.subscribe({
                            uid,
                            token,
                            openid,
                            status: 1,
                            id,
                        })
                    }
                    // GameService.I.subScribe(acceptKeys)
                    //     .then(() => {
                    //         resolve(ret);
                    //         DebugUtils.I.dynamic('====> PCSDK subScribe订阅消息成功', ret);
                    //     })
                    //     .catch((err) => reject(err || { errCode: 0, errMsg: 'GameApi subScribe请求错误' }));

                })
                .catch(err => reject(err));
        });
        // return WxApi.I.subscribeMessage(template_ids);
    }

    /**
     *  支付
     * @param params 
     * @param opts 
     * @returns 
     */
    pay(params: { money: number; source:string}, opts: any = {}) {
        return WxPay.I.pay(params, opts);
    }

    private static instance: GameService;
    static get I(): GameService {
        return this.instance || (this.instance = new GameService());
    }
}