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; lastTime: number; todayCnt: number; } class RedpacketConfigData { id: number; per: number; cash: number; }