feat: 充值订单审计与重新申请,优化赛事展示和余额刷新

- 新增 deposit_order_audit_logs 表,记录提交/审批/拒绝/撤销/重提全链路
- 管理端充值单页增加审计历史;玩家端充值历史支持时间线与重新申请
- 已拒绝订单可原单号重提;撤销入账使用 PLAYER_DEPOSIT_REVERSAL 并加强幂等
- 结算后清除热门标记,允许归档已结算赛事,完善今日赛事时区窗口
- 足球页今日/早盘独立折叠;资料与余额在进入钱包/个人页及下注后自动刷新
- 补充投注玩法、结算返水规则文档;新增 smoke/settlement CLI 脚本

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-15 14:52:05 +08:00
parent 73a94e6be3
commit afb5c5437e
55 changed files with 3050 additions and 160 deletions

View 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;

View File

@@ -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;

View File

@@ -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 {