ai-chatbot/lib/db/migrations/0036_add_payment_orders.sql
Your Name 6cac41f1c0
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
接入DuluPay充值闭环并统一升级弹窗比例
2026-02-14 15:25:36 +08:00

31 lines
1.1 KiB
SQL

CREATE TABLE IF NOT EXISTS "PaymentOrder" (
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
"userId" uuid NOT NULL REFERENCES "User"("id") ON DELETE cascade,
"provider" varchar(32) NOT NULL DEFAULT 'dulupay',
"outTradeNo" varchar(128) NOT NULL,
"tradeNo" varchar(128),
"packageId" varchar(64),
"points" integer NOT NULL DEFAULT 0,
"amountCents" integer NOT NULL DEFAULT 0,
"currency" varchar(8) NOT NULL DEFAULT 'CNY',
"payType" varchar(32),
"status" varchar(32) NOT NULL DEFAULT 'pending',
"paymentUrl" text,
"rawCallback" jsonb,
"errorMessage" text,
"paidAt" timestamp,
"createdAt" timestamp NOT NULL DEFAULT now(),
"updatedAt" timestamp NOT NULL DEFAULT now(),
CONSTRAINT "PaymentOrder_status_check" CHECK ("status" IN ('pending', 'paid', 'failed', 'closed')),
CONSTRAINT "PaymentOrder_out_trade_no_unique" UNIQUE("outTradeNo")
);
CREATE INDEX IF NOT EXISTS "payment_order_user_created_idx"
ON "PaymentOrder" ("userId", "createdAt" DESC);
CREATE INDEX IF NOT EXISTS "payment_order_out_trade_idx"
ON "PaymentOrder" ("outTradeNo");
CREATE INDEX IF NOT EXISTS "payment_order_trade_no_idx"
ON "PaymentOrder" ("tradeNo");