提交 6a6e2b60 编写于 作者: 偏锋书生's avatar 偏锋书生

完成角色跟模块连动

上级 06a034c6
package net.wicp.tams.app.duckula.controller.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface SqlMapper {
......@@ -8,4 +10,11 @@ public interface SqlMapper {
void dynamicsUpdate(@Param("paramSQL") String sql);
void dynamicsDelete(@Param("paramSQL") String sql);
/***
* 得到对应的角色
* @param id
* @return
*/
List<Long> selectRoleByStaff(@Param("id") Long id);
}
package net.wicp.tams.duckula.ops.beans;
import java.util.List;
import com.alibaba.fastjson.JSONArray;
import lombok.Data;
import net.wicp.tams.app.duckula.controller.bean.models.SysUser;
import net.wicp.tams.common.constant.dic.YesOrNo;
@Data
public class SessionBean {
private YesOrNo isLogin;//是否登陆
private SysUser sysUser;
private YesOrNo isLogin;// 是否登陆
private SysUser sysUser;
private List<Long> roles;// 此用户拥有的角色
private JSONArray modules;// 此用户拥有的模块
}
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;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
import org.apache.tapestry5.Asset;
import org.apache.tapestry5.annotations.InjectPage;
import org.apache.tapestry5.annotations.OnEvent;
......@@ -24,10 +28,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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;
import net.wicp.tams.common.Result;
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;
......@@ -45,6 +55,7 @@ public class Index {
private Asset asset;
@SessionState
@Property
private SessionBean sessionBean;
private boolean sessionBeanExists;
......@@ -60,6 +71,9 @@ public class Index {
@Inject
private SysResourceMapper sysResourceMapper;
@Inject
private SqlMapper sqlMapper;
@OnEvent(value = "switchMenu")
public List<Menu> switchMenu(String moudleId) throws IOException {
......@@ -102,25 +116,43 @@ public class Index {
return retlist;
}
@Persist
@Property
private JSONArray modules;
@Inject
private SysRoleResMapper sysRoleResMapper;
@SetupRender
void init() {
// 设置模块
if (modules == null || modules.isEmpty()) {
if (sessionBean.getModules() == null || sessionBean.getModules().isEmpty()) {
QueryWrapper<SysResource> queryWrapper = new QueryWrapper<SysResource>();
queryWrapper.eq("res_type", "MODULE");
List<SysResource> selectList = sysResourceMapper.selectList(queryWrapper);
this.modules = new JSONArray();
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");
// 得到有权限的模块
CollectionUtils.filter(selectList, new Predicate() {
@Override
public boolean evaluate(Object arg0) {
SysResource sysResource = (SysResource) arg0;
return resIds.contains(sysResource.getId());
}
});
JSONArray temp = new JSONArray();
for (SysResource sysResource : selectList) {
JSONObject menu = new JSONObject();
menu.put("id", sysResource.getId());
menu.put("icon", sysResource.getIcon());
menu.put("alt", sysResource.getResName());
this.modules.add(menu);
temp.add(menu);
}
sessionBean.setModules(temp);
}
}
......
......@@ -12,12 +12,9 @@ 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.SysUserMapper;
import net.wicp.tams.common.Result;
import net.wicp.tams.common.apiext.CollectionUtil;
import net.wicp.tams.common.apiext.PwdUtil;
import net.wicp.tams.common.apiext.StringUtil;
import net.wicp.tams.common.constant.dic.YesOrNo;
import net.wicp.tams.component.tools.TapestryAssist;
import net.wicp.tams.duckula.ops.beans.SessionBean;
@Import(stack = "easyuistack")
......
......@@ -10,4 +10,19 @@
<delete id="dynamicsDelete">
${paramSQL}
</delete>
<select id="selectRoleByStaff" parameterType="long"
resultType="long">
select t.role_id from sys_role_assign t,sys_role rl
where t.role_id=rl.id
and t.assign_type='STAFF' and t.assign_value=#{id} and rl.status='yes'
UNION
select t.role_id from sys_role_assign t,sys_user_group g
where g.group_id=t.assign_value and t.assign_type='GROUP' and g.user_id=#{id}
UNION
select t.role_id from sys_role_assign t,sys_user_position g
where g.position_id=t.assign_value and t.assign_type='POSITION' and g.user_id=#{id}
</select>
</mapper>
\ No newline at end of file
<html t:type="rjzjh/Layout1" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd"
xmlns:r="tapestry-library:rjzjh"
xmlns:p="tapestry:parameter" isLan="false" iconDir="asset|rjzjh/images/tool_ico/" home="main" modules="prop:modules" dlgs="[{'id':'settingDlg','name':'全局配置'},{'id':'aboutDlg','name':'关于'},{'id':'exitAction','name':'退出','opt':'fun'}]">
xmlns:p="tapestry:parameter" isLan="false" iconDir="asset|rjzjh/images/tool_ico/" home="main" modules="prop:sessionBean.modules" dlgs="[{'id':'settingDlg','name':'全局配置'},{'id':'aboutDlg','name':'关于'},{'id':'exitAction','name':'退出','opt':'fun'}]">
<r:dialog id="aboutDlg" title="关于duckula" width="460" height="200" closable="true">
<p style="font-size: 15px; color: #444;margin-top:50px;text-align:center">Duckula是一套关于binlog监听及其配套工具(如ES同步)<br/>的数据实时推送中间件,具有配置灵活,性能较好,高可用<br/>策略合理 等特点</p>
</r:dialog>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册