package cn.com.goldenwater.dcproj.controller.system; import cn.com.goldenwater.core.web.BaseController; import cn.com.goldenwater.core.web.BaseResponse; import cn.com.goldenwater.dcproj.param.GetMenuByUserIdParam; import cn.com.goldenwater.dcproj.param.InsertMenuParam; import cn.com.goldenwater.dcproj.param.UpdateMenuParam; import cn.com.goldenwater.dcproj.target.Authority; import cn.com.goldenwater.dcproj.target.VerifyBean; import cn.com.goldenwater.id.util.UuidUtil; import cn.com.goldenwater.dcproj.dto.MenuDto; import cn.com.goldenwater.dcproj.model.Menu; import cn.com.goldenwater.dcproj.param.MenuParam; import cn.com.goldenwater.dcproj.service.MenuService; import com.github.pagehelper.PageInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; /** * @author lune * @date 2018-2-13 */ @Api(value = "菜单管理", tags = "001菜单管理") @RestController @RequestMapping("/sys/menus") public class MenuController extends BaseController { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private MenuService menuService; @ApiOperation(value = "添加菜单") @RequestMapping(value = "insert", method = RequestMethod.POST) public BaseResponse insert(@ApiParam(name = "menu", value = "Menu", required = true) @RequestBody Menu menu) { String uuid = UuidUtil.uuid(); // 生成uuid menu.setId(uuid); int ret = menuService.insert(menu); return buildSuccessResponse(uuid); } @ApiOperation(value = "根据ID删除菜单") @RequestMapping(value = "/{id}", method = RequestMethod.POST) public BaseResponse delete(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) { int ret = menuService.delete(id); return buildSuccessResponse(); } @ApiOperation(value = "更新菜单信息") @RequestMapping(value = "/update", method = RequestMethod.POST) public BaseResponse update(@ApiParam(name = "menu", value = "Menu", required = true) @RequestBody Menu menu) { Assert.notNull(menu.getId(), "主键id为必填参数"); int ret = menuService.update(menu); return buildSuccessResponse(); } @ApiOperation(value = "根据ID获取菜单(单表)") @RequestMapping(value = "/{id}", method = RequestMethod.GET) public BaseResponse get(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) { Menu menu = menuService.get(id); return buildSuccessResponse(menu); } @ApiOperation(value = "根据ID获取子菜单") @RequestMapping(value = "/list-by-parent/{id}", method = RequestMethod.GET) public BaseResponse> getChildren(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) { Assert.notNull(id, "ID为必填参数"); MenuParam param = new MenuParam(); param.setParentId(id); List list = menuService.findList(param); return buildSuccessResponse(list); } @Authority @VerifyBean @ApiOperation(value = "根据用户ID获取菜单(列表、树)") @RequestMapping(value = "list-by-user", method = RequestMethod.POST) public BaseResponse> getMenuByUserId(@RequestBody GetMenuByUserIdParam p) throws Exception { PageInfo list = menuService.getMenuByUserId(p); return buildSuccessResponse(list); } @VerifyBean @ApiOperation(value = "添加菜单(级联添加权限表)") @RequestMapping(value = "insert-menu-priv", method = RequestMethod.POST) public BaseResponse add(@ApiParam(name = "menuParam", value = "menuParam", required = true) @RequestBody InsertMenuParam menuParam) throws Exception { Menu menu = menuService.addMenuAndPriv(menuParam); return buildSuccessResponse(menu); } @VerifyBean @ApiOperation(value = "更新菜单(级联更新权限表)") @RequestMapping(value = "update-menu-priv", method = RequestMethod.POST) public BaseResponse updateWithPriv(@ApiParam(name = "menu", value = "menu", required = true) @RequestBody UpdateMenuParam menu) throws Exception { Menu m = menuService.updateWithPriv(menu); return buildSuccessResponse(m); } @ApiOperation(value = "删除菜单(级联删除权限表)") @RequestMapping(value = "/delete-menu-priv/{id}", method = RequestMethod.POST) public BaseResponse deleteWithPriv(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) throws Exception { Assert.notNull(id, "ID为必填参数"); MenuParam param = new MenuParam(); param.setParentId(id); List list = menuService.findList(param); if (list != null && !list.isEmpty()) { return buildFailResponse("当前菜单存在下级菜单,请先删除下级菜单!"); } menuService.deleteWithPriv(id); return buildSuccessResponse(); } @ApiOperation(value = "分页获取菜单列表-不包含分页信息") @RequestMapping(value = "/page", method = RequestMethod.POST) public BaseResponse> getMenuPage(@ApiParam(name = "menuParam", value = "菜单", required = false) @RequestBody(required = false) MenuParam menuParam) { List list = menuService.findPageDto(menuParam); return buildSuccessResponse(list); } @ApiOperation(value = "分页获取菜单列表-包含分页信息") @RequestMapping(value = "/pageInfo", method = RequestMethod.POST) public BaseResponse> getMenuPageInfo(@ApiParam(name = "menuParam", value = "MenuParam", required = false) @RequestBody MenuParam menuParam) { PageInfo page = menuService.findPageInfoDto(menuParam); return buildSuccessResponse(page); } @ApiOperation(value = "查询所有菜单(权限id不为空,菜单中权限id与之相等,则菜单中的checked=true)") @RequestMapping(value = "/findMenuList", method = RequestMethod.POST) public BaseResponse> findMenuList(@ApiParam(name = "menuParam", value = "菜单", required = false) @RequestBody MenuParam menuParam) { List list = menuService.findMenuList(menuParam); return buildSuccessResponse(list); } @ApiOperation(value = "更新菜单与权限的关联关系") @RequestMapping(value = "/updateMemuPriv", method = RequestMethod.POST) public BaseResponse updateMemuPriv(@ApiParam(name = "string", value = "menuIds", required = true) @RequestBody List menuIds, String privId) { Assert.notEmpty(menuIds, "菜单Id集合不能为空"); Assert.notNull(privId, "权限Id不能为空"); ArrayList menus = new ArrayList<>(); for (String id : menuIds) { Menu menu = new Menu(); menu.setId(id); menu.setPrivId(privId); menus.add(menu); } menuService.updateMemuPriv(menus, privId); return buildSuccessResponse(); } }