Files
ddd-demo/src/main/kotlin/ddd/domain/validation/changeUsername/TimeIntervalValidation.kt
chusan 2364f29b17 init
2025-05-16 19:06:18 +08:00

21 lines
828 B
Kotlin

package ddd.domain.validation.changeUsername
import shared.exceptions.ChangeUsernameException
import shared.validation.AbstractValidationHandler
import java.time.Duration
import java.time.LocalDateTime
class TimeIntervalValidation : AbstractValidationHandler<UsernameChangeContext>() {
override fun validate(context: UsernameChangeContext) {
val lastChange = context.user.lastUsernameChange
val policy = context.user.rank.policy
lastChange?.let {
val daysBetween = Duration.between(it, LocalDateTime.now(context.clock)).toDays()
if (daysBetween < policy.getMaxChangeIntervalDays()) {
throw ChangeUsernameException("30天内禁止重复修改")
}
}
next(context) // 传递至下一个验证器
}
}