fix(admin,api,player): 返水注单去重、操作日志 i18n 与钱包紧凑金额

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-08 16:07:11 +08:00
parent 22535d4c27
commit 0d761db70b
8 changed files with 216 additions and 26 deletions

View File

@@ -0,0 +1,27 @@
-- CreateTable
CREATE TABLE "cashback_bets" (
"id" BIGSERIAL NOT NULL,
"batch_id" BIGINT NOT NULL,
"bet_id" BIGINT NOT NULL,
"user_id" BIGINT NOT NULL,
"stake" DECIMAL(18,4) NOT NULL,
"amount" DECIMAL(18,4) NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "cashback_bets_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "cashback_bets_bet_id_key" ON "cashback_bets"("bet_id");
-- CreateIndex
CREATE INDEX "cashback_bets_batch_id_idx" ON "cashback_bets"("batch_id");
-- CreateIndex
CREATE INDEX "cashback_bets_user_id_idx" ON "cashback_bets"("user_id");
-- AddForeignKey
ALTER TABLE "cashback_bets" ADD CONSTRAINT "cashback_bets_batch_id_fkey" FOREIGN KEY ("batch_id") REFERENCES "cashback_batches"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "cashback_bets" ADD CONSTRAINT "cashback_bets_bet_id_fkey" FOREIGN KEY ("bet_id") REFERENCES "bets"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

View File

@@ -400,6 +400,7 @@ model Bet {
user User @relation(fields: [userId], references: [id])
selections BetSelection[]
cashbackClaims CashbackBet[]
@@unique([userId, requestId])
@@index([userId])
@@ -508,6 +509,7 @@ model CashbackBatch {
createdAt DateTime @default(now()) @map("created_at")
items CashbackItem[]
bets CashbackBet[]
@@map("cashback_batches")
}
@@ -529,6 +531,24 @@ model CashbackItem {
@@map("cashback_items")
}
/** 返水批次占用的注单(每笔注单全局仅能计入一次待发放/已发放批次) */
model CashbackBet {
id BigInt @id @default(autoincrement())
batchId BigInt @map("batch_id")
betId BigInt @unique @map("bet_id")
userId BigInt @map("user_id")
stake Decimal @db.Decimal(18, 4)
amount Decimal @db.Decimal(18, 4)
createdAt DateTime @default(now()) @map("created_at")
batch CashbackBatch @relation(fields: [batchId], references: [id], onDelete: Cascade)
bet Bet @relation(fields: [betId], references: [id])
@@index([batchId])
@@index([userId])
@@map("cashback_bets")
}
// ============ Content & i18n ============
model Content {