init
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
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) // 传递至下一个验证器
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user