权限树

package com.jetsum.esale.service.impl;

import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.jetsum.core.orm.entity.Page;
import com.jetsum.esale.dao.ModuleDao;
import com.jetsum.esale.entity.Module;
import com.jetsum.esale.service.ModuleService;
import com.jetsum.esale.service.RoleService;

@Component
@Transactional
public class ModuleServiceImpl implements ModuleService {
   
    private ModuleDao moduleDao;
   
    private RoleService roleService;
   
    @Autowired
    public void setModuleDao(ModuleDao moduleDao) {
        this.moduleDao = moduleDao;
    }
   
    @Autowired
 public void setRoleService(RoleService roleService) {
  this.roleService = roleService;
 }

 @Override
    public Module getModule(String id) {
        return moduleDao.get(id);
    }

    @Override
    public Page<Module> queryModuleByPage(Map<String, Object> map, int pageNo, int pageSize) {
        Page<Module> page = new Page<Module>();
        page.pageNo(pageNo).pageSize(pageSize).autoCount(true).orderBy("id");
        return moduleDao.findPage(page, map);
    }
       
    @Override
    public Page<Module> queryModuleByOrderPage(Map<String, Object> map, int pageNo, int pageSize,String orderBy,String order) {
        Page<Module> page = new Page<Module>();
        page.pageNo(pageNo).pageSize(pageSize).autoCount(true).orderBy(orderBy).setOrder(order);
        return moduleDao.findPage(page, map);
    }
   
    @Override
    public void saveOrUpdateModule(Module module) {
        moduleDao.saveOrUpdate(module);
        moduleDao.flush();
    }

    @Override
    public void deleteModule(String id) {
        moduleDao.delete(id);
        moduleDao.flush();
    }
   
    @Override
    public void deleteModuleByIds(String ids) {
        moduleDao.batchExecute("delete Module where id in (?)", ids);
        moduleDao.flush();
    }
   
    @Override
 public void updateDataStatus(Module module, Integer dataStatus) {
  moduleDao.updateDataStatus(module, dataStatus);
 }

 @Override
 public void batchUpdateDataStatus(String ids, Integer dataStatus) {
  moduleDao.batchUpdateDataStatus(ids, dataStatus);
 }

 @Override
 public List<Module> getModuleTree(String tenantId, String parentId, Integer dataStatus, Integer display, Integer isIsvModule) {
  List<Module> moduleList = this.getModuleByParentId(tenantId, parentId, dataStatus, display, isIsvModule);
  for(Module module : moduleList){
   module.setNodes(this.getModuleTree(tenantId, module.getId(), dataStatus, display, isIsvModule));
  }
  return moduleList;
 }

 @SuppressWarnings("unchecked")
 @Override
 public List<Module> getModuleByParentId(String tenantId, String parentId, Integer dataStatus, Integer alwaysDisplay, Integer isIsvModule) {
  return moduleDao
    .getSession()
    .createQuery("from Module where tenantId=? and dataStatus=? and parentId=? and alwaysDisplay=? and isIsvModule=? order by sort")
    .setParameter(0, tenantId).setParameter(1, dataStatus).setParameter(2, parentId).setParameter(3, alwaysDisplay).setParameter(4, isIsvModule).list();
 }

 @Override
 public void updateModuleOrder(Module module) {
  moduleDao.getSession().createQuery("update Module set sort=? where id=?").setParameter(0,module.getSort()).setParameter(1, module.getId()).executeUpdate();
 }

 @SuppressWarnings("unchecked")
 @Override
 public List<Module> getModuleTreeByRole(String tenantId, String parentId, Integer dataStatus, String display, String roleId) {
  String sql = "select a.* from esale_tb_module as a join esale_tb_module_role as b on a.id = b.module_id where"
    + "  b.role_id in("
    + roleId
    + ") and a.tenant_id='"
    + tenantId
    + "' and a.data_status='"
    + dataStatus
    + "' and a.parent_id='"
    + parentId
    + "' and a.always_display='"
    + display
    + "' order by a.sort";
  List<Module> moduleList = moduleDao.getSession().createSQLQuery(sql).addEntity(Module.class).list();
  if(moduleList!=null && moduleList.size()>0){
   for(Module module : moduleList){
    module.setNodes(getModuleTreeByRole(tenantId, module.getId(), dataStatus, display, roleId));
   }
  }
  return moduleList;
 }

 @SuppressWarnings("unchecked")
 @Override
 public List<Module> getModuleByTenantId(String tenantId,
   Integer dataStatus, String display) {
  return moduleDao
  .getSession()
  .createQuery("from Module where tenantId=? and dataStatus=? and alwaysDisplay=? order by sort")
  .setParameter(0, tenantId).setParameter(1, dataStatus).setParameter(2, display).list();
 }

