| package com.xcong.excoin.system.controller; | 
|   | 
|   | 
| import com.xcong.excoin.common.annotation.ControllerEndpoint; | 
| import com.xcong.excoin.common.controller.BaseController; | 
| import com.xcong.excoin.common.entity.FebsResponse; | 
| import com.xcong.excoin.common.entity.MenuTree; | 
| import com.xcong.excoin.common.exception.FebsException; | 
| import com.xcong.excoin.system.entity.Menu; | 
| import com.xcong.excoin.system.entity.User; | 
| import com.xcong.excoin.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); | 
|     } | 
| } |