diff --git a/dao/src/main/java/cn/bunny/dao/dto/system/user/AdminUserAddDto.java b/dao/src/main/java/cn/bunny/dao/dto/system/user/AdminUserAddDto.java index 332895f..75df733 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/system/user/AdminUserAddDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/system/user/AdminUserAddDto.java @@ -2,6 +2,7 @@ package cn.bunny.dao.dto.system.user; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -29,10 +30,6 @@ public class AdminUserAddDto { @Schema(name = "phone", title = "手机号") private String phone; - @Schema(name = "password", title = "密码") - @NotBlank(message = "密码不能为空") - private String password; - @Schema(name = "avatar", title = "头像") private String avatar; @@ -42,6 +39,10 @@ public class AdminUserAddDto { @Schema(name = "summary", title = "个人描述") private String summary; + @Schema(name = "deptId", title = "部门") + @NotNull(message = "部门不能为空") + private Long deptId; + @Schema(name = "status", title = "状态", description = "1:禁用 0:正常") private Boolean status = false; diff --git a/dao/src/main/java/cn/bunny/dao/dto/system/user/AdminUserUpdateDto.java b/dao/src/main/java/cn/bunny/dao/dto/system/user/AdminUserUpdateDto.java index e2a112b..ce2040b 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/system/user/AdminUserUpdateDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/system/user/AdminUserUpdateDto.java @@ -40,6 +40,10 @@ public class AdminUserUpdateDto { @Schema(name = "summary", title = "个人描述") private String summary; + @Schema(name = "deptId", title = "部门") + @NotNull(message = "部门不能为空") + private Long deptId; + @Schema(name = "status", title = "状态", description = "1:禁用 0:正常") private Boolean status; diff --git a/dao/src/main/java/cn/bunny/dao/entity/system/AdminUserAndDept.java b/dao/src/main/java/cn/bunny/dao/entity/system/AdminUserAndDept.java new file mode 100644 index 0000000..5044b89 --- /dev/null +++ b/dao/src/main/java/cn/bunny/dao/entity/system/AdminUserAndDept.java @@ -0,0 +1,60 @@ +package cn.bunny.dao.entity.system; + +import cn.bunny.dao.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 管理员用户信息 + *

+ * + * @author Bunny + * @since 2024-06-26 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +@TableName("sys_user") +@Schema(name = "AdminUserAndDept对象", title = "用户信息和部门Id", description = "用户信息和部门Id") +public class AdminUserAndDept extends BaseEntity { + + @Schema(name = "username", title = "用户名") + private String username; + + @Schema(name = "nickName", title = "昵称") + private String nickName; + + @Schema(name = "email", title = "邮箱") + private String email; + + @Schema(name = "phone", title = "手机号") + private String phone; + + @Schema(name = "password", title = "密码") + private String password; + + @Schema(name = "avatar", title = "头像") + private String avatar; + + @Schema(name = "sex", title = "性别", description = "0:女 1:男") + private Byte sex; + + @Schema(name = "summary", title = "个人描述") + private String summary; + + @Schema(name = "lastLoginIp", title = "最后登录IP") + private String lastLoginIp; + + @Schema(name = "lastLoginIpAddress", title = "最后登录ip归属地") + private String lastLoginIpAddress; + + @Schema(name = "status", title = "状态", description = "1:禁用 0:正常") + private Boolean status; + + @Schema(name = "deptId", title = "部门") + private Long deptId; +} \ No newline at end of file diff --git a/dao/src/main/java/cn/bunny/dao/entity/system/UserDept.java b/dao/src/main/java/cn/bunny/dao/entity/system/UserDept.java index 0e6f077..33f497b 100644 --- a/dao/src/main/java/cn/bunny/dao/entity/system/UserDept.java +++ b/dao/src/main/java/cn/bunny/dao/entity/system/UserDept.java @@ -23,9 +23,9 @@ import lombok.experimental.Accessors; public class UserDept extends BaseEntity { @Schema(name = "userId", title = "用户id") - private String userId; + private Long userId; @Schema(name = "deptId", title = "部门id") - private String deptId; + private Long deptId; } diff --git a/dao/src/main/java/cn/bunny/dao/vo/system/user/AdminUserVo.java b/dao/src/main/java/cn/bunny/dao/vo/system/user/AdminUserVo.java index 5a0dedc..81c3e9e 100644 --- a/dao/src/main/java/cn/bunny/dao/vo/system/user/AdminUserVo.java +++ b/dao/src/main/java/cn/bunny/dao/vo/system/user/AdminUserVo.java @@ -1,6 +1,9 @@ package cn.bunny.dao.vo.system.user; import cn.bunny.dao.vo.BaseVo; +import com.alibaba.fastjson2.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -38,6 +41,11 @@ public class AdminUserVo extends BaseVo { @Schema(name = "lastLoginIpAddress", title = "最后登录ip归属地") private String lastLoginIpAddress; + @Schema(name = "deptId", title = "部门") + @JsonFormat(shape = JsonFormat.Shape.STRING) + @JSONField(serializeUsing = ToStringSerializer.class) + private Long deptId; + @Schema(name = "status", title = "状态", description = "1:禁用 0:正常") private Boolean status; } \ No newline at end of file diff --git a/service/src/main/java/cn/bunny/services/controller/UserController.java b/service/src/main/java/cn/bunny/services/controller/UserController.java index ddc42ef..08545f0 100644 --- a/service/src/main/java/cn/bunny/services/controller/UserController.java +++ b/service/src/main/java/cn/bunny/services/controller/UserController.java @@ -91,7 +91,6 @@ public class UserController { return Result.success(ResultCodeEnum.LOGOUT_SUCCESS); } - @Operation(summary = "管理员修改管理员用户密码", description = "管理员修改管理员用户密码") @PutMapping("updateUserPasswordByAdmin") public Result updateUserPasswordByAdmin(@Valid @RequestBody UserUpdateWithPasswordDto dto) { diff --git a/service/src/main/java/cn/bunny/services/mapper/UserMapper.java b/service/src/main/java/cn/bunny/services/mapper/UserMapper.java index d54a0e9..44d98e4 100644 --- a/service/src/main/java/cn/bunny/services/mapper/UserMapper.java +++ b/service/src/main/java/cn/bunny/services/mapper/UserMapper.java @@ -2,6 +2,7 @@ package cn.bunny.services.mapper; import cn.bunny.dao.dto.system.user.AdminUserDto; import cn.bunny.dao.entity.system.AdminUser; +import cn.bunny.dao.entity.system.AdminUserAndDept; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -28,7 +29,7 @@ public interface UserMapper extends BaseMapper { * @param dto 用户信息查询表单 * @return 用户信息分页结果 */ - IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") AdminUserDto dto); + IPage selectListByPage(@Param("page") Page pageParams, @Param("dto") AdminUserDto dto); /** * 物理删除用户信息 diff --git a/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java index 0d63594..b9896a7 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java @@ -7,7 +7,9 @@ import cn.bunny.common.service.utils.minio.MinioUtil; import cn.bunny.dao.dto.system.files.FileUploadDto; import cn.bunny.dao.dto.system.user.*; import cn.bunny.dao.entity.system.AdminUser; +import cn.bunny.dao.entity.system.AdminUserAndDept; import cn.bunny.dao.entity.system.EmailUsers; +import cn.bunny.dao.entity.system.UserDept; import cn.bunny.dao.pojo.common.EmailSendInit; import cn.bunny.dao.pojo.constant.MinioConstant; import cn.bunny.dao.pojo.constant.RedisUserConstant; @@ -254,7 +256,7 @@ public class UserServiceImpl extends ServiceImpl implemen @Override public PageResult getAdminUserList(Page pageParams, AdminUserDto dto) { // 分页查询菜单图标 - IPage page = baseMapper.selectListByPage(pageParams, dto); + IPage page = baseMapper.selectListByPage(pageParams, dto); List voList = page.getRecords().stream().map(AdminUser -> { // 如果存在用户头像,则设置用户头像 @@ -284,20 +286,20 @@ public class UserServiceImpl extends ServiceImpl implemen */ @Override public void addAdminUser(@Valid AdminUserAddDto dto) { - // 对密码加密 - String password = dto.getPassword(); - // 保存数据 AdminUser adminUser = new AdminUser(); BeanUtils.copyProperties(dto, adminUser); - - // 对密码加密 - if (StringUtils.hasText(password)) { - password = DigestUtils.md5DigestAsHex(password.getBytes()); - adminUser.setPassword(password); - } - save(adminUser); + + // 插入用户部门关系表 + Long userId = adminUser.getId(); + Long deptId = dto.getDeptId(); + UserDept userDept = new UserDept(); + userDept.setDeptId(deptId); + userDept.setUserId(userId); + + // 插入分配后的用户内容 + userDeptMapper.insert(userDept); } /** @@ -307,13 +309,29 @@ public class UserServiceImpl extends ServiceImpl implemen */ @Override public void updateAdminUser(AdminUserUpdateDto dto) { + // 部门Id + Long deptId = dto.getDeptId(); + Long userId = dto.getId(); + // 判断更新内容是否存在 - List adminUserList = list(Wrappers.lambdaQuery().eq(AdminUser::getId, dto.getId())); + List adminUserList = list(Wrappers.lambdaQuery().eq(AdminUser::getId, userId)); if (adminUserList.isEmpty()) throw new BunnyException(ResultCodeEnum.DATA_NOT_EXIST); + // 更新用户 AdminUser adminUser = new AdminUser(); BeanUtils.copyProperties(dto, adminUser); updateById(adminUser); + + // 更新用户部门 + UserDept userDept = new UserDept(); + userDept.setDeptId(deptId); + userDept.setUserId(userId); + + // 删除这个用户部门关系下所有 + userDeptMapper.deleteBatchIdsByUserIdWithPhysics(List.of(userId)); + + // 插入分配后的用户内容 + userDeptMapper.insert(userDept); } /** diff --git a/service/src/main/resources/mapper/UserMapper.xml b/service/src/main/resources/mapper/UserMapper.xml index 739415e..dd966a5 100644 --- a/service/src/main/resources/mapper/UserMapper.xml +++ b/service/src/main/resources/mapper/UserMapper.xml @@ -16,6 +16,7 @@ + @@ -25,14 +26,14 @@ - id, username, nick_name, email, phone, password, avatar, sex, summary, last_login_ip, last_login_ip_address, status, create_user, create_time, update_time, update_user, is_deleted + id, username, nick_name, email, phone, password, avatar, sex, summary, last_login_ip, last_login_ip_address, status, dept_Id, create_user, create_time, update_time, update_user, is_deleted - select - - from sys_user + user.*,user_dept.dept_id + from sys_user user left join sys_user_dept user_dept on user.id = user_dept.user_id username like CONCAT('%',#{dto.username},'%') @@ -56,6 +57,7 @@ status = #{dto.status} + diff --git a/service/src/test/java/cn/bunny/service/Solution.java b/service/src/test/java/cn/bunny/service/Solution.java new file mode 100644 index 0000000..f8b3e09 --- /dev/null +++ b/service/src/test/java/cn/bunny/service/Solution.java @@ -0,0 +1,25 @@ +package cn.bunny.service; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +class Solution { + public List> groupAnagrams(String[] strs) { + HashMap> hashMap = new HashMap<>(); + + for (String str : strs) { + char[] charArray = str.toCharArray(); + Arrays.sort(charArray); + + String value = String.valueOf(charArray); + if (hashMap.containsKey(value)) { + hashMap.get(value).add(str); + } else { + hashMap.put(value, List.of(str)); + } + } + + return hashMap.values().stream().toList(); + } +} \ No newline at end of file