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 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> allRoles() { List 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 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(MODEL + "/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); } }