feat(redeem): 核销记录标记扫码/手机号并支持方式统计

落库 RedeemChannel,门店记录页增加统计按钮,HQ 可按方式筛选。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-03 16:21:38 +08:00
parent 54fca99208
commit dc30932012
10 changed files with 531 additions and 48 deletions
+17 -8
View File
@@ -52,6 +52,12 @@ enum RedeemPendingStatus {
REJECTED
}
/// Redeem channel: SCAN or PHONE
enum RedeemChannel {
SCAN
PHONE
}
enum ResourceMediaType {
IMAGE
VIDEO
@@ -1318,14 +1324,16 @@ model BenefitCoupon {
}
model RedeemRecord {
id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
redeemNo String @unique @map("redeem_no") @db.VarChar(32)
userId BigInt @map("user_id") @db.UnsignedBigInt
couponId BigInt @map("coupon_id") @db.UnsignedBigInt
storeId BigInt @map("store_id") @db.UnsignedBigInt
amount Decimal @db.Decimal(10, 2)
settleAmount Decimal @map("settle_amount") @db.Decimal(10, 2)
createdAt DateTime @default(now()) @map("created_at") @db.DateTime(3)
id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
redeemNo String @unique @map("redeem_no") @db.VarChar(32)
userId BigInt @map("user_id") @db.UnsignedBigInt
couponId BigInt @map("coupon_id") @db.UnsignedBigInt
storeId BigInt @map("store_id") @db.UnsignedBigInt
amount Decimal @db.Decimal(10, 2)
settleAmount Decimal @map("settle_amount") @db.Decimal(10, 2)
/// SCAN=qrcode, PHONE=phone
channel RedeemChannel @default(SCAN)
createdAt DateTime @default(now()) @map("created_at") @db.DateTime(3)
user User @relation(fields: [userId], references: [id], onDelete: Restrict)
coupon BenefitCoupon @relation(fields: [couponId], references: [id], onDelete: Restrict)
@@ -1336,6 +1344,7 @@ model RedeemRecord {
allocations RedeemRecordAllocation[]
@@index([storeId, createdAt])
@@index([storeId, channel, createdAt])
@@map("user_redeem_record")
}