|
|
@@ -3,17 +3,14 @@ package com.jzg.service.impl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.jzg.commons.annotation.IgnoreTenant;
|
|
|
-import com.jzg.commons.entity.po.SysRole;
|
|
|
-import com.jzg.commons.entity.po.SysRolePerms;
|
|
|
-import com.jzg.commons.entity.po.SysUserRole;
|
|
|
+import com.jzg.commons.core.base.BaseController;
|
|
|
+import com.jzg.commons.entity.po.*;
|
|
|
import com.jzg.commons.entity.vo.RolePermissionVo;
|
|
|
+import com.jzg.commons.entity.vo.SysRoleDataScopeVo;
|
|
|
import com.jzg.commons.entity.vo.SysRoleVo;
|
|
|
import com.jzg.commons.exception.SystemException;
|
|
|
import com.jzg.commons.util.idgen.IdGenerate;
|
|
|
-import com.jzg.mapper.SysMenuMapper;
|
|
|
-import com.jzg.mapper.SysRoleMapper;
|
|
|
-import com.jzg.mapper.SysRolePermsMapper;
|
|
|
-import com.jzg.mapper.SysUserRoleMapper;
|
|
|
+import com.jzg.mapper.*;
|
|
|
import com.jzg.service.SysSystemService;
|
|
|
import com.jzg.service.UserRoleService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
@@ -22,6 +19,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
public class UserRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements UserRoleService {
|
|
|
@@ -38,6 +37,15 @@ public class UserRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
|
|
|
@Autowired
|
|
|
SysUserRoleMapper sysUserRoleMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ SysRoleDataScopeMapper sysRoleDataScopeMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ SysRoleDataScopeLinkMapper sysRoleDataScopeLinkMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ BaseController baseController;
|
|
|
+
|
|
|
@IgnoreTenant
|
|
|
@Override
|
|
|
public List<RolePermissionVo> getAllRoleMenu() {
|
|
|
@@ -47,11 +55,31 @@ public class UserRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
|
|
|
|
|
|
@Override
|
|
|
public SysRoleVo roleGet(String roleId) {
|
|
|
- SysRole sysRole = baseMapper.selectById(roleId);
|
|
|
+ String userSystemCode = baseController.getUserSystemCode();
|
|
|
+ SysRole sysRole = baseMapper.selectOne(new LambdaQueryWrapper<SysRole>()
|
|
|
+ .eq(SysRole::getId,roleId)
|
|
|
+ .eq(SysRole::getSystemCode,userSystemCode));
|
|
|
+ if(Objects.isNull(sysRole)){
|
|
|
+ throw new SystemException("角色不存在");
|
|
|
+ }
|
|
|
List<SysRolePerms> sysRolePerms = sysRolePermsMapper.selectList(new LambdaQueryWrapper<SysRolePerms>()
|
|
|
.eq(SysRolePerms::getRoleId, roleId));
|
|
|
SysRoleVo sysRoleVo = new SysRoleVo(sysRole,sysRolePerms);
|
|
|
|
|
|
+ //获取角色数据权限
|
|
|
+ SysRoleDataScope sysRoleDataScope = sysRoleDataScopeMapper.selectOne(new LambdaQueryWrapper<SysRoleDataScope>()
|
|
|
+ .eq(SysRoleDataScope::getRoleId, roleId));
|
|
|
+ if(!Objects.isNull(sysRoleDataScope)) {
|
|
|
+ SysRoleDataScopeVo vo = new SysRoleDataScopeVo();
|
|
|
+ vo.setDataMark(sysRoleDataScope.getDataMark());
|
|
|
+ if (!sysRoleDataScope.equals("2")) {
|
|
|
+ List<SysRoleDataScopeLink> sysRoleDataScopeLinks = sysRoleDataScopeLinkMapper.selectList(new LambdaQueryWrapper<SysRoleDataScopeLink>()
|
|
|
+ .eq(SysRoleDataScopeLink::getRoleId, roleId));
|
|
|
+ vo.setDeptIds(sysRoleDataScopeLinks.stream().map(x -> x.getDeptId()).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ sysRoleVo.setDataScope(vo);
|
|
|
+ }
|
|
|
+
|
|
|
return sysRoleVo;
|
|
|
}
|
|
|
|
|
|
@@ -110,6 +138,30 @@ public class UserRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
|
|
|
baseMapper.updateById(sysRole);
|
|
|
sysRolePermsMapper.delete(new LambdaQueryWrapper<SysRolePerms>()
|
|
|
.eq(SysRolePerms::getRoleId,sysRole.getId()));
|
|
|
+ //更新用户数据权限
|
|
|
+ sysRoleDataScopeMapper.delete(new LambdaQueryWrapper<SysRoleDataScope>()
|
|
|
+ .eq(SysRoleDataScope::getRoleId,sysRole.getId()));
|
|
|
+ sysRoleDataScopeLinkMapper.delete(new LambdaQueryWrapper<SysRoleDataScopeLink>()
|
|
|
+ .eq(SysRoleDataScopeLink::getRoleId,sysRole.getId()));
|
|
|
+
|
|
|
+ //保存角色数据权限
|
|
|
+ SysRoleDataScope sysRoleDataScope = new SysRoleDataScope();
|
|
|
+ sysRoleDataScope.setId(IdGenerate.nextId());
|
|
|
+ sysRoleDataScope.setRoleId(sysRole.getId());
|
|
|
+ sysRoleDataScope.setDataMark(sysRoleVo.getDataScope().getDataMark());
|
|
|
+ sysRoleDataScopeMapper.insert(sysRoleDataScope);
|
|
|
+ if(sysRoleDataScope.getDataMark().equals("2") || sysRoleDataScope.getDataMark().equals("1")) {
|
|
|
+ List<SysRoleDataScopeLink> sysRoleDataScopeLinks = new ArrayList<>();
|
|
|
+ sysRoleVo.getDataScope().getDeptIds().forEach(item -> {
|
|
|
+ SysRoleDataScopeLink sysRoleDataScopeLink = new SysRoleDataScopeLink();
|
|
|
+ sysRoleDataScopeLink.setId(IdGenerate.nextId());
|
|
|
+ sysRoleDataScopeLink.setRoleId(sysRole.getId());
|
|
|
+ sysRoleDataScopeLink.setDeptId(item);
|
|
|
+ sysRoleDataScopeLinks.add(sysRoleDataScopeLink);
|
|
|
+ });
|
|
|
+ sysRoleDataScopeLinkMapper.insert(sysRoleDataScopeLinks);
|
|
|
+ }
|
|
|
+
|
|
|
if(sysRolePermsMapper.insert(sysRolePermsList).stream().count() > 0 && baseMapper.updateById(sysRole) > 0){
|
|
|
return true;
|
|
|
}
|
|
|
@@ -118,7 +170,11 @@ public class UserRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
|
|
|
|
|
|
@Override
|
|
|
public boolean roleDelete(SysRoleVo sysRoleVo) {
|
|
|
-
|
|
|
+ if(baseMapper.selectCount(new LambdaQueryWrapper<SysRole>()
|
|
|
+ .eq(SysRole::getId, sysRoleVo.getId())
|
|
|
+ .eq(SysRole::getSystemCode, sysRoleVo.getSystemCode())) == 0){
|
|
|
+ throw new SystemException("角色信息不存在");
|
|
|
+ }
|
|
|
if(sysRolePermsMapper.delete(new LambdaQueryWrapper<SysRolePerms>()
|
|
|
.eq(SysRolePerms::getRoleId, sysRoleVo.getId())) > 0 && baseMapper.deleteById(sysRoleVo.getId()) > 0){
|
|
|
return true;
|