package com.hmit.kernes.service.impl; import java.util.Date; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.hmit.kernes.dao.SysRoleDao; import com.hmit.kernes.entity.SysRoleEntity; import com.hmit.kernes.service.SysRoleMenuService; import com.hmit.kernes.service.SysRoleService; import com.hmit.kernes.service.SysUserService; import com.hmit.kernes.utils.Constant; import com.hmit.kernes.utils.RRException; /** * 角色 * * @author kernespring * @email kernespring@gmail.com * @date 2016年9月18日 上午9:45:12 */ @Service("sysRoleService") public class SysRoleServiceImpl implements SysRoleService { @Autowired private SysRoleDao sysRoleDao; @Autowired private SysRoleMenuService sysRoleMenuService; @Autowired private SysUserService sysUserService; @Override public SysRoleEntity queryObject(Long roleId) { return sysRoleDao.queryObject(roleId); } @Override public List<SysRoleEntity> queryList(Map<String, Object> map) { return sysRoleDao.queryList(map); } @Override public int queryTotal(Map<String, Object> map) { return sysRoleDao.queryTotal(map); } @Override @Transactional public void save(SysRoleEntity role) { role.setCreateTime(new Date()); sysRoleDao.save(role); //检查权限是否越权 checkPrems(role); //保存角色与菜单关系 sysRoleMenuService.saveOrUpdate(role.getRoleId(), role.getMenuIdList()); } @Override @Transactional public void update(SysRoleEntity role) { sysRoleDao.update(role); //检查权限是否越权 checkPrems(role); //更新角色与菜单关系 sysRoleMenuService.saveOrUpdate(role.getRoleId(), role.getMenuIdList()); } @Override @Transactional public void deleteBatch(Long[] roleIds) { sysRoleDao.deleteBatch(roleIds); } @Override public List<Long> queryRoleIdList(Long createUserId) { return sysRoleDao.queryRoleIdList(createUserId); } /** * 检查权限是否越权 */ private void checkPrems(SysRoleEntity role){ //如果不是超级管理员,则需要判断角色的权限是否超过自己的权限 if(role.getCreateUserId() == Constant.SUPER_ADMIN){ return ; } //查询用户所拥有的菜单列表 List<Long> menuIdList = sysUserService.queryAllMenuId(role.getCreateUserId()); //判断是否越权 if(!menuIdList.containsAll(role.getMenuIdList())){ throw new RRException("新增角色的权限,已超出你的权限范围"); } } }