树形结构的形成和提交

 

树形结构的形成和提交

 

形成树形结构的数据1用sql组织(后台),2java组织(前台权限),最终都是在前的有结构的基础上转化为字符串菜单样式

权限的提交:

1,前台设计之初就把素有的checkbox name一样,之后用数组接收,接收到的就是选中的

2,以系统的菜单为样本,通过request获取checkbox传入的选中的菜单(用系统的菜单值),可以得到说明选中了

 

 下一次的递归对象集总会比前一次的递归集小(每次递归集用的是上一次的子作为基础的树去递归)

 

后台的权限菜单的展现,和提交

 

 

后台(只依赖sql组织)OpmRoleController.java

//加载所有权限,本角色用的菜单用checked展现(只依赖sql组织)

@SuppressWarnings("rawtypes")

@RequestMapping(value="/system/opmRole/Auths")

@ResponseBody

public JSONArray treeRead(@RequestHeader(value="fg") String fg,@RequestHeader(value="id",required=false) String id,@RequestHeader(value="leave") String leave,@RequestHeader(value="roleId") String roleId,@RequestHeader(value="pId")  String pId,@RequestHeader(value="groupId",required=false)  String groupId1,@RequestBody(required=false) List<OpmRolelimit> o){

List<String> strl= new ArrayList<String>();

String str="";

JSONArray JsonArray = new JSONArray(); ///用这个作为菜单的承接

Map<String,Object> param = new HashMap<String,Object>();

param.put("pId", pId);

List<Map> map= opmMenufolderService.getfordMenuLimt(param);////查询以当前为父节点的所有菜单权限(sql树形顺序,不是实体树形结构),每迭代深入一次迭代树减少一次(每次都是以子为迭代树,递进,然后回归父的迭代数)

if("1".equals(fg)&&id!=null&&!"".equals(id)){

//查询角色权限表

System.out.println("==========查询角色权限表=======");

OpmRolelimit oo =new OpmRolelimit();

oo.setRoleid(id);

o=opmRolelimitService.getRoleLimt(oo);//查出本用户角色拥有的菜单(没有树形的结果集,普通)

fg="0";

}

Map<String,Object> param1 = new HashMap<String,Object>();

String groupId=groupId1;

for(Map p: map){

 

param1.put("pId", p.get("ID"));

String l= (String) p.get("LEAVE");

if("1".equals(l)){//分级别渲染菜单

if("100000".equals(p.get("PARENTID")+"")){//顶级菜单根

groupId=(String)p.get("ID");

   str+="<label style=\"float:left\"><input type=\"checkbox\" class=\"checkboxCtrl\" value="+p.get("ID")+" group="+groupId+" selectType=\"invert\" />"+p.get("NAME")+"</label>"+"\n";

   strl.add(str);

   JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId", groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

   Json.put("str", "<label style=\"float:left;width:150px;\"><input type=\"checkbox\" class=\"checkboxCtrl\" value="+p.get("ID")+"  onclick=\"checkedAllBox(this);\" group="+groupId+" //>"+p.get("NAME")+"</label>"+"\n");

   JsonArray.add(Json);

   

   

}else{//一级菜单

str+="<label><input type=\"checkbox\" value="+p.get("ID")+" name="+groupId+"/>"+p.get("NAME")+"</label>"+"\n";

strl.add(str);

JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId",groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

   Json.put("str","<label style=\"width:150px;\">&nbsp;&nbsp;&nbsp;"+p.get("NAME")+"</label>"+"\n");

   JsonArray.add(Json);

}

}

if("2".equals(l)){//二级菜单

if(Integer.valueOf(leave)<0){

if(Integer.valueOf(p.get("LEAVE1")+"") >=Integer.valueOf(leave)){

str+="<label><input type=\"checkbox\" value="+p.get("ID")+"  name="+groupId+"/>"+p.get("NAME")+"</label>"+"\n";

strl.add(str);

JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId", groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

   String bs ="<label style=\"width:150px;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"checkbox\" value="+p.get("ID")+"  name='"+groupId+"'/>"+p.get("NAME")+"</label>"+"\n";

   if(o!=null){

   for(OpmRolelimit k : o){///////当前用户角色菜单

   if( (p.get("ID")+"").equals(k.getMenuitemid())){///////如果当前遍历到的全部系统菜单中在此角色的菜单中,则挑出

   bs ="<label style=\"width:150px;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"checkbox\" value="+p.get("ID")+" checked=\"checked\"  name='"+groupId+"'/>"+p.get("NAME")+"</label>"+"\n";

       break;

   }

   }

   }

   Json.put("str",bs);

   JsonArray.add(Json);

}

}else{

//TODO

Map<String,Object> param2 = new HashMap<String,Object>();

param2.put("menuItemId", p.get("ID"));

param2.put("menuItemLimitId", null);

param2.put("roleId", roleId);

param2.put("displayOrder", Integer.valueOf(-1));

List<OpmRolelimit> rl= opmRolelimitService.getRoleLimitByTJ(param2);

if(rl!=null&&rl.size()>0&&Integer.valueOf(p.get("LEAVE1")+"") >=Integer.valueOf(leave)){

str+="<label><input type=\"checkbox\" value="+p.get("ID")+" name="+groupId+"/>"+p.get("NAME")+"</label>"+"\n";

strl.add(str);

JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId", groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

//    Json.put("str","<label style=\"width:150px;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"checkbox\" value="+p.get("ID")+" name='"+groupId+"'/>"+p.get("NAME")+"</label>"+"\n");

   String bs ="<label style=\"width:150px;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"checkbox\" value="+p.get("ID")+"  name='"+groupId+"'/>"+p.get("NAME")+"</label>"+"\n";

   if(o!=null){

   for(OpmRolelimit k : o){

   if( (p.get("ID")+"").equals(k.getMenuitemid())){

   bs ="<label style=\"width:150px;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"checkbox\" value="+p.get("ID")+" checked=\"checked\"  name='"+groupId+"'/>"+p.get("NAME")+"</label>"+"\n";

       break;

   }

   }

   }

   Json.put("str",bs);

   JsonArray.add(Json);

}

}

}

if("3".equals(l)){//三级菜单

Map<String,Object> param2 = new HashMap<String,Object>();

param2.put("menuItemId", p.get("PARENTID"));

param2.put("menuItemLimitId", p.get("ID"));

param2.put("roleId", roleId);//当前登录用户角色Id

param2.put("displayOrder", null);

List<OpmRolelimit> rl2= opmRolelimitService.getRoleLimitByTJ(param2);

String tempg=groupId;

if(rl2!=null&&rl2.size()>0){

str+="<label><input type=\"checkbox\"  value="+p.get("ID")+" name="+groupId+"/>"+p.get("NAME")+"</label>"+"\n";

strl.add(str);

JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId", groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

//    Json.put("str","<label style=\"width:150px;\"><input type=\"checkbox\"  value="+p.get("ID")+" name='"+groupId+"'/>"+p.get("NAME")+"</label>"+"\n");

   String bs ="<label style=\"width:150px;\"><input type=\"checkbox\"  value="+p.get("ID")+" name='"+groupId+"'/>"+p.get("NAME")+"</label>"+"\n";

   if(o!=null){

   for(OpmRolelimit k : o){

   if( (p.get("ID")+"").equals(k.getMenuitemlimitid())){

   bs ="<label style=\"width:150px;\"><input type=\"checkbox\"  value="+p.get("ID")+" checked=\"checked\" name='"+groupId+"'/>"+p.get("NAME")+"</label>"+"\n";

       break;

   }

   }

   }

   Json.put("str",bs);

   JsonArray.add(Json);

}

}

 

//str+=treeRead(leave,roleId,p.get("ID")+"",groupId);

JsonArray.addAll(treeRead(fg,id,leave,roleId,p.get("ID")+"",groupId,o));

}

return JsonArray;

}

 

 

