feat(all): 添加了修改用户数据相关结构

This commit is contained in:
wzp 2024-04-10 17:56:11 +08:00
parent 822286ce73
commit f4d3cdd319
9 changed files with 110 additions and 3 deletions

View File

@ -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<Pager<User>> getAllUserInfo(@RequestParam("num") int num, @RequestParam("page") int page){
return service.getAllUserInfo(num, page);
}
@PutMapping("/rename")
@Operation(description = "修改用户名")
@AuthorizationRequired
public BaseResponse<Boolean> changeUsername(@RequestBody UserRenameVo renameVo, @RequestAttribute("user") int userId){
return service.changeUsername(renameVo, userId);
}
@PutMapping("/password")
@Operation(description = "修改密码")
@AuthorizationRequired
public BaseResponse<Boolean> changePassword(@RequestBody UserChangePasswordVo changePasswordVo, @RequestAttribute("user") int userId){
return service.changePassword(changePasswordVo, userId);
}
@PutMapping("/auth")
@Operation(description = "修改用户权限组")
@AuthorizationRequired(requiredPermissionId = 4)
public BaseResponse<Boolean> changeAuth(@RequestBody UserChangeAuthVo userChangeAuthVo){
return service.changeAuth(userChangeAuthVo);
}
}

View File

@ -15,4 +15,8 @@ public interface UserDao {
int getUserAuthId(int id);
long queryTotalUserCount();
List<UserVo> 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);
}

View File

@ -29,4 +29,7 @@ public class BaseResponse<T> {
public static<T> BaseResponse<T> failed(int code, String msg) {
return new BaseResponse<>(code, msg, null);
}
public static<T> BaseResponse<T> failed(int code, String msg, T data) {
return new BaseResponse<>(code, msg, data);
}
}

View File

@ -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) {
}

View File

@ -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) {
}

View File

@ -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;
}

View File

@ -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) { }

View File

@ -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<User> userPager = new Pager<>(totalCount, list);
return BaseResponse.success(userPager);
}
public BaseResponse<Boolean> 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<Boolean> 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<Boolean> changeAuth(UserChangeAuthVo userChangeAuthVo) {
userDao.changeAuth(userChangeAuthVo.id(), userChangeAuthVo.authId());
return BaseResponse.success(true);
}
}

View File

@ -6,6 +6,18 @@
<insert id="addUser" useGeneratedKeys="true" keyProperty="id">
insert into `user`(`name`, `password`, `auth`) values(#{username}, #{password}, #{auth});
</insert>
<update id="changeUsername">
update `user` set `name` = #{name} where `id` = #{id};
</update>
<update id="changePassword">
update `user` set `password` = #{password} where `id` = #{id} and `password` = #{old};
</update>
<update id="changePasswordAdmin">
update `user` set `password` = #{password} where `id` = #{id};
</update>
<update id="changeAuth">
update `user` set `auth` = #{authId} where `id` = #{id};
</update>
<select id="getUser" resultType="org.mmga.clubs.entities.user.UserVo">
select * from `user` where `name` = #{username} and `password` = #{password};
</select>