Optimize code

This commit is contained in:
2024-02-20 17:32:20 +08:00
parent 46a603b924
commit 45a5ee1c54
16 changed files with 75 additions and 111 deletions

View File

@@ -6,7 +6,6 @@ import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer
import org.springframework.boot.jackson.JsonComponent import org.springframework.boot.jackson.JsonComponent
import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Bean
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder
import java.text.DateFormat import java.text.DateFormat
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.time.LocalDateTime import java.time.LocalDateTime
@@ -41,18 +40,18 @@ class DateFormatConfig {
lateinit var timeZone: TimeZone lateinit var timeZone: TimeZone
@Bean @Bean
fun jackson2ObjectMapperBuilder() = Jackson2ObjectMapperBuilderCustomizer { builder: Jackson2ObjectMapperBuilder -> fun jackson2ObjectMapperBuilder() = Jackson2ObjectMapperBuilderCustomizer {
val tz = timeZone val tz = timeZone
val df: DateFormat = SimpleDateFormat(dateFormat) val df: DateFormat = SimpleDateFormat(dateFormat)
df.timeZone = tz df.timeZone = tz
builder.failOnEmptyBeans(false).failOnUnknownProperties(false) it.failOnEmptyBeans(false).failOnUnknownProperties(false)
.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).dateFormat(df) .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).dateFormat(df)
} }
@Bean @Bean
fun jackson2ObjectMapperBuilderCustomizer() = fun jackson2ObjectMapperBuilderCustomizer() =
Jackson2ObjectMapperBuilderCustomizer { builder: Jackson2ObjectMapperBuilder -> Jackson2ObjectMapperBuilderCustomizer {
builder.serializerByType( it.serializerByType(
LocalDateTime::class.java, LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateFormat)) LocalDateTime::class.java, LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateFormat))
) )
} }

View File

