增加管理员分配角色
This commit is contained in:
@@ -15,4 +15,6 @@ public interface AdminRoleMapper {
|
||||
|
||||
int updateToDeletedByRoleId(@Param("roleId") Integer roleId);
|
||||
|
||||
void insertList(@Param("adminRoleDOs") List<AdminRoleDO> adminRoleDOs);
|
||||
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Repository
|
||||
public interface RoleMapper {
|
||||
@@ -21,4 +22,6 @@ public interface RoleMapper {
|
||||
|
||||
Integer selectCountByNameLike(@Param("name") String name);
|
||||
|
||||
List<RoleDO> selectListByIds(@Param("ids") Set<Integer> ids);
|
||||
|
||||
}
|
||||
@@ -16,6 +16,7 @@ import cn.iocoder.mall.admin.dao.AdminMapper;
|
||||
import cn.iocoder.mall.admin.dao.AdminRoleMapper;
|
||||
import cn.iocoder.mall.admin.dataobject.AdminDO;
|
||||
import cn.iocoder.mall.admin.dataobject.AdminRoleDO;
|
||||
import cn.iocoder.mall.admin.dataobject.RoleDO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -23,6 +24,8 @@ import org.springframework.util.DigestUtils;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@com.alibaba.dubbo.config.annotation.Service
|
||||
@@ -32,8 +35,11 @@ public class AdminServiceImpl implements AdminService {
|
||||
private AdminMapper adminMapper;
|
||||
@Autowired
|
||||
private AdminRoleMapper adminRoleMapper;
|
||||
|
||||
@Autowired
|
||||
private OAuth2ServiceImpl oAuth2Service;
|
||||
@Autowired
|
||||
private RoleServiceImpl roleService;
|
||||
|
||||
public CommonResult<AdminDO> validAdmin(String username, String password) {
|
||||
AdminDO admin = adminMapper.selectByUsername(username);
|
||||
@@ -143,10 +149,11 @@ public class AdminServiceImpl implements AdminService {
|
||||
if (admin == null) {
|
||||
return ServiceExceptionUtil.error(AdminErrorCodeEnum.ADMIN_USERNAME_NOT_REGISTERED.getCode());
|
||||
}
|
||||
// 只有禁用的账号才可以删除
|
||||
if (AdminDO.STATUS_ENABLE.equals(admin.getStatus())) {
|
||||
return ServiceExceptionUtil.error(AdminErrorCodeEnum.ADMIN_DELETE_ONLY_DISABLE.getCode());
|
||||
}
|
||||
// 只有禁用的账号才可以删除
|
||||
// 标记删除 AdminDO
|
||||
AdminDO updateAdmin = new AdminDO().setId(updateAdminId);
|
||||
updateAdmin.setDeleted(BaseDO.DELETED_YES);
|
||||
adminMapper.update(updateAdmin);
|
||||
@@ -157,6 +164,36 @@ public class AdminServiceImpl implements AdminService {
|
||||
return CommonResult.success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public CommonResult<Boolean> assignRole(Integer adminId, Integer updateAdminId, Set<Integer> roleIds) {
|
||||
// 校验账号存在
|
||||
AdminDO admin = adminMapper.selectById(updateAdminId);
|
||||
if (admin == null) {
|
||||
return ServiceExceptionUtil.error(AdminErrorCodeEnum.ADMIN_USERNAME_NOT_REGISTERED.getCode());
|
||||
}
|
||||
// 校验是否有不存在的角色
|
||||
List<RoleDO> roles = roleService.getRoles(roleIds);
|
||||
if (roles.size() != roleIds.size()) {
|
||||
return ServiceExceptionUtil.error(AdminErrorCodeEnum.ROLE_ASSIGN_RESOURCE_NOT_EXISTS.getCode());
|
||||
}
|
||||
// TODO 芋艿,这里先简单实现。即方式是,删除老的分配的角色关系,然后添加新的分配的角色关系
|
||||
// 标记管理员角色源关系都为删除
|
||||
adminRoleMapper.updateToDeletedByRoleId(updateAdminId);
|
||||
// 创建 RoleResourceDO 数组,并插入到数据库
|
||||
if (!roleIds.isEmpty()) {
|
||||
List<AdminRoleDO> adminRoleDOs = roleIds.stream().map(roleId -> {
|
||||
AdminRoleDO roleResource = new AdminRoleDO().setAdminId(updateAdminId).setRoleId(roleId);
|
||||
roleResource.setCreateTime(new Date()).setDeleted(BaseDO.DELETED_NO);
|
||||
return roleResource;
|
||||
}).collect(Collectors.toList());
|
||||
adminRoleMapper.insertList(adminRoleDOs);
|
||||
}
|
||||
// TODO 插入操作日志
|
||||
// 返回成功
|
||||
return CommonResult.success(true);
|
||||
}
|
||||
|
||||
private String encodePassword(String password) {
|
||||
return DigestUtils.md5DigestAsHex(password.getBytes());
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cn.iocoder.mall.admin.service;
|
||||
|
||||
import cn.iocoder.common.framework.dataobject.BaseDO;
|
||||
import cn.iocoder.common.framework.util.CollectionUtil;
|
||||
import cn.iocoder.common.framework.util.ServiceExceptionUtil;
|
||||
import cn.iocoder.common.framework.vo.CommonResult;
|
||||
import cn.iocoder.mall.admin.api.RoleService;
|
||||
@@ -21,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -60,6 +62,11 @@ public class RoleServiceImpl implements RoleService {
|
||||
return CommonResult.success(rolePage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<List<RoleBO>> getRoleList(Integer adminId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<RoleBO> addRole(Integer adminId, RoleAddDTO roleAddDTO) {
|
||||
// TODO 芋艿,角色名是否要唯一呢?貌似一般系统都是允许的。
|
||||
@@ -136,4 +143,11 @@ public class RoleServiceImpl implements RoleService {
|
||||
return CommonResult.success(true);
|
||||
}
|
||||
|
||||
public List<RoleDO> getRoles(Set<Integer> roleIds) {
|
||||
if (CollectionUtil.isEmpty(roleIds)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return roleMapper.selectListByIds(roleIds);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user