package com.rbac.service;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.rbac.dao.MenuDao;
import com.rbac.entity.SysAction;
import com.rbac.entity.SysMenu;
import com.rbac.entity.SysMenuAction;
import com.rbac.util.CommonUtils;
@Service("menuService")
public class MenuService {
@Autowired
private MenuDao menuDao;
/**
* 根据菜单名称和菜单路径查找菜单列表
* @param name
* @param url
* @return
*/
public List<SysMenu> getSysMenuList(String name, String url){
return menuDao.getSysMenuList(name, url);
}
/**
* 删除菜单
* @param menuId
* @param modifierId
*/
public void deleteMenu(Long menuId, Long modifierId){
SysMenu menu = this.getMenuById(menuId);
menu.setIsDeleted(1);
menu.setModifierId(modifierId);
menu.setModifyTime(new Date());
menuDao.saveOrUpdate(menu);
}
/**
* 根据菜单id查找菜单
* @param menuId
* @return
*/
public SysMenu getMenuById(Long menuId){
return menuDao.findById(SysMenu.class, menuId);
}
/**
* 保存菜单实体
* @param menu
*/
public void saveOrUpdateMenu(SysMenu menu){
menuDao.saveOrUpdate(menu);
String actionIds = menu.getActionIds();
String[] actionIdArray = actionIds.split(",");
List<SysMenuAction> menuActionList = menuDao.getSysMenuActionByMenuId(menu.getId());
for(SysMenuAction menuAction : menuActionList){
menuAction.setIsDeleted(1);
menuAction.setModifierId(menu.getModifierId());
menuAction.setModifyTime(new Date());
menuDao.saveOrUpdate(menuAction);
}
for(String actionIdStr : actionIdArray){
if(CommonUtils.isBlank(actionIdStr)){
continue;
}
SysMenuAction menuAction = new SysMenuAction();
menuAction.setIsDeleted(0);
menuAction.setCreatorId(menu.getModifierId());
menuAction.setCreateTime(new Date());
menuAction.setSysMenu(menu);
SysAction action = menuDao.findById(SysAction.class, CommonUtils.parseLong(actionIdStr));
menuAction.setSysAction(action);
menuDao.saveOrUpdate(menuAction);
}
}
/**
* 根据菜单id查找菜单关联权限列表
* @param menuId
* @return
*/
public List<SysMenuAction> getSysMenuActionByMenuId(Long menuId){
return menuDao.getSysMenuActionByMenuId(menuId);
}
}