diff --git a/db/mysql.sql b/db/mysql.sql index ffebc12..a6d8bfc 100644 --- a/db/mysql.sql +++ b/db/mysql.sql @@ -237,7 +237,7 @@ INSERT INTO sys_menu (id, pid, name, url, authority, type, open_style, icon, sor INSERT INTO sys_menu (id, pid, name, url, authority, type, open_style, icon, sort, version, deleted, creator, create_time, updater, update_time) VALUES (23, 12, '角色管理', 'sys/role/index', '', 0, 0, 'icon-team', 3, 0, 0, 10000, now(), 10000, now()); INSERT INTO sys_menu (id, pid, name, url, authority, type, open_style, icon, sort, version, deleted, creator, create_time, updater, update_time) VALUES (24, 23, '查询', '', 'sys:role:page', 1, 0, '', 0, 0, 0, 10000, now(), 10000, now()); INSERT INTO sys_menu (id, pid, name, url, authority, type, open_style, icon, sort, version, deleted, creator, create_time, updater, update_time) VALUES (25, 23, '新增', '', 'sys:role:save,sys:role:menu,sys:org:list', 1, 0, '', 1, 0, 0, 10000, now(), 10000, now()); -INSERT INTO sys_menu (id, pid, name, url, authority, type, open_style, icon, sort, version, deleted, creator, create_time, updater, update_time) VALUES (26, 23, '修改', '', 'sys:role:update,sys:role:info,sys:role:menu,sys:org:list', 1, 0, '', 2, 0, 0, 10000, now(), 10000, now()); +INSERT INTO sys_menu (id, pid, name, url, authority, type, open_style, icon, sort, version, deleted, creator, create_time, updater, update_time) VALUES (26, 23, '修改', '', 'sys:role:update,sys:role:info,sys:role:menu,sys:org:list,sys:user:page', 1, 0, '', 2, 0, 0, 10000, now(), 10000, now()); INSERT INTO sys_menu (id, pid, name, url, authority, type, open_style, icon, sort, version, deleted, creator, create_time, updater, update_time) VALUES (27, 23, '删除', '', 'sys:role:delete', 1, 0, '', 3, 0, 0, 10000, now(), 10000, now()); INSERT INTO sys_menu (id, pid, name, url, authority, type, open_style, icon, sort, version, deleted, creator, create_time, updater, update_time) VALUES (28, 12, '用户管理', 'sys/user/index', '', 0, 0, 'icon-user', 0, 0, 0, 10000, now(), 10000, now()); INSERT INTO sys_menu (id, pid, name, url, authority, type, open_style, icon, sort, version, deleted, creator, create_time, updater, update_time) VALUES (29, 28, '查询', '', 'sys:user:page', 1, 0, '', 0, 0, 0, 10000, now(), 10000, now()); diff --git a/fast-boot-system/src/main/java/net/maku/system/controller/SysRoleController.java b/fast-boot-system/src/main/java/net/maku/system/controller/SysRoleController.java index 0608e6e..384fcf3 100644 --- a/fast-boot-system/src/main/java/net/maku/system/controller/SysRoleController.java +++ b/fast-boot-system/src/main/java/net/maku/system/controller/SysRoleController.java @@ -9,14 +9,13 @@ import net.maku.framework.security.user.SecurityUser; import net.maku.framework.security.user.UserDetail; import net.maku.system.convert.SysRoleConvert; import net.maku.system.entity.SysRoleEntity; -import net.maku.system.service.SysMenuService; -import net.maku.system.service.SysRoleDataScopeService; -import net.maku.system.service.SysRoleMenuService; -import net.maku.system.service.SysRoleService; +import net.maku.system.query.SysRoleUserQuery; +import net.maku.system.service.*; import net.maku.system.vo.SysMenuVO; import net.maku.system.query.SysRoleQuery; import net.maku.system.vo.SysRoleDataScopeVO; import net.maku.system.vo.SysRoleVO; +import net.maku.system.vo.SysUserVO; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -34,9 +33,11 @@ import java.util.List; @AllArgsConstructor public class SysRoleController { private final SysRoleService sysRoleService; + private final SysUserService sysUserService; private final SysRoleMenuService sysRoleMenuService; private final SysRoleDataScopeService sysRoleDataScopeService; private final SysMenuService sysMenuService; + private final SysUserRoleService sysUserRoleService; @GetMapping("page") @Operation(summary = "分页") @@ -121,4 +122,31 @@ public class SysRoleController { return Result.ok(list); } + + @GetMapping("user/page") + @Operation(summary = "角色用户-分页") + @PreAuthorize("hasAuthority('sys:role:update')") + public Result> userPage(@Valid SysRoleUserQuery query){ + PageResult page = sysUserService.roleUserPage(query); + + return Result.ok(page); + } + + @DeleteMapping("user/{roleId}") + @Operation(summary = "删除角色用户") + @PreAuthorize("hasAuthority('sys:role:update')") + public Result userDelete(@PathVariable("roleId") Long roleId, @RequestBody List userIdList){ + sysUserRoleService.deleteByUserIdList(roleId, userIdList); + + return Result.ok(); + } + + @PostMapping("user/{roleId}") + @Operation(summary = "分配角色给用户列表") + @PreAuthorize("hasAuthority('sys:role:update')") + public Result userSave(@PathVariable("roleId") Long roleId, @RequestBody List userIdList){ + sysUserRoleService.saveUserList(roleId, userIdList); + + return Result.ok(); + } } \ No newline at end of file diff --git a/fast-boot-system/src/main/java/net/maku/system/dao/SysUserDao.java b/fast-boot-system/src/main/java/net/maku/system/dao/SysUserDao.java index 305179b..c4255ee 100644 --- a/fast-boot-system/src/main/java/net/maku/system/dao/SysUserDao.java +++ b/fast-boot-system/src/main/java/net/maku/system/dao/SysUserDao.java @@ -21,6 +21,8 @@ public interface SysUserDao extends BaseDao { SysUserEntity getById(@Param("id") Long id); + List getRoleUserList(Map params); + default SysUserEntity getByUsername(String username){ return this.selectOne(new QueryWrapper().eq("username", username)); } diff --git a/fast-boot-system/src/main/java/net/maku/system/query/SysRoleUserQuery.java b/fast-boot-system/src/main/java/net/maku/system/query/SysRoleUserQuery.java new file mode 100644 index 0000000..1d0d9ad --- /dev/null +++ b/fast-boot-system/src/main/java/net/maku/system/query/SysRoleUserQuery.java @@ -0,0 +1,19 @@ +package net.maku.system.query; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分配角色查询 + * + * @author 阿沐 babamu@126.com + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Schema(description = "分配角色查询") +public class SysRoleUserQuery extends SysUserQuery { + @Schema(description = "角色ID") + private Long roleId; + +} diff --git a/fast-boot-system/src/main/java/net/maku/system/service/SysUserRoleService.java b/fast-boot-system/src/main/java/net/maku/system/service/SysUserRoleService.java index b310d9d..5e760ea 100644 --- a/fast-boot-system/src/main/java/net/maku/system/service/SysUserRoleService.java +++ b/fast-boot-system/src/main/java/net/maku/system/service/SysUserRoleService.java @@ -20,6 +20,13 @@ public interface SysUserRoleService extends BaseService { void saveOrUpdate(Long userId, List roleIdList); /** + * 分配角色给用户列表 + * @param roleId 角色ID + * @param userIdList 用户ID列表 + */ + void saveUserList(Long roleId, List userIdList); + + /** * 根据角色id列表,删除用户角色关系 * @param roleIdList 角色id */ @@ -32,6 +39,13 @@ public interface SysUserRoleService extends BaseService { void deleteByUserIdList(List userIdList); /** + * 根据角色id、用户id列表,删除用户角色关系 + * @param roleId 角色id + * @param userIdList 用户id列表 + */ + void deleteByUserIdList(Long roleId, List userIdList); + + /** * 角色ID列表 * @param userId 用户ID */ diff --git a/fast-boot-system/src/main/java/net/maku/system/service/SysUserService.java b/fast-boot-system/src/main/java/net/maku/system/service/SysUserService.java index 5788eb1..51591a2 100644 --- a/fast-boot-system/src/main/java/net/maku/system/service/SysUserService.java +++ b/fast-boot-system/src/main/java/net/maku/system/service/SysUserService.java @@ -3,6 +3,7 @@ package net.maku.system.service; import net.maku.framework.common.page.PageResult; import net.maku.framework.common.service.BaseService; import net.maku.system.entity.SysUserEntity; +import net.maku.system.query.SysRoleUserQuery; import net.maku.system.query.SysUserQuery; import net.maku.system.vo.SysUserVO; @@ -30,4 +31,9 @@ public interface SysUserService extends BaseService { */ void updatePassword(Long id, String newPassword); + /** + * 分配角色,用户列表 + */ + PageResult roleUserPage(SysRoleUserQuery query); + } diff --git a/fast-boot-system/src/main/java/net/maku/system/service/impl/SysUserRoleServiceImpl.java b/fast-boot-system/src/main/java/net/maku/system/service/impl/SysUserRoleServiceImpl.java index 1cd7c99..d7dcf18 100644 --- a/fast-boot-system/src/main/java/net/maku/system/service/impl/SysUserRoleServiceImpl.java +++ b/fast-boot-system/src/main/java/net/maku/system/service/impl/SysUserRoleServiceImpl.java @@ -47,6 +47,19 @@ public class SysUserRoleServiceImpl extends BaseServiceImpl userIdList) { + List list = userIdList.stream().map(userId -> { + SysUserRoleEntity entity = new SysUserRoleEntity(); + entity.setUserId(userId); + entity.setRoleId(roleId); + return entity; + }).collect(Collectors.toList()); + + // 批量新增 + saveBatch(list); + } + + @Override public void deleteByRoleIdList(List roleIdList) { remove(new QueryWrapper().in("role_id", roleIdList)); } @@ -57,6 +70,11 @@ public class SysUserRoleServiceImpl extends BaseServiceImpl userIdList) { + remove(new QueryWrapper().eq("role_id", roleId).in("user_id", userIdList)); + } + + @Override public List getRoleIdList(Long userId) { return baseMapper.getRoleIdList(userId); } diff --git a/fast-boot-system/src/main/java/net/maku/system/service/impl/SysUserServiceImpl.java b/fast-boot-system/src/main/java/net/maku/system/service/impl/SysUserServiceImpl.java index fee1af4..7c66440 100644 --- a/fast-boot-system/src/main/java/net/maku/system/service/impl/SysUserServiceImpl.java +++ b/fast-boot-system/src/main/java/net/maku/system/service/impl/SysUserServiceImpl.java @@ -10,6 +10,7 @@ import net.maku.system.convert.SysUserConvert; import net.maku.system.dao.SysUserDao; import net.maku.system.entity.SysUserEntity; import net.maku.system.enums.SuperAdminEnum; +import net.maku.system.query.SysRoleUserQuery; import net.maku.system.service.SysUserPostService; import net.maku.system.service.SysUserRoleService; import net.maku.system.service.SysUserService; @@ -60,6 +61,8 @@ public class SysUserServiceImpl extends BaseServiceImpl roleUserPage(SysRoleUserQuery query) { + // 查询参数 + Map params = getParams(query); + params.put("roleId", query.getRoleId()); + + // 分页查询 + IPage page = getPage(query); + params.put(Constant.PAGE, page); + + // 数据列表 + List list = baseMapper.getRoleUserList(params); + + return new PageResult<>(SysUserConvert.INSTANCE.convertList(list), page.getTotal()); + } + } diff --git a/fast-boot-system/src/main/resources/mapper/SysUserDao.xml b/fast-boot-system/src/main/resources/mapper/SysUserDao.xml index 5e329f1..f9dcd2b 100644 --- a/fast-boot-system/src/main/resources/mapper/SysUserDao.xml +++ b/fast-boot-system/src/main/resources/mapper/SysUserDao.xml @@ -22,4 +22,18 @@ where t1.id = #{id} and t1.deleted = 0 + + \ No newline at end of file