fix: 修复月卡无法编辑次数的问题
This commit is contained in:
@@ -581,18 +581,18 @@ export class UserService {
|
||||
const now = new Date()
|
||||
const expireDate = new Date(dto.expireDate)
|
||||
const remainingTimes = dto.remainingTimes ?? null
|
||||
const isTimeBased = remainingTimes !== null
|
||||
const isCountLimited = remainingTimes !== null
|
||||
|
||||
let status: MembershipStatus = MembershipStatus.ACTIVE
|
||||
if (expireDate < now) {
|
||||
status = MembershipStatus.EXPIRED
|
||||
} else if (isTimeBased && remainingTimes <= 0) {
|
||||
} else if (isCountLimited && remainingTimes <= 0) {
|
||||
status = MembershipStatus.USED_UP
|
||||
}
|
||||
|
||||
const data = {
|
||||
cardTypeId: dto.cardTypeId,
|
||||
remainingTimes: dto.remainingTimes ?? null,
|
||||
remainingTimes,
|
||||
startDate: new Date(dto.startDate),
|
||||
expireDate: new Date(dto.expireDate),
|
||||
status,
|
||||
@@ -609,15 +609,21 @@ export class UserService {
|
||||
}
|
||||
|
||||
if (existing) {
|
||||
const totalTimes = remainingTimes === null
|
||||
? null
|
||||
: existing.cardTypeId === dto.cardTypeId
|
||||
? Math.max(existing.totalTimes ?? 0, remainingTimes)
|
||||
: remainingTimes
|
||||
|
||||
return this.prisma.membership.update({
|
||||
where: { id: existing.id },
|
||||
data,
|
||||
data: { ...data, totalTimes },
|
||||
include: { cardType: true },
|
||||
})
|
||||
}
|
||||
|
||||
return this.prisma.membership.create({
|
||||
data: { userId, totalTimes: dto.remainingTimes ?? null, ...data },
|
||||
data: { userId, totalTimes: remainingTimes, ...data },
|
||||
include: { cardType: true },
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user