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<Menu> userMenus = this.menuService.findUserMenus(username);
|
return new FebsResponse().data(userMenus);
|
}
|
|
@GetMapping("tree")
|
@ControllerEndpoint(exceptionMessage = "获取菜单树失败")
|
public FebsResponse getMenuTree(Menu menu) {
|
MenuTree<Menu> 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<Menu> menus = this.menuService.findMenuList(menu);
|
ExcelKit.$Export(Menu.class, response).downXlsx(menus, false);
|
}
|
}
|