package com.ibeetl.admin.console.web; import java.util.Date; import java.util.List; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.beetl.sql.core.engine.PageQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.ibeetl.admin.console.service.MenuConsoleService; import com.ibeetl.admin.console.web.query.FunctionQuery; import com.ibeetl.admin.console.web.query.MenuQuery; import com.ibeetl.admin.core.annotation.Function; import com.ibeetl.admin.core.annotation.Query; import com.ibeetl.admin.core.entity.CoreFunction; import com.ibeetl.admin.core.entity.CoreMenu; import com.ibeetl.admin.core.rbac.tree.MenuItem; import com.ibeetl.admin.core.service.CorePlatformService; import com.ibeetl.admin.core.util.AnnotationUtil; import com.ibeetl.admin.core.util.ConvertUtil; import com.ibeetl.admin.core.web.JsonResult; /** * @author lijiazhi */ @Controller public class MenuController { private static final String MODEL = "/admin/menu"; private final Log log = LogFactory.getLog(this.getClass()); @Autowired MenuConsoleService menuService; @Autowired CorePlatformService platformService; /*页面*/ @GetMapping(MODEL + "/index.do") @Function("menu") public ModelAndView index() { ModelAndView view = new ModelAndView("/admin/menu/index.html"); view.addObject("search", MenuQuery.class.getName()); return view; } @GetMapping(MODEL + "/add.do") @Function("menu.add") public ModelAndView add() { ModelAndView view = new ModelAndView("/admin/menu/add.html"); return view; } @GetMapping(MODEL + "/edit.do") @Function("menu.edit") public ModelAndView edit(Integer id) { ModelAndView view = new ModelAndView("/admin/menu/edit.html"); CoreMenu menu = menuService.queryById(id); view.addObject("menu", menu); return view; } /*Json*/ /** * 查询 * @param menu * @return */ @PostMapping(MODEL + "/list/condition.json") @Function("menu.query") @ResponseBody public JsonResult condition() { List> list = AnnotationUtil.getInstance().getAnnotations(Query.class, MenuQuery.class); return JsonResult.success(list); } @PostMapping(MODEL + "/list.json") @Function("menu.query") @ResponseBody public JsonResult list(MenuQuery condtion) { PageQuery page = condtion.getPageQuery(); menuService.queryByCondtion(page); return JsonResult.success(page); } /** * 添加 * @param menu * @return */ @PostMapping(MODEL + "/save.json") @Function("menu.save") @ResponseBody public JsonResult save(@Validated CoreMenu menu) { menu.setCreateTime(new Date()); Long id = menuService.saveMenu(menu); return JsonResult.success(id); } /** * 更新 * @param fun * @return */ @PostMapping(MODEL + "/update.json") @Function("menu.update") @ResponseBody public JsonResult update(CoreMenu fun) { menuService.updateMenu(fun); return new JsonResult().success(); } /** * 根据id查询菜单信息 * @param id 菜单Id * @return */ @PostMapping(MODEL + "/view.json") @Function("menu.query") @ResponseBody public JsonResult view(Long id) { CoreMenu fun = menuService.queryById(id); MenuItem root = this.platformService.buildMenu(); MenuItem child = root.findChild(fun.getId()); CoreMenu parent = child.getParent().getData(); fun.set("parentMenuName", parent.getName()); return JsonResult.success(fun); } /** * 删除 * @param id 菜单id * @return */ @PostMapping(MODEL + "/delete.json") @Function("menu.delete") @ResponseBody public JsonResult delete(Long id) { menuService.deleteMenu(id); return new JsonResult().success(); } /** * 批量删除 * @param ids 菜单id集合 * @return */ @PostMapping(MODEL + "/batchDel.json") @Function("menu.delete") @ResponseBody public JsonResult delete(String ids) { List dels = ConvertUtil.str2longs(ids); menuService.batchDeleteMenuId(dels); return new JsonResult().success(); } }