 @Override
 public List<Module> getModuleCheckedTree(String tenantId,
   Integer dataStatus, Integer display, List<Module> roleModule, String parentId, Integer isIsvModule) {
  List<Module> moduleList = this.getModuleByParentId(tenantId, parentId, dataStatus, display, isIsvModule);
  for(Module module : moduleList){
   for(Module moduleRole : roleModule){
    if(module.getId().equals(moduleRole.getId())){
     module.setIsChecked(true);
    }
   }
   module.setNodes(this.getModuleCheckedTree(tenantId, dataStatus, display, roleModule, module.getId(), isIsvModule));
  }
  return moduleList;
 }
 
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

package com.jetsum.esale.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.jetsum.config.setting.SystemConfig;
import com.jetsum.core.web.AbstractControllerByTenant;
import com.jetsum.esale.entity.Module;
import com.jetsum.esale.entity.Role;
import com.jetsum.esale.service.ModuleService;
import com.jetsum.esale.service.RoleService;
import com.jetsum.util.json.JsonUtil;

@Controller
@RequestMapping(value="/role")
public class RoleController extends AbstractControllerByTenant {

    private RoleService roleService;
    @Autowired
    public void setRoleService(RoleService roleService) {
        this.roleService = roleService;
    }
    private ModuleService moduleService;
    @Autowired
    public void setModuleService(ModuleService moduleService) {
        this.moduleService = moduleService;
    }
   
    @RequestMapping(value="/listRole")
    public Map<String, Object> listRole(HttpServletRequest request) {
      HttpSession session = request.getSession();
     Map<String, Object> queryPar = setCurrentListReqUrl(request, session);//活动历史查询参数     
  Map<String, Object> queryMap = getQueryParameter(request);//获得当前查询参数   
  //设置查询条件
        String page = setPage(request, queryPar);        
        String pagesize = setPageSize(request, queryPar);        
        String order = setOrder(request, queryPar);
        String orderBy = setOrderBy(request, queryPar);
  setQueryMap(request, queryPar, queryMap);//设置查询条件    
        setBaseQueryMap(request, queryMap);//设置基本查询条件
        //附件查询参数在此设置
  saveQueryPar(session, queryPar, queryMap, page, pagesize, order,orderBy);//保存本次查询参数
  //查询并返回结果集
  Map<String,Object> resultMap = new HashMap<String,Object>();
  resultMap.putAll(queryMap);
        resultMap.put("pageInfo", roleService.queryRoleByOrderPage(queryMap, Integer.parseInt(page), Integer.parseInt(pagesize), orderBy, order));
        resultMap.put("queryOrder",order);
        resultMap.put("queryOrderBy",orderBy);
        return resultMap;
    }
   
 @Override
 protected Map<String, String> getQueryParameterType() {
  Map<String,String> map = new HashMap<String,String>();
  return map;
 }
 
 @RequestMapping(value="/getRole")
    public Map<String, Object> getRole(HttpServletRequest request,Role role) {
        Map<String, Object> map = new HashMap<String, Object>();
        if (StringUtils.isEmpty(role.getId())) {
            map.put("role", new Role());
            return map;
        }
        role = roleService.getRole(role.getId());
        if (role == null) role = new Role();
        map.put("role", role);
        return map;
    }
   
    @RequestMapping(value="/editRole")
    public Map<String, Object> editRole(HttpServletRequest request,Role role) {
        Map<String, Object> map = new HashMap<String, Object>();
        String tenantId = SystemConfig.getTenantId(request);
        Integer dataStatus = SystemConfig.DATA_VAILD;
        //所有模块树
        List<Module> moduleTree = moduleService.getModuleTree(tenantId, "0", dataStatus, 1, 0);
  map.put("moduleTree", JsonUtil.javaToJsonStr(moduleTree, "roles"));
        if (StringUtils.isEmpty(role.getId())) {
            map.put("role", new Role());
            return map;
        }
        role = roleService.getRole(role.getId());
        List<Module> roleModules = roleService.getRole(role.getId()).getModules();
        List<Module> moduleAll = moduleService.getModuleCheckedTree(tenantId, dataStatus, 1, roleModules, "0", 0);
        map.put("moduleTree", JsonUtil.javaToJsonStr(moduleAll, "roles"));
        List<Module> modules = role.getModules();
  StringBuffer sb = new StringBuffer();
  for(Module md : modules){
   sb.append(md.getId()).append(",");
  }
  map.put("checkedNodesId", sb.toString());
        map.put("role", role);
        return map;
    }
   
    @RequestMapping(value="/saveRole")
    public String saveRole(HttpServletRequest request,Role role) {
        String tenantId = SystemConfig.getTenantId(request);
  if (StringUtils.isEmpty(role.getId())) {
   role.setId(null);
  }
  String moduleIds = request.getParameter("checkedNodesId");
  List<Module> modules = new ArrayList<Module>();
  if(StringUtils.isNotEmpty(moduleIds)){
   String[] mids = moduleIds.split(",");
   for(int i=0; i<mids.length; i++){
    Module md = new Module();
    md.setId(mids[i]);
    modules.add(md);
   }
  }
  role.setModules(modules);
  role.setTenantId(tenantId);
  role.setDataStatus(SystemConfig.DATA_VAILD);
        roleService.saveOrUpdateRole(role);
        return "redirect:listRole.do";
    }
   
