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.
46 lines
1.6 KiB
TypeScript
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;
|
|
}
|