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

区分显示菜单和跳转菜单

parent 4062b413
......@@ -23,183 +23,193 @@ import com.jfinal.plugin.activerecord.Db;
* 应用菜单相关操作
*
* @author dgq
*
*/
public class MenuController extends Controller {
@Inject
private LogService logService;
@Inject
private MenuService menuService;
/**
获取权限菜单
*/
public void index() {
String username = this.getAttrForStr("username");
Integer userId = Db.queryInt(Db.getSql("getUserId"), username);
List<System> systems = System.dao.template("getSystems").find();
Kv kvSystems = CollectionUtil.toIntMap(systems, "ID");
List<Menu> menus = null;
if ("admin".equals(username)) {
menus = Menu.dao.template("getMenus").find();
} else {
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));
@Inject
private LogService logService;
@Inject
private MenuService menuService;
/**
* 获取权限菜单
*/
public void index() {
String username = this.getAttrForStr("username");
Integer userId = Db.queryInt(Db.getSql("getUserId"), username);
List<System> systems = System.dao.template("getSystems").find();
Kv kvSystems = CollectionUtil.toIntMap(systems, "ID");
List<Menu> menus = null;
if ("admin".equals(username)) {
menus = Menu.dao.template("getMenus").find();
} else {
menus = Menu.dao.template("getMenusByUser", Kv.by("userId", userId)).find();
}
/**
* 获取菜单列表
*/
public void getMenuList() {
try {
Integer sysId = getParaToInt("sysId");
String condStr = getPara("condStr");
renderJson(Ret.ok("data", menuService.getMenuListBySysId(sysId, condStr)));
} catch (Exception e) {
e.printStackTrace();
renderJson(Ret.fail("msg", "获取菜单列表出错,请刷新后重试!"));
}
}
/**
* 保存菜单数据
*/
public void saveMenuData() {
try {
Menu menu = getBean(Menu.class, "menu");
boolean state = menuService.saveMenuData(menu);
renderJson(Ret.ok("msg", state?"保存菜单数据成功!":"保存菜单数据出错,请刷新后重试!"));
} catch (Exception e) {
e.printStackTrace();
renderJson(Ret.fail("msg", "保存菜单数据出错,请刷新后重试!"));
}
}
/**
* 删除菜单数据
*/
public void deleteMenu() {
try {
String[] ids = getPara("ids").split(",");
boolean state = menuService.deleteMenu(ids);
renderJson(Ret.ok("msg", state?"删除菜单数据成功!":"删除菜单数据出错!"));
} catch (Exception e) {
e.printStackTrace();
renderJson(Ret.fail("msg", "删除菜单数据出错,请刷新后重试!"));
}
}
/**
* 菜单加星
*
* @param menuId
*/
public void star(int menuId) {
String username = this.getAttrForStr("username");
Integer userId = Db.queryInt(Db.getSql("getUserId"), username);
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()));
logService.saveAsLog("operate", username, JwtInterceptor.getIpAddr(getRequest()),
MeunStr.getTitle() + "-菜单加星成功", systemStr.getName());
} else {
this.renderJson(Ret.fail("msg", "菜单加星操作失败"));
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");
String app = this.getPara("app");
Integer userId = Db.queryInt(Db.getSql("getUserId"), username);
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
* @param stars
* @return
*/
private Integer exist(Integer menuId, List<MenuStar> stars) {
for (MenuStar star : stars) {
if (menuId.intValue() == star.getMenuId().intValue()) {
return star.getId();
}
}
return 0;
}
public void accessLog() {
String routName = getPara("routname");
String app = getPara("app");
String title = Db.queryStr(Db.getSql("findSystemTitleByType"), app);
String username = getAttr("username");
String ip = JwtInterceptor.getIpAddr(getRequest());
String content = title + "-功能访问-" + routName;
logService.saveAsLog("access", username, ip, content, app);
renderJson(Ret.ok());
}
public void getMenuGroup() {
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<>();
allMenuList.forEach(menu -> {
// 处理菜单属性
System system = systemMap.get(menu.getSystemId());
menu.put("system", system.getName());
menu.put("url", system.getUrl());
menu.put("star", exist(menu.getId(), stars));
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));
}
/**
* 获取菜单列表
*/
public void getMenuList() {
try {
Integer sysId = getParaToInt("sysId");
String condStr = getPara("condStr");
renderJson(Ret.ok("data", menuService.getMenuListBySysId(sysId, condStr)));
} catch (Exception e) {
e.printStackTrace();
renderJson(Ret.fail("msg", "获取菜单列表出错,请刷新后重试!"));
}
}
/**
* 保存菜单数据
*/
public void saveMenuData() {
try {
Menu menu = getBean(Menu.class, "menu");
boolean state = menuService.saveMenuData(menu);
renderJson(Ret.ok("msg", state ? "保存菜单数据成功!" : "保存菜单数据出错,请刷新后重试!"));
} catch (Exception e) {
e.printStackTrace();
renderJson(Ret.fail("msg", "保存菜单数据出错,请刷新后重试!"));
}
}
/**
* 删除菜单数据
*/
public void deleteMenu() {
try {
String[] ids = getPara("ids").split(",");
boolean state = menuService.deleteMenu(ids);
renderJson(Ret.ok("msg", state ? "删除菜单数据成功!" : "删除菜单数据出错!"));
} catch (Exception e) {
e.printStackTrace();
renderJson(Ret.fail("msg", "删除菜单数据出错,请刷新后重试!"));
}
}
/**
* 菜单加星
*
* @param menuId
*/
public void star(int menuId) {
String username = this.getAttrForStr("username");
Integer userId = Db.queryInt(Db.getSql("getUserId"), username);
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()));
logService.saveAsLog("operate", username, JwtInterceptor.getIpAddr(getRequest()),
MeunStr.getTitle() + "-菜单加星成功", systemStr.getName());
} else {
this.renderJson(Ret.fail("msg", "菜单加星操作失败"));
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");
String app = this.getPara("app");
Integer userId = Db.queryInt(Db.getSql("getUserId"), username);
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
* @param stars
* @return
*/
private Integer exist(Integer menuId, List<MenuStar> stars) {
for (MenuStar star : stars) {
if (menuId.intValue() == star.getMenuId().intValue()) {
return star.getId();
}
}
return 0;
}
public void accessLog() {
String routName = getPara("routname");
String app = getPara("app");
String title = Db.queryStr(Db.getSql("findSystemTitleByType"), app);
String username = getAttr("username");
String ip = JwtInterceptor.getIpAddr(getRequest());
String content = title + "-功能访问-" + routName;
logService.saveAsLog("access", username, ip, content, app);
renderJson(Ret.ok());
}
public void getMenuGroup() {
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);
});
renderJson(Ret.ok("apps", menuGroup).set("allMenu",allMenuList));
}
menuGroup.get(menu.getFirstLevelName()).get(menu.getSecondLevelName()).add(menu);
});
renderJson(Ret.ok("apps", menuGroup).set("viewApps", viewApps).set("allMenu", allMenuList));
}
}
......@@ -1929,4 +1929,15 @@
</sql>
</version>
<version edition="76" description="添加task表字段">
<sql creator="lidecai" createDate="20200901" note="设置菜单排序默认值">
alter table AS_MENU modify GROUP_ORDER default 0;
</sql>
</version>
</update>
\ No newline at end of file
......@@ -295,7 +295,7 @@ select * from AS_MENU where 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)
)
) order by GROUP_ORDER;
) order by GROUP_ORDER DESC;
#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