    @RequestMapping(value="/deleteRole")
    public String deleteRole(HttpServletRequest request,Role role) {
  Role propertyName = roleService.getRole(role.getId());  
        roleService.updateDataStatus(propertyName, SystemConfig.DATA_INVAILD);
        return "redirect:listRole.do";
    }
   
    @RequestMapping(value="/deleteRoleByIds")
    public String deleteRoleByIds(String ids) {
  roleService.batchUpdateDataStatus(ids,SystemConfig.DATA_INVAILD);       
        return "redirect:listRole.do";
    }
   
    /**
     * 根据角色ID获取角色的模块
     * @param request
     * @param roleId
     * @return
     */
    @RequestMapping(value="/getRoleModuleIsChecked")
    @ResponseBody
    public String getRoleModuleIsChecked(HttpServletRequest request, String roleId){
        String tenantId = SystemConfig.getTenantId(request);
        Integer dataStatus = SystemConfig.DATA_VAILD;
        List<Module> roleModules = roleService.getRole(roleId).getModules();
        List<Module> moduleAll = moduleService.getModuleCheckedTree(tenantId, dataStatus, 1, roleModules, "0", 0);
     return JsonUtil.javaToJsonStr(moduleAll, "roles");
    }
}
   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/jetsum-tags.tld" prefix="jetsum" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<jetsum:override name="title">修改</jetsum:override>

<jetsum:override name="css">
 <style type="text/css">
  label.error {
   float: none;
   color: red;
   padding-left: .5em;
  }
 </style>
</jetsum:override>

<jetsum:override name="script">
<script type="text/javascript" src="js/jquery.ztree-2.6.min.js"></script>
 <script type="text/javascript">
 $(function() {
  $('#save').button().click(function() {
   $('#RoleForm').submit();
  });
  $('#cancel').button().click(function() {
   history.back();
  });
  $('#selectModule').button().click(function() {
   $('#moduleTreeDiv').dialog({
    height : 350,
    widht : 350,
    modal : true,
    buttons: {
     " 保存 ": function() {
      saveRoleModule();
     },
     " 关闭 ": function() {
      $(this).dialog( "close" );
     }
    }
   });
  });
 });
 //保存角色
 function saveRoleModule(){
  var idStr="";
  $(zTreeObj.getCheckedNodes()).each(function(i){
   idStr+=this.id;
   if(i<zTreeObj.getCheckedNodes().length-1){
    idStr+=",";
   }
  });   
  $("#checkedNodesId").val(idStr);
  $('#moduleTreeDiv').dialog("close");
 }
 </script>
</jetsum:override>

<jetsum:override name="body">
 <form id="RoleForm" action="saveRole.do" method="post">
 <input type="hidden" id="id" name="id" value="${role.id}">
 <table class="t2" width="100%">
  <thead>
  <tr>
   <th colspan="2"><h2 align="center">编辑信息</h2></th>
  </tr>
  </thead>
  <tbody>
  <tr>
   <th width="120">角色名称:</th>
   <td>
   <jetsum:input css="text" type="text" id="name" name="name" value="${role.name}" formId="RoleForm"></jetsum:input>
   </td>
  </tr>
  <tr>
   <th width="120">角色描述:</th>
   <td>
   <jetsum:input css="text" type="textarea" id="roleDescription" name="roleDescription" value="${role.roleDescription}" formId="RoleForm"></jetsum:input>
   </td>
  </tr>
  <tr>
   <th width="120">访问权限:</th>
   <td>
   <input type="button" id="selectModule" name="selectModule" value="设置权限" class="btn"/>
   <input type="hidden" id="checkedNodesId" name="checkedNodesId" value="${checkedNodesId}"/>
         <div id="moduleTreeDiv" title="选择权限" style="display: none;">
   <jetsum:tree data="${moduleTree}"  treeName="zTreeObj" panelId="moduleTree" treeNodeParentKey="parentId" nodesCol="nodes" rootPID="0" checkable="true" checkStyle="checkbox" checkedCol="isChecked">
   <jetsum:treeCallBack>
   </jetsum:treeCallBack>
   </jetsum:tree>
   </div>
   </td>
  </tr>
  <tr>
   <th width="120">角色状态:</th>
   <td>
   <c:choose>
   <c:when test="${role.isState eq 0}">
   <input type="radio" id="alwaysDisplay" name="alwaysDisplay" value="1"/>开启
   <input type="radio" id="alwaysDisplay" name="alwaysDisplay" value="0" checked="checked"/>关闭
   </c:when>
   <c:otherwise>
   <input type="radio" id="alwaysDisplay" name="alwaysDisplay" value="1" checked="checked"/>开启
   <input type="radio" id="alwaysDisplay" name="alwaysDisplay" value="0"/>关闭
   </c:otherwise>
   </c:choose>
   </td>
  </tr>
  </tbody>
  <tfoot>
  <tr>
   <td colspan="2" >
   <input type="button" class="btn" id="save" value="保存">
   <input type="button" class="btn" id="cancel" value="返回">
   </td>
  </tr>
  </tfoot>
 </table>
 </form>
</jetsum:override>
<jsp:include page="/common/EditZtreev2page.jsp" />

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值