-- 邀请奖励:用户邀请码/被邀请关系 + 记录表 + 系统配置 ALTER TABLE "users" ADD COLUMN "referral_code" TEXT; ALTER TABLE "users" ADD COLUMN "referred_by_id" TEXT; CREATE UNIQUE INDEX "users_referral_code_key" ON "users"("referral_code"); CREATE TABLE "referral_records" ( "id" TEXT NOT NULL PRIMARY KEY, "referrer_id" TEXT NOT NULL, "referee_id" TEXT NOT NULL, "referee_email" TEXT NOT NULL, "status" TEXT NOT NULL DEFAULT 'registered', "register_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "first_paid_at" TIMESTAMP(3), "first_paid_cents" BIGINT, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "referral_records_referrer_id_fkey" FOREIGN KEY ("referrer_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT "referral_records_referee_id_fkey" FOREIGN KEY ("referee_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE ); CREATE TABLE "referral_rewards" ( "id" TEXT NOT NULL PRIMARY KEY, "user_id" TEXT NOT NULL, "record_id" TEXT NOT NULL, "type" TEXT NOT NULL, "amount_cents" BIGINT NOT NULL, "status" TEXT NOT NULL DEFAULT 'credited', "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "referral_rewards_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT "referral_rewards_record_id_fkey" FOREIGN KEY ("record_id") REFERENCES "referral_records"("id") ON DELETE RESTRICT ON UPDATE CASCADE ); CREATE TABLE "system_configs" ( "id" TEXT NOT NULL PRIMARY KEY, "key" TEXT NOT NULL UNIQUE, "value" TEXT NOT NULL, "updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP );