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

完成角色跟模块连动

上级 06a034c6
package net.wicp.tams.app.duckula.controller.dao; package net.wicp.tams.app.duckula.controller.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
public interface SqlMapper { public interface SqlMapper {
...@@ -8,4 +10,11 @@ public interface SqlMapper { ...@@ -8,4 +10,11 @@ public interface SqlMapper {
void dynamicsUpdate(@Param("paramSQL") String sql); void dynamicsUpdate(@Param("paramSQL") String sql);
void dynamicsDelete(@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; package net.wicp.tams.duckula.ops.beans;
import java.util.List;
import com.alibaba.fastjson.JSONArray;
import lombok.Data; import lombok.Data;
import net.wicp.tams.app.duckula.controller.bean.models.SysUser; import net.wicp.tams.app.duckula.controller.bean.models.SysUser;
import net.wicp.tams.common.constant.dic.YesOrNo; import net.wicp.tams.common.constant.dic.YesOrNo;
@Data @Data
public class SessionBean { public class SessionBean {
private YesOrNo isLogin;//是否登陆 private YesOrNo isLogin;// 是否登陆
private SysUser sysUser; private SysUser sysUser;
private List<Long> roles;// 此用户拥有的角色
private JSONArray modules;// 此用户拥有的模块
} }
package net.wicp.tams.duckula.ops.pages; package net.wicp.tams.duckula.ops.pages;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; 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.Asset;
import org.apache.tapestry5.annotations.InjectPage; import org.apache.tapestry5.annotations.InjectPage;
import org.apache.tapestry5.annotations.OnEvent; import org.apache.tapestry5.annotations.OnEvent;
...@@ -24,10 +28,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -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.SysGlobal;
import net.wicp.tams.app.duckula.controller.bean.models.SysResource; 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.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.SysGlobalMapper;
import net.wicp.tams.app.duckula.controller.dao.SysResourceMapper; 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.Result;
import net.wicp.tams.common.apiext.CollectionUtil;
import net.wicp.tams.common.apiext.StringUtil; import net.wicp.tams.common.apiext.StringUtil;
import net.wicp.tams.common.constant.dic.YesOrNo; import net.wicp.tams.common.constant.dic.YesOrNo;
import net.wicp.tams.component.assistbean.Menu; import net.wicp.tams.component.assistbean.Menu;
...@@ -45,6 +55,7 @@ public class Index { ...@@ -45,6 +55,7 @@ public class Index {
private Asset asset; private Asset asset;
@SessionState @SessionState
@Property
private SessionBean sessionBean; private SessionBean sessionBean;
private boolean sessionBeanExists; private boolean sessionBeanExists;
...@@ -61,6 +72,9 @@ public class Index { ...@@ -61,6 +72,9 @@ public class Index {
@Inject @Inject
private SysResourceMapper sysResourceMapper; private SysResourceMapper sysResourceMapper;
@Inject
private SqlMapper sqlMapper;
@OnEvent(value = "switchMenu") @OnEvent(value = "switchMenu")
public List<Menu> switchMenu(String moudleId) throws IOException { public List<Menu> switchMenu(String moudleId) throws IOException {
// Properties prop = new Properties(); // Properties prop = new Properties();
...@@ -102,25 +116,43 @@ public class Index { ...@@ -102,25 +116,43 @@ public class Index {
return retlist; return retlist;
} }
@Persist
@Property @Inject
private JSONArray modules; private SysRoleResMapper sysRoleResMapper;
@SetupRender @SetupRender
void init() { void init() {
// 设置模块 // 设置模块
if (modules == null || modules.isEmpty()) { if (sessionBean.getModules() == null || sessionBean.getModules().isEmpty()) {
QueryWrapper<SysResource> queryWrapper = new QueryWrapper<SysResource>(); QueryWrapper<SysResource> queryWrapper = new QueryWrapper<SysResource>();
queryWrapper.eq("res_type", "MODULE"); queryWrapper.eq("res_type", "MODULE");
List<SysResource> selectList = sysResourceMapper.selectList(queryWrapper); 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) { for (SysResource sysResource : selectList) {
JSONObject menu = new JSONObject(); JSONObject menu = new JSONObject();
menu.put("id", sysResource.getId()); menu.put("id", sysResource.getId());
menu.put("icon", sysResource.getIcon()); menu.put("icon", sysResource.getIcon());
menu.put("alt", sysResource.getResName()); 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; ...@@ -12,12 +12,9 @@ import cn.hutool.crypto.digest.BCrypt;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wicp.tams.app.duckula.controller.bean.models.SysUser; import net.wicp.tams.app.duckula.controller.bean.models.SysUser;
import net.wicp.tams.app.duckula.controller.dao.SysUserMapper; 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.CollectionUtil;
import net.wicp.tams.common.apiext.PwdUtil;
import net.wicp.tams.common.apiext.StringUtil; import net.wicp.tams.common.apiext.StringUtil;
import net.wicp.tams.common.constant.dic.YesOrNo; import net.wicp.tams.common.constant.dic.YesOrNo;
import net.wicp.tams.component.tools.TapestryAssist;
import net.wicp.tams.duckula.ops.beans.SessionBean; import net.wicp.tams.duckula.ops.beans.SessionBean;
@Import(stack = "easyuistack") @Import(stack = "easyuistack")
......
...@@ -10,4 +10,19 @@ ...@@ -10,4 +10,19 @@
<delete id="dynamicsDelete"> <delete id="dynamicsDelete">
${paramSQL} ${paramSQL}
</delete> </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> </mapper>
\ No newline at end of file
<html t:type="rjzjh/Layout1" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd" <html t:type="rjzjh/Layout1" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd"
xmlns:r="tapestry-library:rjzjh" 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"> <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> <p style="font-size: 15px; color: #444;margin-top:50px;text-align:center">Duckula是一套关于binlog监听及其配套工具(如ES同步)<br/>的数据实时推送中间件,具有配置灵活,性能较好,高可用<br/>策略合理 等特点</p>
</r:dialog> </r:dialog>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册