@@ -6,7 +6,6 @@ import org.springframework.security.authentication.AuthenticationManager
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity
import org.springframework.security.config.annotation.web.builders.HttpSecurity import org.springframework.security.config.annotation.web.builders.HttpSecurity
import org.springframework.security.config.annotation.web.configurers.*
import org.springframework.security.config.http.SessionCreationPolicy import org.springframework.security.config.http.SessionCreationPolicy
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
import org.springframework.security.web.SecurityFilterChain import org.springframework.security.web.SecurityFilterChain
@@ -56,15 +55,17 @@ class SecurityConfig(
@Bean @Bean
fun securityFilterChain(httpSecurity: HttpSecurity): SecurityFilterChain = httpSecurity fun securityFilterChain(httpSecurity: HttpSecurity): SecurityFilterChain = httpSecurity
// Disable CSRF // Disable CSRF
.csrf { csrfConfigurer: CsrfConfigurer<HttpSecurity> -> csrfConfigurer.disable() } .csrf {
it.disable()
}
// Do not get SecurityContent by Session // Do not get SecurityContent by Session
.sessionManagement { sessionManagementConfigurer: SessionManagementConfigurer<HttpSecurity?> -> .sessionManagement {
sessionManagementConfigurer.sessionCreationPolicy( it.sessionCreationPolicy(
SessionCreationPolicy.STATELESS SessionCreationPolicy.STATELESS
) )
} }
.authorizeHttpRequests { authorizeHttpRequests: AuthorizeHttpRequestsConfigurer<HttpSecurity>.AuthorizationManagerRequestMatcherRegistry -> .authorizeHttpRequests {
authorizeHttpRequests it
// Allow anonymous access // Allow anonymous access
.requestMatchers( .requestMatchers(
"/error/thrown", "/error/thrown",
@@ -84,19 +85,21 @@ class SecurityConfig(
.anyRequest().authenticated() .anyRequest().authenticated()
} }
.logout { logoutConfigurer: LogoutConfigurer<HttpSecurity> -> logoutConfigurer.disable() } .logout {
it.disable()
}
.exceptionHandling { exceptionHandlingConfigurer: ExceptionHandlingConfigurer<HttpSecurity?> -> .exceptionHandling {
exceptionHandlingConfigurer.authenticationEntryPoint( it.authenticationEntryPoint(
authenticationEntryPointHandler authenticationEntryPointHandler
) )
exceptionHandlingConfigurer.accessDeniedHandler( it.accessDeniedHandler(
accessDeniedHandler accessDeniedHandler
) )
} }
.cors { cors: CorsConfigurer<HttpSecurity?> -> .cors {
cors.configurationSource( it.configurationSource(
corsConfigurationSource() corsConfigurationSource()
) )
} }

View File

@@ -51,7 +51,7 @@ object GroupConverter {
enable = group.enable == 1, enable = group.enable == 1,
createTime = group.createTime, createTime = group.createTime,
updateTime = group.updateTime, updateTime = group.updateTime,
roles = group.roles?.map { RoleConverter.roleToRoleVo(it) } roles = group.roles?.map(RoleConverter::roleToRoleVo)
) )
/** /**
@@ -71,9 +71,7 @@ object GroupConverter {
pages = groupPage.pages, pages = groupPage.pages,
size = groupPage.size, size = groupPage.size,
current = groupPage.current, current = groupPage.current,
records = groupPage.records.map { records = groupPage.records.map(::groupToGroupWithRoleVo)
groupToGroupWithRoleVo(it)
}
) )
/** /**

View File

@@ -21,9 +21,9 @@ object PowerConverter {
* @see PowerSetVo * @see PowerSetVo
*/ */
fun powerSetToPowerSetVo(powerSet: PowerSet) = PowerSetVo( fun powerSetToPowerSetVo(powerSet: PowerSet) = PowerSetVo(
moduleList = powerSet.moduleList?.map { ModuleConverter.moduleToModuleVo(it) }, moduleList = powerSet.moduleList?.map(ModuleConverter::moduleToModuleVo),
menuList = powerSet.menuList?.map { MenuConverter.menuToMenuVo(it) }, menuList = powerSet.menuList?.map(MenuConverter::menuToMenuVo),
funcList = powerSet.funcList?.map { FuncConverter.funcToFuncVo(it) }, funcList = powerSet.funcList?.map(FuncConverter::funcToFuncVo),
operationList = powerSet.operationList?.map { OperationConverter.operationToOperationVo(it) } operationList = powerSet.operationList?.map(OperationConverter::operationToOperationVo)
) )
} }

View File

@@ -51,10 +51,10 @@ object RoleConverter {
enable = role.enable == 1, enable = role.enable == 1,
createTime = role.createTime, createTime = role.createTime,
updateTime = role.updateTime, updateTime = role.updateTime,
modules = role.modules?.map { ModuleConverter.moduleToModuleVo(it) }, modules = role.modules?.map(ModuleConverter::moduleToModuleVo),
menus = role.menus?.map { MenuConverter.menuToMenuVo(it) }, menus = role.menus?.map(MenuConverter::menuToMenuVo),
funcs = role.funcs?.map { FuncConverter.funcToFuncVo(it) }, funcs = role.funcs?.map(FuncConverter::funcToFuncVo),
operations = role.operations?.map { OperationConverter.operationToOperationVo(it) } operations = role.operations?.map(OperationConverter::operationToOperationVo)
) )
/** /**
@@ -74,9 +74,7 @@ object RoleConverter {
pages = rolePage.pages, pages = rolePage.pages,
size = rolePage.size, size = rolePage.size,
current = rolePage.current, current = rolePage.current,
records = rolePage.records.map { records = rolePage.records.map(::roleToRoleWithPowerVo)
roleToRoleWithPowerVo(it)
}
) )
/** /**

View File

@@ -45,21 +45,11 @@ object UserConverter {
lastLoginIp = user.lastLoginIp, lastLoginIp = user.lastLoginIp,
createTime = user.createTime, createTime = user.createTime,
updateTime = user.updateTime, updateTime = user.updateTime,
userInfo = user.userInfo?.let { userInfo = user.userInfo?.let(UserInfoConverter::userInfoToUserInfoVo),
UserInfoConverter.userInfoToUserInfoVo(it) modules = user.modules?.map(ModuleConverter::moduleToModuleVo),
}, menus = user.menus?.map(MenuConverter::menuToMenuVo),
modules = user.modules?.map { funcs = user.funcs?.map(FuncConverter::funcToFuncVo),
ModuleConverter.moduleToModuleVo(it) operations = user.operations?.map(OperationConverter::operationToOperationVo)
},
menus = user.menus?.map {
MenuConverter.menuToMenuVo(it)
},
funcs = user.funcs?.map {
FuncConverter.funcToFuncVo(it)
},
operations = user.operations?.map {
OperationConverter.operationToOperationVo(it)
}
) )
/** /**
@@ -86,15 +76,9 @@ object UserConverter {
lastLoginIp = user.lastLoginIp, lastLoginIp = user.lastLoginIp,
createTime = user.createTime, createTime = user.createTime,
updateTime = user.updateTime, updateTime = user.updateTime,
userInfo = user.userInfo?.let { userInfo = user.userInfo?.let(UserInfoConverter::userInfoToUserInfoVo),
UserInfoConverter.userInfoToUserInfoVo(it) roles = user.roles?.map(RoleConverter::roleToRoleVo),
}, groups = user.groups?.map(GroupConverter::groupToGroupVo)
roles = user.roles?.map {
RoleConverter.roleToRoleVo(it)
},
groups = user.groups?.map {
GroupConverter.groupToGroupVo(it)
}
) )
/** /**
@@ -121,9 +105,7 @@ object UserConverter {
lastLoginIp = user.lastLoginIp, lastLoginIp = user.lastLoginIp,
createTime = user.createTime, createTime = user.createTime,
updateTime = user.updateTime, updateTime = user.updateTime,
userInfo = user.userInfo?.let { userInfo = user.userInfo?.let(UserInfoConverter::userInfoToUserInfoVo)
UserInfoConverter.userInfoToUserInfoVo(it)
}
) )
/** /**
@@ -151,15 +133,9 @@ object UserConverter {
lastLoginIp = user.lastLoginIp, lastLoginIp = user.lastLoginIp,
createTime = user.createTime, createTime = user.createTime,
updateTime = user.updateTime, updateTime = user.updateTime,
userInfo = user.userInfo?.let { userInfo = user.userInfo?.let(UserInfoConverter::userInfoToUserInfoVo),
UserInfoConverter.userInfoToUserInfoVo(it) roles = user.roles?.map(RoleConverter::roleToRoleVo),
}, groups = user.groups?.map(GroupConverter::groupToGroupVo)
roles = user.roles?.map {
RoleConverter.roleToRoleVo(it)
},
groups = user.groups?.map {
GroupConverter.groupToGroupVo(it)
}
) )
/** /**
@@ -232,8 +208,6 @@ object UserConverter {
pages = userPage.pages, pages = userPage.pages,
size = userPage.size, size = userPage.size,
current = userPage.current, current = userPage.current,
records = userPage.records.map { records = userPage.records.map(::userToUserWithRoleInfoVo)
userToUserWithRoleInfoVo(it)
}
) )
} }

View File

@@ -60,6 +60,6 @@ object ToolConverter {
pages = toolPage.pages, pages = toolPage.pages,
size = toolPage.size, size = toolPage.size,
current = toolPage.current, current = toolPage.current,
records = toolPage.records.map(this::toolToToolVo) records = toolPage.records.map(::toolToToolVo)
) )
} }

View File

@@ -45,7 +45,7 @@ class JwtAuthenticationTokenFilter(private val redisUtil: RedisUtil) : OncePerRe
} }
val loginUser = redisUtil.getObject<LoginUser>(redisKeys.first()) val loginUser = redisUtil.getObject<LoginUser>(redisKeys.first())
loginUser ?: let { throw TokenHasExpiredException() } loginUser ?: throw TokenHasExpiredException()
redisUtil.setExpire(redisKeys.first(), SecurityProperties.redisTtl, SecurityProperties.redisTtlUnit) redisUtil.setExpire(redisKeys.first(), SecurityProperties.redisTtl, SecurityProperties.redisTtlUnit)

View File

@@ -59,12 +59,12 @@ class AvatarServiceImpl : IAvatarService {
if (avatarBaseParam == null || avatarBaseParam.colors.isNullOrEmpty()) if (avatarBaseParam == null || avatarBaseParam.colors.isNullOrEmpty())
TriangleAvatar.newAvatarBuilder() TriangleAvatar.newAvatarBuilder()
else TriangleAvatar.newAvatarBuilder( else TriangleAvatar.newAvatarBuilder(
*avatarBaseParam.colors!!.map(this::decodeColor).toTypedArray() *avatarBaseParam.colors!!.map(::decodeColor).toTypedArray()
) )
).apply { ).apply {
avatarBaseParam?.size?.let(this::size) avatarBaseParam?.size?.let(::size)
avatarBaseParam?.margin?.let(this::margin) avatarBaseParam?.margin?.let(::margin)
avatarBaseParam?.padding?.let(this::padding) avatarBaseParam?.padding?.let(::padding)
avatarBaseParam?.background?.let { layers(ColorPaintBackgroundLayer(decodeColor(it))) } avatarBaseParam?.background?.let { layers(ColorPaintBackgroundLayer(decodeColor(it))) }
}.build() }.build()
@@ -79,12 +79,12 @@ class AvatarServiceImpl : IAvatarService {
if (avatarBaseParam == null || avatarBaseParam.colors.isNullOrEmpty()) if (avatarBaseParam == null || avatarBaseParam.colors.isNullOrEmpty())
SquareAvatar.newAvatarBuilder() SquareAvatar.newAvatarBuilder()
else SquareAvatar.newAvatarBuilder( else SquareAvatar.newAvatarBuilder(
*avatarBaseParam.colors!!.map(this::decodeColor).toTypedArray() *avatarBaseParam.colors!!.map(::decodeColor).toTypedArray()
) )
).apply { ).apply {
avatarBaseParam?.size?.let(this::size) avatarBaseParam?.size?.let(::size)
avatarBaseParam?.margin?.let(this::margin) avatarBaseParam?.margin?.let(::margin)
avatarBaseParam?.padding?.let(this::padding) avatarBaseParam?.padding?.let(::padding)
avatarBaseParam?.background?.let { layers(ColorPaintBackgroundLayer(decodeColor(it))) } avatarBaseParam?.background?.let { layers(ColorPaintBackgroundLayer(decodeColor(it))) }
}.build() }.build()
@@ -96,9 +96,9 @@ class AvatarServiceImpl : IAvatarService {
override fun identicon(avatarBaseParam: AvatarBaseParam?): ByteArray { override fun identicon(avatarBaseParam: AvatarBaseParam?): ByteArray {
val avatar = IdenticonAvatar.newAvatarBuilder().apply { val avatar = IdenticonAvatar.newAvatarBuilder().apply {
avatarBaseParam?.size?.let(this::size) avatarBaseParam?.size?.let(::size)
avatarBaseParam?.margin?.let(this::margin) avatarBaseParam?.margin?.let(::margin)
avatarBaseParam?.padding?.let(this::padding) avatarBaseParam?.padding?.let(::padding)
if (avatarBaseParam != null && !avatarBaseParam.colors.isNullOrEmpty()) { if (avatarBaseParam != null && !avatarBaseParam.colors.isNullOrEmpty()) {
color(decodeColor(avatarBaseParam.colors!!.random())) color(decodeColor(avatarBaseParam.colors!!.random()))
} }
@@ -114,9 +114,9 @@ class AvatarServiceImpl : IAvatarService {
override fun github(avatarGitHubParam: AvatarGitHubParam?): ByteArray { override fun github(avatarGitHubParam: AvatarGitHubParam?): ByteArray {
val avatar = (avatarGitHubParam?.let { GitHubAvatar.newAvatarBuilder(it.elementSize, it.precision) } val avatar = (avatarGitHubParam?.let { GitHubAvatar.newAvatarBuilder(it.elementSize, it.precision) }
?: let { GitHubAvatar.newAvatarBuilder(400, 5) }).apply { ?: let { GitHubAvatar.newAvatarBuilder(400, 5) }).apply {
avatarGitHubParam?.size?.let(this::size) avatarGitHubParam?.size?.let(::size)
avatarGitHubParam?.margin?.let(this::margin) avatarGitHubParam?.margin?.let(::margin)
avatarGitHubParam?.padding?.let(this::padding) avatarGitHubParam?.padding?.let(::padding)
if (avatarGitHubParam != null && !avatarGitHubParam.colors.isNullOrEmpty()) { if (avatarGitHubParam != null && !avatarGitHubParam.colors.isNullOrEmpty()) {
color(decodeColor(avatarGitHubParam.colors!!.random())) color(decodeColor(avatarGitHubParam.colors!!.random()))
} }

View File

@@ -152,7 +152,7 @@ class AuthenticationServiceImpl(
verifyCaptcha(forgetParam.captchaCode!!) verifyCaptcha(forgetParam.captchaCode!!)
val user = userService.getUserWithPowerByAccount(forgetParam.email!!) val user = userService.getUserWithPowerByAccount(forgetParam.email!!)
user ?: let { throw UserNotFoundException() } user ?: throw UserNotFoundException()
user.forget?.let { user.forget?.let {
if (LocalDateTime.ofInstant(Instant.ofEpochMilli(it.split("-").first().toLong()), ZoneOffset.UTC) if (LocalDateTime.ofInstant(Instant.ofEpochMilli(it.split("-").first().toLong()), ZoneOffset.UTC)
@@ -210,21 +210,19 @@ class AuthenticationServiceImpl(
@EventLogRecord(EventLog.Event.LOGOUT) @EventLogRecord(EventLog.Event.LOGOUT)
override fun logout(token: String): Boolean { override fun logout(token: String): Boolean {
val loginUser = WebUtil.getLoginUser() ?: let { throw TokenHasExpiredException() } val loginUser = WebUtil.getLoginUser() ?: throw TokenHasExpiredException()
return redisUtil.delObject("${SecurityProperties.jwtIssuer}_login_${loginUser.user.id}:" + token) return redisUtil.delObject("${SecurityProperties.jwtIssuer}_login_${loginUser.user.id}:" + token)
} }
override fun renewToken(token: String): TokenVo { override fun renewToken(token: String): TokenVo {
val loginUser = WebUtil.getLoginUser() ?: let { throw TokenHasExpiredException() } val loginUser = WebUtil.getLoginUser() ?: throw TokenHasExpiredException()
val oldRedisKey = "${SecurityProperties.jwtIssuer}_login_${loginUser.user.id}:" + token val oldRedisKey = "${SecurityProperties.jwtIssuer}_login_${loginUser.user.id}:" + token
redisUtil.delObject(oldRedisKey) redisUtil.delObject(oldRedisKey)
val jwt = JwtUtil.createJwt(WebUtil.getLoginUserId().toString()) val jwt = JwtUtil.createJwt(WebUtil.getLoginUserId().toString())
jwt ?: let { jwt ?: throw RuntimeException("Login failed")
throw RuntimeException("Login failed")
}
val redisKey = "${SecurityProperties.jwtIssuer}_login_${loginUser.user.id}:" + jwt val redisKey = "${SecurityProperties.jwtIssuer}_login_${loginUser.user.id}:" + jwt
redisUtil.setObject( redisUtil.setObject(
@@ -308,9 +306,7 @@ class AuthenticationServiceImpl(
val usernamePasswordAuthenticationToken = val usernamePasswordAuthenticationToken =
UsernamePasswordAuthenticationToken(account, password) UsernamePasswordAuthenticationToken(account, password)
val authentication = authenticationManager.authenticate(usernamePasswordAuthenticationToken) val authentication = authenticationManager.authenticate(usernamePasswordAuthenticationToken)
authentication ?: let { authentication ?: throw RuntimeException("Login failed")
throw RuntimeException("Login failed")
}
val loginUser = authentication.principal as LoginUser val loginUser = authentication.principal as LoginUser
loginUser.user.password = "" loginUser.user.password = ""
@@ -326,9 +322,7 @@ class AuthenticationServiceImpl(
val userId = loginUser.user.id.toString() val userId = loginUser.user.id.toString()
val jwt = JwtUtil.createJwt(userId) val jwt = JwtUtil.createJwt(userId)
jwt ?: let { jwt ?: throw RuntimeException("Login failed")
throw RuntimeException("Login failed")
}
val redisKey = "${SecurityProperties.jwtIssuer}_login_${userId}:" + jwt val redisKey = "${SecurityProperties.jwtIssuer}_login_${userId}:" + jwt
redisUtil.setObject(redisKey, loginUser, SecurityProperties.redisTtl, SecurityProperties.redisTtlUnit) redisUtil.setObject(redisKey, loginUser, SecurityProperties.redisTtl, SecurityProperties.redisTtlUnit)

View File

@@ -68,7 +68,7 @@ class RoleServiceImpl(
@Transactional @Transactional
override fun add(roleAddParam: RoleAddParam): RoleVo { override fun add(roleAddParam: RoleAddParam): RoleVo {
val fullPowerIds = roleAddParam.powerIds?.let(this::getFullPowerIds) val fullPowerIds = roleAddParam.powerIds?.let(::getFullPowerIds)
val role = RoleConverter.roleAddParamToRole(roleAddParam) val role = RoleConverter.roleAddParamToRole(roleAddParam)
if (baseMapper.insert(role) != 1) { if (baseMapper.insert(role) != 1) {
@@ -90,7 +90,7 @@ class RoleServiceImpl(
@Transactional @Transactional
override fun update(roleUpdateParam: RoleUpdateParam): RoleVo { override fun update(roleUpdateParam: RoleUpdateParam): RoleVo {
val fullPowerIds = roleUpdateParam.powerIds?.let(this::getFullPowerIds) val fullPowerIds = roleUpdateParam.powerIds?.let(::getFullPowerIds)
val role = RoleConverter.roleUpdateParamToRole(roleUpdateParam) val role = RoleConverter.roleUpdateParamToRole(roleUpdateParam)

View File

@@ -18,7 +18,7 @@ import top.fatweb.oxygen.api.service.permission.IUserService
class UserDetailsServiceImpl(val userService: IUserService) : UserDetailsService { class UserDetailsServiceImpl(val userService: IUserService) : UserDetailsService {
override fun loadUserByUsername(account: String): UserDetails { override fun loadUserByUsername(account: String): UserDetails {
val user = userService.getUserWithPowerByAccount(account) val user = userService.getUserWithPowerByAccount(account)
user ?: let { throw Exception("Username not found") } user ?: throw Exception("Username not found")
return LoginUser(user) return LoginUser(user)
} }

View File

@@ -68,7 +68,7 @@ class UserServiceImpl(
) : ServiceImpl<UserMapper, User>(), IUserService { ) : ServiceImpl<UserMapper, User>(), IUserService {
override fun getUserWithPowerByAccount(account: String): User? { override fun getUserWithPowerByAccount(account: String): User? {
val user = baseMapper.selectOneWithPowerInfoByAccount(account) val user = baseMapper.selectOneWithPowerInfoByAccount(account)
user ?: let { return null } user ?: return null
if (user.id == 0L) { if (user.id == 0L) {
user.modules = moduleService.list() user.modules = moduleService.list()
@@ -81,7 +81,7 @@ class UserServiceImpl(
} }
override fun getInfo(): UserWithPowerInfoVo = override fun getInfo(): UserWithPowerInfoVo =
WebUtil.getLoginUsername()?.let(this::getUserWithPowerByAccount)?.let(UserConverter::userToUserWithPowerInfoVo) WebUtil.getLoginUsername()?.let(::getUserWithPowerByAccount)?.let(UserConverter::userToUserWithPowerInfoVo)
?: throw UserNotFoundException() ?: throw UserNotFoundException()
override fun getOne(id: Long): UserWithRoleInfoVo = override fun getOne(id: Long): UserWithRoleInfoVo =
@@ -260,9 +260,7 @@ class UserServiceImpl(
} }
userUpdatePasswordParam.id?.let { WebUtil.offlineUser(redisUtil, it) } userUpdatePasswordParam.id?.let { WebUtil.offlineUser(redisUtil, it) }
} ?: let { } ?: throw NoRecordFoundException()
throw NoRecordFoundException()
}
} }
@Transactional @Transactional

View File

@@ -49,7 +49,7 @@ class SensitiveWordServiceImpl : ServiceImpl<SensitiveWordMapper, SensitiveWord>
@Transactional(propagation = Propagation.REQUIRES_NEW) @Transactional(propagation = Propagation.REQUIRES_NEW)
override fun checkSensitiveWord(str: String) { override fun checkSensitiveWord(str: String) {
this.list(KtQueryWrapper(SensitiveWord()).eq(SensitiveWord::enable, 1)).map(SensitiveWord::word).forEach { this.list(KtQueryWrapper(SensitiveWord()).eq(SensitiveWord::enable, 1)).map(SensitiveWord::word).forEach {
it ?: let { return@forEach } it ?: return@forEach
try { try {
if (Regex(it, RegexOption.IGNORE_CASE).matches(str)) { if (Regex(it, RegexOption.IGNORE_CASE).matches(str)) {

View File

@@ -15,7 +15,7 @@ class ApiResponseMappingHandlerMapping : RequestMappingHandlerMapping() {
private fun createCondition(clazz: Class<*>): RequestCondition<ApiVersionCondition>? { private fun createCondition(clazz: Class<*>): RequestCondition<ApiVersionCondition>? {
val apiController = clazz.getAnnotation(ApiController::class.java) val apiController = clazz.getAnnotation(ApiController::class.java)
apiController ?: let { return null } apiController ?: return null
return ApiVersionCondition(apiController.version) return ApiVersionCondition(apiController.version)
} }

View File

@@ -19,7 +19,7 @@ object StrUtil {
* @since 1.0.0 * @since 1.0.0
*/ */
fun upperToUnderLetter(str: String?): String { fun upperToUnderLetter(str: String?): String {
str ?: let { return "" } str ?: return ""
return Regex("[A-Z]").replace(str) { matchResult -> "_${matchResult.value.lowercase()}" } return Regex("[A-Z]").replace(str) { matchResult -> "_${matchResult.value.lowercase()}" }
} }
@@ -33,7 +33,7 @@ object StrUtil {
* @since 1.0.0 * @since 1.0.0
*/ */
fun underToUpperLetter(str: String?): String { fun underToUpperLetter(str: String?): String {
str ?: let { return "" } str ?: return ""
return Regex("_[a-z]").replace(str) { matchResult -> matchResult.value.removePrefix("_").uppercase() } return Regex("_[a-z]").replace(str) { matchResult -> matchResult.value.removePrefix("_").uppercase() }
} }