/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有,侵权必究!
*/
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 {
@Autowired
private SysRoleMenuService sysRoleMenuService;
@Autowired
private SysRoleUserService sysRoleUserService;
@Autowired
private SysRoleDataScopeService sysRoleDataScopeService;
@Autowired
private SysDeptService sysDeptService;
@Autowired
private SysMenuService sysMenuService;
public List 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 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 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 allList=baseDao.selectList(queryWrapper);
/*
SysDept company=sysDeptService.get(companyId);
List 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 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 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 getByIds(List roleIds) {
return baseDao.selectList(new QueryWrapper().lambda().in(SysRole::getId, roleIds));
}
public List getAllList() {
List roleList = baseDao.selectList(new QueryWrapper().eq(Constant.TableColumn.IS_DELETE,
Constant.Bool.NO).orderByAsc(Constant.TableColumn.SORT));
return roleList;
}
}