'fix'
This commit is contained in:
@@ -20,6 +20,8 @@ type UserCheckPayload = {
|
||||
ok: boolean;
|
||||
vip: boolean;
|
||||
alreadyLinked: boolean;
|
||||
/** 服务端异常/超时时为 true,前端勿据此清空本地已登录 VIP */
|
||||
uncertain?: boolean;
|
||||
email?: string;
|
||||
linkedUserId?: string;
|
||||
};
|
||||
@@ -292,18 +294,25 @@ export async function POST(request: NextRequest) {
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("[check-by-user] failed:", error);
|
||||
// 接口容错:即使 PB 回退失败,也不抛 500 给前端
|
||||
return { ok: true, vip: false, alreadyLinked: false };
|
||||
// 勿伪装成「确定非 VIP」,否则微信/H5 弱网会误清本地态
|
||||
return {
|
||||
ok: false,
|
||||
vip: false,
|
||||
alreadyLinked: false,
|
||||
uncertain: true,
|
||||
};
|
||||
}
|
||||
})();
|
||||
|
||||
inflightUserRequests.set(userId, task);
|
||||
try {
|
||||
const payload = await task;
|
||||
userCheckResultCache.set(userId, {
|
||||
payload,
|
||||
expiresAt: Date.now() + USER_CHECK_CACHE_TTL_MS,
|
||||
});
|
||||
if (!payload.uncertain) {
|
||||
userCheckResultCache.set(userId, {
|
||||
payload,
|
||||
expiresAt: Date.now() + USER_CHECK_CACHE_TTL_MS,
|
||||
});
|
||||
}
|
||||
return NextResponse.json(payload);
|
||||
} finally {
|
||||
inflightUserRequests.delete(userId);
|
||||
|
||||
@@ -86,6 +86,10 @@ export async function GET(request: NextRequest) {
|
||||
|
||||
return NextResponse.json({ ok: true, vip: false });
|
||||
} catch {
|
||||
return NextResponse.json({ ok: true, vip: false });
|
||||
return NextResponse.json({
|
||||
ok: true,
|
||||
vip: false,
|
||||
uncertain: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user