| 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<CoreMenu> 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<List<CoreRole>> allRoles() {  | 
|         List<CoreRole> 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<Long> all = ConvertUtil.str2longs(model.getMenuIds());  | 
|         List<Long> addIds = new ArrayList<Long>();  | 
|         List<Long> delIds = new ArrayList<Long>();  | 
|         List<Long> dbs = functionConsoleService.getFunctionByRole(model.getRoleId());  | 
|         Iterator<Long> 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<List<Long>> queryMenuIdsByRoleId(@RequestBody CoreRoleModel model) {  | 
|         List<Long> list = functionConsoleService.getFunctionByRoleMenu(model.getRoleId());  | 
|         return JsonResult.success(list);  | 
|     }  | 
| }  |