进销存系统_用户角色分配(12)
Posted 上善若水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进销存系统_用户角色分配(12)相关的知识,希望对你有一定的参考价值。
一、用户角色分配
1.1、用户角色分配界面原型
- 添加用户记录
- 更新用户记录
1.2、用户角色分配实现流程
- 添加用户-角色分配
- 更新用户-角色分配
- 代码
RoleServiceImpl.java
@Override
public List<Map<String, Object>> queryAllRoles(Integer userId) {
return this.baseMapper.queryAllRoles(userId);
}
UserServiceImpl.java
/**
* 保存用户对象
* @param user 用户对象
*/
@Override
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public void saveUser(User user) {
/**
* 用户名
* 非空 不可重复
* 用户密码默认123456
* 用户默认有效
*/
AssertUtil.isTrue(StringUtils.isBlank(user.getUsername()),"用户名不能为空!");
AssertUtil.isTrue(null != this.findUserByUserName(user.getUsername()),"用户名已存在!");
user.setPassword(passwordEncoder.encode("123456"));
user.setIsDel(0);
AssertUtil.isTrue(!(this.save(user)),"用户记录添加失败!");
// 重新查询用户记录
user = this.findUserByUserName(user.getUsername());
/**
* 给用户分配角色
*/
relationUserRole(user.getId(),user.getRoleIds());
}
private void relationUserRole(Integer userId, String roleIds) {
/**
* 核心表 t_user_role
* 添加时
* 如果角色记录存在 执行批量添加即可
* 更新时
* 如果用户存在原始角色记录
* 如果存在 直接删除原来用户角色记录即可 重新添加新的用户角色记录
* 如果不存在 直接执行添加即可
*
*
* 实现思路
* 首先查询用户原始分配角色
* 如果存在原始用户角色记录 直接删除原来用户角色记录即可(根据用户id) 然后重新添加新的用户角色记录
* 如果不存在
* 直接执行批量添加即可
*/
int count = userRoleService.count(new QueryWrapper<UserRole>().eq("user_id", userId));
if(count > 0){
AssertUtil.isTrue(!(userRoleService.remove(new QueryWrapper<UserRole>().eq("user_id",userId))),"用户角色分配失败!");
}
if(StringUtils.isNotBlank(roleIds)){
/**
* 1,2,3,4
*/
List<UserRole> userRoles = new ArrayList<>();
for (String s : roleIds.split(",")){
UserRole userRole = new UserRole();
userRole.setUserId(userId);
userRole.setRoleId(Integer.parseInt(s));
userRoles.add(userRole);
}
AssertUtil.isTrue(!(userRoleService.saveBatch(userRoles)),"用户角色分配失败!");
}
}
/**
* 更新用户对象
* @param user 用户对象
*/
@Override
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public void updateUser(User user) {
/**
* 用户名
* 非空 不可重复
*/
AssertUtil.isTrue(StringUtils.isBlank(user.getUsername()),"用户名不能为空!");
User tempUser = this.findUserByUserName(user.getUsername());
AssertUtil.isTrue(null != tempUser && !(tempUser.getId().equals(user.getId())),"用户名已存在!");
relationUserRole(user.getId(),user.getRoleIds());
AssertUtil.isTrue(!(this.updateById(user)),"用户记录更新失败!");
}
@Override
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public void deleteUser(Integer[] ids) {
AssertUtil.isTrue(null == ids || ids.length == 0,"请选择待删除的记录id!");
int count = userRoleService.count(new QueryWrapper<UserRole>().in("user_id", Arrays.asList(ids)));
if(count > 0){
AssertUtil.isTrue(!(userRoleService.remove(new QueryWrapper<UserRole>().in("user_id",Arrays.asList(ids)))),"用户记录删除失败!");
}
List<User> users = new ArrayList<>();
for (Integer id : ids) {
User tempUser = this.getById(id);
tempUser.setIsDel(1);
users.add(tempUser);
}
AssertUtil.isTrue(!(this.updateBatchById(users)),"用户记录删除失败!");
}
以上是关于进销存系统_用户角色分配(12)的主要内容,如果未能解决你的问题,请参考以下文章