This commit is contained in:
hucs
2024-06-13 18:23:41 +08:00
parent 9cc27b3ba1
commit 280f2485f6
11 changed files with 62 additions and 46 deletions

View File

@@ -125,7 +125,7 @@ public class DataScopeAspect {
if (StringUtils.isNotNull(loginUser)) {
SysUserEntity currentUser = loginUser.getUser();
// 如果是超级管理员,则不过滤数据
if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()) {
if (StringUtils.isNotNull(currentUser) && SysUserEntity.isAdmin(currentUser)) {
String permission = StringUtils.defaultIfEmpty(controllerDataScope.permission(), CustomSecurityContextHolder.getPermission());
dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),
controllerDataScope.userAlias(), permission);

View File

@@ -202,26 +202,25 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
sysTenantEntity.setCreatedTime(new Date());
sysTenantMapper.insert(sysTenantEntity);
// 创建默认部门--部门默认名称以租户名称
Long deptId = createDept(sysTenantEntity);
//Long deptId = createDept(sysTenantEntity);
// 创建默认角色--角色默认为租户名称+管理员
Long roleId = createRole(sysTenantEntity);
//Long roleId = createRole(sysTenantEntity);
// 创建默认账号
createUser(sysTenantEntity, deptId, roleId);
createUser(sysTenantEntity);
// 创建域名
this.createDomainAndDns(sysTenantEntity.getTenantKey());
// 新增客服和组长
this.initRole(sysTenantEntity);
initOtherRule(sysTenantEntity, "waiter", "客服");
initOtherRule(sysTenantEntity, "leader", "组长");
initOtherRule(sysTenantEntity, "operator", "管理员");
//initOtherRule(sysTenantEntity, "waiter", "客服");
//initOtherRule(sysTenantEntity, "leader", "组长");
//initOtherRule(sysTenantEntity, "operator", "管理员");
return R.ok("租户创建成功!");
}
private void initRole(SysTenantEntity sysTenantEntity) {
SysRoleEntity waiter = new SysRoleEntity();
waiter.setRoleName(sysTenantEntity.getTenantName() + "客服");
waiter.setRoleName("客服");
waiter.setRoleKey("waiter");
waiter.setDataScope("1");
waiter.setMenuCheckStrictly(true);
@@ -230,7 +229,7 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
roleMapper.insert(waiter);
SysRoleEntity leader = new SysRoleEntity();
leader.setRoleName(sysTenantEntity.getTenantName() + "组长");
leader.setRoleName("组长");
leader.setRoleKey("leader");
leader.setDataScope("3");
leader.setMenuCheckStrictly(true);
@@ -239,20 +238,23 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
roleMapper.insert(leader);
SysRoleEntity operator = new SysRoleEntity();
operator.setRoleName(sysTenantEntity.getTenantName() + "管理员");
operator.setRoleName("管理员");
operator.setRoleKey("operator");
operator.setDataScope("3");
operator.setDataScope("1");
operator.setMenuCheckStrictly(true);
operator.setDeptCheckStrictly(true);
operator.setTenantId(sysTenantEntity.getTenantId());
roleMapper.insert(operator);
List<SysMenuEntity> menuList = menuMapper.selectMenuList(new SysMenuEntity());
if (CollectionUtil.isNotEmpty(menuList)) {
List<SysRoleMenuEntity> roleMenuEntityList = menuList.stream().map(menu -> {
//List<SysMenuEntity> menuList = menuMapper.selectMenuList(new SysMenuEntity());
SysTenantPackageEntity sysTenantPackage = tenantPackageMapper.selectById(sysTenantEntity.getPackageId());
List<String> subMeuns = Arrays.asList(sysTenantPackage.getMenuIds().split(","));
if (CollectionUtil.isNotEmpty(subMeuns)) {
List<SysRoleMenuEntity> roleMenuEntityList = subMeuns.stream().map(menu -> {
SysRoleMenuEntity rm = new SysRoleMenuEntity();
rm.setRoleId(operator.getRoleId());
rm.setMenuId(menu.getMenuId());
rm.setMenuId(Long.valueOf(menu));
return rm;
}).collect(Collectors.toList());
roleMenuService.saveBatch(roleMenuEntityList);
@@ -328,9 +330,8 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
roleMenuService.saveBatch(roleMenuList);
}
private void createUser(SysTenantEntity sysTenant, Long deptId, Long roleId) {
private void createUser(SysTenantEntity sysTenant) {
SysUserEntity user = new SysUserEntity();
user.setDeptId(deptId);
user.setUserCode(sysTenant.getUserName());
user.setRealName(sysTenant.getTenantName());
user.setUserNickname(sysTenant.getTenantName());
@@ -342,8 +343,9 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
user.setPassWord(password);
user.setTenantId(sysTenant.getTenantId());
user.setUserId(IdUtils.getUuid());
user.setSuperAdmin(true);
sysUserMapper.insert(user);
createUserRole(sysTenant.getTenantId(), user.getUserId(), roleId);
//createUserRole(sysTenant.getTenantId(), user.getUserId(), roleId);
}
private void createUserRole(String tenantId, String userId, Long roleId) {

View File

@@ -110,14 +110,12 @@ public class SysUserController {
@ApiOperation(value = "根据用户id获取详细信息")
@GetMapping(value = {"/", "/{userId}"})
public R getInfo(@PathVariable(value = "userId", required = false) String userId) {
SysUserEntity user = userService.selectUserById(userId);
Map<String, Object> map = new HashMap<>(8);
List<SysRoleEntity> roles = roleService.selectRoleList(new SysRoleEntity());
map.put("roles", SysUserEntity.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
if (userId != null) {
SysUserEntity user = userService.selectUserById(userId);
map.put("roleIds", user.getRoles().stream().map(SysRoleEntity::getRoleId).collect(Collectors.toList()));
map.put("user", user);
}
map.put("roles", SysUserEntity.isAdmin(user) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
map.put("roleIds", user.getRoles().stream().map(SysRoleEntity::getRoleId).collect(Collectors.toList()));
map.put("user", user);
return R.ok(map);
}

View File

@@ -106,12 +106,9 @@ public class SysUserEntity extends BaseEntity<SysUserEntity> {
@TableField(exist = false)
private Long roleId;
public static boolean isAdmin(String userId) {
return "6dcb2da45fef4768a6511f9c14e18072".equals(userId);
}
public boolean isAdmin() {
return isAdmin(this.userId);
public static boolean isAdmin(SysUserEntity user) {
return user.getSuperAdmin();
}

View File

@@ -86,7 +86,7 @@ public class LoginServiceImpl implements LoginService {
public Set<String> getMenuPermission(SysUserEntity user) {
Set<String> perms = new HashSet<>();
// 超级管理员拥有所有权限
if (SecurityUtils.isAdmin(user.getUserId())) {
if (SecurityUtils.isAdmin(user)) {
perms.add("*:*:*");
} else {
perms = menuService.selectMenuPermsByUserId(user.getUserId());
@@ -98,7 +98,7 @@ public class LoginServiceImpl implements LoginService {
public Set<String> getRolePermission(SysUserEntity user) {
Set<String> roles = new HashSet<>();
// 超级管理员拥有所有权限
if (SecurityUtils.isAdmin(user.getUserId())) {
if (SecurityUtils.isAdmin(user)) {
roles.add("admin");
} else {
roles = roleService.selectRolePermissionByUserId(user.getUserId());

View File

@@ -8,9 +8,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.starry.admin.common.domain.TreeSelect;
import com.starry.admin.modules.system.entity.SysMenuEntity;
import com.starry.admin.modules.system.entity.SysRoleEntity;
import com.starry.admin.modules.system.entity.SysUserEntity;
import com.starry.admin.modules.system.mapper.SysMenuMapper;
import com.starry.admin.modules.system.mapper.SysRoleMapper;
import com.starry.admin.modules.system.service.SysMenuService;
import com.starry.admin.modules.system.service.SysUserService;
import com.starry.admin.modules.system.vo.MetaVo;
import com.starry.admin.modules.system.vo.RouterVo;
import com.starry.admin.modules.system.vo.SimpleMenu;
@@ -37,6 +39,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenuEntity
@Resource
private SysRoleMapper roleMapper;
@Resource
private SysUserService userService;
@Override
public boolean create(SysMenuEntity menu) {
@@ -48,7 +52,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenuEntity
public Page<SysMenuEntity> listPage(SysMenuEntity menu, String userId, Integer pageSize, Integer pageNum) {
Page<SysMenuEntity> page = new Page<>(pageNum, pageSize);
// 超级管理员显示所有菜单信息
if (SecurityUtils.isAdmin(userId)) {
if (SecurityUtils.isAdmin(userService.selectUserById(userId))) {
return baseMapper.selectPage(page, new LambdaQueryWrapper<SysMenuEntity>().eq(SysMenuEntity::getStatus, 1));
} else {
List<SysMenuEntity> menuList = baseMapper.selectMenuListByUserId(menu, userId, page);
@@ -60,7 +64,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenuEntity
public List<SysMenuEntity> selectMenuList(SysMenuEntity menu, String userId) {
List<SysMenuEntity> menuList;
// 超级管理员显示所有菜单信息
if (SecurityUtils.isAdmin(userId)) {
if (SecurityUtils.isAdmin(userService.selectUserById(userId))) {
menuList = baseMapper.selectMenuList(menu);
} else {
menuList = baseMapper.selectMenuListByUserId(menu, userId);
@@ -138,11 +142,19 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenuEntity
@Override
public List<SysMenuEntity> selectMenuTreeByUserId(String userId) {
List<SysMenuEntity> menus;
if (SecurityUtils.isAdmin(userId)) {
SysUserEntity user = userService.selectUserById(userId);
if (SecurityUtils.isAdmin(user)) {
menus = baseMapper.selectMenuTreeAll();
if (!user.getUserId().equals("6dcb2da45fef4768a6511f9c14e18072")) {
if (CollectionUtil.isNotEmpty(menus)) {
List<Long> menuIds = Arrays.asList(2L, 3L, 5L, 26L, 47L, 48L);
menus = menus.stream().filter(ca -> !menuIds.contains(ca.getMenuId())).collect(Collectors.toList());
}
}
} else {
menus = baseMapper.selectMenuTreeByUserId(userId);
}
return getChildPerms(menus, 0);
}

View File

@@ -14,6 +14,7 @@ import com.starry.admin.modules.system.mapper.SysUserRoleMapper;
import com.starry.admin.modules.system.service.SysRoleMenuService;
import com.starry.admin.modules.system.service.SysRoleService;
import com.starry.admin.modules.system.service.SysUserRoleService;
import com.starry.admin.modules.system.service.SysUserService;
import com.starry.admin.utils.SecurityUtils;
import com.starry.common.constant.UserConstants;
import com.starry.common.utils.StringUtils;
@@ -44,6 +45,8 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRoleEntity
private SysUserRoleService userRoleService;
@Resource
private SysUserRoleMapper userRoleMapper;
@Resource
private SysUserService userService;
/**
* 校验角色名称是否唯一
@@ -193,7 +196,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRoleEntity
*/
@Override
public void checkRoleDataScope(Long roleId) {
if (!SysUserEntity.isAdmin(SecurityUtils.getUserId())) {
if (!SysUserEntity.isAdmin(userService.selectUserById(SecurityUtils.getUserId()))) {
SysRoleEntity role = new SysRoleEntity();
role.setRoleId(roleId);
List<SysRoleEntity> roles = this.selectRoleList(role);

View File

@@ -29,6 +29,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -143,7 +144,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
@Override
public SysUserEntity selectUserById(String userId) {
return baseMapper.selectUserById(userId);
SysUserEntity data = baseMapper.selectUserById(userId);
if(Objects.isNull(data)){
throw new RuntimeException("未查询到指定用户");
}
return data;
}
@Override

View File

@@ -3,6 +3,7 @@ package com.starry.admin.utils;
import com.starry.admin.common.domain.LoginUser;
import com.starry.admin.common.security.entity.JwtUser;
import com.starry.admin.modules.system.entity.SysUserEntity;
import com.starry.common.context.CustomSecurityContextHolder;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
@@ -72,14 +73,8 @@ public class SecurityUtils {
return getAuthentication() != null && getAuthentication().getPrincipal() != null;
}
/**
* 是否为超级管理员
*
* @param userId 用户ID
* @return 结果
*/
public static boolean isAdmin(String userId) {
return "6dcb2da45fef4768a6511f9c14e18072".equals(userId);
public static boolean isAdmin(SysUserEntity user) {
return user.getSuperAdmin();
}
/**