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

资源分派

上级 8e61f9c0
package net.wicp.tams.duckula.ops.pages.cas;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
......@@ -16,10 +17,13 @@ import org.apache.tapestry5.util.TextStreamResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import lombok.extern.slf4j.Slf4j;
import net.wicp.tams.app.duckula.controller.bean.models.SysOrg;
import net.wicp.tams.app.duckula.controller.bean.models.SysRole;
import net.wicp.tams.app.duckula.controller.bean.models.SysRoleAssignExample;
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.dao.SysRoleAssignMapper;
import net.wicp.tams.app.duckula.controller.dao.SysRoleMapper;
import net.wicp.tams.app.duckula.controller.dao.SysRoleResMapper;
import net.wicp.tams.app.duckula.controller.service.cas.IMenuService;
......@@ -36,7 +40,6 @@ import net.wicp.tams.duckula.ops.pages.ParentPageBean;
*
*/
@Import(stack = "easyuistack")
@Slf4j
public class ResAllot extends ParentPageBean<SysOrg> {
@Inject
private IMenuService menuService;
......@@ -54,6 +57,8 @@ public class ResAllot extends ParentPageBean<SysOrg> {
@Inject
private SysRoleResMapper sysRoleResMapper;
@Inject
private SysRoleAssignMapper sysRoleAssignMapper;
public String getTreeData() {
List<EasyUINode> roots = menuService.findAllModuleMenu(I18NConvert, false);
......@@ -67,48 +72,59 @@ public class ResAllot extends ParentPageBean<SysOrg> {
List<SysRoleRes> roleRess = sysRoleResMapper.selectByMap(CollectionUtil.newMap("role_id", roleid));
if (CollectionUtils.isNotEmpty(roleRess)) {
for (SysRoleRes roleRes : roleRess) {
if ("0".equals(roleRes.getResId())) {// TODO 查资源值
continue;
}
retobj.add(roleRes.getResId());
}
}
return retobj;
}
@SuppressWarnings("rawtypes")
public TextStreamResponse onSaveMenuForRole() {
final String roleIdStr = request.getParameter("roleId");
int roleid = Integer.parseInt(roleIdStr);
long roleid = Long.parseLong(roleIdStr);
String nodeIds = request.getParameter("nodeIds");
QueryWrapper<SysRoleRes> queryWrapper = new QueryWrapper<SysRoleRes>();
queryWrapper.eq("role_id", roleid);
List<SysRoleRes> oldResList = sysRoleResMapper.selectList(queryWrapper);// 旧的权限
// 删除所有关联的资源
sysRoleResMapper.deleteByMap(CollectionUtil.newMap("role_id", roleid));
// 添加新的资源对象
if (StringUtils.isNotBlank(nodeIds)) {
SysRole role = sysRoleMapper.selectById(roleid);
String[] resAry = nodeIds.split(",");
for (String resIdStr : resAry) {
long resid = Long.parseLong(resIdStr);
final List<String> newResIdList = Arrays.asList(resAry);
List<Long> olsResIdList = (List<Long>) CollectionUtil.getColFromObj(oldResList, "resId");
// 需要增加的id,string类型
Collection addlist = CollectionUtils.select(newResIdList, new Predicate() {
@Override
public boolean evaluate(Object arg0) {
return !olsResIdList.contains(Long.parseLong(String.valueOf(arg0)));
}
});
SysRole role = sysRoleMapper.selectById(roleid);
for (Object resIdStr : addlist) {
long resid = Long.parseLong(String.valueOf(resIdStr));
SysRoleRes insertObj = new SysRoleRes();
insertObj.setAuthCode(1l);
insertObj.setRoleId(role.getId());
insertObj.setResId(resid);
;
sysRoleResMapper.insert(insertObj);
}
final List<String> newResList = Arrays.asList(resAry);
// 删除的资源
@SuppressWarnings("unchecked")
List<String> delList = (List<String>) CollectionUtils.select(oldResList, new Predicate() {
List<Long> delList = (List<Long>) CollectionUtils.select(olsResIdList, new Predicate() {
@Override
public boolean evaluate(Object object) {
return !newResList.contains(String.valueOf(object));
return !newResIdList.contains(String.valueOf(object));
}
});
if(CollectionUtils.isNotEmpty(delList)) {
SysRoleResExample example = new SysRoleResExample();
Criteria criteria = example.createCriteria();
criteria.andResIdIn(delList);
sysRoleResMapper.deleteByExample(example);
}
// 保存到Redis缓存
// Jedis jedis = RedisClient.getConnectionDefault();
......@@ -175,7 +191,18 @@ public class ResAllot extends ParentPageBean<SysOrg> {
public TextStreamResponse onDelRole() {
String idstr = request.getParameter("id");
sysRoleMapper.deleteById(Long.parseLong(idstr));
long roleId = Long.parseLong(idstr);
sysRoleMapper.deleteById(roleId);
// 删除角色对应的资源
SysRoleResExample example = new SysRoleResExample();
Criteria criteria = example.createCriteria();
criteria.andRoleIdEqualTo(roleId);
sysRoleResMapper.deleteByExample(example);
// 删除角色对应的权限
SysRoleAssignExample example2 = new SysRoleAssignExample();
SysRoleAssignExample.Criteria criteria2 = example2.createCriteria();
criteria2.andRoleIdEqualTo(roleId);
sysRoleAssignMapper.deleteByExample(example2);
return retSuccInfo();
}
......
......@@ -12,9 +12,9 @@
<t:loop source="roles" value="role">
<div title="${role.name}" class="easyui-layout" data-options="queryParams:{id:'${role.id}',name:'${role.name}',status:'${role.status}',remark:'${role.remark}'}" style="padding:0px;height:100%;">
<div data-options="region:'west',title:'分派的资源',split:true,collapsible:false,fit:true" style="width:350px;">
<a class="easyui-linkbutton" id="saveButton" data-options="iconCls: 'icon-save'" onClick="saveMenu(${role.id})"
<a class="easyui-linkbutton" id="saveButton" data-options="iconCls: 'icon-save'" onClick="saveMenu('${role.id}')"
style="width:100px;height:28px;padding-top:2px;margin-top: 15px;margin-bottom: 15px;">${message:common.button.save}</a>
<ul id="role${role.id}"></ul>
<ul id="role${role.id}" name="roletree"></ul>
</div>
<div data-options="region:'east',title:'已分派的单位',split:true" style="width:200px;padding:5px;background:#eee;height:100%">
可以分单位类型(组织、群组、职位) 查出单位,并且可以解除与角色的绑定
......@@ -22,7 +22,7 @@
</div>
</t:loop>
</div>
<r:dialog id="saveDlg" height="200" width="500" toolbar="[{id:'saveRoleBut',text:'common.button.save',iconCls:'icon-save'}]">
<r:dialog id="saveDlg" height="250" width="500" toolbar="[{id:'saveRoleBut',text:'common.button.save',iconCls:'icon-save'}]" title="角色处理">
<form id="editForm">
<table class="frame_table_list_2">
<tr>
......@@ -105,8 +105,17 @@
//设置check
$.post(contextpath+'/cas/ResAllot:querySelResForRole/'+queryParams.id,{},function(data){
$.each(data,function(i,n){
var node= $(treeid).tree('find', n);
$(treeid).tree('check', node.target);
var node= $(treeid).tree('find', n);
//如果有子节点就不要设置为勾选,这样会把下面的子全部勾选上。
try{
var nodes = $(treeid).tree('getChildren',node.target); // get checked nodes
if(nodes){
if(nodes.length==0){
$(treeid).tree('check', node.target);
}
}
}catch(e){
}
});
},'json');
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册