diff --git a/src/main/java/com/xuxd/kafka/console/beans/vo/SysUserVO.java b/src/main/java/com/xuxd/kafka/console/beans/vo/SysUserVO.java new file mode 100644 index 0000000..91c7c2c --- /dev/null +++ b/src/main/java/com/xuxd/kafka/console/beans/vo/SysUserVO.java @@ -0,0 +1,29 @@ +package com.xuxd.kafka.console.beans.vo; + +import com.xuxd.kafka.console.beans.dos.SysUserDO; +import lombok.Data; + +/** + * @author: xuxd + * @date: 2023/5/6 13:06 + **/ +@Data +public class SysUserVO { + + private Long id; + + private String username; + + private String password; + + private String roleIds; + + public static SysUserVO from(SysUserDO userDO) { + SysUserVO userVO = new SysUserVO(); + userVO.setId(userDO.getId()); + userVO.setUsername(userDO.getUsername()); + userVO.setRoleIds(userDO.getRoleIds()); + userVO.setPassword(userDO.getPassword()); + return userVO; + } +} diff --git a/src/main/java/com/xuxd/kafka/console/controller/UserManageController.java b/src/main/java/com/xuxd/kafka/console/controller/UserManageController.java index c0b9fd2..aabd594 100644 --- a/src/main/java/com/xuxd/kafka/console/controller/UserManageController.java +++ b/src/main/java/com/xuxd/kafka/console/controller/UserManageController.java @@ -21,10 +21,10 @@ public class UserManageController { this.userManageService = userManageService; } - @ControllerLog("新增用户") + @ControllerLog("新增/更新用户") @PostMapping("/user") - public Object addUser(@RequestBody SysUserDTO userDTO) { - return userManageService.addUser(userDTO); + public Object addOrUpdateUser(@RequestBody SysUserDTO userDTO) { + return userManageService.addOrUpdateUser(userDTO); } @ControllerLog("新增/更新角色") @@ -55,8 +55,20 @@ public class UserManageController { return userManageService.selectPermission(); } + @GetMapping("/user") + public Object selectUser() { + return userManageService.selectUser(); + } + + @ControllerLog("删除角色") @DeleteMapping("/role") public Object deleteRole(@RequestParam Long id) { return userManageService.deleteRole(id); } + + @ControllerLog("删除用户") + @DeleteMapping("/user") + public Object deleteUser(@RequestParam Long id) { + return userManageService.deleteUser(id); + } } diff --git a/src/main/java/com/xuxd/kafka/console/service/UserManageService.java b/src/main/java/com/xuxd/kafka/console/service/UserManageService.java index 009794a..9b41083 100644 --- a/src/main/java/com/xuxd/kafka/console/service/UserManageService.java +++ b/src/main/java/com/xuxd/kafka/console/service/UserManageService.java @@ -20,15 +20,19 @@ public interface UserManageService { ResponseData addOrUdpateRole(SysRoleDTO roleDTO); - ResponseData addUser(SysUserDTO userDTO); + ResponseData addOrUpdateUser(SysUserDTO userDTO); ResponseData selectRole(); ResponseData selectPermission(); + ResponseData selectUser(); + ResponseData updateUser(SysUserDTO userDTO); ResponseData updateRole(SysRoleDTO roleDTO); ResponseData deleteRole(Long id); + + ResponseData deleteUser(Long id); } diff --git a/src/main/java/com/xuxd/kafka/console/service/impl/UserManageServiceImpl.java b/src/main/java/com/xuxd/kafka/console/service/impl/UserManageServiceImpl.java index 1bdb7cc..80fb316 100644 --- a/src/main/java/com/xuxd/kafka/console/service/impl/UserManageServiceImpl.java +++ b/src/main/java/com/xuxd/kafka/console/service/impl/UserManageServiceImpl.java @@ -4,15 +4,18 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.xuxd.kafka.console.beans.ResponseData; import com.xuxd.kafka.console.beans.dos.SysPermissionDO; import com.xuxd.kafka.console.beans.dos.SysRoleDO; +import com.xuxd.kafka.console.beans.dos.SysUserDO; import com.xuxd.kafka.console.beans.dto.SysPermissionDTO; import com.xuxd.kafka.console.beans.dto.SysRoleDTO; import com.xuxd.kafka.console.beans.dto.SysUserDTO; import com.xuxd.kafka.console.beans.vo.SysPermissionVO; import com.xuxd.kafka.console.beans.vo.SysRoleVO; +import com.xuxd.kafka.console.beans.vo.SysUserVO; import com.xuxd.kafka.console.dao.SysPermissionMapper; import com.xuxd.kafka.console.dao.SysRoleMapper; import com.xuxd.kafka.console.dao.SysUserMapper; import com.xuxd.kafka.console.service.UserManageService; +import com.xuxd.kafka.console.utils.UUIDStrUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.ObjectProvider; import org.springframework.stereotype.Service; @@ -60,8 +63,26 @@ public class UserManageServiceImpl implements UserManageService { } @Override - public ResponseData addUser(SysUserDTO userDTO) { - userMapper.insert(userDTO.toDO()); + public ResponseData addOrUpdateUser(SysUserDTO userDTO) { + if (userDTO.getId() == null) { + SysUserDO userDO = userDTO.toDO(); + userDO.setSalt(UUIDStrUtil.random()); + userDO.setPassword(UUIDStrUtil.generate(userDTO.getPassword(), userDO.getSalt())); + userMapper.insert(userDTO.toDO()); + } else { + SysUserDO userDO = userMapper.selectById(userDTO.getId()); + if (userDO == null) { + log.error("查不到用户: {}", userDTO.getId()); + return ResponseData.create().failed("Unknown User."); + } + // 判断是否更新密码 + String oldPass = UUIDStrUtil.generate(userDO.getPassword(), userDO.getSalt()); + if (!userDTO.getPassword().equals(oldPass)) { + userDO.setSalt(UUIDStrUtil.random()); + userDO.setPassword(UUIDStrUtil.generate(userDTO.getPassword(), userDO.getSalt())); + } + userMapper.updateById(userDO); + } return ResponseData.create().success(); } @@ -126,6 +147,13 @@ public class UserManageServiceImpl implements UserManageService { return ResponseData.create().data(vos).success(); } + @Override + public ResponseData selectUser() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + List userDOS = userMapper.selectList(queryWrapper); + return ResponseData.create().data(userDOS.stream().map(SysUserVO::from).collect(Collectors.toList())).success(); + } + @Override public ResponseData updateUser(SysUserDTO userDTO) { userMapper.updateById(userDTO.toDO()); @@ -143,4 +171,10 @@ public class UserManageServiceImpl implements UserManageService { roleMapper.deleteById(id); return ResponseData.create().success(); } + + @Override + public ResponseData deleteUser(Long id) { + userMapper.deleteById(id); + return ResponseData.create().success(); + } } diff --git a/src/main/java/com/xuxd/kafka/console/utils/UUIDStrUtil.java b/src/main/java/com/xuxd/kafka/console/utils/UUIDStrUtil.java new file mode 100644 index 0000000..d07cdbb --- /dev/null +++ b/src/main/java/com/xuxd/kafka/console/utils/UUIDStrUtil.java @@ -0,0 +1,22 @@ +package com.xuxd.kafka.console.utils; + +import java.util.UUID; + +/** + * @author: xuxd + * @date: 2023/5/6 13:30 + **/ +public class UUIDStrUtil { + + public static String random() { + return UUID.randomUUID().toString(); + } + + public static String generate(String ... strs) { + StringBuilder sb = new StringBuilder(); + for (String str : strs) { + sb.append(str); + } + return UUID.nameUUIDFromBytes(sb.toString().getBytes()).toString(); + } +} diff --git a/ui/src/utils/api.js b/ui/src/utils/api.js index cfac0a9..89b3c46 100644 --- a/ui/src/utils/api.js +++ b/ui/src/utils/api.js @@ -330,4 +330,16 @@ export const UserManageApi = { url: "/sys/user/manage/role", method: "delete", }, + getUsers: { + url: "/sys/user/manage/user", + method: "get", + }, + addOrUpdateUser: { + url: "/sys/user/manage/user", + method: "post", + }, + deleteUser: { + url: "/sys/user/manage/user", + method: "delete", + }, }; \ No newline at end of file diff --git a/ui/src/views/user/CreateUser.vue b/ui/src/views/user/CreateUser.vue new file mode 100644 index 0000000..6346c2f --- /dev/null +++ b/ui/src/views/user/CreateUser.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/ui/src/views/user/Role.vue b/ui/src/views/user/Role.vue index 4abda75..78a9b0a 100644 --- a/ui/src/views/user/Role.vue +++ b/ui/src/views/user/Role.vue @@ -24,7 +24,7 @@ title="确定删除角色?" ok-text="确认" cancel-text="取消" - @confirm="deleteRole(item.id)" + @confirm="deleteRole(item)" > @@ -35,7 +35,7 @@ - 新增角色 + 新增角色 @@ -212,16 +212,23 @@ export default { this.selectedPermissions.push(menu); }); }, - deleteRole(id) { + deleteRole(role) { + if (role.adding) { + this.roles.pop(); + return; + } this.loading = true; request({ - url: UserManageApi.deleteRole.url + "?id=" + id, + url: UserManageApi.deleteRole.url + "?id=" + role.id, method: UserManageApi.deleteRole.method, }).then((res) => { this.loading = false; if (res.code == 0) { this.$message.success(res.msg); this.getRoles(); + if (role.id == this.selectedRole.id) { + this.selectedRole = {}; + } } else { notification.error({ message: "error", @@ -230,6 +237,15 @@ export default { } }); }, + addRole() { + const role = { + roleName: "角色名称", + description: "角色描述", + adding: true, + }; + this.roles.push(role); + this.selected(role); + }, onSave() { this.form.validateFields((err, values) => { if (!err) { diff --git a/ui/src/views/user/User.vue b/ui/src/views/user/User.vue new file mode 100644 index 0000000..9000cf0 --- /dev/null +++ b/ui/src/views/user/User.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/ui/src/views/user/UserManage.vue b/ui/src/views/user/UserManage.vue index 0e2f501..8fd7b63 100644 --- a/ui/src/views/user/UserManage.vue +++ b/ui/src/views/user/UserManage.vue @@ -2,7 +2,9 @@
- + + + @@ -18,9 +20,10 @@