253 lines
7.3 KiB
Plaintext
253 lines
7.3 KiB
Plaintext
package com.securityControl.system.service.impl;
|
||
|
||
|
||
import com.google.common.collect.Maps;
|
||
import com.securityControl.system.api.domain.SysUser;
|
||
import com.securityControl.system.api.domain.decision.SysMenu;
|
||
import com.securityControl.system.domain.vo.*;
|
||
import com.securityControl.system.mapper.SysMenuDao;
|
||
import com.securityControl.system.service.SysMenuService;
|
||
import lombok.extern.slf4j.Slf4j;
|
||
import org.springframework.beans.factory.annotation.Autowired;
|
||
import org.springframework.stereotype.Service;
|
||
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
import java.util.Map;
|
||
import java.util.Set;
|
||
|
||
/**
|
||
*
|
||
*/
|
||
@Slf4j
|
||
@Service
|
||
public class SysMenuServiceImpl implements SysMenuService {
|
||
|
||
@Autowired
|
||
private SysMenuDao dao;
|
||
|
||
@Override
|
||
public Map<String,Object> getMenuTree(String keyId) {
|
||
Map<String,Object> map= Maps.newHashMap();
|
||
List<DtreeEntity> allList=dao.getAllMenuList();//查询全部数据
|
||
List<String> checkList =dao.getCheckMenu(keyId);
|
||
List<DtreeEntity> list=new ArrayList<>();
|
||
treeMenuList(allList,"0",list);
|
||
map.put("tree",list);
|
||
map.put("check",checkList);
|
||
return map;
|
||
}
|
||
|
||
/**
|
||
* 查询全部菜单数据
|
||
* @param sysMenu
|
||
* @return
|
||
*/
|
||
@Override
|
||
public List<SysMenuEntity> getMenuList(SysMenuEntity sysMenu) {
|
||
try{
|
||
List<SysMenuEntity> list= dao.getMenuList(sysMenu);//查询全部数据;
|
||
return list;
|
||
}catch (Exception e){
|
||
|
||
}
|
||
return new ArrayList<SysMenuEntity>();
|
||
}
|
||
|
||
/**
|
||
* 新增菜单列表
|
||
* @param sysMenu
|
||
* @return
|
||
*/
|
||
@Override
|
||
public ReturnCodeEntity insertMenu(SysMenuEntity sysMenu) {
|
||
ReturnCodeEntity returnCodeEntity=new ReturnCodeEntity();
|
||
try{
|
||
if("1".equals(sysMenu.getTypes())){
|
||
int num=dao.getMenuNameNum(sysMenu);
|
||
if(num>0){
|
||
returnCodeEntity.setMsg("菜单名称已存在");
|
||
returnCodeEntity.setCode("201");
|
||
return returnCodeEntity;
|
||
}
|
||
}
|
||
int num2=dao.insertMenu(sysMenu);
|
||
if(num2<1){
|
||
returnCodeEntity.setMsg("新增失败,请联系管理员");
|
||
returnCodeEntity.setCode("202");
|
||
return returnCodeEntity;
|
||
}
|
||
returnCodeEntity.setMsg("添加成功");
|
||
returnCodeEntity.setCode("200");
|
||
return returnCodeEntity;
|
||
|
||
}catch (Exception e){
|
||
returnCodeEntity.setMsg("网络异常,请稍后重试");
|
||
returnCodeEntity.setCode("203");
|
||
}
|
||
return returnCodeEntity;
|
||
}
|
||
|
||
/**
|
||
* 删除菜单数据
|
||
* @param keyId
|
||
* @return
|
||
*/
|
||
@Override
|
||
public ReturnCodeEntity deleteMenu(String keyId) {
|
||
ReturnCodeEntity returnCodeEntity=new ReturnCodeEntity();
|
||
try{
|
||
int num=dao.getChilderNum(keyId);//查询是否有子节点
|
||
if(num>0){
|
||
returnCodeEntity.setMsg("该节点下存在子节点,无法删除");
|
||
returnCodeEntity.setCode("202");
|
||
return returnCodeEntity;
|
||
}
|
||
int num2=dao.deleteMenu(keyId);
|
||
if(num2<1){
|
||
returnCodeEntity.setMsg("删除失败,请联系管理员");
|
||
returnCodeEntity.setCode("200");
|
||
return returnCodeEntity;
|
||
}
|
||
returnCodeEntity.setMsg("删除成功");
|
||
returnCodeEntity.setCode("200");
|
||
return returnCodeEntity;
|
||
|
||
}catch (Exception e){
|
||
returnCodeEntity.setMsg("网络异常,请稍后重试");
|
||
returnCodeEntity.setCode("203");
|
||
}
|
||
|
||
return returnCodeEntity;
|
||
}
|
||
|
||
/**
|
||
* 查询菜单数据列表
|
||
* @param keyId
|
||
* @return
|
||
*/
|
||
@Override
|
||
public SysMenuEntity getMenuDetail(String keyId) {
|
||
|
||
return dao.getMenuDetail(keyId);
|
||
}
|
||
|
||
/**
|
||
* 更新菜单
|
||
* @param sysMenu
|
||
* @return
|
||
*/
|
||
@Override
|
||
public ReturnCodeEntity updateMenu(SysMenuEntity sysMenu) {
|
||
ReturnCodeEntity returnCodeEntity=new ReturnCodeEntity();
|
||
try{
|
||
if("1".equals(sysMenu.getTypes())){
|
||
int num=dao.getMenuNameNum(sysMenu);
|
||
if(num>0){
|
||
returnCodeEntity.setMsg("菜单名称已存在");
|
||
returnCodeEntity.setCode("201");
|
||
return returnCodeEntity;
|
||
}
|
||
}
|
||
int num2=dao.updateMenu(sysMenu);
|
||
if(num2<1){
|
||
returnCodeEntity.setMsg("修改失败,请联系管理员");
|
||
returnCodeEntity.setCode("202");
|
||
return returnCodeEntity;
|
||
}
|
||
returnCodeEntity.setMsg("修改成功");
|
||
returnCodeEntity.setCode("200");
|
||
return returnCodeEntity;
|
||
|
||
}catch (Exception e){
|
||
System.err.println(e.toString());
|
||
returnCodeEntity.setMsg("网络异常,请稍后重试");
|
||
returnCodeEntity.setCode("203");
|
||
}
|
||
return returnCodeEntity;
|
||
}
|
||
|
||
/**
|
||
* 子节点数据处理
|
||
* @param menuList
|
||
* @param pid
|
||
* @param childMenu
|
||
*/
|
||
private void treeMenuList(List<DtreeEntity> menuList, String pid,List<DtreeEntity> childMenu) {
|
||
for (DtreeEntity mu : menuList) {//遍历菜单
|
||
//遍历出父id等于参数的id,add进子节点集合
|
||
if (pid.equals(mu.getParentId())) {
|
||
List<DtreeEntity> childList = new ArrayList<DtreeEntity>();//创建数据
|
||
List<CheckArr> cl=new ArrayList<CheckArr>();
|
||
CheckArr checkArr=new CheckArr("0","0");
|
||
cl.add(checkArr);
|
||
mu.setCheckArr(cl);
|
||
//递归遍历下一级
|
||
treeMenuList(menuList, mu.getId(),childList);
|
||
if(childList.size()>0){
|
||
mu.setChildren(childList);
|
||
}else{
|
||
mu.setLast(true);
|
||
}
|
||
childMenu.add(mu);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
*
|
||
* @param sysUser
|
||
* @return
|
||
*/
|
||
@Override
|
||
public Set<String> getMenuPermission(SysUser sysUser) {
|
||
return dao.getMenuPermission(sysUser);
|
||
}
|
||
|
||
/**
|
||
* 系統菜單獲取
|
||
* @param userId
|
||
* @return
|
||
*/
|
||
@Override
|
||
public List<String> getMenuPer(String userId, String types) {
|
||
return dao.getMenuPer(userId,types);
|
||
}
|
||
|
||
/**
|
||
* 查询当前角色配置的菜单信息
|
||
* @param userId
|
||
* @return
|
||
*/
|
||
@Override
|
||
public List<SysMenu> getAllMenuList(String userId) {
|
||
List<SysMenu> menuList =new ArrayList<SysMenu>();
|
||
try{
|
||
menuList =dao.getMenu(userId,"0");
|
||
getChilder(menuList,userId);
|
||
}catch (Exception e){
|
||
|
||
}
|
||
return menuList;
|
||
}
|
||
|
||
/**
|
||
* 子菜单查询
|
||
* @param menuList
|
||
*/
|
||
private void getChilder(List<SysMenu> menuList, String userId) {
|
||
for (SysMenu menu : menuList) {
|
||
List<SysMenu> list=dao.getMenu(userId, menu.getMenuId());
|
||
if(list!=null &&list.size()>0){
|
||
menu.setChilder(list);
|
||
menu.setLast(false);
|
||
}else{
|
||
menu.setChilder(new ArrayList<SysMenu>());
|
||
menu.setLast(true);
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|