From db9be40c16447b3968ca7bf28307a8ae79deae62 Mon Sep 17 00:00:00 2001 From: AiKrai Date: Tue, 29 Apr 2025 11:12:00 +0800 Subject: [PATCH] =?UTF-8?q?build:=20=E6=B7=BB=E5=8A=A0=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ build.gradle.kts | 16 +++++++++++++ .../kotlin/com/app/config/HuToolConfig.kt | 2 +- .../kotlin/com/app/config/ResponseAdvisor.kt | 2 +- .../config/exception/ExceptionAdviceHandel.kt | 13 +++++------ .../app/config/exception/GlobalException.kt | 2 +- .../app/config/satoken/SaTokenConfigure.kt | 1 - .../com/app/config/swagger/SwaggerConfig.kt | 4 ++-- .../com/app/controller/AuthorizeController.kt | 2 +- .../com/app/controller/HelloController.kt | 3 +-- .../com/app/controller/UserController.kt | 2 +- .../kotlin/com/app/data/dto/SignInRequest.kt | 4 ++-- src/main/kotlin/com/app/data/model/User.kt | 2 +- .../kotlin/com/app/filter/RequestLogFilter.kt | 23 ++++++++++++------- .../com/app/repository/UserRepository.kt | 3 +-- .../kotlin/com/app/service/UserService.kt | 2 +- .../com/app/service/impl/UserServiceImpl.kt | 9 +++----- src/test/kotlin/com/app/ApplicationTests.kt | 1 - 18 files changed, 55 insertions(+), 38 deletions(-) diff --git a/.gitignore b/.gitignore index 0544e39..48d7a04 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,8 @@ build/ !**/src/test/**/build/ /logs /config +/gradlew +/gradlew.bat ### STS ### .apt_generated diff --git a/build.gradle.kts b/build.gradle.kts index 24423c9..3acdf9b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,7 @@ plugins { kotlin("jvm") version "1.9.25" kotlin("plugin.spring") version "1.9.25" + id("com.diffplug.spotless") version "6.25.0" id("org.springframework.boot") version "3.4.4" id("io.spring.dependency-management") version "1.1.7" id("com.google.devtools.ksp") version "1.9.25-1.0.20" @@ -29,6 +30,21 @@ kotlin { } } +spotless { + kotlin { + ktlint() + .editorConfigOverride( + mapOf( + "ktlint_standard_no-wildcard-imports" to "disabled", + "ktlint_standard_trailing-comma-on-call-site" to "disabled", + "ktlint_standard_trailing-comma-on-declaration-site" to "disabled", + "indent_size" to "2" + ) + ) + target("src/**/*.kt") + } +} + tasks.withType { useJUnitPlatform() } diff --git a/src/main/kotlin/com/app/config/HuToolConfig.kt b/src/main/kotlin/com/app/config/HuToolConfig.kt index 1658d07..4ddf32a 100644 --- a/src/main/kotlin/com/app/config/HuToolConfig.kt +++ b/src/main/kotlin/com/app/config/HuToolConfig.kt @@ -12,4 +12,4 @@ class HuToolConfig { fun snowflake(): Snowflake { return IdUtil.getSnowflake() } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/app/config/ResponseAdvisor.kt b/src/main/kotlin/com/app/config/ResponseAdvisor.kt index f4996a8..7610058 100644 --- a/src/main/kotlin/com/app/config/ResponseAdvisor.kt +++ b/src/main/kotlin/com/app/config/ResponseAdvisor.kt @@ -44,7 +44,7 @@ class ResponseAdvisor( response.headers.contentType = MediaType.APPLICATION_JSON return objectMapper.writeValueAsString(RespBean.success(body)) } - + if (body == null) { return RespBean.success(null) } diff --git a/src/main/kotlin/com/app/config/exception/ExceptionAdviceHandel.kt b/src/main/kotlin/com/app/config/exception/ExceptionAdviceHandel.kt index d43e67b..69925e8 100644 --- a/src/main/kotlin/com/app/config/exception/ExceptionAdviceHandel.kt +++ b/src/main/kotlin/com/app/config/exception/ExceptionAdviceHandel.kt @@ -1,6 +1,5 @@ package com.app.config.exception - import com.app.data.RespBean import jakarta.servlet.http.HttpServletRequest import org.slf4j.LoggerFactory @@ -35,23 +34,23 @@ class ExceptionAdviceHandel { */ private fun throwableAdvice(error: Throwable): RespBean { logger.error("系统发生未处理异常", error) - + // 获取详细错误信息 val printStackTrace = ByteArrayOutputStream() error.printStackTrace(PrintStream(printStackTrace)) - + // 查找第一个应用包下的堆栈信息,用于定位错误 - val stackElement = error.stackTrace.firstOrNull { - it.className.startsWith("com.app") + val stackElement = error.stackTrace.firstOrNull { + it.className.startsWith("com.app") } - + // 格式化错误信息 val errorMsg = if (stackElement != null) { "系统异常: ${error.message ?: "Unknown error"} (位置: ${stackElement.className}:${stackElement.lineNumber})" } else { "系统异常: ${error.message ?: "Unknown error"}" } - + return RespBean.failure(HttpStatus.INTERNAL_SERVER_ERROR.value(), errorMsg) } diff --git a/src/main/kotlin/com/app/config/exception/GlobalException.kt b/src/main/kotlin/com/app/config/exception/GlobalException.kt index bec07e0..5d5b5e6 100644 --- a/src/main/kotlin/com/app/config/exception/GlobalException.kt +++ b/src/main/kotlin/com/app/config/exception/GlobalException.kt @@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.ResponseBody class GlobalException( private val exceptionAdviceHandel: ExceptionAdviceHandel ) { - + // 所有未明确处理的异常将通过exceptionAdviceHandel统一处理 @ExceptionHandler(Throwable::class) fun handleAllExceptions(req: HttpServletRequest, error: Throwable): RespBean<*> { diff --git a/src/main/kotlin/com/app/config/satoken/SaTokenConfigure.kt b/src/main/kotlin/com/app/config/satoken/SaTokenConfigure.kt index 3c790e0..c2134cb 100644 --- a/src/main/kotlin/com/app/config/satoken/SaTokenConfigure.kt +++ b/src/main/kotlin/com/app/config/satoken/SaTokenConfigure.kt @@ -1,6 +1,5 @@ package com.app.config.satoken - import cn.dev33.satoken.context.SaHolder import cn.dev33.satoken.filter.SaServletFilter import cn.dev33.satoken.interceptor.SaInterceptor diff --git a/src/main/kotlin/com/app/config/swagger/SwaggerConfig.kt b/src/main/kotlin/com/app/config/swagger/SwaggerConfig.kt index fab20e2..7056abc 100644 --- a/src/main/kotlin/com/app/config/swagger/SwaggerConfig.kt +++ b/src/main/kotlin/com/app/config/swagger/SwaggerConfig.kt @@ -26,6 +26,7 @@ class SwaggerConfig { } } } + @Bean fun customOpenAPI(): OpenAPI { return OpenAPI() @@ -57,5 +58,4 @@ class SwaggerConfig { // .packagesToScan("com.csrs.web.controller.ai") // .build() // } - -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/app/controller/AuthorizeController.kt b/src/main/kotlin/com/app/controller/AuthorizeController.kt index 6459873..2a13cc1 100644 --- a/src/main/kotlin/com/app/controller/AuthorizeController.kt +++ b/src/main/kotlin/com/app/controller/AuthorizeController.kt @@ -1,4 +1,4 @@ -package com.app.controller; +package com.app.controller import cn.dev33.satoken.stp.StpUtil import com.app.data.dto.SignInRequest diff --git a/src/main/kotlin/com/app/controller/HelloController.kt b/src/main/kotlin/com/app/controller/HelloController.kt index a5a24c9..e39e59a 100644 --- a/src/main/kotlin/com/app/controller/HelloController.kt +++ b/src/main/kotlin/com/app/controller/HelloController.kt @@ -1,6 +1,5 @@ package com.app.controller - import cn.dev33.satoken.annotation.SaIgnore import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping @@ -15,4 +14,4 @@ class HelloController { fun hello(): String { return "Hello, World!" } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/app/controller/UserController.kt b/src/main/kotlin/com/app/controller/UserController.kt index 8862e05..54a1657 100644 --- a/src/main/kotlin/com/app/controller/UserController.kt +++ b/src/main/kotlin/com/app/controller/UserController.kt @@ -26,4 +26,4 @@ class UserController( ): Page { return userService.list(pageNum!!, pageSize!!) } -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/app/data/dto/SignInRequest.kt b/src/main/kotlin/com/app/data/dto/SignInRequest.kt index 24abbfa..0605e7f 100644 --- a/src/main/kotlin/com/app/data/dto/SignInRequest.kt +++ b/src/main/kotlin/com/app/data/dto/SignInRequest.kt @@ -2,9 +2,9 @@ package com.app.data.dto import io.swagger.v3.oas.annotations.media.Schema -data class SignInRequest ( +data class SignInRequest( @Schema(title = "username", description = "账号名称", defaultValue = "") var username: String, @Schema(title = "password", description = "账号密码", defaultValue = "") var password: String -) \ No newline at end of file +) diff --git a/src/main/kotlin/com/app/data/model/User.kt b/src/main/kotlin/com/app/data/model/User.kt index 9952f13..7b18f64 100644 --- a/src/main/kotlin/com/app/data/model/User.kt +++ b/src/main/kotlin/com/app/data/model/User.kt @@ -33,4 +33,4 @@ interface User { val updateBy: String? val updateTime: Timestamp? val remark: String? -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/app/filter/RequestLogFilter.kt b/src/main/kotlin/com/app/filter/RequestLogFilter.kt index 6ef90fb..8448bdc 100644 --- a/src/main/kotlin/com/app/filter/RequestLogFilter.kt +++ b/src/main/kotlin/com/app/filter/RequestLogFilter.kt @@ -56,8 +56,11 @@ class RequestLogFilter( fun logRequestEnd(wrapper: ContentCachingResponseWrapper, startTime: Long) { val time = System.currentTimeMillis() - startTime val status = wrapper.status - val content = if (status != 200) "$status 错误" - else String(wrapper.contentAsByteArray) + val content = if (status != 200) { + "$status 错误" + } else { + String(wrapper.contentAsByteArray) + } log.info("\n>>>>>请求处理耗时:[{}ms] 响应结果:{}", time, content) } @@ -79,25 +82,29 @@ class RequestLogFilter( if (StpUtil.isLogin()) { val id = StpUtil.getLoginId() - log.info(""" + log.info( + """ - >>>>>请求ID:[${reqId}] + >>>>>请求ID:[$reqId] >>>>>请求URL:["${request.servletPath}"](${request.method}) >>>>>远程IP:[${request.remoteAddr}] >>>>>用户名:[username] >>>>>用户ID:$id >>>>>角色:${StpUtil.getRoleList()} >>>>>请求参数列表: [$params] - """.trimIndent()) + """.trimIndent() + ) } else { - log.info(""" + log.info( + """ - >>>>>请求ID:[${reqId}] + >>>>>请求ID:[$reqId] >>>>>请求URL:["${request.servletPath}"](${request.method}) >>>>>远程IP地址:[${request.remoteAddr}] >>>>>身份:未验证 >>>>>请求参数列表: [$params] - """.trimIndent()) + """.trimIndent() + ) } } diff --git a/src/main/kotlin/com/app/repository/UserRepository.kt b/src/main/kotlin/com/app/repository/UserRepository.kt index bc4d4ab..8fc4f39 100644 --- a/src/main/kotlin/com/app/repository/UserRepository.kt +++ b/src/main/kotlin/com/app/repository/UserRepository.kt @@ -8,7 +8,6 @@ import org.babyfish.jimmer.spring.repository.KRepository import org.babyfish.jimmer.sql.kt.ast.expression.eq import org.babyfish.jimmer.sql.kt.ast.expression.`eq?` - interface UserRepository : KRepository { fun findUser( pageIndex: Int = 0, @@ -27,4 +26,4 @@ interface UserRepository : KRepository { where(table.userName eq username) select(table) }.fetchOne() -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/app/service/UserService.kt b/src/main/kotlin/com/app/service/UserService.kt index d30ecf9..ee00374 100644 --- a/src/main/kotlin/com/app/service/UserService.kt +++ b/src/main/kotlin/com/app/service/UserService.kt @@ -10,4 +10,4 @@ interface UserService { pageNum: Int = 0, pageSize: Int = 10 ): Page -} \ No newline at end of file +} diff --git a/src/main/kotlin/com/app/service/impl/UserServiceImpl.kt b/src/main/kotlin/com/app/service/impl/UserServiceImpl.kt index 3a362c4..2e63b8f 100644 --- a/src/main/kotlin/com/app/service/impl/UserServiceImpl.kt +++ b/src/main/kotlin/com/app/service/impl/UserServiceImpl.kt @@ -12,11 +12,8 @@ import org.springframework.stereotype.Service @Service class UserServiceImpl( private val userRepository: UserRepository -): UserService { +) : UserService { override fun signIn(username: String, password: String): String { -// withContext(Dispatchers.IO) { -// -// } val user = userRepository.findByUserName(username) ?: throw Exception("User not found") if (user.password != SecureUtil.sha1(password)) { throw Exception("Invalid password") @@ -25,7 +22,7 @@ class UserServiceImpl( .setExtraData(mapOf("deptId" to user.deptId)) StpUtil.login(user.userId.toString(), parameter) val token = StpUtil.getTokenInfo() - return token.tokenValue; + return token.tokenValue } override fun list( @@ -34,4 +31,4 @@ class UserServiceImpl( ): Page { return userRepository.findUser(pageNum, pageSize) } -} \ No newline at end of file +} diff --git a/src/test/kotlin/com/app/ApplicationTests.kt b/src/test/kotlin/com/app/ApplicationTests.kt index 979c7ea..e39ca5a 100644 --- a/src/test/kotlin/com/app/ApplicationTests.kt +++ b/src/test/kotlin/com/app/ApplicationTests.kt @@ -9,5 +9,4 @@ class ApplicationTests { @Test fun contextLoads() { } - }