31 lines
1.1 KiB
SQL
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");
|