package com.xzx.gc.role.controller; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.xzx.gc.common.constant.CommonEnum; import com.xzx.gc.common.constant.Constants; import com.xzx.gc.common.dto.log.OperationAppLog; import com.xzx.gc.common.request.BaseController; import com.xzx.gc.common.utils.MqUtil; import com.xzx.gc.common.utils.RedisUtil; import com.xzx.gc.entity.CoreMenu; import com.xzx.gc.entity.CoreRole; import com.xzx.gc.model.JsonResult; import com.xzx.gc.model.admin.CoreMenuModel; import com.xzx.gc.role.model.CoreRoleModel; import com.xzx.gc.role.rbac.tree.MenuItem; import com.xzx.gc.role.service.CorePlatformService; import com.xzx.gc.role.service.FunctionConsoleService; import com.xzx.gc.role.service.MenuConsoleService; import com.xzx.gc.role.service.RoleConsoleService; import com.xzx.gc.util.ConvertUtil; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; @RestController @Slf4j public class MenuController extends BaseController { @Autowired MenuConsoleService menuService; @Autowired RedisUtil redisService; @Autowired CorePlatformService platformService; @Autowired FunctionConsoleService functionConsoleService; @Autowired RoleConsoleService roleConsoleService; @Autowired private MqUtil mqUtil; /** * 添加 * @param model * @return */ @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/menu/saveMenu.json") @ResponseBody @ApiOperation(value="保存菜单", notes="test: 仅0有正确返回") public JsonResult saveMenu(@RequestBody CoreMenuModel model, HttpServletRequest request) { model.setCreateTime(new Date()); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); CoreMenu menu = objectMapper.convertValue(model, CoreMenu.class); if(menu.getSeq()!=null){ Long id = menuService.saveMenu(menu); if(id==-1){ return JsonResult.failMessage("菜单已存在!"); } OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ROLE_MODUL_NAME).operateAction("保存菜单-"+id).build(); mqUtil.sendApp(build); return JsonResult.success(id); }else{ return JsonResult.failMessage("菜单排序不能为空!"); } } /** * 更新 * @param model * @return */ @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/menu/updateMenu.json") @ResponseBody @ApiOperation(value="修改菜单(必须传入Id)", notes="test: 仅0有正确返回") public JsonResult updateMenu(@RequestBody CoreMenuModel model,HttpServletRequest request) { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); CoreMenu menu = objectMapper.convertValue(model, CoreMenu.class); menuService.updateMenu(menu); OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ROLE_MODUL_NAME).operateAction("修改菜单-"+model.getId()).build(); mqUtil.sendApp(build); return new JsonResult().success(); } @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/menu/view.json") @ResponseBody @ApiOperation(value="菜单详情", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "id", value = "菜单Id", required = true, dataType = "Long") }) public JsonResult view(@RequestBody CoreMenuModel menu) { CoreMenu fun = menuService.queryById(menu.getId()); 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 model 菜单id * @return */ @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/menu/deleteMenu.json") @ResponseBody @ApiOperation(value="删除菜单", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "id", value = "菜单Id", required = true, dataType = "Long") }) public JsonResult deleteMenu(@RequestBody CoreMenuModel model,HttpServletRequest request) { menuService.deleteMenu(model.getId()); OperationAppLog build = OperationAppLog.builder().appPrograme(CommonEnum.后台.getValue()).opreateName(getAdminName(request)) .methodName(Constants.ROLE_MODUL_NAME).operateAction("删除菜单-"+model.getId()).build(); mqUtil.sendApp(build); return new JsonResult().success(); } @GetMapping(Constants.ADMIN_VIEW_PREFIX + "/menu/allRoles.json") @ResponseBody @ApiOperation(value="查询角色列表", notes="test: 仅0有正确返回") public JsonResult> allRoles() { List list = roleConsoleService.queryAllPermissionList(); return JsonResult.success(list); } @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/menu/updateFunctionMenu.json") @ResponseBody @ApiOperation(value="修改角色菜单接口", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "roleId", value = "角色Id", required = true, dataType = "Long"), @ApiImplicitParam(paramType="query", name = "menuIds", value = "菜单(多个用逗号隔开)", required = true, dataType = "String") }) public JsonResult updateFunctionMenu(@RequestBody CoreRoleModel model) { List all = ConvertUtil.str2longs(model.getMenuIds()); List addIds = new ArrayList(); List delIds = new ArrayList(); List dbs = functionConsoleService.getFunctionByRole(model.getRoleId()); Iterator it = all.iterator(); for(Long id:all) { if(!dbs.contains(id)) { addIds.add(id); } } for(Long id:dbs) { if(!all.contains(id)) { delIds.add(id); } } functionConsoleService.updateSysRoleFunction(model.getRoleId(), addIds, delIds); return JsonResult.success(); } @PostMapping(Constants.ADMIN_VIEW_PREFIX + "/menu/queryMenuIdsByRoleId.json") @ResponseBody @ApiOperation(value="根据角色Id获取已经绑定的菜单", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "roleId", value = "角色Id", required = true, dataType = "Long") }) public JsonResult> queryMenuIdsByRoleId(@RequestBody CoreRoleModel model) { List list = functionConsoleService.getFunctionByRoleMenu(model.getRoleId()); return JsonResult.success(list); } }