提交 165ba0c6 编写于 作者: 偏锋书生's avatar 偏锋书生

打通模块和菜单,通过数据库配置完成

上级 6a6e2b60
......@@ -8,30 +8,30 @@ import net.wicp.tams.common.constant.dic.intf.IEnumCombobox;
/***
* 组织单位类型
*
* @author Administrator
* @author andy
*
*/
public enum ResType implements IEnumCombobox {
public enum ResAuthType implements IEnumCombobox {
OPERATE("操作资源", "icon-position", null, false, null),
DATA("数据资源", "icon-group", null, false, null),
MODULE("模块", "icon-dept", OPERATE, false, null),
DIR("目录", "icon-org", OPERATE, true, new ResType[] { MODULE }),
DIR("目录", "icon-org", OPERATE, true, new ResAuthType[] { MODULE }),
URL("地址", "icon-dept", OPERATE, true, new ResType[] { MODULE, DIR });
URL("地址", "icon-dept", OPERATE, true, new ResAuthType[] { MODULE, DIR });
private final String desc;
private final String icon;
private final ResType parent;// 资源的父类型
private final ResAuthType parent;// 资源的父类型
private final boolean isEdit;// 所定义的类型能否被修改,true,可以被修改,false:不能被修改
private final ResType[] parentTree;// 资源可以放在哪个类型的资源下面,如URL只能放在DIR目录下。
private final ResAuthType[] parentTree;// 资源可以放在哪个类型的资源下面,如URL只能放在DIR目录下。
private ResType(String desc, String icon, ResType parent, boolean isEdit, ResType[] parentTree) {
private ResAuthType(String desc, String icon, ResAuthType parent, boolean isEdit, ResAuthType[] parentTree) {
this.desc = desc;
this.parent = parent;
this.icon = icon;
......@@ -45,7 +45,7 @@ public enum ResType implements IEnumCombobox {
* @param parent 要拖拽的目标资源类型
* @return
*/
public boolean canDrag(ResType parent) {
public boolean canDrag(ResAuthType parent) {
if (ArrayUtils.isEmpty(parentTree)) {
return false;
}
......@@ -58,11 +58,11 @@ public enum ResType implements IEnumCombobox {
* @param name
* @return
*/
public static ResType findByName(String name) {
public static ResAuthType findByName(String name) {
if (StringUtils.isEmpty(name)) {
return URL;
}
for (ResType ele : ResType.values()) {
for (ResAuthType ele : ResAuthType.values()) {
if (ele.name().equals(name)) {
return ele;
}
......@@ -93,7 +93,7 @@ public enum ResType implements IEnumCombobox {
return this.desc;
}
public ResType getParent() {
public ResAuthType getParent() {
return parent;
}
......
......@@ -11,7 +11,7 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import net.wicp.tams.app.duckula.controller.bean.constant.ResType;
import net.wicp.tams.app.duckula.controller.bean.constant.ResAuthType;
import net.wicp.tams.app.duckula.controller.bean.models.SysResource;
import net.wicp.tams.app.duckula.controller.bean.models.SysRole;
import net.wicp.tams.app.duckula.controller.dao.SysResourceMapper;
......@@ -101,7 +101,7 @@ public class MenuService implements IMenuService {
unAllot.setId(-1l);
unAllot.setResName("未分配的资源");
unAllot.setResValue("0");
unAllot.setResType(ResType.DIR.name());
unAllot.setResType(ResAuthType.DIR.name());
unAllot.setIcon("icon-folder-star");
unAllot.setResLevel(1);
unAllot.setParentId(1l);
......
package net.wicp.tams.duckula.ops.pages;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
......@@ -12,7 +11,6 @@ import org.apache.tapestry5.Asset;
import org.apache.tapestry5.annotations.InjectPage;
import org.apache.tapestry5.annotations.OnEvent;
import org.apache.tapestry5.annotations.Path;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.annotations.SetupRender;
......@@ -26,13 +24,13 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import net.wicp.tams.app.duckula.controller.bean.constant.ResAuthType;
import net.wicp.tams.app.duckula.controller.bean.models.SysGlobal;
import net.wicp.tams.app.duckula.controller.bean.models.SysResource;
import net.wicp.tams.app.duckula.controller.bean.models.SysRoleRes;
import net.wicp.tams.app.duckula.controller.bean.models.SysRoleResExample;
import net.wicp.tams.app.duckula.controller.bean.models.SysRoleResExample.Criteria;
import net.wicp.tams.app.duckula.controller.config.constant.ConfigGlobleName;
import net.wicp.tams.app.duckula.controller.dao.SqlMapper;
import net.wicp.tams.app.duckula.controller.dao.SysGlobalMapper;
import net.wicp.tams.app.duckula.controller.dao.SysResourceMapper;
import net.wicp.tams.app.duckula.controller.dao.SysRoleResMapper;
......@@ -41,7 +39,6 @@ import net.wicp.tams.common.apiext.CollectionUtil;
import net.wicp.tams.common.apiext.StringUtil;
import net.wicp.tams.common.constant.dic.YesOrNo;
import net.wicp.tams.component.assistbean.Menu;
import net.wicp.tams.component.constant.ResType;
import net.wicp.tams.component.tools.TapestryAssist;
import net.wicp.tams.duckula.ops.beans.SessionBean;
......@@ -72,8 +69,6 @@ public class Index {
@Inject
private SysResourceMapper sysResourceMapper;
@Inject
private SqlMapper sqlMapper;
@OnEvent(value = "switchMenu")
public List<Menu> switchMenu(String moudleId) throws IOException {
......@@ -99,7 +94,18 @@ public class Index {
// }
QueryWrapper<SysResource> queryWrapper = new QueryWrapper<SysResource>();
queryWrapper.eq("parent_id", Long.parseLong(moudleId));
queryWrapper.eq("res_type", ResAuthType.URL.name());
List<SysResource> selectList = sysResourceMapper.selectList(queryWrapper);
Set<Long> findResByRoles = findResByRoles();
CollectionUtils.filter(selectList, new Predicate() {
@Override
public boolean evaluate(Object arg0) {
SysResource sysResource=(SysResource)arg0;
return findResByRoles.contains(sysResource.getId());
}
});
List<Menu> retlist = CollectionFactory.newList();
for (SysResource sysResource : selectList) {
String id = String.valueOf(sysResource.getId());
......@@ -108,7 +114,7 @@ public class Index {
String resValue = sysResource.getResValue();
if (StringUtil.isNotNull(id) && StringUtil.isNotNull(resName) && StringUtil.isNotNull(resType)
&& StringUtil.isNotNull(resValue)) {
Menu menu = Menu.builder().id(id).resName(resName).resType(ResType.get(resType)).resValue(resValue)
Menu menu = Menu.builder().id(id).resName(resName).resType(net.wicp.tams.component.constant.ResType.get(resType)).resValue(resValue)
.build();
retlist.add(menu);
}
......@@ -116,6 +122,16 @@ public class Index {
return retlist;
}
private Set<Long> findResByRoles() {
//得到
SysRoleResExample example = new SysRoleResExample();
Criteria criteria = example.createCriteria();
criteria.andRoleIdIn(sessionBean.getRoles());
List<SysRoleRes> list = sysRoleResMapper.selectByExample(example);
Set<Long> resIds = CollectionUtil.getColSetFromObj(list, "resId");
return resIds;
}
@Inject
private SysRoleResMapper sysRoleResMapper;
......@@ -127,21 +143,17 @@ public class Index {
QueryWrapper<SysResource> queryWrapper = new QueryWrapper<SysResource>();
queryWrapper.eq("res_type", "MODULE");
List<SysResource> selectList = sysResourceMapper.selectList(queryWrapper);
List<Long> roles = sqlMapper.selectRoleByStaff(sessionBean.getSysUser().getId());
//List<Long> roles = new ArrayList<Long>();// 测试用
//roles.add(1405760902957436930l);
SysRoleResExample example = new SysRoleResExample();
Criteria criteria = example.createCriteria();
criteria.andRoleIdIn(roles);
List<SysRoleRes> list = sysRoleResMapper.selectByExample(example);
Set<Long> resIds = CollectionUtil.getColSetFromObj(list, "resId");
Set<Long> findResByRoles = findResByRoles();
// 得到有权限的模块
CollectionUtils.filter(selectList, new Predicate() {
@Override
public boolean evaluate(Object arg0) {
SysResource sysResource = (SysResource) arg0;
return resIds.contains(sysResource.getId());
return findResByRoles.contains(sysResource.getId());
}
});
JSONArray temp = new JSONArray();
......
......@@ -11,6 +11,7 @@ import org.slf4j.Logger;
import cn.hutool.crypto.digest.BCrypt;
import lombok.extern.slf4j.Slf4j;
import net.wicp.tams.app.duckula.controller.bean.models.SysUser;
import net.wicp.tams.app.duckula.controller.dao.SqlMapper;
import net.wicp.tams.app.duckula.controller.dao.SysUserMapper;
import net.wicp.tams.common.apiext.CollectionUtil;
import net.wicp.tams.common.apiext.StringUtil;
......@@ -32,6 +33,9 @@ public class Login {
@Inject
private SysUserMapper sysUserMapper;
@Inject
private SqlMapper sqlMapper;
@SuppressWarnings("unchecked")
Object onSuccess() {
String userName = request.getParameter("userName");
......@@ -45,6 +49,7 @@ public class Login {
return Login.class;
}
SysUser sysUser = selUsers.get(0);
List<Long> roles = sqlMapper.selectRoleByStaff(sysUser.getId());
boolean checkpw = BCrypt.checkpw(pwd, sysUser.getPassword());
if (!checkpw) {
log.error("用户{}密码有误", userName);
......@@ -53,6 +58,7 @@ public class Login {
sessionBean = new SessionBean();
sessionBean.setIsLogin(YesOrNo.yes);
sessionBean.setSysUser(selUsers.get(0));
sessionBean.setRoles(roles);
return Index.class;
}
......
......@@ -12,7 +12,6 @@ import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.lang3.StringUtils;
import org.apache.tapestry5.annotations.Import;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.json.JSONObject;
import org.apache.tapestry5.util.TextStreamResponse;
......@@ -21,7 +20,7 @@ import org.w3c.dom.Document;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.wicp.tams.app.duckula.controller.bean.constant.ResType;
import net.wicp.tams.app.duckula.controller.bean.constant.ResAuthType;
import net.wicp.tams.app.duckula.controller.bean.models.SysResource;
import net.wicp.tams.app.duckula.controller.dao.SysResourceMapper;
import net.wicp.tams.app.duckula.controller.service.ContextInit;
......@@ -139,7 +138,7 @@ public class ResManager extends ParentPageBean<SysResource> {
final List<SysResource> hasResList = new ArrayList<SysResource>();
for (File file : files) {
SysResource res = new SysResource();
res.setResType(ResType.URL.name());
res.setResType(ResAuthType.URL.name());
String path = file.getPath();
int beginIndex = path.indexOf("pages" + File.separator);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册