package com.kidgrow.usercenter.controller;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import com.kidgrow.common.annotation.LoginUser;
import com.kidgrow.common.constant.CommonConstant;
import com.kidgrow.common.model.*;
import com.kidgrow.usercenter.service.ISysMenuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.stream.Collectors;
/**
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
*
* @Description: 菜单管理
* @Project:
* @CreateDate: Created in 2020/2/13 15:50
* @Author: liuke
*/
@RestController
@Api(tags = "菜单模块api")
@Slf4j
@RequestMapping("/menus")
public class SysMenuController {
public static List menus = new ArrayList<>();
@Autowired
private ISysMenuService menuService;
/**current
* 两层循环实现建树
*
* @param sysMenus
* @return
*/
public static List treeBuilder(List sysMenus) {
List menus = new ArrayList<>();
for (SysMenu sysMenu : sysMenus) {
if (ObjectUtils.equals(-1L, sysMenu.getParentId())) {
menus.add(sysMenu);
}
for (SysMenu menu : sysMenus) {
if (menu.getParentId().equals(sysMenu.getId())) {
if (sysMenu.getSubMenus() == null) {
sysMenu.setSubMenus(new ArrayList<>());
}
sysMenu.getSubMenus().add(menu);
}
}
}
return menus;
}
/**
* 修改菜单状态
*
* @param params
* @return
*/
@ApiOperation(value = "修改菜单状态")
@GetMapping("/updateEnabled")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "菜单id", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "enabled", value = "是否启用", required = true, dataType = "Boolean")
})
public ResultBody updateEnabled(@RequestParam Map params) {
Long id = MapUtils.getLong(params, "id");
return menuService.updateEnabled(params);
}
/**
* 删除菜单
*
* @param id
*/
@ApiOperation(value = "删除菜单")
@DeleteMapping("/{id}")
public ResultBody delete(@PathVariable Long id) {
try {
menuService.removeById(id);
return ResultBody.ok().msg("操作成功");
} catch (Exception ex) {
log.error("memu-delete-error", ex);
return ResultBody.failed().msg("操作失败");
}
}
@ApiOperation(value = "根据roleId获取对应的菜单")
@GetMapping("/{roleId}/menus")
public ResultBody>> findMenusByRoleId(@PathVariable Long roleId,@RequestParam Map params) {
Set roleIds = new HashSet<>();
roleIds.add(roleId);
//获取该角色对应的菜单
List roleMenus = menuService.findByRoles(roleIds);
//全部的菜单列表
List allMenus = menuService.findAll(params);
List