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.common.MenuTree;
import com.rbac.dao.MenuDao;
import com.rbac.dao.RoleDao;
import com.rbac.entity.SysMenu;
import com.rbac.entity.SysRole;
import com.rbac.entity.SysRoleMenu;
import com.rbac.util.CommonUtils;
@Service("roleService")
public class RoleService {
@Autowired
private RoleDao roleDao;
@Autowired
private MenuDao menuDao;
/**
* 根据角色名称和角色描述查找角色列表
* @param roleName
* @param roleDesc
* @return
*/
public List<SysRole> getSysRoleList(String roleName, String roleDesc){
return roleDao.getSysRoleList(roleName, roleDesc);
}
/**
* 删除角色
* @param roleId
* @param modifierId
*/
public void deleteRole(Long roleId, Long modifierId){
SysRole role = this.getRoleById(roleId);
role.setIsDeleted(1);
role.setModifierId(modifierId);
role.setModifyTime(new Date());
roleDao.saveOrUpdate(role);
}
/**
* 根据角色id查找角色
* @param roleId
* @return
*/
public SysRole getRoleById(Long roleId){
return roleDao.findById(SysRole.class, roleId);
}
/**
* 保存角色实体
* @param role
*/
public void saveOrUpdateRole(SysRole role){
roleDao.saveOrUpdate(role);
String menuIds = role.getMenuIds();
String[] menuIdArray = menuIds.split(",");
List<SysRoleMenu> roleMenuList = roleDao.getSysRoleMenuByRoleId(role.getId());
for(SysRoleMenu roleMenu : roleMenuList){
roleMenu.setIsDeleted(1);
roleMenu.setModifierId(role.getModifierId());
roleMenu.setModifyTime(new Date());
roleDao.saveOrUpdate(roleMenu);
}
for(String menuId : menuIdArray){
if(CommonUtils.isBlank(menuId)){
continue;
}
SysRoleMenu roleMenu = new SysRoleMenu();
roleMenu.setIsDeleted(0);
roleMenu.setCreatorId(role.getModifierId());
roleMenu.setCreateTime(new Date());
roleMenu.setSysRole(role);
SysMenu menu = roleDao.findById(SysMenu.class, CommonUtils.parseLong(menuId));
roleMenu.setSysMenu(menu);
roleDao.saveOrUpdate(roleMenu);
}
}
/**
* 根据角色id查找角色关联菜单列表
* @param roleId
* @return
*/
public List<SysRoleMenu> getSysRoleMenuByRoleId(Long roleId){
return roleDao.getSysRoleMenuByRoleId(roleId);
}
/**
* 根据角色得到菜单复选树,不需要反绑数据时,role传null即可
* @param roleId
* @return
*/
public String getCheckedMenuTree(Long roleId){
List<SysMenu> menuList = menuDao.getSysMenuList(null, null);
if(roleId!=null){
List<SysRoleMenu> roleMenuList = roleDao.getSysRoleMenuByRoleId(roleId);
for(SysRoleMenu roleMenu : roleMenuList){
for(SysMenu menu : menuList){
if(roleMenu.getSysMenu().getId().equals(menu.getId())){
menu.setChecked(true);
}
}
}
}
return MenuTree.getMenuJsonString(menuList, true);
}
}