//加载把有的菜单展现,本角色用的菜单用checked展现

@SuppressWarnings("rawtypes")

@RequestMapping(value="/system/opmRole/AuthsInfo")

@ResponseBody

public JSONArray treeReadInfo(@RequestHeader(value="fg") String fg,@RequestHeader(value="id") String id,@RequestHeader(value="leave") String leave,@RequestHeader(value="roleId") String roleId,@RequestHeader(value="pId")  String pId,@RequestHeader(value="groupId",required=false)  String groupId1,@RequestBody(required=false) List<OpmRolelimit> o){

List<String> strl= new ArrayList<String>();

String str="";

JSONArray JsonArray = new JSONArray();

Map<String,Object> param = new HashMap<String,Object>();

param.put("pId", pId);

List<Map> map= opmMenufolderService.getfordMenuLimt(param);

if("1".equals(fg)&&id!=null&&!"".equals(id)){

System.out.println("==========查询角色权限表=======");

OpmRolelimit oo =new OpmRolelimit();

oo.setRoleid(id);

o=opmRolelimitService.getRoleLimt(oo);

fg="0";

}

Map<String,Object> param1 = new HashMap<String,Object>();

String groupId=groupId1;

for(Map p: map){

param1.put("pId", p.get("ID"));

String l= (String) p.get("LEAVE");

if("1".equals(l)){

if("100000".equals(p.get("PARENTID")+"")){

groupId=(String)p.get("ID");

   str+="<label style=\"float:left\"><input type=\"checkbox\" class=\"checkboxCtrl\" value="+p.get("ID")+" group="+groupId+" selectType=\"invert\" />"+p.get("NAME")+"</label>"+"\n";

   strl.add(str);

   JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId", groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

   OpmMenuitem m= new OpmMenuitem();

   m.setMenufolderid(p.get("ID")+"");

   List<OpmMenuitem> ms= opmMenuitemService.getMenuItems(m);

        boolean flag=false;

   if(ms!=null&&o!=null){

   for(OpmMenuitem mm :ms){/////////所有菜单

   for(OpmRolelimit oo :o){///////////本角色用户拥有的菜单

         if(oo.getMenuitemid().equals(mm.getId())){//////////////////////////负责挑出本角色的菜单显示

    Json.put("str", "<label style=\"float:left;width:150px;\">"+p.get("NAME")+"</label>"+"\n");

    JsonArray.add(Json);

        flag=true;

        break;

        }

      }

   if(flag){

   break;

   }

   }

   }

   if(!flag){

   OpmMenufolder folder= new OpmMenufolder();

   folder.setParentid(p.get("ID")+"");

   List<OpmMenufolder> folder2= opmMenufolderService.getOpmMenufolder(folder);

   if(folder2!=null&&folder2.size()>0&&o!=null){

   for(OpmMenufolder f: folder2){

   OpmMenuitem fm= new OpmMenuitem();

   fm.setMenufolderid(f.getId());

   List<OpmMenuitem> fms= opmMenuitemService.getMenuItems(fm);

     if(fms!=null&&fms.size()>0){

     for(OpmMenuitem ffm: fms){

   for(OpmRolelimit oo :o){

         if(oo.getMenuitemid().equals(ffm.getId())){

    Json.put("str", "<label style=\"float:left;width:150px;\">"+p.get("NAME")+"</label>"+"\n");

    JsonArray.add(Json);

        flag=true;

        break;

        }

      }

   if(flag){

   break;

   }

   

     }

     }

     if(flag){

   break;

   }

   }

   

   }

   }

   

   

}else{

str+="<label><input type=\"checkbox\" value="+p.get("ID")+" name="+groupId+"/>"+p.get("NAME")+"</label>"+"\n";

strl.add(str);

JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId",groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

   OpmMenuitem m= new OpmMenuitem();

   m.setMenufolderid(p.get("ID")+"");

   List<OpmMenuitem> ms= opmMenuitemService.getMenuItems(m);

        boolean flag=false;

   if(ms!=null&&o!=null){

   for(OpmMenuitem mm :ms){

   for(OpmRolelimit oo :o){

         if(oo.getMenuitemid().equals(mm.getId())){

        Json.put("str","<label style=\"width:150px;\">&nbsp;&nbsp;&nbsp;"+p.get("NAME")+"</label>"+"\n");

      JsonArray.add(Json);

        flag=true;

        break;

        }

      }

   if(flag){

   break;

   }

   }

   }

}

}

if("2".equals(l)){

if(Integer.valueOf(leave)<0){

if(Integer.valueOf(p.get("LEAVE1")+"") >=Integer.valueOf(leave)){

str+="<label><input type=\"checkbox\" value="+p.get("ID")+"  name="+groupId+"/>"+p.get("NAME")+"</label>"+"\n";

strl.add(str);

JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId", groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

   String bs ="";

   if(o!=null){

   for(OpmRolelimit k : o){

   if( (p.get("ID")+"").equals(k.getMenuitemid())){

   bs ="<label style=\"width:150px;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+p.get("NAME")+"</label>"+"\n";

   Json.put("str",bs);

   JsonArray.add(Json);

   break;

   }

   }

   }

   

}

}else{

Map<String,Object> param2 = new HashMap<String,Object>();

param2.put("menuItemId", p.get("ID"));

param2.put("menuItemLimitId", null);

param2.put("roleId", roleId);

param2.put("displayOrder", Integer.valueOf(-1));

List<OpmRolelimit> rl= opmRolelimitService.getRoleLimitByTJ(param2);

if(rl!=null&&rl.size()>0&&Integer.valueOf(p.get("LEAVE1")+"") >=Integer.valueOf(leave)){

str+="<label><input type=\"checkbox\" value="+p.get("ID")+" name="+groupId+"/>"+p.get("NAME")+"</label>"+"\n";

strl.add(str);

JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId", groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

   String bs ="<label style=\"width:150px;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"checkbox\" value="+p.get("ID")+"  name='"+groupId+"'/>"+p.get("NAME")+"</label>"+"\n";

   if(o!=null){

   for(OpmRolelimit k : o){

   if( (p.get("ID")+"").equals(k.getMenuitemid())){

   bs ="<label style=\"width:150px;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+p.get("NAME")+"</label>"+"\n";

   Json.put("str",bs);

   JsonArray.add(Json);

   break;

   }

   }

   }

   

}

}

}

if("3".equals(l)){

Map<String,Object> param2 = new HashMap<String,Object>();

param2.put("menuItemId", p.get("PARENTID"));

param2.put("menuItemLimitId", p.get("ID"));

param2.put("roleId", roleId);//当前登录用户角色Id

param2.put("displayOrder", null);

List<OpmRolelimit> rl2= opmRolelimitService.getRoleLimitByTJ(param2);

String tempg=groupId;

if(rl2!=null&&rl2.size()>0){

str+="<label><input type=\"checkbox\"  value="+p.get("ID")+" name="+groupId+"/>"+p.get("NAME")+"</label>"+"\n";

strl.add(str);

JSONObject Json = new JSONObject();

   Json.put("ID", p.get("ID")+"");

   Json.put("NAME", p.get("NAME")+"");

   Json.put("groupId", groupId);

   Json.put("parentId", p.get("PARENTID"));

   Json.put("leave", l);

   String bs ="<label style=\"width:150px;\"><input type=\"checkbox\"  value="+p.get("ID")+" name='"+groupId+"'/>"+p.get("NAME")+"</label>"+"\n";

   if(o!=null){

   for(OpmRolelimit k : o){

   if( (p.get("ID")+"").equals(k.getMenuitemlimitid())){

   bs ="<label style=\"width:150px;\">"+p.get("NAME")+"</label>"+"\n";

   Json.put("str",bs);

   JsonArray.add(Json);

   break;

   }

   }

   }

   

}

}

 

JsonArray.addAll(treeReadInfo(fg,id,leave,roleId,p.get("ID")+"",groupId,o));

}

return JsonArray;

}

 

 

 

 

 

 

 

 

