package com.ibeetl.admin.console.api;
|
|
import com.fasterxml.jackson.databind.DeserializationFeature;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.ibeetl.admin.console.model.CoreMenuModel;
|
import com.ibeetl.admin.console.model.CoreRoleModel;
|
import com.ibeetl.admin.console.model.PromoterModel;
|
import com.ibeetl.admin.console.service.*;
|
import com.ibeetl.admin.console.web.dto.RoleDataAccessFunction;
|
import com.ibeetl.admin.console.web.query.OrgQuery;
|
import com.ibeetl.admin.console.web.query.RoleQuery;
|
import com.ibeetl.admin.console.web.query.UserQuery;
|
import com.ibeetl.admin.core.annotation.Function;
|
import com.ibeetl.admin.core.entity.*;
|
import com.ibeetl.admin.core.rbac.UserLoginInfo;
|
import com.ibeetl.admin.core.rbac.tree.MenuItem;
|
import com.ibeetl.admin.core.rbac.tree.OrgItem;
|
import com.ibeetl.admin.core.service.CoreDictService;
|
import com.ibeetl.admin.core.service.CorePlatformService;
|
import com.ibeetl.admin.core.service.CoreUserService;
|
import com.ibeetl.admin.core.util.*;
|
import com.ibeetl.admin.core.web.JsonResult;
|
import com.ibeetl.admin.core.web.dto.MenuNodeView;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import org.beetl.sql.core.engine.PageQuery;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.servlet.ModelAndView;
|
|
import javax.servlet.http.Cookie;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.util.*;
|
|
/**
|
* 用户管理
|
*/
|
//@Controller
|
@RestController
|
@Api(value = "菜单接口类")
|
public class MenuApi {
|
|
private static final String MODEL = "/admin/front/menu";
|
private final Logger log = LoggerFactory.getLogger(this.getClass());
|
@Autowired
|
MenuConsoleService menuService;
|
@Autowired
|
RedisService redisService;
|
@Autowired
|
CorePlatformService platformService;
|
@Autowired
|
FunctionConsoleService functionConsoleService;
|
@Autowired
|
RoleConsoleService roleConsoleService;
|
/**
|
* 添加
|
* @param model
|
* @return
|
*/
|
@PostMapping(MODEL + "/saveMenu.json")
|
@ResponseBody
|
@ApiOperation(value="保存菜单", notes="test: 仅0有正确返回")
|
public JsonResult saveMenu(@RequestBody CoreMenuModel model) {
|
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("菜单已存在!");
|
}
|
return JsonResult.success(id);
|
}else{
|
return JsonResult.failMessage("菜单排序不能为空!");
|
}
|
}
|
|
/**
|
* 更新
|
* @param model
|
* @return
|
*/
|
@PostMapping(MODEL + "/updateMenu.json")
|
@ResponseBody
|
@ApiOperation(value="修改菜单(必须传入Id)", notes="test: 仅0有正确返回")
|
public JsonResult updateMenu(@RequestBody CoreMenuModel model) {
|
ObjectMapper objectMapper = new ObjectMapper();
|
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
CoreMenu menu = objectMapper.convertValue(model, CoreMenu.class);
|
menuService.updateMenu(menu);
|
return new JsonResult().success();
|
}
|
|
@PostMapping(MODEL + "/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(MODEL + "/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) {
|
menuService.deleteMenu(model.getId());
|
return new JsonResult().success();
|
}
|
|
|
@GetMapping(MODEL + "/allRoles.json")
|
@ResponseBody
|
@ApiOperation(value="查询角色列表", notes="test: 仅0有正确返回")
|
public JsonResult<List<CoreRole>> allRoles() {
|
List<CoreRole> list = roleConsoleService.queryAllPermissionList();
|
return JsonResult.success(list);
|
}
|
|
@PostMapping(MODEL + "/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(MODEL + "/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);
|
}
|
}
|