package com.allinpay.its.boss.system.menu.service;
import java.util.ArrayList;
import java.util.List;
import com.allinpay.its.boss.framework.utils.Page;
import com.allinpay.its.boss.framework.utils.WebConstant;
import com.allinpay.its.boss.system.menu.dao.IFrameworkSysMenuDao;
import com.allinpay.its.boss.system.menu.dao.impl.FrameworkSysMenuDaoImpl;
import com.allinpay.its.boss.system.menu.model.FrameworkSysMenu;
import com.allinpay.its.boss.system.permission.model.FrameworkUserInf;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class FrameworkSysMenuServiceImpl {
@Autowired
private IFrameworkSysMenuDao iFrameworkSysMenuDao;
@Autowired
private FrameworkSysMenuDaoImpl frameworkSysMenuDaoImpl;
public Page getFrameworkSysMenuList(FrameworkSysMenu obj) {
Page page = frameworkSysMenuDaoImpl.pageBy(null, null, obj, obj.getPageNum(), obj.getNumPerPage());
return page;
}
public void insertMenu(FrameworkSysMenu obj, int levelId) {
if(levelId == 1){
obj.setPid(new Long(0));
obj.setIs_leaf(null);
}else if (levelId == 2){
obj.setIs_leaf("0");
}else{
obj.setIs_leaf("1");
}
frameworkSysMenuDaoImpl.save(obj);
}
public void update(FrameworkSysMenu obj) {
frameworkSysMenuDaoImpl.update(obj);
}
public void delete(int menuId) {
frameworkSysMenuDaoImpl.deleteById(menuId);
}
public FrameworkSysMenu getMenu(int menuId) {
FrameworkSysMenu menu = iFrameworkSysMenuDao.getById(menuId);
if(menu.getPid() != null && menu.getPid().intValue()>0){
menu.setPmenu(iFrameworkSysMenuDao.getById(menu.getPid().intValue()));
}
return menu;
}
public List<FrameworkSysMenu> getMenuList(){
return iFrameworkSysMenuDao.getMenuList();
}
public List<FrameworkSysMenu> getMenuList(FrameworkSysMenu menu){
return iFrameworkSysMenuDao.getMenuList(menu);
}
public Page getFrameworkSysMenuListByLevelId(FrameworkSysMenu menu, int levelId) {
Page page = null;
if(levelId == 1){
page = frameworkSysMenuDaoImpl.pageBy("selectmenulevel1", "selectmenulevel1Count", menu, menu.getPageNum(), menu.getNumPerPage());
}else if(levelId == 2){
page = frameworkSysMenuDaoImpl.pageBy("selectmenulevel2", "selectmenulevel2Count", menu, menu.getPageNum(), menu.getNumPerPage());
if(page.getResult() != null && page.getResult().size()>0){
for(Object object:page.getResult()){
FrameworkSysMenu result = (FrameworkSysMenu)object;
if(result.getPid() != null && result.getPid().intValue()>0){
result.setPmenu(iFrameworkSysMenuDao.getById(result.getPid().intValue()));
}
}
}
}else{
page = frameworkSysMenuDaoImpl.pageBy("selectmenulevel3", "selectmenulevel3Count", menu, menu.getPageNum(), menu.getNumPerPage());
if(page.getResult() != null && page.getResult().size()>0){
for(Object object:page.getResult()){
FrameworkSysMenu result = (FrameworkSysMenu)object;
if(result.getPid() != null && result.getPid().intValue()>0){
result.setPmenu(iFrameworkSysMenuDao.getById(result.getPid().intValue()));
}
if(result.getPmenu() != null && result.getPmenu().getPid() != null && result.getPmenu().getPid().intValue()>0){
result.setPpmenu(iFrameworkSysMenuDao.getById(result.getPmenu().getPid().intValue()));
}
}
}
}
return page;
}
public List<FrameworkSysMenu> getFrameworkSysMenuListByLevelId(int levelId,FrameworkUserInf userInf) {
List<FrameworkSysMenu> allLists = null;
List<FrameworkSysMenu> userMenuList= getSysMenuByUserRole(userInf.getId());
if(levelId == 1){
allLists = frameworkSysMenuDaoImpl.findBy("selectmenulevel1", null);
}else if(levelId == 2){
allLists = frameworkSysMenuDaoImpl.findBy("selectmenulevel2", null);
}else{
allLists = frameworkSysMenuDaoImpl.findBy("selectmenulevel3", null);
}
//权限过滤,方法很不好以后在优化,请见谅
List<FrameworkSysMenu> resultList = new ArrayList<FrameworkSysMenu>();
if(userInf.getUserName().equalsIgnoreCase(WebConstant.SUPPER_MANAGER_USER)){ //如果管理员
return allLists;
}else{ //非管理员在这里进行过滤
if(userMenuList != null && userMenuList.size()>0 ){
for(FrameworkSysMenu allList:allLists){
Long allId = allList.getId();
for(FrameworkSysMenu userMenu:userMenuList){
if(allId.equals(userMenu.getId())){
resultList.add(allList);
}
}
}
}
}
return resultList;
}
public List<Integer> getUserPermSysMenuIdByUserId(int userId){
List<FrameworkSysMenu> menuList = iFrameworkSysMenuDao.getUserPermSysMenuIdByUserId(userId);
List<Integer> idList = new ArrayList<Integer>();
for(FrameworkSysMenu menu: menuList){
idList.add(menu.getId().intValue());
}
return idList;
}
public List<FrameworkSysMenu> getUserPermSysMenuIdByPid(List<Integer> pidList){
return iFrameworkSysMenuDao.getUserPermSysMenuIdByPid(pidList);
}
/**
* 获得用户ID对应的菜单列表
* @param userId
* @return
*/
public List<FrameworkSysMenu> getSysMenuByUserRole(Long userId){
List<FrameworkSysMenu> menuList = new ArrayList<FrameworkSysMenu>();
List<Integer> idList = getUserPermSysMenuIdByUserId(userId.intValue());
if(idList == null || idList.size() == 0){
return menuList;
}
menuList = getUserPermSysMenuIdByPid(idList);
return menuList;
}
public List<FrameworkSysMenu> getFrameworkSysMenuListBySubMenuList(List<FrameworkSysMenu> subMenuList) {
List<FrameworkSysMenu> returnList = new ArrayList<FrameworkSysMenu>();
if(subMenuList != null && subMenuList.size()>0){
for(FrameworkSysMenu menu:subMenuList){
if(menu.getPid() != null && menu.getPid().intValue()>0){
FrameworkSysMenu pmenu = iFrameworkSysMenuDao.getById(menu.getPid().intValue());
boolean isAt = false;
for(FrameworkSysMenu cmenu:returnList){
if(cmenu.getId().intValue() == pmenu.getId().intValue()){
isAt = true;
}
}
if(!isAt){
returnList.add(pmenu);
}
}
}
}
return returnList;
}
}