server/laf-cloud/functions/wx/checkIos.ts
guanchao e2a5c3d2f6 Squash local into main while preserving battle pass compatibility
Integrate starter pack timing, reactivation, purchase analytics, payment routing and atomic user IDs. Resolve iOS conflicts by preserving both battle pass delivery and starter pack snapshots. Add coexistence regression checks and record remaining compatibility risks. Validation: 118/125 tests passed; 7 existing failures remain, plus a separately reproduced pre-existing V2 task login failure.
2026-09-10 16:31:14 +08:00

46 lines
1.6 KiB
TypeScript

import cloud from '@lafjs/cloud'
const db = cloud.database();
export default async function (ctx: FunctionContext) {
console.log("检查提醒");
let openid = ctx.body.openid;
let time = ctx.body.time;
let outTradeNo = ctx.body.outTradeNo;
if (!openid || !time) {
return false;
}
let user = await db.collection("users").where({ openid: openid }).getOne();
if (user.data) {
if (user.data.iosTime == time) {
let res = await db.collection("iosOrder").where({ outTradeNo: outTradeNo }).getOne();
if (res.data) {
await db.collection("order").add({
...(res.data.passVersion === 2 ? { passVersion: 2, passEnd: res.data.passEnd } : {}),
openid: res.data.openid,
outTradeNo: res.data.outTradeNo,
itemid: res.data.itemid,
...(res.data.starterPackBuyRound != null ? { starterPackBuyRound: res.data.starterPackBuyRound } : {}),
...(res.data.starterPackExpiresAt != null ? { starterPackExpiresAt: res.data.starterPackExpiresAt } : {}),
itemCount: res.data.itemCount,
goodsPrice: res.data.goodsPrice,
time: res.data.time,
orderTime: res.data.time,
chargeTime: 0,
getTime: 0,
type: "ios",
state: 0,
});
db.collection("iosOrder").where({ outTradeNo: outTradeNo }).remove({ multi: true });
return true;
} else {
let res = await db.collection("order").where({ outTradeNo: outTradeNo }).getOne();
if (res.data) {
console.log("验证成功");
return true;
}
return false;
}
}
}
return false;
}