From c39aebd0cc298f76b998f2bf9a907112c8a30f47 Mon Sep 17 00:00:00 2001 From: HanZiyao <49408466+h56983577@users.noreply.github.com> Date: Tue, 10 Dec 2024 11:56:51 +0800 Subject: [PATCH] Fix serialize bug in create user, and add delete user feature. (#66) * Fix serialize bug in create user, and add delete user feature. * Fix serialize bug in create user, and add delete user feature. --- build.gradle.kts | 7 ++++++- .../buaa/scs/controller/models/CreateUserRequest.kt | 13 +------------ .../src/main/kotlin/cn/edu/buaa/scs/route/Admin.kt | 13 +++++++++---- .../main/kotlin/cn/edu/buaa/scs/service/Admin.kt | 11 +++++++++++ gradle/wrapper/gradle-wrapper.properties | 2 +- 5 files changed, 28 insertions(+), 18 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index f134f64b..56278b4f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,6 +18,11 @@ application { } repositories { + maven(url = "https://maven.aliyun.com/repository/public/") + maven(url = "https://maven.aliyun.com/repository/google/") + maven(url = "https://maven.aliyun.com/repository/gradle-plugin/") + maven(url = "https://maven.aliyun.com/repository/jcenter/") + maven(url = "https://maven.aliyun.com/nexus/content/groups/public/") mavenCentral() - maven(url = "https://jitpack.io") + maven(url = "https://www.jitpack.io") } diff --git a/cloudapi-web/src/main/kotlin/cn/edu/buaa/scs/controller/models/CreateUserRequest.kt b/cloudapi-web/src/main/kotlin/cn/edu/buaa/scs/controller/models/CreateUserRequest.kt index 11aec033..04d6a3ac 100644 --- a/cloudapi-web/src/main/kotlin/cn/edu/buaa/scs/controller/models/CreateUserRequest.kt +++ b/cloudapi-web/src/main/kotlin/cn/edu/buaa/scs/controller/models/CreateUserRequest.kt @@ -25,19 +25,8 @@ data class CreateUserRequest( /* 所在单位 */ val departmentId: kotlin.Int, /* 1 for student, 2 for teacher, 4 for admin */ - val role: CreateUserRequest.Role, + val role: kotlin.Int, /* 姓名 */ val name: kotlin.String? = null ) -{ - /** - * 1 for student, 2 for teacher, 4 for admin - * Values: _1,_2,_4 - */ - enum class Role(val value: kotlin.Int){ - _1(1), - _2(2), - _4(4); - } -} diff --git a/cloudapi-web/src/main/kotlin/cn/edu/buaa/scs/route/Admin.kt b/cloudapi-web/src/main/kotlin/cn/edu/buaa/scs/route/Admin.kt index 3aac6c3f..9025a373 100644 --- a/cloudapi-web/src/main/kotlin/cn/edu/buaa/scs/route/Admin.kt +++ b/cloudapi-web/src/main/kotlin/cn/edu/buaa/scs/route/Admin.kt @@ -1,11 +1,9 @@ package cn.edu.buaa.scs.route import cn.edu.buaa.scs.controller.models.CreateUserRequest -import cn.edu.buaa.scs.model.Authentication +import cn.edu.buaa.scs.controller.models.DeleteAdminUserRequest import cn.edu.buaa.scs.model.UserRole import cn.edu.buaa.scs.service.admin -import cn.edu.buaa.scs.utils.token -import cn.edu.buaa.scs.utils.user import io.ktor.server.application.* import io.ktor.server.request.* import io.ktor.server.response.* @@ -16,11 +14,18 @@ fun Route.adminRoute() { route("/user") { post { val req = call.receive() - val role = UserRole.fromLevel(req.role.value) + val role = UserRole.fromLevel(req.role) val name = req.name val departmentId = req.departmentId call.respond(convertUserModel(call.admin.addUser(req.id, name, role, departmentId))) } + + delete { + val req = call.receive() + val userIds = req.userIds + call.admin.deleteUsers(userIds) + call.respond("OK") + } } } } diff --git a/cloudapi-web/src/main/kotlin/cn/edu/buaa/scs/service/Admin.kt b/cloudapi-web/src/main/kotlin/cn/edu/buaa/scs/service/Admin.kt index 5c85ddcc..b25e9246 100644 --- a/cloudapi-web/src/main/kotlin/cn/edu/buaa/scs/service/Admin.kt +++ b/cloudapi-web/src/main/kotlin/cn/edu/buaa/scs/service/Admin.kt @@ -3,8 +3,13 @@ package cn.edu.buaa.scs.service import cn.edu.buaa.scs.error.AuthorizationException import cn.edu.buaa.scs.model.User import cn.edu.buaa.scs.model.UserRole +import cn.edu.buaa.scs.model.Users +import cn.edu.buaa.scs.model.users import cn.edu.buaa.scs.utils.user import io.ktor.server.application.* +import cn.edu.buaa.scs.storage.mysql +import org.ktorm.dsl.delete +import org.ktorm.dsl.inList val ApplicationCall.admin: AdminService get() = AdminService.getSvc(this) { AdminService(this) } @@ -19,4 +24,10 @@ class AdminService(val call: ApplicationCall) : IService { return User.createNewUnActiveUser(id, name, role, departmentId) } + + fun deleteUsers(userIds: List) { + mysql.delete(Users) { + it.id inList userIds + } + } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 69a97150..dd666fac 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip +distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists