大修改

This commit is contained in:
Yeomai committed 2026-09-30 03:38:10 +08:00
1 parent a1cbc9404a
commit e81481623c
47 files changed
+1453 -285

No files matched your search

@@ -58,7 +58,7 @@ export class PaymentsService {
const openid = notify.OpenId ?? '';
if (!outTradeNo || !wxOrderId) throw new Error('推送缺少 OutTradeNo 或 MchOrderNo');
const order = await this.prisma.order.findUnique({
const order = await this.prisma.active.order.findUnique({
where: { out_trade_no: outTradeNo },
include: { user: true },
});
@@ -89,7 +89,7 @@ export class PaymentsService {
const parsed = this.parser.parse(rawXml) as { xml?: { OutTradeNo?: string } };
const outTradeNo = parsed.xml?.OutTradeNo ?? '';
if (outTradeNo) {
await this.prisma.order.updateMany({
await this.prisma.active.order.updateMany({
where: { out_trade_no: outTradeNo },
data: { status: OrderStatus.REFUNDED, refunded_at: new Date() },
});
@@ -109,7 +109,7 @@ export class PaymentsService {
async reconcilePendingOrders(): Promise<number> {
if (!this.wxpay.enabled) return 0;
const pending = await this.prisma.order.findMany({
const pending = await this.prisma.active.order.findMany({
where: { status: { in: [OrderStatus.CREATED, OrderStatus.PAID] } },
include: { user: true },
orderBy: { created_at: 'asc' },
@@ -144,7 +144,7 @@ export class PaymentsService {
/** 取用户 sessionKey(明文)。不存在时提示重新登录。 */
async requireSessionKey(userId: number): Promise<string> {
const user = await this.prisma.user.findUnique({ where: { id: userId } });
const user = await this.prisma.active.user.findUnique({ where: { id: userId } });
if (!user?.wx_session_key) throw AppError.unauthorized('请重新进入小程序后再试');
const key = decryptSecret(user.wx_session_key, this.cfg.SESSION_KEY_ENC_SECRET);
if (!key) throw new AppError(ErrorCode.INTERNAL, 'sessionKey 解密失败', 500);
@@ -160,8 +160,8 @@ export class PaymentsService {
wxOrderId: string,
): Promise<void> {
const now = new Date();
await this.prisma.$transaction([
this.prisma.order.update({
await this.prisma.active.$transaction([
this.prisma.active.order.update({
where: { id: orderId },
data: {
status: OrderStatus.DELIVERED,
@@ -170,7 +170,7 @@ export class PaymentsService {
delivered_at: now,
},
}),
this.prisma.entitlement.upsert({
this.prisma.active.entitlement.upsert({
where: { user_id_course_id: { user_id: userId, course_id: courseId } },
create: {
user_id: userId,
@@ -186,12 +186,12 @@ export class PaymentsService {
}
private async logNotify(rawXml: string): Promise<number> {
const row = await this.prisma.paymentNotifyLog.create({ data: { raw_body: rawXml } });
const row = await this.prisma.active.paymentNotifyLog.create({ data: { raw_body: rawXml } });
return row.id;
}
private async markNotify(id: number, processed: number, errMsg: string): Promise<void> {
await this.prisma.paymentNotifyLog.update({
await this.prisma.active.paymentNotifyLog.update({
where: { id },
data: { processed, err_msg: errMsg.slice(0, 255) },
});