提交权限的时候同一个页面的权限的checkbox name相同

 

@SuppressWarnings("unused")

@RequestMapping(value = "/system/opmRole/update", method = RequestMethod.POST)

public ModelAndView opmUpdate(OpmRole opmRole,HttpServletRequest request,Model modle) throws Exception {

int flag=0;

OpmMenufolder folder = new OpmMenufolder();

folder.setParentid("100000");

List<OpmMenufolder> opmMenufolders= opmMenufolderService.getOpmMenufolder(folder);///查出所有的系统权限

String[] a=new String[]{};

List<String> list = new ArrayList<String>();

try{

for(OpmMenufolder o: opmMenufolders){

a=request.getParameterValues(o.getId());//////通过request获取checkbox传入的选中的菜单,可以得到说明选中了

if(a==null||"".equals(a)){

continue;

}

list.addAll(Arrays.asList(a));//选中的在系统菜单中就记录下,后面跟据这个选中的记录一个一个更新

}

Map<String,Object> param = new HashMap<String,Object>();

OpmRolelimit opmLimt = new OpmRolelimit();

String org= opmRole.getOrganid();

flag = opmRoleService.updateRole(opmRole, list);

//

myShiroFilterFactory.reloadChainDefinitions();

return ajaxDoneOpm("/commonuntil/ajaxDone",200,"操作成功!","opmRoleNavUi","/system/opmRole/editUi","closeCurrent");

}catch (Exception e){

return ajaxDoneOpm("/commonuntil/ajaxDone",300,"添加失败!","opmRoleNavUi","/system/opmRole/editUi","closeCurrent");

//throw new Exception("操作失败!");

}

 

 

}

 

 

 

 

 

 

 

