feat: add wallet and recharge cards

This commit is contained in:
JetSprow
2026-05-01 02:31:29 +10:00
parent 6d6489817d
commit 018bed3f36
32 changed files with 2058 additions and 170 deletions

View File

@@ -0,0 +1,30 @@
"use server";
import { revalidatePath } from "next/cache";
import { z } from "zod";
import { requireAuth } from "@/lib/require-auth";
import { createWalletRechargeOrder, redeemRechargeCard } from "@/services/wallet";
const rechargeSchema = z.object({
amount: z.coerce.number().min(1, "充值金额不能低于 1 元").max(100000, "单次充值金额过大"),
});
const redeemSchema = z.object({
code: z.string().trim().min(4, "请输入充值卡卡密"),
});
export async function createWalletRecharge(formData: FormData) {
const session = await requireAuth();
const data = rechargeSchema.parse(Object.fromEntries(formData));
const order = await createWalletRechargeOrder(session.user.id, data.amount);
return { id: order.id };
}
export async function redeemWalletCard(formData: FormData) {
const session = await requireAuth();
const data = redeemSchema.parse(Object.fromEntries(formData));
await redeemRechargeCard(session.user.id, data.code);
revalidatePath("/wallet");
revalidatePath("/subscriptions");
revalidatePath("/dashboard");
}