feat: 充值订单审计与重新申请,优化赛事展示和余额刷新
- 新增 deposit_order_audit_logs 表,记录提交/审批/拒绝/撤销/重提全链路 - 管理端充值单页增加审计历史;玩家端充值历史支持时间线与重新申请 - 已拒绝订单可原单号重提;撤销入账使用 PLAYER_DEPOSIT_REVERSAL 并加强幂等 - 结算后清除热门标记,允许归档已结算赛事,完善今日赛事时区窗口 - 足球页今日/早盘独立折叠;资料与余额在进入钱包/个人页及下注后自动刷新 - 补充投注玩法、结算返水规则文档;新增 smoke/settlement CLI 脚本 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
8
apps/api/prisma/migrations/20260615040059/migration.sql
Normal file
8
apps/api/prisma/migrations/20260615040059/migration.sql
Normal file
@@ -0,0 +1,8 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "market_template_items" ALTER COLUMN "updated_at" DROP DEFAULT;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "market_template_selections" ALTER COLUMN "updated_at" DROP DEFAULT;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "market_templates" ALTER COLUMN "updated_at" DROP DEFAULT;
|
||||
@@ -0,0 +1,25 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "deposit_order_audit_logs" (
|
||||
"id" BIGSERIAL NOT NULL,
|
||||
"deposit_order_id" BIGINT NOT NULL,
|
||||
"action" VARCHAR(32) NOT NULL,
|
||||
"actor_id" BIGINT,
|
||||
"actor_type" VARCHAR(20) NOT NULL,
|
||||
"status_before" VARCHAR(20),
|
||||
"status_after" VARCHAR(20) NOT NULL,
|
||||
"amount" DECIMAL(18,4),
|
||||
"approved_amount" DECIMAL(18,4),
|
||||
"remark" VARCHAR(500),
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "deposit_order_audit_logs_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "deposit_order_audit_logs_deposit_order_id_idx" ON "deposit_order_audit_logs"("deposit_order_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "deposit_order_audit_logs_created_at_idx" ON "deposit_order_audit_logs"("created_at");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "deposit_order_audit_logs" ADD CONSTRAINT "deposit_order_audit_logs_deposit_order_id_fkey" FOREIGN KEY ("deposit_order_id") REFERENCES "deposit_orders"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
@@ -785,6 +785,7 @@ model DepositOrder {
|
||||
|
||||
player User @relation("PlayerDepositOrders", fields: [playerId], references: [id])
|
||||
paymentMethod PaymentMethod @relation(fields: [paymentMethodId], references: [id])
|
||||
auditLogs DepositOrderAuditLog[]
|
||||
|
||||
@@index([playerId])
|
||||
@@index([status])
|
||||
@@ -792,6 +793,26 @@ model DepositOrder {
|
||||
@@map("deposit_orders")
|
||||
}
|
||||
|
||||
model DepositOrderAuditLog {
|
||||
id BigInt @id @default(autoincrement())
|
||||
depositOrderId BigInt @map("deposit_order_id")
|
||||
action String @db.VarChar(32)
|
||||
actorId BigInt? @map("actor_id")
|
||||
actorType String @map("actor_type") @db.VarChar(20)
|
||||
statusBefore String? @map("status_before") @db.VarChar(20)
|
||||
statusAfter String @map("status_after") @db.VarChar(20)
|
||||
amount Decimal? @db.Decimal(18, 4)
|
||||
approvedAmount Decimal? @map("approved_amount") @db.Decimal(18, 4)
|
||||
remark String? @db.VarChar(500)
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
|
||||
depositOrder DepositOrder @relation(fields: [depositOrderId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@index([depositOrderId])
|
||||
@@index([createdAt])
|
||||
@@map("deposit_order_audit_logs")
|
||||
}
|
||||
|
||||
// ============ System Config & Audit ============
|
||||
|
||||
model SystemConfig {
|
||||
|
||||
Reference in New Issue
Block a user