diff --git a/src/api_s2c/event/shiwuleichong/ApiOpen.ts b/src/api_s2c/event/shiwuleichong/ApiOpen.ts index 63aa21d..de01636 100644 --- a/src/api_s2c/event/shiwuleichong/ApiOpen.ts +++ b/src/api_s2c/event/shiwuleichong/ApiOpen.ts @@ -1,41 +1,42 @@ -import { UpdateFilter } from 'mongodb'; -import { ApiCall } from "tsrpc"; -import { CollectionEvent } from '../../../module/collection_event'; -import { PayFun } from '../../../public/pay'; -import { ReqOpen, ResOpen } from "../../../shared/protocols/event/shiwuleichong/PtlOpen"; -import { PublicShared } from '../../../shared/public/public'; +import {ApiCall} from "tsrpc"; +import {ReqOpen, ResOpen} from "../../../shared/protocols/event/shiwuleichong/PtlOpen"; +import {PayFun} from "../../../public/pay"; +import {PublicShared} from "../../../shared/public/public"; + export default async function (call: ApiCall) { - let db = await G.mongodb.cEvent('15leichong').findOne({ uid: call.uid, type: '15leichong' }); - let update: UpdateFilter>; - let sTime = PublicShared.getToDayZeroTime(G.time); + let payids = G.gc.shiwuleichong.tasks.map( + (i) => i.payid + ); - if (!db) { - update = { - $set: { index: 0, sTime: sTime, recIndex: [] } - }; - } else { - if (db.sTime + G.gc.shiwuleichong.data[db.index].time < G.time) { - - db.sTime = sTime; - db.index = G.gc.shiwuleichong.data[db.index + 1] == undefined ? db.index : db.index + 1; - db.recIndex = []; - - update = { - $set: { index: db.index, sTime: db.sTime, recIndex: [] } - }; + let day: number = 1; + let _zt = PublicShared.getToDayZeroTime(); + let pays = await PayFun.getPayLogs(call.uid, payids); + for (; day <= G.gc.shiwuleichong.tasks.length; day++) { + let pay = pays[G.gc.shiwuleichong.tasks[day - 1].payid]; + if (!pay || pay.length == 0) { + break } else { - sTime = db.sTime; + // 如果是最后一天奖励 + if (day >= G.gc.shiwuleichong.tasks.length) { + // 充值订单隔天了 + if (pay.slice(-1)[0].time < _zt) { + // 重置所有订单 + await PayFun.delPayLog(call.uid, ...payids.map(i => { + return {payId: i, val: []} + })) + day = 1; + pays = {}; + } + break; + } else if (pay.slice(-1)[0].time >= _zt) { + break + } } } - update && G.mongodb.cEvent('15leichong').updateOne({ uid: call.uid, type: '15leichong' }, update, { upsert: true }); - let index = db?.index || 0; - call.succ({ - index: index, - sTime: sTime, - recIndex: db?.recIndex || [], - payDay: await PayFun.getPayDaysBuyPayNum(call.uid, sTime, sTime + G.gc.shiwuleichong.data[index].time, G.gc.shiwuleichong.dayPayNeed) + day: day, + payIds: Object.keys(pays).filter((i) => pays[i].length > 0) }); } \ No newline at end of file