|
@@ -5,17 +5,20 @@ import cn.hutool.core.lang.Assert;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
-import edu.travel.tenant.dto.AssignRolesOrMenus;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import edu.travel.remote.feign.mode.dto.tenant.AddOrUpdateTenantDto;
|
|
|
+import edu.travel.remote.feign.mode.dto.tenant.AssignRolesOrMenusDto;
|
|
|
+import edu.travel.remote.feign.mode.vo.tenant.MenuTreeVo;
|
|
|
+import edu.travel.remote.feign.mode.vo.tenant.SysMenuExtraDataVo;
|
|
|
import edu.travel.tenant.entity.*;
|
|
|
-import edu.travel.tenant.enums.UserStatus;
|
|
|
import edu.travel.tenant.service.*;
|
|
|
import edu.travel.service.SysServiceImpl;
|
|
|
import edu.travel.tenant.mapper.EduTenantMapper;
|
|
|
-import edu.travel.tenant.vo.EduTenantVo;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
-
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -30,6 +33,10 @@ public class ITenantServiceImpl extends SysServiceImpl<EduTenantMapper, EduTenan
|
|
|
private ISysMenuService sysMenuService;
|
|
|
@Autowired
|
|
|
private ISysRoleService sysRoleService;
|
|
|
+ @Autowired
|
|
|
+ private ISysMenuExtraDataService extraDataService;
|
|
|
+ @Autowired
|
|
|
+ private ISysMenuExtraDataService sysMenuExtraDataService;
|
|
|
@Override
|
|
|
public EduTenant getTenantByPhoneNumber(String tenantID) {
|
|
|
return super.getOneLink(new QueryWrapper<EduTenant>().eq("tenant_phone",tenantID));
|
|
@@ -37,64 +44,81 @@ public class ITenantServiceImpl extends SysServiceImpl<EduTenantMapper, EduTenan
|
|
|
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public void addTenant(EduTenant tenant) {
|
|
|
- if (tenant == null) {
|
|
|
- throw new RuntimeException("参数为空");
|
|
|
- }
|
|
|
- if (tenant.getTenantPhone() == null){
|
|
|
- throw new RuntimeException("手机号为空");
|
|
|
- }
|
|
|
- EduTenant eduTenant = super.getOneLink(new QueryWrapper<EduTenant>().eq("tenant_phone", tenant.getTenantPhone()));
|
|
|
- if (eduTenant != null&&eduTenant.getUserStatus()==0) {
|
|
|
- throw new RuntimeException("该手机号已注册,用户状态为禁用");
|
|
|
- }
|
|
|
- if (eduTenant != null&&eduTenant.getUserStatus()==1) {
|
|
|
- throw new RuntimeException("该手机号已注册,用户状态正常");
|
|
|
- }
|
|
|
- if (eduTenant == null){
|
|
|
- this.save(tenant);
|
|
|
- }
|
|
|
+ public EduTenant addTenant(AddOrUpdateTenantDto addOrUpdateTenantDto) {
|
|
|
+
|
|
|
+ //参数validate
|
|
|
+ validateParamsForAddTenant(addOrUpdateTenantDto);
|
|
|
+
|
|
|
+ //用户手机号重复validate
|
|
|
+ EduTenant eduTenant = super.getOneLink(new QueryWrapper<EduTenant>().eq("tenant_phone", addOrUpdateTenantDto.getTenantPhone()));
|
|
|
+ Assert.isFalse(eduTenant != null && eduTenant.getUserStatus()==0, "该手机号已注册,用户状态为禁用");
|
|
|
+ Assert.isFalse(eduTenant != null && eduTenant.getUserStatus()==1, "该手机号已注册,用户状态正常");
|
|
|
+ EduTenant tenant = BeanUtil.copyProperties(addOrUpdateTenantDto, EduTenant.class);
|
|
|
+
|
|
|
+ //角色列表验证
|
|
|
+ validateRoleForAddTenant(addOrUpdateTenantDto);
|
|
|
+
|
|
|
+ //保存用户
|
|
|
+ this.save(tenant);
|
|
|
+
|
|
|
+ //分配角色
|
|
|
+ if (addOrUpdateTenantDto.getRoleIds().isEmpty()) return tenant;
|
|
|
+ AssignRolesOrMenusDto assignRolesOrMenusDto = new AssignRolesOrMenusDto();
|
|
|
+ assignRolesOrMenusDto.setIds(addOrUpdateTenantDto.getRoleIds());
|
|
|
+ assignRolesOrMenusDto.setId(tenant.getId());
|
|
|
+ EduTenant principal = (EduTenant) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
|
|
+ assign(assignRolesOrMenusDto, principal);
|
|
|
+
|
|
|
+ return tenant;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public void deleteByIds(List<Long> ids) {
|
|
|
- HashSet<Long> set = new HashSet<>(ids);
|
|
|
- if (set==null || set.isEmpty()) {
|
|
|
- throw new RuntimeException("参数为空");
|
|
|
- }
|
|
|
- List<EduTenant> tenants = this.listByIds(set);
|
|
|
- if (tenants == null || tenants.isEmpty()) {
|
|
|
- throw new RuntimeException("用户不存在或已注销");
|
|
|
+ public void updateTenant(AddOrUpdateTenantDto addOrUpdateTenantDto) {
|
|
|
+ //参数validate
|
|
|
+ validateParamsForAddTenant(addOrUpdateTenantDto);
|
|
|
+
|
|
|
+ //phone重复validate
|
|
|
+ if (addOrUpdateTenantDto.getTenantPhone() != null){
|
|
|
+ EduTenant eduTenant = super.getOneLink(new QueryWrapper<EduTenant>().eq("tenant_phone", addOrUpdateTenantDto.getTenantPhone()));
|
|
|
+ Assert.isFalse(eduTenant != null && eduTenant.getUserStatus()==0 && !eduTenant.getId().equals(addOrUpdateTenantDto.getId()), "该手机号已注册,用户状态为禁用");
|
|
|
+ Assert.isFalse(eduTenant != null && eduTenant.getUserStatus()==1 && !eduTenant.getId().equals(addOrUpdateTenantDto.getId()), "该手机号已注册,用户状态正常");
|
|
|
}
|
|
|
- List<EduTenantVo> eduTenantVos = fillStatus(tenants);
|
|
|
- ArrayList<Long> longs = new ArrayList<>();
|
|
|
- eduTenantVos.forEach(eduTenantVo -> {
|
|
|
- if (Objects.equals(eduTenantVo.getStatus(), UserStatus.USER_STATUS_DELETED.getCode())) {
|
|
|
- throw new RuntimeException("包含已删除用户");
|
|
|
- } else if (Objects.equals(eduTenantVo.getStatus(), UserStatus.USER_STATUS_DISABLED.getCode())) {
|
|
|
- throw new RuntimeException("包含已禁用用户");
|
|
|
- } else {
|
|
|
- longs.add(eduTenantVo.getId());
|
|
|
- }
|
|
|
- this.removeByIds(longs);
|
|
|
- });
|
|
|
+
|
|
|
+ //用户validate
|
|
|
+ EduTenant ed = super.getOne(new QueryWrapper<EduTenant>().eq("id", addOrUpdateTenantDto.getId()));
|
|
|
+ Assert.isTrue(ObjectUtil.isNotEmpty(ed), "用户不存在");
|
|
|
+ Assert.isFalse(ed.getDeleteFlag() == 1, "用户已注销");
|
|
|
+ Assert.isFalse(ed.getUserStatus() == 0, "用户已禁用");
|
|
|
+
|
|
|
+ EduTenant tenant = BeanUtil.copyProperties(addOrUpdateTenantDto, EduTenant.class);
|
|
|
+ this.updateById(tenant);
|
|
|
+
|
|
|
+ //角色列表验证
|
|
|
+ AssignRolesOrMenusDto assignRolesOrMenusDto = new AssignRolesOrMenusDto();
|
|
|
+ assignRolesOrMenusDto.setId(tenant.getId());
|
|
|
+ assignRolesOrMenusDto.setIds(addOrUpdateTenantDto.getRoleIds());
|
|
|
+ assignValidate(assignRolesOrMenusDto);
|
|
|
+
|
|
|
+ //删除已分配的角色
|
|
|
+ deleteUserRoles(tenant.getId());
|
|
|
+ assign(assignRolesOrMenusDto, ed);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public void updateTenant(EduTenant tenant) {
|
|
|
- if (tenant == null) throw new RuntimeException("参数为空");
|
|
|
- if (tenant.getId() == null) throw new RuntimeException("参数为空");
|
|
|
- EduTenant eduTenant = super.getOneLink(new QueryWrapper<EduTenant>().eq("id", tenant.getId()));
|
|
|
- if (eduTenant == null) throw new RuntimeException("用户不存在");
|
|
|
- if (eduTenant.getDeleteFlag() == 1) throw new RuntimeException("用户已注销");
|
|
|
- if (eduTenant.getUserStatus() == 0) throw new RuntimeException("用户已禁用");
|
|
|
- if (tenant.getTenantPhone() != null){
|
|
|
- EduTenant eduTenant1 = super.getOneLink(new QueryWrapper<EduTenant>().eq("tenant_phone", tenant.getTenantPhone()));
|
|
|
- if (eduTenant1 != null) throw new RuntimeException("该手机号已注册");
|
|
|
- }
|
|
|
- this.updateById(tenant);
|
|
|
+ public void deleteByIds(Set<Long> set) {
|
|
|
+ Assert.isFalse(set==null || set.isEmpty(),"参数为空");
|
|
|
+ List<EduTenant> tenants = this.listByIds(set);
|
|
|
+ Assert.isFalse(tenants == null || tenants.isEmpty() || tenants.size() != set.size(),"包含用户不存在或已注销");
|
|
|
+ ArrayList<Long> longs = new ArrayList<>();
|
|
|
+ tenants.forEach(eduTenantVo -> {
|
|
|
+ Assert.isFalse(Objects.equals(eduTenantVo.getDeleteFlag(), 1),"包含已删除用户");
|
|
|
+ Assert.isFalse(Objects.equals(eduTenantVo.getUserStatus(), 1),"包含未禁用用户,请先禁用该账号");
|
|
|
+ longs.add(eduTenantVo.getId());
|
|
|
+ this.removeByIds(longs);
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -104,46 +128,93 @@ public class ITenantServiceImpl extends SysServiceImpl<EduTenantMapper, EduTenan
|
|
|
.eq(EduTenant::getUserStatus,1));
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public List<SysMenu> getMenuList(EduTenant principal) {
|
|
|
+ /**
|
|
|
+ *新增或修改用户参数验证
|
|
|
+ */
|
|
|
+ private void validateParamsForAddTenant(AddOrUpdateTenantDto addOrUpdateTenantDto) {
|
|
|
|
|
|
- if (principal ==null) throw new RuntimeException("用户未登录");
|
|
|
- EduTenant tenant = this.getTenantById(principal.getId());
|
|
|
- if (tenant == null) throw new RuntimeException("用户不存在");
|
|
|
- if (tenant.getUserStatus() == 0) throw new RuntimeException("用户已禁用");
|
|
|
- if (tenant.getDeleteFlag() == 1) throw new RuntimeException("用户已注销");
|
|
|
- if (tenant.getId() != null) {
|
|
|
- //用户角色列表
|
|
|
- List<Long> roleIdList = sysUserRoleService.getBaseMapper().selectList(new LambdaQueryWrapper<SysUserRole>()
|
|
|
- .eq(SysUserRole::getId, tenant.getId())).stream()
|
|
|
- .map(SysUserRole::getRoleId)
|
|
|
- .collect(Collectors.toList());
|
|
|
- if (roleIdList.isEmpty()) return null;
|
|
|
- //菜单列表
|
|
|
- Set<Long> menuIdList = sysRoleMenuService.getBaseMapper().selectList(new LambdaQueryWrapper<SysRoleMenu>()
|
|
|
- .in(SysRoleMenu::getRoleId, roleIdList)).stream()
|
|
|
- .map(SysRoleMenu::getMenuId)
|
|
|
- .collect(Collectors.toSet());
|
|
|
- //菜单列表内容
|
|
|
- List<SysMenu> list = sysMenuService.list(new LambdaQueryWrapper<SysMenu>()
|
|
|
- .eq(SysMenu::getDeleteFlag, 0)
|
|
|
- .eq(SysMenu::getStatus, 1)
|
|
|
- .in(SysMenu::getId, menuIdList));
|
|
|
- return list;
|
|
|
+// Assert.isTrue(ObjectUtil.isNotEmpty(addOrUpdateTenantDto),"参数为空");
|
|
|
+// Assert.isTrue(ObjectUtil.isNotEmpty(addOrUpdateTenantDto.getTenantPhone()),"手机号为空");
|
|
|
+// Assert.isTrue(ObjectUtil.isNotEmpty(addOrUpdateTenantDto.getTenantSurname()),"姓为空");
|
|
|
+// Assert.isTrue(ObjectUtil.isNotEmpty(addOrUpdateTenantDto.getTenantName()),"名为空");
|
|
|
+// Assert.isTrue(ObjectUtil.isNotEmpty(addOrUpdateTenantDto.getTenantSex()),"性别为空");
|
|
|
+// Assert.isTrue(ObjectUtil.isNotEmpty(addOrUpdateTenantDto.getPassword()),"密码为空");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增或修改用户角色验证
|
|
|
+ */
|
|
|
+ private void validateRoleForAddTenant(AddOrUpdateTenantDto addOrUpdateTenantDto) {
|
|
|
+ //角色validate
|
|
|
+ if (!addOrUpdateTenantDto.getRoleIds().isEmpty()){
|
|
|
+ List<SysRole> roleList = sysRoleService.list(new LambdaQueryWrapper<SysRole>().in(SysRole::getId, addOrUpdateTenantDto.getRoleIds()));
|
|
|
+ Assert.isFalse(roleList == null || roleList.size() != addOrUpdateTenantDto.getRoleIds().size(), "包含不存在的角色");
|
|
|
+ Assert.isFalse(addOrUpdateTenantDto.getRoleIds()!=null && BeanUtil.copyToList(roleList,Long.class).contains(querySuperAdmin()),"不能分配超级管理员");
|
|
|
}
|
|
|
- return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //根据用户信息查询用户所有菜单 不含附加信息
|
|
|
+ public List<SysMenu> getMenuList(EduTenant principal) {
|
|
|
+ //参数验证
|
|
|
+ Assert.isTrue(ObjectUtil.isNotEmpty(principal), "用户未登录");
|
|
|
+ EduTenant tenant = this.getTenantById(principal.getId());
|
|
|
+ Assert.isTrue(ObjectUtil.isNotEmpty(tenant), "用户不存在");
|
|
|
+ Assert.isFalse(tenant.getUserStatus() == 0, "用户已禁用");
|
|
|
+ Assert.isFalse(tenant.getDeleteFlag() == 1, "用户已注销");
|
|
|
+ Assert.isTrue(ObjectUtil.isNotEmpty(tenant.getId()), "用户不存在");
|
|
|
+
|
|
|
+ //用户角色列表
|
|
|
+ List<Long> roleIdList = sysUserRoleService.getBaseMapper().selectList(new LambdaQueryWrapper<SysUserRole>()
|
|
|
+ .eq(SysUserRole::getUserId, tenant.getId())).stream()
|
|
|
+ .map(SysUserRole::getRoleId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (roleIdList.isEmpty()) return new ArrayList<SysMenu>();
|
|
|
+
|
|
|
+ //用户菜单列表ids
|
|
|
+ Set<Long> menuIdList = sysRoleMenuService.getBaseMapper().selectList(new LambdaQueryWrapper<SysRoleMenu>()
|
|
|
+ .in(SysRoleMenu::getRoleId, roleIdList)).stream()
|
|
|
+ .map(SysRoleMenu::getMenuId)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ if (menuIdList.isEmpty()) return new ArrayList<SysMenu>();
|
|
|
+
|
|
|
+ //用户菜单列表
|
|
|
+
|
|
|
+ List<SysMenu> list = sysMenuService.list(new LambdaQueryWrapper<SysMenu>()
|
|
|
+ .eq(SysMenu::getDeleteFlag, 0)
|
|
|
+ .eq(SysMenu::getStatus, 1)
|
|
|
+ .in(SysMenu::getId, menuIdList));
|
|
|
+
|
|
|
+// ArrayList<MenuTreeVo> menuTreeVos = new ArrayList<>(list.size());
|
|
|
+// BeanUtils.copyProperties(list, menuTreeVos);
|
|
|
+// //菜单附加信息
|
|
|
+// List<SysMenuExtraData> menuExtraDataList = extraDataService.list(new LambdaQueryWrapper<SysMenuExtraData>()
|
|
|
+// .in(SysMenuExtraData::getMenuId, menuIdList));
|
|
|
+// menuTreeVos.forEach(menuTreeVo -> {
|
|
|
+// menuExtraDataList.forEach(sysMenuExtraData -> {
|
|
|
+// if (menuTreeVo.getId().equals(sysMenuExtraData.getMenuId())) {
|
|
|
+// menuTreeVo.setExtraData(sysMenuExtraData);
|
|
|
+// }
|
|
|
+// });
|
|
|
+// });
|
|
|
+
|
|
|
+ return list;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<SysRole> getRoleListByUserId(EduTenant principal) {
|
|
|
- if (principal ==null) throw new RuntimeException("用户未登录");
|
|
|
- if (principal.getId() == null) throw new RuntimeException("用户不存在");
|
|
|
+
|
|
|
+ Assert.isTrue(ObjectUtil.isNotEmpty(principal), "用户未登录");
|
|
|
+ Assert.isTrue(ObjectUtil.isNotEmpty(principal.getId()), "用户不存在");
|
|
|
+
|
|
|
//用户角色列表id
|
|
|
- List<Long> roleIdList = sysUserRoleService.getBaseMapper().selectList(new LambdaQueryWrapper<SysUserRole>()
|
|
|
- .eq(SysUserRole::getId, principal.getId())).stream()
|
|
|
+ List<Long> roleIdList = sysUserRoleService.list(new LambdaQueryWrapper<SysUserRole>()
|
|
|
+ .eq(SysUserRole::getUserId, principal.getId())).stream()
|
|
|
.map(SysUserRole::getRoleId)
|
|
|
.collect(Collectors.toList());
|
|
|
- if (roleIdList.isEmpty()) return null;
|
|
|
+ if (roleIdList.isEmpty()) return new ArrayList<SysRole>();
|
|
|
+
|
|
|
//角色列表内容
|
|
|
List<SysRole> list = sysRoleService.list(new LambdaQueryWrapper<SysRole>()
|
|
|
.in(SysRole::getId, roleIdList)
|
|
@@ -152,38 +223,123 @@ public class ITenantServiceImpl extends SysServiceImpl<EduTenantMapper, EduTenan
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void assignRolesToUser(AssignRolesOrMenus assignRolesOrMenus) {
|
|
|
- Assert.isTrue(ObjectUtil.isNotEmpty(assignRolesOrMenus),"请登录");
|
|
|
- Assert.isTrue(ObjectUtil.isNotEmpty(assignRolesOrMenus.getId()),"请选择需分配角色的用户");
|
|
|
- Assert.isTrue(ObjectUtil.isNotEmpty(assignRolesOrMenus.getIds()),"请选择角色");
|
|
|
- List<SysRole> roleList = sysRoleService.listByIds(assignRolesOrMenus.getIds());
|
|
|
+ @Transactional
|
|
|
+ public void assignRolesToUser(AssignRolesOrMenusDto assignRolesOrMenusDto, EduTenant principal) {
|
|
|
+ assignValidate(assignRolesOrMenusDto);
|
|
|
+ assign(assignRolesOrMenusDto, principal);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void updateRolesToUser(AssignRolesOrMenusDto assignRolesOrMenusDto, EduTenant principal) {
|
|
|
+ assignValidate(assignRolesOrMenusDto);
|
|
|
+ deleteUserRoles(principal.getId());
|
|
|
+ assign(assignRolesOrMenusDto,principal);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void enableTenantByIds(Set<Long> ids) {
|
|
|
+ Assert.isTrue(ObjectUtil.isNotEmpty(ids),"请选择用户");
|
|
|
+ List<EduTenant> tenants = this.list(new LambdaQueryWrapper<EduTenant>()
|
|
|
+ .in(EduTenant::getId,ids));
|
|
|
+ Assert.isTrue(ObjectUtil.isNotEmpty(tenants)||tenants.size()== ids.size(),"包含已删除账号");
|
|
|
+ tenants.forEach(eduTenant -> {
|
|
|
+ Assert.isFalse(eduTenant.getDeleteFlag() == 1, "包含已删除账号");
|
|
|
+ Assert.isFalse(queryLoginUserId().equals(eduTenant.getId()),"不能操作超级管理员");
|
|
|
+ });
|
|
|
+ this.update(new LambdaUpdateWrapper<EduTenant>()
|
|
|
+ .set(EduTenant::getUserStatus,1)
|
|
|
+ .in(EduTenant::getId,ids));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void disableTenantByIds(Set<Long> ids) {
|
|
|
+ Assert.isTrue(ObjectUtil.isNotEmpty(ids),"请选择用户");
|
|
|
+ List<EduTenant> tenants = this.list(new LambdaQueryWrapper<EduTenant>()
|
|
|
+ .in(EduTenant::getId,ids));
|
|
|
+ Assert.isTrue(ObjectUtil.isNotEmpty(tenants)||tenants.size()== ids.size(),"包含已删除账号");
|
|
|
+ tenants.forEach(eduTenant -> {
|
|
|
+ Assert.isFalse(eduTenant.getDeleteFlag() == 1, "包含已删除账号");
|
|
|
+ Assert.isFalse(eduTenant.getUserStatus() == 0, "该账号已禁用,操作失败");
|
|
|
+ Assert.isFalse(queryLoginUserId().equals(eduTenant.getId()),"不能操作超级管理员");
|
|
|
+ });
|
|
|
+ this.update(new LambdaUpdateWrapper<EduTenant>()
|
|
|
+ .set(EduTenant::getUserStatus,0)
|
|
|
+ .in(EduTenant::getId,ids));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<EduTenant> dictMapPage(IPage<EduTenant> page, LambdaQueryWrapper<EduTenant> queryWrapper) {
|
|
|
+ return super.getPageLink(queryWrapper,page);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分配角色参数验证
|
|
|
+ */
|
|
|
+ private void assignValidate(AssignRolesOrMenusDto assignRolesOrMenusDto) {
|
|
|
+ Assert.isTrue(ObjectUtil.isNotEmpty(assignRolesOrMenusDto),"请登录");
|
|
|
+ Assert.isTrue(ObjectUtil.isNotEmpty(assignRolesOrMenusDto.getId()),"请选择需分配角色的用户");
|
|
|
+ Assert.isTrue(ObjectUtil.isNotEmpty(assignRolesOrMenusDto.getIds()),"请选择角色");
|
|
|
+ List<SysRole> roleList = sysRoleService.list(new LambdaQueryWrapper<SysRole>().in(SysRole::getId,assignRolesOrMenusDto.getIds()));
|
|
|
Assert.isTrue(ObjectUtil.isNotEmpty(roleList),"选择的角色不存在");
|
|
|
- Assert.isTrue(roleList.size() == assignRolesOrMenus.getIds().size(),"包含重复的角色或不存在的角色");
|
|
|
- //分配角色
|
|
|
- sysUserRoleService.saveOrUpdateBatch(assignRolesOrMenus.getIds().stream().map(roleId -> {
|
|
|
+ Assert.isTrue(roleList.size() == assignRolesOrMenusDto.getIds().size(),"包含重复的角色或不存在的角色");
|
|
|
+ Assert.isFalse(Objects.equals(queryLoginUserId(), assignRolesOrMenusDto.getId()),"不能为超级管理员分配角色");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分配角色
|
|
|
+ */
|
|
|
+ private void assign (AssignRolesOrMenusDto assignRolesOrMenusDto, EduTenant principal) {
|
|
|
+ sysUserRoleService.saveBatch(assignRolesOrMenusDto.getIds().stream().map(roleId -> {
|
|
|
SysUserRole sysUserRole = new SysUserRole();
|
|
|
- sysUserRole.setUserId(assignRolesOrMenus.getId());
|
|
|
+ sysUserRole.setUserId(assignRolesOrMenusDto.getId());
|
|
|
sysUserRole.setRoleId(roleId);
|
|
|
+ sysUserRole.setProject(principal.getProject());
|
|
|
return sysUserRole;
|
|
|
}).collect(Collectors.toList()));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- *
|
|
|
- * 填充用户状态
|
|
|
+ * 删除用户已有角色
|
|
|
*/
|
|
|
- private List<EduTenantVo> fillStatus(List<EduTenant> list) {
|
|
|
- List<EduTenantVo> eduTenantVos = BeanUtil.copyToList(list, EduTenantVo.class);
|
|
|
- eduTenantVos.forEach(eduTenantVo -> {
|
|
|
- if (eduTenantVo.getDeleteFlag() == 1) {
|
|
|
- eduTenantVo.setStatus(UserStatus.USER_STATUS_DELETED.getCode());
|
|
|
- } else if (eduTenantVo.getUserStatus() == 0) {
|
|
|
- eduTenantVo.setStatus(UserStatus.USER_STATUS_DISABLED.getCode());
|
|
|
- } else {
|
|
|
- eduTenantVo.setStatus(UserStatus.USER_STATUS_NORMAL.getCode());
|
|
|
- }
|
|
|
- });
|
|
|
- return eduTenantVos;
|
|
|
+ private void deleteUserRoles(Long userId) {
|
|
|
+ sysUserRoleService.remove(new LambdaQueryWrapper<SysUserRole>()
|
|
|
+ .eq(SysUserRole::getUserId, userId));
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<MenuTreeVo> getTenantPageTreeList(EduTenant principal) {
|
|
|
+ // 获取菜单列表 不含附加信息
|
|
|
+ List<SysMenu> menuList = getMenuList(principal);
|
|
|
+ if (menuList == null) return new ArrayList<MenuTreeVo>();
|
|
|
+
|
|
|
+ // 获取菜单ID集合
|
|
|
+ List<Long> menuIdList = menuList.stream()
|
|
|
+ .map(SysMenu::getId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (menuIdList.isEmpty()) return new ArrayList<MenuTreeVo>();
|
|
|
+
|
|
|
+ // 获取菜单附加信息
|
|
|
+ List<SysMenuExtraData> menuExtraDataList = sysMenuExtraDataService.list(new LambdaQueryWrapper<SysMenuExtraData>()
|
|
|
+ .in(SysMenuExtraData::getMenuId, menuIdList));
|
|
|
+
|
|
|
+ // 构建菜单树 菜单list 附加list
|
|
|
+ List<MenuTreeVo> treeList = sysMenuService.buildMenuTree(menuList, BeanUtil.copyToList(menuExtraDataList, SysMenuExtraDataVo.class));
|
|
|
+
|
|
|
+ return treeList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询为 超级管理员的用户账号id
|
|
|
+ */
|
|
|
+ public Long querySuperAdmin(){
|
|
|
+ return sysRoleService.getOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getName,"超级管理员")).getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 登陆人员id
|
|
|
+ */
|
|
|
+ public Long queryLoginUserId(){
|
|
|
+ return ((EduTenant)SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getId();
|
|
|
+ }
|
|
|
}
|