From 407693668006080dec9ae095fceabb0983461b22 Mon Sep 17 00:00:00 2001 From: pan <1029559041@qq.com> Date: Mon, 24 May 2021 23:25:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=80=80=E5=87=BA=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=8E=A5=E5=8F=A3=20=E8=A7=A3=E5=86=B3=E9=A6=96?= =?UTF-8?q?=E6=AC=A1=E7=99=BB=E9=99=86=E5=8D=A1=E9=A1=BF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/AccountController.kt | 16 +++++++++++++--- src/AccountService.kt | 26 ++++++++++++++++++-------- src/MySQL.kt | 1 + src/TestController.kt | 5 +---- src/Util.kt | 1 + src/Vo.kt | 3 +++ 6 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/AccountController.kt b/src/AccountController.kt index 1cedbe4..62523ac 100644 --- a/src/AccountController.kt +++ b/src/AccountController.kt @@ -1,12 +1,12 @@ package com.gyf.csams import io.ktor.application.* -import io.ktor.features.* import io.ktor.request.* import io.ktor.response.* import io.ktor.routing.* +import org.slf4j.LoggerFactory - +private val logger = LoggerFactory.getLogger(Application::class.java) fun Application.AccountController() { routing { @@ -45,7 +45,9 @@ fun Application.AccountController() { route(path = "/login"){ post{ val userLoginVo= call.receive() - val tokenResDto:TokenResDto=AccountService.login(userLoginVo,call.request.origin.remoteHost) + logger.info("执行登陆") + val tokenResDto:TokenResDto=AccountService.login(userLoginVo,call.request.host()) + logger.info("登录请求处理完毕") call.respond(ApiResponse(message = if(tokenResDto.token!=null) "登陆成功" else "账号或密码错误!!!",body = tokenResDto)) } post(path = "/token"){ @@ -54,6 +56,14 @@ fun Application.AccountController() { call.respond(ApiResponse(message = if(isValid) "令牌合法" else "令牌不合法",body = isValid)) } } + + post(path = "/logout"){ + logger.info("退出登录") + val userLogoutVo=call.receive() + logger.info("$userLogoutVo") + val flag=AccountService.logout(userLogoutVo.studentId) + call.respond(ApiResponse(message = if(flag) "退出成功" else "退出失败",body = flag)) + } } } } diff --git a/src/AccountService.kt b/src/AccountService.kt index dc9293f..99ddcde 100644 --- a/src/AccountService.kt +++ b/src/AccountService.kt @@ -1,14 +1,12 @@ package com.gyf.csams +import org.jetbrains.exposed.sql.deleteWhere import org.jetbrains.exposed.sql.transactions.transaction import org.slf4j.LoggerFactory import java.time.ZoneOffset -class AccountService { - - - companion object { +object AccountService { private val logger = LoggerFactory.getLogger(AccountService::class.java) /** * 检查学号是否已注册,true=已注册 @@ -48,8 +46,6 @@ class AccountService { return transaction { val user=User.find { Users.studentId eq userLoginVo.studentId }.firstOrNull() - - when { user==null -> { logger.warn("学号:${userLoginVo.studentId}不存在") @@ -81,11 +77,25 @@ class AccountService { */ fun validToken(tokenVo: TokenVo):Boolean{ return transaction { - return@transaction !UserToken.find { + !UserToken.find { UserTokens.studentId eq tokenVo.studentId UserTokens.token eq tokenVo.token }.empty() } } - } + + fun logout(studentId:String):Boolean{ + return transaction { + UserTokens.deleteWhere { UserTokens.studentId eq studentId }>0 + } + } + + fun test(){ + logger.info("开始测试") + transaction { + logger.info("查询到个${User.count()}用户") + } + logger.info("结束测试") + } + } \ No newline at end of file diff --git a/src/MySQL.kt b/src/MySQL.kt index 04bca2c..d3d0e00 100644 --- a/src/MySQL.kt +++ b/src/MySQL.kt @@ -43,5 +43,6 @@ fun initTable(){ val tableList= arrayOf(Users,UserTokens) SchemaUtils.createMissingTablesAndColumns(*tableList) updateComment(*tableList) + } } \ No newline at end of file diff --git a/src/TestController.kt b/src/TestController.kt index 1743999..0b97d70 100644 --- a/src/TestController.kt +++ b/src/TestController.kt @@ -3,7 +3,6 @@ package com.gyf.csams import io.ktor.application.* import io.ktor.response.* import io.ktor.routing.* -import org.jetbrains.exposed.sql.transactions.transaction import org.slf4j.LoggerFactory private val logger = LoggerFactory.getLogger(Application::class.java) @@ -11,9 +10,7 @@ private val logger = LoggerFactory.getLogger(Application::class.java) fun Application.TestController(){ routing { get("$ApiPathPrefix/test"){ - transaction { - logger.info("查询到个${User.count()}用户") - } + AccountService.test() call.respond(ApiResponse(message = "成功连接服务端",body=true)) } } diff --git a/src/Util.kt b/src/Util.kt index f6ffa00..19f538d 100644 --- a/src/Util.kt +++ b/src/Util.kt @@ -27,6 +27,7 @@ fun String.md5(): String { @Target(AnnotationTarget.CLASS,AnnotationTarget.FIELD) annotation class TableComment(val comment:String) + /** * 表、表字段添加注释 * diff --git a/src/Vo.kt b/src/Vo.kt index f84baa7..1be5dc5 100644 --- a/src/Vo.kt +++ b/src/Vo.kt @@ -35,6 +35,9 @@ data class UserVo(val studentId:String,val name:String) */ data class UserLoginVo(val studentId: String,val password: String,val device: String) +@Serializable +data class UserLogoutVo(val studentId:String) + data class UserResDto(val password:String) data class Token(val token:String,val createTime:Long,val studentId:String)