diff --git a/src/main/java/org/mmga/clubs/controller/UserController.java b/src/main/java/org/mmga/clubs/controller/UserController.java index d13d68b..2670ed4 100644 --- a/src/main/java/org/mmga/clubs/controller/UserController.java +++ b/src/main/java/org/mmga/clubs/controller/UserController.java @@ -8,9 +8,10 @@ import lombok.extern.slf4j.Slf4j; import org.mmga.clubs.annotations.AuthorizationRequired; import org.mmga.clubs.entities.BaseResponse; import org.mmga.clubs.entities.Pager; -import org.mmga.clubs.entities.user.User; -import org.mmga.clubs.entities.user.UserLoginVo; -import org.mmga.clubs.entities.user.UserRegVo; +import org.mmga.clubs.entities.user.*; +import org.mmga.clubs.entities.user.change.UserChangeAuthVo; +import org.mmga.clubs.entities.user.change.UserChangePasswordVo; +import org.mmga.clubs.entities.user.change.UserRenameVo; import org.mmga.clubs.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -47,4 +48,23 @@ public class UserController { public BaseResponse> getAllUserInfo(@RequestParam("num") int num, @RequestParam("page") int page){ return service.getAllUserInfo(num, page); } + @PutMapping("/rename") + @Operation(description = "修改用户名") + @AuthorizationRequired + public BaseResponse changeUsername(@RequestBody UserRenameVo renameVo, @RequestAttribute("user") int userId){ + return service.changeUsername(renameVo, userId); + } + @PutMapping("/password") + @Operation(description = "修改密码") + @AuthorizationRequired + public BaseResponse changePassword(@RequestBody UserChangePasswordVo changePasswordVo, @RequestAttribute("user") int userId){ + return service.changePassword(changePasswordVo, userId); + } + @PutMapping("/auth") + @Operation(description = "修改用户权限组") + @AuthorizationRequired(requiredPermissionId = 4) + public BaseResponse changeAuth(@RequestBody UserChangeAuthVo userChangeAuthVo){ + return service.changeAuth(userChangeAuthVo); + } + } diff --git a/src/main/java/org/mmga/clubs/dao/UserDao.java b/src/main/java/org/mmga/clubs/dao/UserDao.java index 6fe552f..3b3b79a 100644 --- a/src/main/java/org/mmga/clubs/dao/UserDao.java +++ b/src/main/java/org/mmga/clubs/dao/UserDao.java @@ -15,4 +15,8 @@ public interface UserDao { int getUserAuthId(int id); long queryTotalUserCount(); List getUser(int lastId, int count); + void changeUsername(int id, String name); + int changePassword(int id, String old, String password); + void changePasswordAdmin(int id, String password); + void changeAuth(int id, int authId); } diff --git a/src/main/java/org/mmga/clubs/entities/BaseResponse.java b/src/main/java/org/mmga/clubs/entities/BaseResponse.java index 3ac1589..88b6142 100644 --- a/src/main/java/org/mmga/clubs/entities/BaseResponse.java +++ b/src/main/java/org/mmga/clubs/entities/BaseResponse.java @@ -29,4 +29,7 @@ public class BaseResponse { public static BaseResponse failed(int code, String msg) { return new BaseResponse<>(code, msg, null); } + public static BaseResponse failed(int code, String msg, T data) { + return new BaseResponse<>(code, msg, data); + } } diff --git a/src/main/java/org/mmga/clubs/entities/user/change/UserChangeAuthVo.java b/src/main/java/org/mmga/clubs/entities/user/change/UserChangeAuthVo.java new file mode 100644 index 0000000..9a2a415 --- /dev/null +++ b/src/main/java/org/mmga/clubs/entities/user/change/UserChangeAuthVo.java @@ -0,0 +1,7 @@ +package org.mmga.clubs.entities.user.change; + +import io.swagger.v3.oas.annotations.media.Schema; + +@Schema(description = "用户修改权限组请求体") +public record UserChangeAuthVo(@Schema(description = "被修改的用户ID") int id, @Schema(description = "新的权限组ID") int authId) { +} diff --git a/src/main/java/org/mmga/clubs/entities/user/change/UserChangeAvatarVo.java b/src/main/java/org/mmga/clubs/entities/user/change/UserChangeAvatarVo.java new file mode 100644 index 0000000..ec03e68 --- /dev/null +++ b/src/main/java/org/mmga/clubs/entities/user/change/UserChangeAvatarVo.java @@ -0,0 +1,7 @@ +package org.mmga.clubs.entities.user.change; + +import io.swagger.v3.oas.annotations.media.Schema; + +@Schema(description = "用户修改头像请求体") +public record UserChangeAvatarVo(@Schema(description = "被修改的用户ID") int userId,@Schema(description = "修改头像操作码,可以通过将图片文件上传至") String avatarOperationCode) { +} diff --git a/src/main/java/org/mmga/clubs/entities/user/change/UserChangePasswordVo.java b/src/main/java/org/mmga/clubs/entities/user/change/UserChangePasswordVo.java new file mode 100644 index 0000000..3ee7719 --- /dev/null +++ b/src/main/java/org/mmga/clubs/entities/user/change/UserChangePasswordVo.java @@ -0,0 +1,15 @@ +package org.mmga.clubs.entities.user.change; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "用户修改密码请求体") +@Data +public final class UserChangePasswordVo { + @Schema(description = "被修改的用户ID") + private final int id; + @Schema(description = "修改前的密码MD5值", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + private String oldPassword; + @Schema(description = "修改后的密码MD5值") + private final String newPassword; +} diff --git a/src/main/java/org/mmga/clubs/entities/user/change/UserRenameVo.java b/src/main/java/org/mmga/clubs/entities/user/change/UserRenameVo.java new file mode 100644 index 0000000..6c9b443 --- /dev/null +++ b/src/main/java/org/mmga/clubs/entities/user/change/UserRenameVo.java @@ -0,0 +1,6 @@ +package org.mmga.clubs.entities.user.change; + +import io.swagger.v3.oas.annotations.media.Schema; + +@Schema(description = "用户修改用户名请求体") +public record UserRenameVo(@Schema(description = "用户ID") int id, @Schema(description = "新用户名") String newName) { } diff --git a/src/main/java/org/mmga/clubs/service/UserService.java b/src/main/java/org/mmga/clubs/service/UserService.java index f4302d9..862d02e 100644 --- a/src/main/java/org/mmga/clubs/service/UserService.java +++ b/src/main/java/org/mmga/clubs/service/UserService.java @@ -6,6 +6,9 @@ import org.mmga.clubs.dao.UserDao; import org.mmga.clubs.entities.BaseResponse; import org.mmga.clubs.entities.Pager; import org.mmga.clubs.entities.user.*; +import org.mmga.clubs.entities.user.change.UserChangeAuthVo; +import org.mmga.clubs.entities.user.change.UserChangePasswordVo; +import org.mmga.clubs.entities.user.change.UserRenameVo; import org.mmga.clubs.utils.JwtUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -85,4 +88,34 @@ public class UserService { Pager userPager = new Pager<>(totalCount, list); return BaseResponse.success(userPager); } + + public BaseResponse changeUsername(UserRenameVo renameVo, int userId) { + int changeUserId = renameVo.id(); + if (changeUserId == userId || userHasPermission(userId, 4)) { + userDao.changeUsername(changeUserId, renameVo.newName()); + return BaseResponse.success(true); + } + return BaseResponse.failed(401, "权限不足,修改失败!", false); + } + public BaseResponse changePassword(UserChangePasswordVo changePasswordVo, int userId){ + int changeUserId = changePasswordVo.getId(); + String oldPassword = changePasswordVo.getOldPassword(); + String newPassword = changePasswordVo.getNewPassword(); + if (changeUserId == userId) { + if (userDao.changePassword(changeUserId, oldPassword, newPassword) > 0){ + return BaseResponse.success(true); + } + return BaseResponse.failed(404,"旧密码错误!",false); + } + if (userHasPermission(userId, 4)){ + userDao.changePasswordAdmin(changeUserId, newPassword); + return BaseResponse.success(true); + } + return BaseResponse.failed(401, "权限不足,修改失败!", false); + } + + public BaseResponse changeAuth(UserChangeAuthVo userChangeAuthVo) { + userDao.changeAuth(userChangeAuthVo.id(), userChangeAuthVo.authId()); + return BaseResponse.success(true); + } } diff --git a/src/main/resources/org/mmga/clubs/dao/UserDao.xml b/src/main/resources/org/mmga/clubs/dao/UserDao.xml index b21b3c9..e5cbe29 100644 --- a/src/main/resources/org/mmga/clubs/dao/UserDao.xml +++ b/src/main/resources/org/mmga/clubs/dao/UserDao.xml @@ -6,6 +6,18 @@ insert into `user`(`name`, `password`, `auth`) values(#{username}, #{password}, #{auth}); + + update `user` set `name` = #{name} where `id` = #{id}; + + + update `user` set `password` = #{password} where `id` = #{id} and `password` = #{old}; + + + update `user` set `password` = #{password} where `id` = #{id}; + + + update `user` set `auth` = #{authId} where `id` = #{id}; +