RedpacketModel.ts 4.66 KB
import BaseModel from "./BaseModel";
import AdManager from "../../sdk/AdManager";
import TeaSdk, { DotKey } from "../../sdk/TeaSdk";
import { GoldConfigData } from "../../sdk/sdkData/GoldConfigData";
import AddGoldData from "../../sdk/sdkData/AddGoldData";
import DateUtils from "../../uitl/DateUtils";
import Util, { DataKey } from "../../uitl/Util";
import ObjectInstance from "../../uitl/ObjectInstance";
import { EventCenter } from "../../event/EventCenter";
import { EventEnum } from "../../event/EventEnum";
import AppSdk from "../AppSdk";

export default class RedpacketModel extends BaseModel {
    private MAX = 20;
    /**当天领取红包的最大次数 */
    private DAY_MAX_CNT = 50;
    private conf: any;
    public curRedpacket: number = 0;
    public confLen: number = 0;

    /**初始化红包配置 */
    async init() {
        // console.log("初始化红包配置init")
        let arr = await GoldConfigData.I.getGoldConfig();
        // console.log('---------------RedpacketModel-------'+JSON.stringify(arr))
        let cash = 0;
        this.conf = {};
        arr.forEach(confData => {
            this.conf[confData.id] = confData;
        });

        this.update(this.initData());
        this.confLen = this.conf.length;

    }

    initData() {
        let data = new RedpacketData;
        let lastTime = Util.I.getItem(DataKey.lastTime) || '0';
        data.lastTime = parseInt(lastTime);

        let last = DateUtils.timeDay(data.lastTime);
        let today = DateUtils.today;
        if (last != today) {
            data.todayCnt = 0;
            lastTime = DateUtils.nowTime.toString();
            Util.I.setItem(DataKey.lastTime, lastTime)
            Util.I.setItem(DataKey.todayCnt, 0);
        } else {
            let todayCnt = Util.I.getItem(DataKey.todayCnt) || '0';
            data.todayCnt = parseInt(todayCnt);
        }
        data.lastTime = parseInt(lastTime);
        let dataCnt = Util.I.getItem(DataKey.dataCNT) || '0';
        data.cnt = parseInt(dataCnt);
        data.list = [];
        return data;
    }

    async checkRedpacket() {

        if (this.data.todayCnt >= this.DAY_MAX_CNT) return false;
        if (AdManager.I.checkVideoInCd()) return false;
        /**红包获取后没有看广告领取,再次获得红包的机会,不会获取红包, 自己也可以处理成 对应的红包提醒或不需要这里的判断 */
        if (this.curRedpacket) {
            return false;
        }
        if (undefined === this.data.cnt) this.data.cnt = 0;
        let cnt = this.data.cnt;
        if (cnt >= this.confLen) cnt = this.confLen - 1;
        let data = this.conf[cnt + 1];
        let ran2 = Math.random();

        if (data && ran2 < data.per) {
            let cash = 0.000001;
            this.curRedpacket = cash;
            console.log("看视频领红包")
            // //**弹出红包的界面,  暂时处理成 直接看广告获取金币 */
            // await AdManager.I.showRewardAd(DotKey.reward_ad)
            // console.log("加金币")
            // let coin = await this.addCoin(); // 看完广告获取钱(此时已经加到账户了,暂未提供提前知道获取多少钱的方法)
            // console.log("获取了钱", coin)
            // this.getRepacket()
            // /**更新基本显示 */
            // EventCenter.emit(EventEnum.UPDATE_COIN);

            /*** */
            return true;
        }
        return false;
    }

    getRepacket() {
        if (!this.curRedpacket) return;
        this.data.cnt += 1;
        this.data.list.push(this.curRedpacket);
        this.data.lastTime = (new Date).getTime();
        this.data.todayCnt += 1;
       
        this.curRedpacket = 0;
        Util.I.setItem(DataKey.dataCNT, this.data.cnt);
        Util.I.setItem(DataKey.todayCnt, this.data.todayCnt);

        this.update(this.data);
    }

    /** */
    async getCurRedpacket() {
        return this.curRedpacket;
    }

    get data(): RedpacketData {
        return this._data;
    }
    /**获取总共的金币数 */
    async getTotalCoin() {
        let totalCoin = await AppSdk.I.myCoin();
        return totalCoin;
    }
    /**获取本次奖励的金币数 */
    async addCoin() {
        let coinData = await AddGoldData.addCoin();
        return coinData;
    }

    /**获取最低提档 */
    async  minWithDrawal() {
        let minCoin = await AppSdk.I.minWithDrawal();
        return minCoin;
    }
    static get I(): RedpacketModel {
        return ObjectInstance.get(RedpacketModel) as RedpacketModel;
    }
}

class RedpacketData {
    cnt: number;
    list: Array<number>;
    lastTime: number;
    todayCnt: number;
}

class RedpacketConfigData {
    id: number;
    per: number;
    cash: number;
}