@Override

@Transactional(rollbackFor=Exception.class)

    @CacheEvict(value="getRoleLimt", allEntries = true)

public int updateRole(OpmRole opmRole,List<String> list) throws Exception {

// TODO Auto-generated method stub

System.out.println("==========================213213213===================");

if("".equals(opmRole.getOrganid())||null==opmRole.getOrganid()){

throw new Exception("传入参数为空!");

}

TbCusMark tbCusMark = new TbCusMark();

   tbCusMark.setMarketKey(BigDecimal.valueOf(Long.valueOf(opmRole.getOrganid())));

   TbCusMark mark= tbCusMarkMapper.selectOne(tbCusMark);

   if(mark==null){

   throw new Exception("交易市场找不到!");

   }

OpmRole role =new OpmRole();

if(opmRole.getId()==null||"".equals(opmRole.getId())){

role.setOrganid(opmRole.getOrganid());

role.setLevel1(Short.valueOf("0"));

role.setName(opmRole.getName());

role.setMemo(opmRole.getMemo());

opmRoleMapper.insert(role);

}else{

OpmRolelimit opmRolelimit = new OpmRolelimit();

opmRolelimit.setRoleid(opmRole.getId());

   opmRolelimitMapper.delete(opmRolelimit);

   opmRoleMapper.updateByPrimaryKeySelective(opmRole);

}

OpmMenuitemlimit opmMenuitemlimit = new OpmMenuitemlimit();

List<OpmMenuitemlimit> opmLimits= opmMenuitemlimitMapper.select(opmMenuitemlimit);

OpmMenuitem item = new OpmMenuitem();

List<OpmMenuitem> items= opmMenuitemMapper.select(item);

try{

 

for(String l :list){

OpmRolelimit opmLimt = new OpmRolelimit();

int up=0;

for(OpmMenuitem i: items){

if(i.getId().equals(l)){

opmLimt.setMenuitemid(i.getId());

opmLimt.setDisplayorder(-1L);

opmLimt.setName("查看");

 

if(opmRole.getId()==null||"".equals(opmRole.getId())){

   opmLimt.setRoleid(role.getId());

   up= opmRolelimitMapper.insert(opmLimt);

}else{

opmLimt.setRoleid(opmRole.getId());

   up= opmRolelimitMapper.insert(opmLimt);

}

break;

}

}

if(up==0){

for(OpmMenuitemlimit lm : opmLimits){

if(lm.getId().equals(l)){

opmLimt.setMenuitemid(lm.getMenuitemid());

opmLimt.setDisplayorder(lm.getDisplayorder());

opmLimt.setName(lm.getName());

opmLimt.setMenuitemlimitid(lm.getId());

opmLimt.setDisplayorder(lm.getDisplayorder());

opmLimt.setName(lm.getName());

String org= opmRole.getOrganid();

                         if(opmRole.getId()==null||"".equals(opmRole.getId())){

                        opmLimt.setRoleid(role.getId());

  up= opmRolelimitMapper.insert(opmLimt);

}else{

opmLimt.setRoleid(opmRole.getId());

   opmRolelimitMapper.insert(opmLimt);

}

break;

}

 }

}

}

}catch(Exception e){

 

throw new Exception("保存角色异常!");

}

return  1;

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

前台

http://10.0.1.222:8080/esteelds/account/tradPerm/edit?customerKey=399&_=1497234247857

 

 

 

 

//组织前台的权限是用树形实体结构(不依赖sql形成树)

@Override

public String getSimpleOfTree(String customerKey) {

// TODO Auto-generated method stub

//getCusPowerGroupList(customerKey);

Map<String,Object> param = new HashMap<String,Object>();

param.put("customerKey", customerKey);

List<TbCusFirmVo> permList= tbCusFirmMapper.findCustomerTradePermiList(param);

TbCusFirmVo perm = new TbCusFirmVo();

if(permList!=null&&permList.size()>0){

perm=permList.get(0);

}

String cusTradeKind=  perm.getCusTradeKind();

String simpleOfTree = encapMenuTreeJs(createMenuTree(cusTradeKind,0));

return simpleOfTree;

}

 

 

 private String encapMenuTreeJs(Tree tree)///遍历树形实体

 {

   StringBuffer scriptOfMenu = new StringBuffer();

   if (null != tree) {

     scriptOfMenu.append(initTreeJs(tree, 0));

   }

   return scriptOfMenu.toString();

 }

 

 

 

 

 

private Tree createMenuTree(String cusTradeKind,int i)///生成树形实体

 {

Example example = new Example(TbPowerGroup.class);

example.createCriteria().andLike("flag", "%"+cusTradeKind+"%");

example.setOrderByClause("levelCode asc");

List<TbPowerGroup> list= tbPowerGroupMapper.selectByExample(example);////这里不是树形结构,这里是按照级别归类排序

Map mr= new HashMap();

mr.put("NodeName", "会员中心");

Tree tree = new Tree("-1", 0, mr, 0);

createMenuTreeNow(tree,list);///生成树形实体,递归

//    return this.permServ.findMenuTree(this.CusTradeKind, 0);

return tree;

 }

 

 

 

 

private void  createMenuTreeNow(Tree tree,List<TbPowerGroup> list ){///生成树形实体,用递归的方式

if (tree.getType() == 1) {

     return;

   }

List<TbPowerGroup> temp = new ArrayList<TbPowerGroup>();

temp.addAll(list);

for(TbPowerGroup l : list){

     Map mr = new HashMap();

     mr.put("NodeName",  l.getGroupName());

     Tree t = new Tree( l.getGroupKey().toString(),  l.getGroupLevel().intValue() == 2 ? 1 : 0, mr,  Integer.valueOf(l.getLevelCode()));

     if ( l.getParentKey().toString().equals(tree.getId()))///通过遍历按级别分类的结果,按照pid遍历比较组织树,组织好一个移除一个

     {

       tree.getSonList().add(t);

       temp.remove(l);

       createMenuTreeNow(t, temp);

     }

}

}

 

 

 

 

 

 

///将树形实体转化为字符串,递归,类似转化树形sql

 private Object initTreeJs(Tree tree, int level)

 {

   if (null == tree) {

     return "";

   }

   StringBuffer scriptOfMenu = new StringBuffer();

   Map m = (Map)tree.getMyInfo();

   

   StringBuffer strBuff = new StringBuffer("");

   if (null != m)

   {

     Iterator<String> it = m.keySet().iterator();

     int iMarketIdx = 0;

     while (it.hasNext())

     {

       String key = (String)it.next();

       strBuff.append(key + "=\"");

       String value =getNull4Empty(m.get(key), false);

       strBuff.append(value + "\"  ");

     }

   }

   else

   {

     return "";

   }

   if (tree.getType() == 1)

   {//叶子

     scriptOfMenu.append("<li><a tname='name1' tvalue='" + tree.getId() +"'>");

     

     scriptOfMenu.append("<span>" + m.get("NodeName").toString() + "</span>");

     

     scriptOfMenu.append("</a></li>");

   }

   else if (tree.getType() == 0)

   {//文件夹

     scriptOfMenu.append("<li><a tname='name1' tvalue='" + tree.getId() + "'");

     

     scriptOfMenu.append("<span>" + m.get("NodeName").toString() + "</span></a>");

     

     scriptOfMenu.append("<ul>");

     List<Tree> sonList = tree.getSonList();

     if ((null != sonList) && (!sonList.isEmpty()))

     {

       level++;

       for (int j = 0; (null != sonList) && (j < sonList.size()); j++) {

         scriptOfMenu.append(initTreeJs((Tree)sonList.get(j), level));

       }

     }

     scriptOfMenu.append("</ul>");

     scriptOfMenu.append("</li>");

   }

   return scriptOfMenu.toString();

 }

 

 

 

 

 

 

 

 

 

前台的提交;

 

设计之初就把素有的checkbox name一样,之后用数组接收,接收到的就是选中的

 

@RequestMapping(value = "/account/tradPerm/tradPermModify")

public ModelAndView tradPermModify(@RequestParam(value="id") String id,@RequestParam(value="name1") String[] groupKey,Model model, HttpSession session, HttpServletRequest request) throws Exception {

System.out.println("==============id"+id+"===========name1"+groupKey);

if(id==null||"".equals(id)){

throw new Exception("会员主键没有带入!");

}

tbCusFirmService.updateCustomerPowerGroup(Long.valueOf(id), groupKey);

return ajaxDoneBasBed1(200,"SUCCESS","/account/tradPerm/list","closeCurrent");

}

 

 

 

菜单sql参考:

后台

http://localhost:8083/esteelds/system/opmRole/menuInfo

查出三级菜单(左侧)  跨表的树形,先用一个结果集承接

 <select id="getfordMenuLimt" resultType="map" parameterType="map">

    select * from (select * from 

(   

      select t.name name,t.id  id,t.parentid  parentid ,0 leave1,'1' leave ,null uri from opm_menufolder t 

   union all select o.name name,o.id id,o.menufolderid,o.level1 leave1,'2' leave, o.uri uri from opm_menuitem o

   union all select l.name name,l.id id,l.menuitemid ,l.level1 leave1,'3' leave , l.uri uri from opm_menuitemlimit l

start with parentid is null connect by prior id=parentid ORDER SIBLINGS BY parentid) where parentid=#{pId}

  

  </select>

前台:

左侧

http://localhost:8080/web/tbPowerGroup/createMenuTree

cus_trade_kind = "HA"

顶端菜单:

http://localhost:8080/web/tbPowerGroup/createTopMenuTree

cus_trade_kind = "TA";

<select id="getBigPowerMenu" parameterType="map" resultType="map">

SELECT DISTINCT D.*, C.URL_ADDRESS

  FROM TB_POWER_GROUP D LEFT JOIN (SELECT A.GROUP_KEY, B.URL_ADDRESS

                                     FROM TB_POWER_GROUPRELURL A,

                                          TB_POWER_URL         B

                                    WHERE A.URL_KEY = B.URL_KEY) C ON D.GROUP_KEY = C.GROUP_KEY

                                    WHERE FLAG =#{current_trade_kind}  START WITH D.GROUP_KEY IN

                                    (SELECT GROUP_KEY FROM TB_CUS_FIRMRELGROUP WHERE CUSTOMER_KEY = #{CUSTOMER_KEY})

                                     CONNECT BY PRIOR  PARENT_KEY = D.GROUP_KEY ORDER BY D.SORT_NUM 

</select>

<select id="getSmallPowerMenu" parameterType="map" resultType="map">

SELECT DISTINCT A.*, C.URL_ADDRESS

  FROM TB_POWER_GROUP A LEFT JOIN (SELECT A.GROUP_KEY, B.URL_ADDRESS

                                     FROM TB_POWER_GROUPRELURL A,

                                          TB_POWER_URL         B

                                    WHERE A.URL_KEY = B.URL_KEY) C ON A.GROUP_KEY = C.GROUP_KEY

 START WITH A.GROUP_KEY IN

            (SELECT DISTINCT T2.GROUP_KEY

               FROM TB_POWER_GROUP         T2,

                    TB_POWER_ROLESRELGROUP T4,

                    TB_POWER_USERRELROLES  T5

              WHERE T4.ROLES_KEY = T5.ROLES_KEY AND

                    T5.CUS_USER_KEY =#{CUS_USER_KEY} AND

                    T2.GROUP_KEY = T4.GROUP_KEY AND

                    T2.FLAG = #{current_trade_kind})

CONNECT BY A.PARENT_KEY = PRIOR A.GROUP_KEY and

           a.FLAG = #{current_trade_kind}

 ORDER BY A.SORT_NUM

</select>

子账户

http://localhost:8080/web/myaccount/getAccountData

<select id="getOperateUserByCustomerKey" parameterType="map" resultMap="account1Map">

SELECT  t.*,t1.ROLES_KEY from TB_CUS_USER t,TB_POWER_USERRELROLES t1  where t.CUS_USER_KEY=t1.CUS_USER_KEY

<if test="CUSTOMER_KEY!=null and CUSTOMER_KEY!=''">

     and t.CUSTOMER_KEY=#{CUSTOMER_KEY}

</if>

<if test="CUS_USER_ID!=null and CUS_USER_ID!=''">

     and t.CUS_USER_ID like  '%${CUS_USER_ID}%' 

</if>

<if test="CUS_USER_STATUS!=null and CUS_USER_STATUS!=''">

      and t.CUS_USER_STATUS=#{CUS_USER_STATUS} 

</if>

<if test="MAN!=null and MAN!=''">

     and t.MAN like '%${MAN}%'

</if>

order by t.cus_user_id desc

</select>

会员中心小菜单:根据CUSTOMER_KEY查询

<select id="findMenuTree" parameterType="map" resultMap="tbPowerGroupBeanMap">

SELECT DISTINCT *

  FROM TB_POWER_GROUP

WHERE GROUP_KEY NOT IN

      (161, 162, 164, 152, 136, 153, 154, 155, 156, 157, 121, 122, 123, 124, 120, 137, 138, 139, 150, 151, 133, 141, 142, 143, 144, 145, 146, 158, 159, 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180, 186, 185) 

START WITH GROUP_KEY IN (SELECT GROUP_KEY

              FROM TB_CUS_FIRMRELGROUP

             WHERE CUSTOMER_KEY = #{CUSTOMER_KEY})

CONNECT BY PRIOR PARENT_KEY = GROUP_KEY

 ORDER BY SORT_NUM

</select>

 

 

 

 

猜你喜欢

转载自yuhuiblog6338999322098842.iteye.com/blog/2379023