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);
|
}
|
}
|