21 lines
828 B
Kotlin
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) // 传递至下一个验证器
|
|
}
|
|
} |