/**
|
* Copyright (c) 2018 人人开源 All rights reserved.
|
* <p>
|
* https://www.renren.io
|
* <p>
|
* 版权所有,侵权必究!
|
*/
|
|
package com.zt.modules.sys.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.zt.common.constant.Constant;
|
import com.zt.common.db.query.QueryFilter;
|
import com.zt.common.exception.ErrorCode;
|
import com.zt.common.exception.RenException;
|
import com.zt.common.service.BaseService;
|
import com.zt.core.context.UserContext;
|
import com.zt.core.sys.model.SysDept;
|
import com.zt.core.sys.model.SysUser;
|
import com.zt.modules.sys.dao.SysRoleDao;
|
import com.zt.modules.sys.dto.UserDto;
|
import com.zt.modules.sys.model.SysMenu;
|
import com.zt.modules.sys.model.SysRole;
|
import com.zt.modules.sys.model.SysRoleMenu;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import com.zt.modules.sys.service.SysMenuService;
|
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* 角色
|
*
|
* @author hehz
|
*/
|
@Service
|
public class SysRoleService extends BaseService<SysRoleDao, SysRole> {
|
@Autowired
|
private SysRoleMenuService sysRoleMenuService;
|
@Autowired
|
private SysRoleUserService sysRoleUserService;
|
@Autowired
|
private SysRoleDataScopeService sysRoleDataScopeService;
|
@Autowired
|
private SysDeptService sysDeptService;
|
@Autowired
|
private SysMenuService sysMenuService;
|
|
|
public List<SysRole> page(QueryFilter queryFilter) {
|
// 只查自己所属租户下的
|
QueryWrapper queryWrapper = queryFilter.getWrapper();
|
queryWrapper.eq("tenant_id", UserContext.getUser().getTenantId());
|
queryWrapper.eq("type", Constant.RoleType.NORMAL);
|
return super.query(queryFilter);
|
}
|
|
public List<SysRole> list(Long companyId) {
|
QueryFilter queryFilter = new QueryFilter();
|
QueryWrapper queryWrapper = queryFilter.getWrapper();
|
queryWrapper.eq("company_id", companyId);
|
queryWrapper.eq("type", Constant.RoleType.NORMAL);
|
return super.query(queryFilter);
|
}
|
/**
|
* 查询sysRole,条件是companyId下的role和其父级部门里面的全部roles
|
* @param companyId
|
* @return
|
*/
|
public List<SysRole> listWithParents(final Long companyId) {
|
QueryFilter queryFilter = new QueryFilter();
|
QueryWrapper queryWrapper = queryFilter.getWrapper();
|
queryWrapper.eq(Constant.TableColumn.IS_DELETE, Constant.Bool.NO);
|
queryWrapper.ne("type","1");
|
|
List<SysRole> allList=baseDao.selectList(queryWrapper);
|
/*
|
SysDept company=sysDeptService.get(companyId);
|
|
List<SysRole> sysRoles=allList.stream().filter(sysRole -> {
|
if(sysRole.getCompanyId().equals(companyId)){
|
return true;
|
}else{
|
if(company.getPids()!=null){
|
String[] pids=company.getPids().split(",");
|
for(String pid:pids){
|
if(sysRole.getCompanyId().equals(new Long(pid))){
|
return true;
|
}
|
}
|
}
|
}
|
return false;
|
}).collect(Collectors.toList());
|
*/
|
|
return allList;
|
}
|
|
public List<SysUser> getRoleUsers(Long roleID){
|
return sysRoleUserService.getRoleUsers(roleID);
|
}
|
|
@Transactional(rollbackFor = Exception.class)
|
public void insert(SysRole entity) {
|
if (entity.getType() == 0) {
|
entity.setType(Constant.RoleType.NORMAL);
|
}
|
if (entity.getCompanyId() == null || entity.getCompanyId() == 0) {
|
throw new RenException(ErrorCode.PARAMS_GET_ERROR);
|
}
|
// 保存角色
|
super.insert(entity);
|
/* List<SysMenu> allList = sysMenuService.getAllList();
|
for(SysMenu sysMenu:allList){
|
SysRoleMenu sysRoleMenu = new SysRoleMenu();
|
sysRoleMenu.setMenuId(sysMenu.getId());
|
sysRoleMenu.setRoleId(entity.getId());
|
sysRoleMenu.setDelete(true);
|
sysRoleMenuService.insert(sysRoleMenu);
|
}*/
|
}
|
|
@Transactional(rollbackFor = Exception.class)
|
public void update(SysRole entity) {
|
// 更新角色
|
super.update(entity);
|
|
// 更新角色数据权限关系
|
// sysRoleDataScopeService.saveOrUpdate(entity.getId(),
|
// entity.getDeptIdList());
|
}
|
|
@Transactional(rollbackFor = Exception.class)
|
public void delete(Long[] ids) {
|
// 删除角色
|
this.deleteLogic(ids);
|
|
// 删除角色用户关系
|
sysRoleUserService.deleteByRoleIds(ids);
|
|
// 删除角色菜单关系
|
sysRoleMenuService.deleteByRoleIds(ids);
|
|
// 删除角色数据权限关系
|
sysRoleDataScopeService.deleteByRoleIds(ids);
|
}
|
|
public List<SysRole> getByIds(List<Long> roleIds) {
|
return baseDao.selectList(new QueryWrapper<SysRole>().lambda().in(SysRole::getId, roleIds));
|
}
|
|
public List<SysRole> getAllList() {
|
List<SysRole> roleList = baseDao.selectList(new QueryWrapper<SysRole>().eq(Constant.TableColumn.IS_DELETE,
|
Constant.Bool.NO).orderByAsc(Constant.TableColumn.SORT));
|
return roleList;
|
}
|
|
}
|