Add client referral bonus links

This commit is contained in:
Ruslan Bakiev
2026-04-04 14:59:02 +07:00
parent 1bec782edd
commit 6c5b9ef98e
4 changed files with 280 additions and 22 deletions

View File

@@ -77,6 +77,7 @@ model User {
orderStatusEvents OrderStatusEvent[]
referralAsReferrer ReferralLink[] @relation("ReferralReferrer")
referralAsReferee ReferralLink[] @relation("ReferralReferee")
createdReferralLinks ReferralLink[] @relation("ReferralCreator")
bonusTransactions BonusTransaction[]
withdrawalRequests RewardWithdrawalRequest[] @relation("WithdrawalRequester")
reviewedWithdrawals RewardWithdrawalRequest[] @relation("WithdrawalReviewer")
@@ -289,24 +290,34 @@ model OrderStatusEvent {
}
model ReferralLink {
id String @id @default(cuid())
referrerId String
referrer User @relation("ReferralReferrer", fields: [referrerId], references: [id])
refereeId String
referee User @relation("ReferralReferee", fields: [refereeId], references: [id])
createdAt DateTime @default(now())
id String @id @default(cuid())
referrerId String
referrer User @relation("ReferralReferrer", fields: [referrerId], references: [id])
refereeId String
referee User @relation("ReferralReferee", fields: [refereeId], references: [id])
createdById String
createdBy User @relation("ReferralCreator", fields: [createdById], references: [id])
bonusPercent Decimal @db.Decimal(5, 2)
bonusTransactions BonusTransaction[]
createdAt DateTime @default(now())
@@unique([referrerId, refereeId])
@@index([referrerId])
@@index([refereeId])
}
model BonusTransaction {
id String @id @default(cuid())
userId String
user User @relation(fields: [userId], references: [id])
amount Decimal @db.Decimal(14, 2)
reason String
orderId String?
createdAt DateTime @default(now())
id String @id @default(cuid())
userId String
user User @relation(fields: [userId], references: [id])
amount Decimal @db.Decimal(14, 2)
reason String
orderId String?
referralLinkId String?
referralLink ReferralLink? @relation(fields: [referralLinkId], references: [id], onDelete: SetNull)
createdAt DateTime @default(now())
@@unique([orderId, referralLinkId])
}
model RewardWithdrawalRequest {