package com.mes.menu.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mes.base.BaseController;
import com.mes.menu.entity.SysMenu;
import com.mes.role.entity.SysRoleMenu;
import com.mes.utils.Result;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* 菜单表
*
*
* @author zhoush
* @since 2024-04-11
*/
@ApiModel("获取菜单信息")
@RestController
@RequestMapping("/menu/sysMenu")
public class SysMenuController extends BaseController {
@ApiOperation("获取用户有权限的所有菜单")
@GetMapping("/list")
public Result> getMenuTree(String userName) {
return Result.success(sysMenuService.getMenuTree());
}
@ApiOperation("获取用户的权限")
@GetMapping("/getAuthorityInfo")
public Result> getAuthorityInfo(String userName) {
return Result.success(sysMenuService.getAuthorityInfo(userName));
}
/**
* 用户当前用户的菜单和权限信息
*
* @param userName
* @return
*/
@GetMapping("/nav")
public Result nav(String userName) {
// SysUser sysUser = sysUserService.listByUserNameName(userName);
//
// // 获取权限信息
// sysUserService.getUserAuthorityInfo(sysUser.getId());// ROLE_admin,ROLE_normal,sys:user:list,....
// String[] authorityInfoArray = StringUtils.tokenizeToStringArray(authorityInfo, ",");
//
// // 获取导航栏信息
// List navs = sysMenuService.getCurrentUserNav();
//
// return Result.success(MapUtil.builder()
// .put("authoritys", authorityInfoArray)
// .put("nav", navs)
// .map()
// );
return null;
}
@GetMapping("/info/{id}")
@PreAuthorize("hasAuthority('sys:menu:list')")
public Result info(@PathVariable(name = "id") Long id) {
return Result.success(sysMenuService.getById(id));
}
// @GetMapping("/list")
// @PreAuthorize("hasAuthority('sys:menu:list')")
// public Result list() {
//
//// List menus = sysMenuService.tree();
// return Result.success(null);
// }
@PostMapping("/save")
@PreAuthorize("hasAuthority('sys:menu:save')")
public Result save(@Validated @RequestBody SysMenu sysMenu) {
return Result.success(sysMenuService.save(sysMenu));
}
@PostMapping("/update")
@PreAuthorize("hasAuthority('sys:menu:update')")
public Result update(@Validated @RequestBody SysMenu sysMenu) {
sysMenuService.updateById(sysMenu);
// 清除所有与该菜单相关的权限缓存
sysUserService.clearUserAuthorityInfoByMenuId(sysMenu.getId());
return Result.success(sysMenu);
}
@PostMapping("/delete/{id}")
@PreAuthorize("hasAuthority('sys:menu:delete')")
public Result delete(@PathVariable("id") Long id) {
int count = sysMenuService.count(new QueryWrapper().eq("parent_id", id));
if (count > 0) {
return Result.error("请先删除子菜单");
}
// 清除所有与该菜单相关的权限缓存
sysUserService.clearUserAuthorityInfoByMenuId(id);
sysMenuService.removeById(id);
// 同步删除中间关联表
sysRoleMenuService.remove(new QueryWrapper().eq("menu_id", id));
return Result.success("");
}
}