Commit 558f4bb7 authored by 李德才's avatar 李德才

区分显示菜单和跳转菜单

parent 4062b413
...@@ -23,183 +23,193 @@ import com.jfinal.plugin.activerecord.Db; ...@@ -23,183 +23,193 @@ import com.jfinal.plugin.activerecord.Db;
* 应用菜单相关操作 * 应用菜单相关操作
* *
* @author dgq * @author dgq
*
*/ */
public class MenuController extends Controller { public class MenuController extends Controller {
@Inject @Inject
private LogService logService; private LogService logService;
@Inject @Inject
private MenuService menuService; private MenuService menuService;
/** /**
获取权限菜单 * 获取权限菜单
*/ */
public void index() { public void index() {
String username = this.getAttrForStr("username"); String username = this.getAttrForStr("username");
Integer userId = Db.queryInt(Db.getSql("getUserId"), username); Integer userId = Db.queryInt(Db.getSql("getUserId"), username);
List<System> systems = System.dao.template("getSystems").find(); List<System> systems = System.dao.template("getSystems").find();
Kv kvSystems = CollectionUtil.toIntMap(systems, "ID"); Kv kvSystems = CollectionUtil.toIntMap(systems, "ID");
List<Menu> menus = null; List<Menu> menus = null;
if ("admin".equals(username)) { if ("admin".equals(username)) {
menus = Menu.dao.template("getMenus").find(); menus = Menu.dao.template("getMenus").find();
} else { } else {
menus = Menu.dao.template("getMenusByUser", Kv.by("userId", userId)).find(); menus = Menu.dao.template("getMenusByUser", Kv.by("userId", userId)).find();
}
List<MenuStar> stars = MenuStar.dao.template("getMenuStar", userId).find();
for (Menu menu : menus) {
System system = (System) kvSystems.get(menu.getSystemId());
if (system != null) {
menu.put("system", system.getName());
menu.put("url", system.getUrl());
menu.put("star", exist(menu.getId(), stars));
List<Menu> abilities = system.get("menus", new ArrayList<Menu>());
abilities.add(menu);
system.put("menus", abilities);
}
}
this.renderJson(Ret.ok("apps", systems));
} }
List<MenuStar> stars = MenuStar.dao.template("getMenuStar", userId).find();
for (Menu menu : menus) {
System system = (System) kvSystems.get(menu.getSystemId());
/** if (system != null) {
* 获取菜单列表 menu.put("system", system.getName());
*/ menu.put("url", system.getUrl());
public void getMenuList() { menu.put("star", exist(menu.getId(), stars));
try { List<Menu> abilities = system.get("menus", new ArrayList<Menu>());
Integer sysId = getParaToInt("sysId"); abilities.add(menu);
String condStr = getPara("condStr"); system.put("menus", abilities);
renderJson(Ret.ok("data", menuService.getMenuListBySysId(sysId, condStr))); }
} catch (Exception e) { }
e.printStackTrace(); this.renderJson(Ret.ok("apps", systems));
renderJson(Ret.fail("msg", "获取菜单列表出错,请刷新后重试!")); }
}
}
/**
/** * 获取菜单列表
* 保存菜单数据 */
*/ public void getMenuList() {
public void saveMenuData() { try {
try { Integer sysId = getParaToInt("sysId");
Menu menu = getBean(Menu.class, "menu"); String condStr = getPara("condStr");
boolean state = menuService.saveMenuData(menu); renderJson(Ret.ok("data", menuService.getMenuListBySysId(sysId, condStr)));
renderJson(Ret.ok("msg", state?"保存菜单数据成功!":"保存菜单数据出错,请刷新后重试!")); } catch (Exception e) {
} catch (Exception e) { e.printStackTrace();
e.printStackTrace(); renderJson(Ret.fail("msg", "获取菜单列表出错,请刷新后重试!"));
renderJson(Ret.fail("msg", "保存菜单数据出错,请刷新后重试!")); }
} }
}
/**
/** * 保存菜单数据
* 删除菜单数据 */
*/ public void saveMenuData() {
public void deleteMenu() { try {
try { Menu menu = getBean(Menu.class, "menu");
String[] ids = getPara("ids").split(","); boolean state = menuService.saveMenuData(menu);
boolean state = menuService.deleteMenu(ids); renderJson(Ret.ok("msg", state ? "保存菜单数据成功!" : "保存菜单数据出错,请刷新后重试!"));
renderJson(Ret.ok("msg", state?"删除菜单数据成功!":"删除菜单数据出错!")); } catch (Exception e) {
} catch (Exception e) { e.printStackTrace();
e.printStackTrace(); renderJson(Ret.fail("msg", "保存菜单数据出错,请刷新后重试!"));
renderJson(Ret.fail("msg", "删除菜单数据出错,请刷新后重试!")); }
} }
}
/**
* 删除菜单数据
/** */
* 菜单加星 public void deleteMenu() {
* try {
* @param menuId String[] ids = getPara("ids").split(",");
*/ boolean state = menuService.deleteMenu(ids);
public void star(int menuId) { renderJson(Ret.ok("msg", state ? "删除菜单数据成功!" : "删除菜单数据出错!"));
String username = this.getAttrForStr("username"); } catch (Exception e) {
Integer userId = Db.queryInt(Db.getSql("getUserId"), username); e.printStackTrace();
renderJson(Ret.fail("msg", "删除菜单数据出错,请刷新后重试!"));
MenuStar star = new MenuStar(); }
star.setMenuId(menuId); }
star.setUserId(userId);
star.set("ID", "SEQ_MENU_STAR.nextval");
Menu MeunStr = Menu.dao.findById(menuId); /**
System systemStr = System.dao.findById(MeunStr.getSystemId()); * 菜单加星
if (star.save()) { *
this.renderJson(Ret.ok("star", star.getId())); * @param menuId
logService.saveAsLog("operate", username, JwtInterceptor.getIpAddr(getRequest()), */
MeunStr.getTitle() + "-菜单加星成功", systemStr.getName()); public void star(int menuId) {
} else { String username = this.getAttrForStr("username");
this.renderJson(Ret.fail("msg", "菜单加星操作失败")); Integer userId = Db.queryInt(Db.getSql("getUserId"), username);
logService.saveAsLog("operate", username, JwtInterceptor.getIpAddr(getRequest()),
MeunStr.getTitle() + "-菜单加星失败", systemStr.getName()); MenuStar star = new MenuStar();
} star.setMenuId(menuId);
} star.setUserId(userId);
star.set("ID", "SEQ_MENU_STAR.nextval");
/** Menu MeunStr = Menu.dao.findById(menuId);
* 取消菜单加星 System systemStr = System.dao.findById(MeunStr.getSystemId());
* if (star.save()) {
* @param menuId this.renderJson(Ret.ok("star", star.getId()));
*/ logService.saveAsLog("operate", username, JwtInterceptor.getIpAddr(getRequest()),
@SuppressWarnings("unused") MeunStr.getTitle() + "-菜单加星成功", systemStr.getName());
public void cancelStar(int menuId) { } else {
String username = this.getAttrForStr("username"); this.renderJson(Ret.fail("msg", "菜单加星操作失败"));
String app = this.getPara("app"); logService.saveAsLog("operate", username, JwtInterceptor.getIpAddr(getRequest()),
Integer userId = Db.queryInt(Db.getSql("getUserId"), username); MeunStr.getTitle() + "-菜单加星失败", systemStr.getName());
Menu MeunStr = Menu.dao.findById(menuId); }
System systemStr = System.dao.findById(MeunStr.getSystemId()); }
Db.update(Db.getSqlPara("deleteMenuStar", Kv.by("userId", userId).set("menuId", menuId)));
this.renderJson(Ret.ok("star", 0)); /**
logService.saveAsLog("operate", username, JwtInterceptor.getIpAddr(getRequest()), * 取消菜单加星
MeunStr.getTitle() + "-菜单取消加星成功", systemStr.getName()); *
} * @param menuId
*/
/** @SuppressWarnings("unused")
* 菜单是否加星 public void cancelStar(int menuId) {
* String username = this.getAttrForStr("username");
* @param menuId String app = this.getPara("app");
* @param stars Integer userId = Db.queryInt(Db.getSql("getUserId"), username);
* @return Menu MeunStr = Menu.dao.findById(menuId);
*/ System systemStr = System.dao.findById(MeunStr.getSystemId());
private Integer exist(Integer menuId, List<MenuStar> stars) { Db.update(Db.getSqlPara("deleteMenuStar", Kv.by("userId", userId).set("menuId", menuId)));
for (MenuStar star : stars) { this.renderJson(Ret.ok("star", 0));
if (menuId.intValue() == star.getMenuId().intValue()) { logService.saveAsLog("operate", username, JwtInterceptor.getIpAddr(getRequest()),
return star.getId(); MeunStr.getTitle() + "-菜单取消加星成功", systemStr.getName());
} }
}
return 0; /**
} * 菜单是否加星
*
public void accessLog() { * @param menuId
String routName = getPara("routname"); * @param stars
String app = getPara("app"); * @return
String title = Db.queryStr(Db.getSql("findSystemTitleByType"), app); */
String username = getAttr("username"); private Integer exist(Integer menuId, List<MenuStar> stars) {
String ip = JwtInterceptor.getIpAddr(getRequest()); for (MenuStar star : stars) {
String content = title + "-功能访问-" + routName; if (menuId.intValue() == star.getMenuId().intValue()) {
logService.saveAsLog("access", username, ip, content, app); return star.getId();
renderJson(Ret.ok()); }
}
} return 0;
}
public void getMenuGroup() {
Integer userId = Db.queryInt(Db.getSql("getUserId"), this.getAttrForStr("username")); public void accessLog() {
// 所有菜单 String routName = getPara("routname");
List<Menu> allMenuList = new Menu().dao().template("getMenuGroup", Kv.by("userId", userId)).find(); String app = getPara("app");
List<System> systems = System.dao.template("getSystems").find(); String title = Db.queryStr(Db.getSql("findSystemTitleByType"), app);
Map<Integer, System> systemMap = systems.stream().collect(Collectors.toMap(System::getId, System -> System)); String username = getAttr("username");
List<MenuStar> stars = MenuStar.dao.template("getMenuStar", userId).find(); String ip = JwtInterceptor.getIpAddr(getRequest());
String content = title + "-功能访问-" + routName;
Map<String, Map<String, List<Menu>>> menuGroup = new HashMap<>(); logService.saveAsLog("access", username, ip, content, app);
allMenuList.forEach(menu -> { renderJson(Ret.ok());
// 处理菜单属性
System system = systemMap.get(menu.getSystemId()); }
menu.put("system", system.getName());
menu.put("url", system.getUrl()); public void getMenuGroup() {
menu.put("star", exist(menu.getId(), stars)); Integer userId = Db.queryInt(Db.getSql("getUserId"), this.getAttrForStr("username"));
// 所有菜单
List<Menu> allMenuList = new Menu().dao().template("getMenuGroup", Kv.by("userId", userId)).find();
List<System> systems = System.dao.template("getSystems").find();
Map<Integer, System> systemMap = systems.stream().collect(Collectors.toMap(System::getId, System -> System));
List<MenuStar> stars = MenuStar.dao.template("getMenuStar", userId).find();
// 系统中的菜单,用于系统正常跳转
Map<String, Map<String, List<Menu>>> menuGroup = new HashMap<>();
// 页面中显示的菜单,过滤隐藏的菜单
Map<String, Map<String, List<Menu>>> viewApps = new HashMap<>();
allMenuList.forEach(menu -> {
// 处理菜单属性
System system = systemMap.get(menu.getSystemId());
menu.put("system", system.getName());
menu.put("url", system.getUrl());
// 过滤不需要显示的菜单
if (menu.getHidden() == null || menu.getHidden() != 1) {
menu.put("star", exist(menu.getId(), stars));
// 一级菜单组
viewApps.putIfAbsent(menu.getFirstLevelName(), new HashMap<String, List<Menu>>());
// 二级菜单组
viewApps.get(menu.getFirstLevelName()).putIfAbsent(menu.getSecondLevelName(), new ArrayList<Menu>());
// 最终菜单
viewApps.get(menu.getFirstLevelName()).get(menu.getSecondLevelName()).add(menu);
}
// 一级菜单组 // 一级菜单组
menuGroup.putIfAbsent(menu.getFirstLevelName(),new HashMap<String, List<Menu>>()); menuGroup.putIfAbsent(menu.getFirstLevelName(), new HashMap<String, List<Menu>>());
// 二级菜单组 // 二级菜单组
menuGroup.get(menu.getFirstLevelName()).putIfAbsent(menu.getSecondLevelName(), new ArrayList<Menu>()); menuGroup.get(menu.getFirstLevelName()).putIfAbsent(menu.getSecondLevelName(), new ArrayList<Menu>());
// 最终菜单 // 最终菜单
menuGroup.get(menu.getFirstLevelName()).get(menu.getSecondLevelName()).add(menu); menuGroup.get(menu.getFirstLevelName()).get(menu.getSecondLevelName()).add(menu);
}); });
renderJson(Ret.ok("apps", menuGroup).set("allMenu",allMenuList)); renderJson(Ret.ok("apps", menuGroup).set("viewApps", viewApps).set("allMenu", allMenuList));
} }
} }
...@@ -1929,4 +1929,15 @@ ...@@ -1929,4 +1929,15 @@
</sql> </sql>
</version> </version>
<version edition="76" description="添加task表字段">
<sql creator="lidecai" createDate="20200901" note="设置菜单排序默认值">
alter table AS_MENU modify GROUP_ORDER default 0;
</sql>
</version>
</update> </update>
\ No newline at end of file
...@@ -295,7 +295,7 @@ select * from AS_MENU where ID in ( ...@@ -295,7 +295,7 @@ select * from AS_MENU where ID in (
select MENU_ID from AS_ROLE_MENU where ROLE_ID in ( select MENU_ID from AS_ROLE_MENU where ROLE_ID in (
select r.ID from AS_ROLE r, AS_ROLE_USER ru where r.ID=ru.ROLE_ID and ru.USER_ID=#para(userId) select r.ID from AS_ROLE r, AS_ROLE_USER ru where r.ID=ru.ROLE_ID and ru.USER_ID=#para(userId)
) )
) order by GROUP_ORDER; ) order by GROUP_ORDER DESC;
#end #end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment