package com.xzx.gc.role.service; 
 | 
  
 | 
  
 | 
import com.github.pagehelper.PageHelper; 
 | 
import com.github.pagehelper.PageInfo; 
 | 
import com.xzx.gc.entity.*; 
 | 
import com.xzx.gc.model.RoleDataAccessFunction; 
 | 
import com.xzx.gc.model.admin.CoreFunctionModel; 
 | 
import com.xzx.gc.model.admin.MoneyModel; 
 | 
import com.xzx.gc.model.dto.LazyEntity; 
 | 
import com.xzx.gc.model.query.FunctionQuery; 
 | 
import com.xzx.gc.role.mapper.CoreMenuMapper; 
 | 
import com.xzx.gc.role.mapper.CoreRoleMenuMapper; 
 | 
import com.xzx.gc.role.mapper.RoleFunctionConsoleMapper; 
 | 
import com.xzx.gc.role.rbac.tree.FunctionItem; 
 | 
  
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
import tk.mybatis.mapper.entity.Example; 
 | 
  
 | 
import java.util.*; 
 | 
  
 | 
/** 
 | 
 * @author lijiazhi 
 | 
 * 
 | 
 */ 
 | 
@Service 
 | 
@Transactional 
 | 
public class FunctionConsoleService{ 
 | 
  
 | 
    @Autowired 
 | 
    RoleFunctionConsoleMapper roleFunctionConsoleDao; 
 | 
    @Autowired 
 | 
    CoreRoleMenuMapper sysRoleMenuDao; 
 | 
    @Autowired 
 | 
    CorePlatformService platformService; 
 | 
    /** 
 | 
     * 得到角色对应的所有功能点 
 | 
     * @param roleId 
 | 
     * @return 
 | 
     */ 
 | 
    public List<Long> getFunctionByRole(Long roleId){ 
 | 
        return roleFunctionConsoleDao.getFunctionIdByRole(roleId); 
 | 
    } 
 | 
  
 | 
    public void updateSysRoleFunction(Long roleId,List<Long> adds,List<Long> dels){ 
 | 
        for(Long del:dels){ 
 | 
  
 | 
            //同时,需要删除与此功能关联的菜单 
 | 
            CoreRoleMenu sysRoleMenu = querySysRoleMenu(roleId,del); 
 | 
            if(sysRoleMenu!=null){ 
 | 
                sysRoleMenuDao.deleteByPrimaryKey(sysRoleMenu.getId()); 
 | 
            } 
 | 
        } 
 | 
        List<CoreRoleMenu> sysRoleMenuList = querySysRoleMenuList(roleId); 
 | 
        for (CoreRoleMenu menu:sysRoleMenuList) { 
 | 
            sysRoleMenuDao.deleteByPrimaryKey(menu.getId()); 
 | 
        } 
 | 
        for(Long add:adds){ 
 | 
            //同时,需要增加菜单 
 | 
            CoreRoleMenu roleMenu = new CoreRoleMenu(); 
 | 
            roleMenu.setMenuId(add); 
 | 
            roleMenu.setRoleId(roleId); 
 | 
            sysRoleMenuDao.insert(roleMenu); 
 | 
        } 
 | 
        //} 
 | 
  
 | 
        //清楚缓存 
 | 
        platformService.clearFunctionCache(); 
 | 
  
 | 
    } 
 | 
  
 | 
    private CoreRoleMenu querySysRoleMenu(Long roleId,Long menuId){ 
 | 
        Example example = new Example(CoreRoleMenu.class); 
 | 
        Example.Criteria criteria = example.createCriteria(); 
 | 
        criteria.andEqualTo("menuId",menuId); 
 | 
        criteria.andEqualTo("roleId",roleId); 
 | 
       /* CoreRoleMenu query= new CoreRoleMenu(); 
 | 
        query.setMenuId(menuId); 
 | 
        query.setRoleId(roleId);*/ 
 | 
        List<CoreRoleMenu> menus = sysRoleMenuDao.selectByExample(example); 
 | 
        return menus.isEmpty()?null:menus.get(0); 
 | 
    } 
 | 
  
 | 
    private List<CoreRoleMenu> querySysRoleMenuList(Long roleId){ 
 | 
        Example example = new Example(CoreRoleMenu.class); 
 | 
        Example.Criteria criteria = example.createCriteria(); 
 | 
        criteria.andEqualTo("roleId",roleId); 
 | 
        List<CoreRoleMenu> menus = sysRoleMenuDao.selectByExample(example); 
 | 
        return menus; 
 | 
    } 
 | 
  
 | 
    public List<Long> getFunctionByRoleMenu(Long roleId){ 
 | 
        return roleFunctionConsoleDao.getFunctionByRoleMenu(roleId); 
 | 
    } 
 | 
  
 | 
} 
 |