perf: 支持课程补录
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE `lesson_supplements` (
|
||||
`id` VARCHAR(191) NOT NULL,
|
||||
`user_id` VARCHAR(191) NOT NULL,
|
||||
`request_id` VARCHAR(80) NOT NULL,
|
||||
`quantity` INTEGER NOT NULL,
|
||||
`membership_id` VARCHAR(191) NULL,
|
||||
`deducted_times` INTEGER NOT NULL DEFAULT 0,
|
||||
`card_name` VARCHAR(191) NULL,
|
||||
`remark` VARCHAR(200) NULL,
|
||||
`operator_id` VARCHAR(191) NOT NULL,
|
||||
`operator_name` VARCHAR(191) NOT NULL,
|
||||
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
`revoked_at` DATETIME(3) NULL,
|
||||
`revoked_by` VARCHAR(191) NULL,
|
||||
|
||||
INDEX `lesson_supplements_user_id_revoked_at_created_at_idx`(`user_id`, `revoked_at`, `created_at`),
|
||||
UNIQUE INDEX `lesson_supplements_user_id_request_id_key`(`user_id`, `request_id`),
|
||||
PRIMARY KEY (`id`)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE `lesson_supplements` ADD CONSTRAINT `lesson_supplements_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE `lesson_supplements` ADD CONSTRAINT `lesson_supplements_membership_id_fkey` FOREIGN KEY (`membership_id`) REFERENCES `memberships`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
@@ -84,6 +84,7 @@ model User {
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
|
||||
lessonSupplements LessonSupplement[]
|
||||
memberships Membership[]
|
||||
bookings Booking[]
|
||||
orders Order[]
|
||||
@@ -155,6 +156,7 @@ model Membership {
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
|
||||
lessonSupplements LessonSupplement[]
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
cardType CardType @relation(fields: [cardTypeId], references: [id])
|
||||
bookings Booking[]
|
||||
@@ -307,7 +309,7 @@ model InviteRewardGrant {
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
|
||||
inviter User @relation("InviteRewardGrantInviter", fields: [inviterId], references: [id])
|
||||
membership Membership? @relation(fields: [membershipId], references: [id])
|
||||
membership Membership? @relation(fields: [membershipId], references: [id], onDelete: Restrict)
|
||||
|
||||
@@index([inviterId, grantedAt])
|
||||
@@map("invite_reward_grants")
|
||||
@@ -373,3 +375,27 @@ model FlashSaleOrder {
|
||||
@@index([status])
|
||||
@@map("flash_sale_orders")
|
||||
}
|
||||
|
||||
// Historical totals without fabricated scheduled dates.
|
||||
model LessonSupplement {
|
||||
id String @id @default(uuid())
|
||||
userId String @map("user_id")
|
||||
requestId String @map("request_id") @db.VarChar(80)
|
||||
quantity Int
|
||||
membershipId String? @map("membership_id")
|
||||
deductedTimes Int @default(0) @map("deducted_times")
|
||||
cardName String? @map("card_name")
|
||||
remark String? @db.VarChar(200)
|
||||
operatorId String @map("operator_id")
|
||||
operatorName String @map("operator_name")
|
||||
createdAt DateTime @default(now()) @map("created_at")
|
||||
revokedAt DateTime? @map("revoked_at")
|
||||
revokedBy String? @map("revoked_by")
|
||||
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
membership Membership? @relation(fields: [membershipId], references: [id], onDelete: Restrict)
|
||||
|
||||
@@unique([userId, requestId])
|
||||
@@index([userId, revokedAt, createdAt])
|
||||
@@map("lesson_supplements")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user