新增分配角色给用户功能

This commit is contained in:
阿沐 2022-07-25 16:06:39 +08:00
parent 6e00275874
commit 25b7865c12
9 changed files with 125 additions and 5 deletions

View File

@ -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());

View File

@ -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<PageResult<SysUserVO>> userPage(@Valid SysRoleUserQuery query){
PageResult<SysUserVO> page = sysUserService.roleUserPage(query);
return Result.ok(page);
}
@DeleteMapping("user/{roleId}")
@Operation(summary = "删除角色用户")
@PreAuthorize("hasAuthority('sys:role:update')")
public Result<String> userDelete(@PathVariable("roleId") Long roleId, @RequestBody List<Long> userIdList){
sysUserRoleService.deleteByUserIdList(roleId, userIdList);
return Result.ok();
}
@PostMapping("user/{roleId}")
@Operation(summary = "分配角色给用户列表")
@PreAuthorize("hasAuthority('sys:role:update')")
public Result<String> userSave(@PathVariable("roleId") Long roleId, @RequestBody List<Long> userIdList){
sysUserRoleService.saveUserList(roleId, userIdList);
return Result.ok();
}
}

View File

@ -21,6 +21,8 @@ public interface SysUserDao extends BaseDao<SysUserEntity> {
SysUserEntity getById(@Param("id") Long id);
List<SysUserEntity> getRoleUserList(Map<String, Object> params);
default SysUserEntity getByUsername(String username){
return this.selectOne(new QueryWrapper<SysUserEntity>().eq("username", username));
}

View File

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

View File

@ -20,6 +20,13 @@ public interface SysUserRoleService extends BaseService<SysUserRoleEntity> {
void saveOrUpdate(Long userId, List<Long> roleIdList);
/**
* 分配角色给用户列表
* @param roleId 角色ID
* @param userIdList 用户ID列表
*/
void saveUserList(Long roleId, List<Long> userIdList);
/**
* 根据角色id列表删除用户角色关系
* @param roleIdList 角色id
*/
@ -32,6 +39,13 @@ public interface SysUserRoleService extends BaseService<SysUserRoleEntity> {
void deleteByUserIdList(List<Long> userIdList);
/**
* 根据角色id用户id列表删除用户角色关系
* @param roleId 角色id
* @param userIdList 用户id列表
*/
void deleteByUserIdList(Long roleId, List<Long> userIdList);
/**
* 角色ID列表
* @param userId 用户ID
*/

View File

@ -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<SysUserEntity> {
*/
void updatePassword(Long id, String newPassword);
/**
* 分配角色用户列表
*/
PageResult<SysUserVO> roleUserPage(SysRoleUserQuery query);
}

View File

@ -47,6 +47,19 @@ public class SysUserRoleServiceImpl extends BaseServiceImpl<SysUserRoleDao, SysU
}
@Override
public void saveUserList(Long roleId, List<Long> userIdList) {
List<SysUserRoleEntity> 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<Long> roleIdList) {
remove(new QueryWrapper<SysUserRoleEntity>().in("role_id", roleIdList));
}
@ -57,6 +70,11 @@ public class SysUserRoleServiceImpl extends BaseServiceImpl<SysUserRoleDao, SysU
}
@Override
public void deleteByUserIdList(Long roleId, List<Long> userIdList) {
remove(new QueryWrapper<SysUserRoleEntity>().eq("role_id", roleId).in("user_id", userIdList));
}
@Override
public List<Long> getRoleIdList(Long userId) {
return baseMapper.getRoleIdList(userId);
}

View File

@ -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<SysUserDao, SysUserEntit
return params;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(SysUserVO vo) {
@ -135,4 +138,20 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
updateById(user);
}
@Override
public PageResult<SysUserVO> roleUserPage(SysRoleUserQuery query) {
// 查询参数
Map<String, Object> params = getParams(query);
params.put("roleId", query.getRoleId());
// 分页查询
IPage<SysUserEntity> page = getPage(query);
params.put(Constant.PAGE, page);
// 数据列表
List<SysUserEntity> list = baseMapper.getRoleUserList(params);
return new PageResult<>(SysUserConvert.INSTANCE.convertList(list), page.getTotal());
}
}

View File

@ -22,4 +22,18 @@
where t1.id = #{id} and t1.deleted = 0
</select>
<select id="getRoleUserList" resultType="net.maku.system.entity.SysUserEntity">
select t1.* from sys_user t1 left join sys_user_role t2 on t1.id = t2.user_id
where t1.deleted = 0 and t2.deleted = 0 and t2.role_id = #{roleId}
<if test="username != null and username.trim() != ''">
and t1.username = #{username}
</if>
<if test="mobile != null and mobile.trim() != ''">
and t1.mobile = #{mobile}
</if>
<if test="gender != null">
and t1.gender = #{gender}
</if>
</select>
</mapper>