package cc.mrbird.febs.system.controller; import cc.mrbird.febs.common.annotation.ControllerEndpoint; import cc.mrbird.febs.common.controller.BaseController; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.MenuTree; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.system.entity.Menu; import cc.mrbird.febs.system.entity.User; import cc.mrbird.febs.system.service.IMenuService; import com.wuwenze.poi.ExcelKit; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import javax.validation.constraints.NotBlank; import java.util.List; /** * @author MrBird */ @Slf4j @RestController @RequiredArgsConstructor @RequestMapping("menu") public class MenuController extends BaseController { private final IMenuService menuService; @GetMapping("{username}") public FebsResponse getUserMenus(@NotBlank(message = "{required}") @PathVariable String username) throws FebsException { User currentUser = getCurrentUser(); if (!StringUtils.equalsIgnoreCase(username, currentUser.getUsername())) { throw new FebsException("您无权获取别人的菜单"); } MenuTree userMenus = this.menuService.findUserMenus(username); return new FebsResponse().data(userMenus); } @GetMapping("tree") @ControllerEndpoint(exceptionMessage = "获取菜单树失败") public FebsResponse getMenuTree(Menu menu) { MenuTree menus = this.menuService.findMenus(menu); return new FebsResponse().success().data(menus.getChilds()); } @PostMapping @RequiresPermissions("menu:add") @ControllerEndpoint(operation = "新增菜单/按钮", exceptionMessage = "新增菜单/按钮失败") public FebsResponse addMenu(@Valid Menu menu) { this.menuService.createMenu(menu); return new FebsResponse().success(); } @GetMapping("delete/{menuIds}") @RequiresPermissions("menu:delete") @ControllerEndpoint(operation = "删除菜单/按钮", exceptionMessage = "删除菜单/按钮失败") public FebsResponse deleteMenus(@NotBlank(message = "{required}") @PathVariable String menuIds) { this.menuService.deleteMenus(menuIds); return new FebsResponse().success(); } @PostMapping("update") @RequiresPermissions("menu:update") @ControllerEndpoint(operation = "修改菜单/按钮", exceptionMessage = "修改菜单/按钮失败") public FebsResponse updateMenu(@Valid Menu menu) { this.menuService.updateMenu(menu); return new FebsResponse().success(); } @GetMapping("excel") @RequiresPermissions("menu:export") @ControllerEndpoint(exceptionMessage = "导出Excel失败") public void export(Menu menu, HttpServletResponse response) { List menus = this.menuService.findMenuList(menu); ExcelKit.$Export(Menu.class, response).downXlsx(menus, false); } }