• 阿里Bui动态菜单以及权限表结构设计


    [{"config":{"homePage":"zhu","id":"menu","menu":[{"items":[{"href":"main/zhu.html","id":"zhu","text":"首页"},{"href":"main/user-message1","id":"user-message1","text":"用户信息管理"},{"href":"main/cp-list1","id":"cp-list1","text":"产品类别管理"},{"href":"main/cp-list","id":"cp-list","text":"订单表明细"},{"href":"main/buyer-list","id":"buyer-list","text":"客户信息管理"},{"href":"main/cp-guan.html","id":"cp-guan","text":"商品信息管理"},{"href":"main/cp-list2","id":"cp-list2","text":"供应商信息管理"},{"href":"main/cp-list3","id":"cp-list3","text":"仓库信息管理"},{"href":"main/cp-list5","id":"cp-list5","text":"车辆信息管理"},{"href":"main/cp-list7","id":"cp-list7","text":"实体店信息管理"},{"href":"main/role","id":"role","text":"角色管理"}],"text":"基础信息"},{"items":[{"href":"main/gongshang","id":"gongshang","text":"供应商"},{"href":"main/saoma-search","id":"saoma-search","text":"供应商注册审核"},{"href":"main/zs-search","id":"zs-search","text":"供应商订单确认"}],"text":"供应商管理"},{"items":[{"href":"main/forms-orderList1","id":"forms-orderList1","text":"线下订单"},{"href":"main/forms-requestList1","id":"forms-requestList1","text":"需求信息一览"},{"href":"main/forms-purchaseList1","id":"forms-purchaseList1","text":"采购单"},{"href":"main/purchase-check","id":"forms-purchreview1","text":"采购单审核"},{"href":"main/html404","id":"html404","text":"二维码标签打印"},{"href":"main/shouhuo","id":"shouhuo","text":"收货管理"},{"href":"main/html505","id":"html505","text":"线上订单数据接口"},{"href":"main/quick","id":"quick","text":"页面操作快捷方式"}],"text":"采购管理"},{"items":[{"href":"main/oder-inspect","id":"oder-inspect","text":"采购商品检测"},{"href":"main/oder-sinspect","id":"oder-sinspect","text":"供应商检测报告"},{"href":"main/order-tinspect","id":"order-tinspect","text":"检测机构报告"}],"text":"检测管理"},{"items":[{"href":"main/cangku","id":"cangku","text":"仓库管理"},{"href":"main/ruku","id":"ruku","text":"入库单"},{"href":"main/chuku","id":"chuku","text":"出库单"},{"href":"main/fenbao","id":"fenbao","text":"分包管理"},{"href":"main/kucun","id":"kucun","text":"库存管理"}],"text":"出入库管理"},{"items":[{"href":"search/zhuisu-report","id":"zhuisu-report","text":"追溯状况信息"},{"href":"main/zs-search","id":"zs-search","text":"追溯查询"},{"href":"main/saoma-search","id":"saoma-search","text":"扫码查询"}],"text":"商品溯源"},{"items":[{"href":"main/delivery-list","id":"delivery-list","text":"配送单"},{"href":"main/zs-search","id":"zs-search","text":"配送单维护"},{"href":"main/saoma-search","id":"saoma-search","text":"送达确认"}],"text":"配送管理"},{"items":[{"href":"main/return-list","id":"return-list","text":"退货单"},{"href":"main/timeline","id":"timeline","text":"迁移图"}],"text":"退货管理"}]}},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{"config":{"homePage":"zhu","id":"search","menu":[{"items":[{"href":"main/jx-report","id":"jx-report","text":"根据分类内容查询报表"},{"href":"main/chuku-report","id":"chuku-report","text":"出库报表"},{"href":"main/ruku-report","id":"ruku-report","text":"入库报表"},{"href":"main/buylist-report","id":"buyList-report","text":"采购信息报表"},{"href":"main/jiance-report","id":"jiance-report","text":"检测信息报表"},{"href":"main/sunhao-report","id":"sunhao-report","text":"损耗率报表"},{"href":"main/kucun-report","id":"kucun-report","text":"库存盘点报表"},{"href":"main/sale-report","id":"sale-report","text":"销售状况报表"},{"href":"main/year-report","id":"year-report","text":"年度报表状态"},{"href":"main/quarter-report","id":"quarter-report","text":"季度报表状态"},{"href":"main/month-report","id":"month-report","text":"月报表状态"}],"text":"进销存报表"}]}},{},{},{},{},{},{},{},{},{},{},{},{},{},{"config":{"homePage":"zhu","id":"detail","menu":[{"items":[{"href":"main/ruku-detail","id":"ruku-detail","text":"入库单明细表"},{"href":"main/chuku-detail","id":"chuku-detail","text":"出库单明细表"},{"href":"main/pc-detail","id":"pc-detail","text":"采购单明细表"},{"href":"main/zs-detail","id":"zs-detail","text":"追溯明细表"},{"href":"main/return-detail","id":"return-detail","text":"退货单明细表"}],"text":"详情明细表页"}]}},{},{},{},{},{},{}]

    新开发的项目需要使用到bui框架,刚好轮到我写权限模块。所以研究一点,权限不复杂,主要就是对数据,封装成动态菜单的形式比较麻烦。

    话不多说,先上支持动态菜单的数据

    var config = [{
              id:'menu', 
              homePage : 'zhu',
              menu:[{
                text:'测试',
                items:[
                    {id:'demo',text:'demo',href:'test/demo'},
                    {id:'demo2',text:'demo2',href:'test/demo2'},
                    {id:'demoselect',text:'demoselect',href:'test/demoselect'},
                    {id:'treeselect',text:'treeselect',href:'test/treeselect'}
                    ]
                },{
                  text:'基础信息<i class="fa fa-chevron-right m-right"></i>',
                  items:[
                    {id:'zhu',text:'首页',href:'main/zhu.html',closeable : false},
                    {id:'user-message1',text:'用户信息管理',href:'main/user-message1'},
                    {id:'cp-list',text:'订单表明细',href:'main/cp-list'},
                    {id:'buyer-list',text:'客户信息管理',href:'main/buyer-list'},
                    {id:'cp-guan',text:'商品信息管理',href:'main/cp-guan.html'},
                    {id:'cp-list2',text:'供应商信息管理',href:'main/cp-list2'},
                    {id:'cp-list3',text:'仓库信息管理',href:'main/cp-list3'},
                    {id:'cp-list5',text:'车辆信息管理',href:'main/cp-list5'},
                     {id:'all-news',text:'所有警示消息',href:'main/all-news'},
                    {id:'cp-list7',text:'实体店信息管理',href:'main/cp-list7'}
                  ]
                },{
                  text:'供应商管理<i class="fa fa-chevron-right m-right"></i>',
                  items:[
                      {id:'gongshang',text:'供应商',href:'main/gongshang'},
                      {id:'gongregister-check',text:'供应商注册审核',href:'main/gongregister-check'},
                      {id:'zs-search',text:'供应商订单确认',href:'main/zs-search'},
                  ]
              },{
                  text:'采购管理<i class="fa fa-chevron-right m-right"></i>',
                  items:[
                      {id:'forms-orderList1',text:'线下订单',href:'main/forms-orderList1'},
                      {id:'forms-purchaseList1',text:'采购单',href:'main/forms-purchaseList1'},
                      {id:'purchase-check',text:'采购单审核',href:'main/purchase-check'},
                      {id:'html404',text:'二维码标签打印',href:'main/html404'},
                      {id:'shouhuo',text:'收货管理',href:'main/shouhuo'},
                      {id:'html505',text:'线上订单数据接口',href:'main/html505'}
                     
                  ]
                },{
                  text:'检测管理<i class="fa fa-chevron-right m-right"></i>',
                  items:[
                      {id:'order-inspect',text:'采购商品检测',href:'main/order-inspect'},
                      {id:'order-inspectout',text:'出库商品检测',href:'main/order-inspectout'},
                      {id:'order-sinspect',text:'供应商检测报告',href:'main/order-sinspect'},
                      {id:'order-tinspect',text:'检测机构报告',href:'main/order-tinspect'},
                  ]
                },{
                  text:'出入库管理<i class="fa fa-chevron-right m-right"></i>',
                  items:[
                    {id:'cangku',text:'仓库管理',href:'main/cangku'},
                    {id:'ruku',text:'入库单',href:'main/ruku'},
                      {id:'chuku',text:'出库单',href:'main/chuku'},
                      {id:'kucun',text:'库存管理',href:'main/kucun'},
                      {id:'churuku',text:'出入库详情',href:'main/churuku-detail'},
                  ]
                },{
                  text:'商品溯源<i class="fa fa-chevron-right m-right"></i>',
                  items:[
                       {id:'zhuisu-report',text:'追溯状况信息',href:'main/zhuisu-report'},
                      {id:'zs-gongshang',text:'追溯商品供应商',href:'main/zs-gongshang'},
                      {id:'zs-search',text:'追溯查询',href:'main/zs-search'},
                      {id:'saoma-search',text:'扫码查询',href:'main/saoma-search'}
                  ]
              },{
                  text:'配送管理<i class="fa fa-chevron-right m-right"></i>',
                  items:[
                        {id:'delivery-list',text:'配送单',href:'main/delivery-list'},
                      {id:'zs-search',text:'配送单维护',href:'main/zs-search'},
                      {id:'saoma-search',text:'送达确认',href:'main/saoma-search'}
                  ]
              },
              {
                  text:'退货管理<i class="fa fa-chevron-right m-right"></i>',
                  items:[
                      {id:'return-list',text:'退货单',href:'main/return-list'},
                      {id:'timeline',text:'迁移图',href:'main/timeline'}
                  ]
                },{
                  text:'货损管理<i class="fa fa-chevron-right m-right"></i>',
                  items:[
                      {id:'goods-broken',text:'报损单',href:'main/goods-broken'}
                  ]
              }]
              },
              {
                id:'search',
                homePage : 'chuku-report',
                  menu:[{
                    text:'进销存报表<i class="fa fa-chevron-right m-right"></i>',
                    items:[
                      {id:'jx-report',text:'根据分类内容查询报表',href:'main/jx-report'},
                      {id:'chuku-report',text:'出库报表',href:'main/chuku-report',closeable : false},
                      {id:'ruku-report',text:'入库报表',href:'main/ruku-report'},
                      {id:'buyList-report',text:'采购信息报表',href:'main/buylist-report'},
                      {id:'jiance-report',text:'检测信息报表',href:'main/jiance-report'},
                        {id:'sunhao-report',text:'损耗率报表',href:'main/sunhao-report'},
                        {id:'kucun-report',text:'库存盘点报表',href:'main/kucun-report'},
                        {id:'sale-report',text:'销售状况报表',href:'main/sale-report'},
                      {id:'year-report',text:'年度报表状态',href:'main/year-report'},
                      {id:'quarter-report',text:'季度报表状态',href:'main/quarter-report'},
                      {id:'month-report',text:'月报表状态',href:'main/month-report'}
                    ]
                  }]
                  },
                  {
                id:'detail',
                homePage : 'pc-detail',
                menu:[{
                    text:'详情明细表页<i class="fa fa-chevron-right m-right"></i>',
                    items:[
                      {id:'ruku-detail',text:'入库单明细表',href:'main/ruku-detail'},
                      {id:'chuku-detail',text:'出库单明细表',href:'main/chuku-detail'},
                      {id:'pc-detail',text:'采购单明细表',href:'main/pc-detail',closeable : false},
                      {id:'zs-detail',text:'追溯明细表',href:'main/zs-detail'},
                      {id:'return-detail',text:'退货单明细表',href:'main/return-detail'}
                    ]
                  }]
              }
              ]; 

    当时也是懵逼了 ,仔细一看是个 ,三级数据,封装成了数组。最后设计的表如下 

     

     于是乎,子字段,父字段,爷字段。 这样聚合在一张表上,诚然,这是权限模块比较少的,多的希望大家多分几个表。

    这个就是权限角色关系表,和用户信息表。 

    接下来是控制器

    @RequestMapping("getUserResource")
            public String getUserResource(HttpServletResponse response,HttpServletRequest request){
                
                List<TUsResource> TUsResourceListFrists= tusResourceService.selectResource(this.getUserInfo(request).getFkPerid());
                List<Config> jsonPublicList= new ArrayList<Config>();
                try {
                    for(TUsResource tpeResource : TUsResourceListFrists){
                        Map<String,Object> map1=new HashMap<String,Object>();
                         map1.put("pedid", this.getUserInfo(request).getFkPerid());
                         map1.put("id", tpeResource.getId());
                        List<TUsResource> TUsResourceListFrist= tusResourceService.selectFrist(map1);
                        Config jsonPublicLists=new Config();
                        if(tpeResource != null){
                            for(TUsResource TUsResourceFrist : TUsResourceListFrist){
                                Config jsonPublic=new Config();
                                Map<String,Object> map2=new HashMap<String,Object>();
                                 map2.put("id", TUsResourceFrist.getId());
                                 map2.put("pedid", this.getUserInfo(request).getFkPerid());
                                 
                                List<TUsResource> TUsResourceListSecound= tusResourceService.selectFristSecound(map2);
                                jsonPublic.setId(TUsResourceFrist.getName());
                                jsonPublic.setHomePage("zhu");
                                List<TUsResource> TUsResourceLists =new ArrayList<TUsResource>();
                                if(TUsResourceFrist != null){
                                    for(TUsResource TUsResourceSecound : TUsResourceListSecound){
                                         Map<String,Object> map=new HashMap<String,Object>();
                                         map.put("pid", TUsResourceSecound.getId());
                                         map.put("sonid", TUsResourceSecound.getPid());
                                         map.put("pedid", this.getUserInfo(request).getFkPerid());
                                         TUsResource TUsResources= new TUsResource();
                                         TUsResources.setText(TUsResourceSecound.getName());
                                         List<configs> TUsResourceList = new ArrayList<configs>();
                                        List<TUsResource> TUsResourceListThrid= tusResourceService.selectFristThrid(map);
                                        if(TUsResourceSecound != null){
                                            for(TUsResource TUsResourceThrid :  TUsResourceListThrid){
                                                configs configs = new configs();
                                                configs.setHref(TUsResourceThrid.getUrl());
                                                configs.setText(TUsResourceThrid.getName());
                                                configs.setId(TUsResourceThrid.getIds());
                                                TUsResourceList.add(configs);
                                            }
                                            TUsResources.setItems(TUsResourceList);
                                            TUsResourceLists.add(TUsResources);
                                        }
                                    }
                                    jsonPublic.setMenu(TUsResourceLists);
                                    jsonPublicLists.setConfig(jsonPublic);
                                }
                                
                            }
                            jsonPublicList.add(jsonPublicLists);
                            
                        }
                    }
    
                    outPutTool.successOutJson(response, jsonPublicList);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return null;
                
            }

    这是数据拼接,查询爷字段,根据爷字段,查询父字段,再查询子字段。其中config那两个类文件,是我按照,json的格式定义的,下面就给大家放出sql 查询

      <select id="selectResource"  resultMap="BaseResultMap" parameterType="java.lang.Integer">
      
              SELECT * FROM TUs_Resource  tus
            LEFT JOIN TRe_Resource tpe ON tus.id = tpe.reid 
            WHERE tpe.pedid = #{id,jdbcType=INTEGER} 
      
      </select>
      
        <select id="selectFrist" resultMap="BaseResultMap" parameterType="Map">
      
              SELECT tur.* FROM TUs_Resource  AS tur 
              LEFT JOIN TRe_Resource tpe ON tur.id = tpe.reid
               where tur.id = #{id,jdbcType=INTEGER} and tpe.pedid = #{pedid} 
    AND  tur.pid is null AND tur.sonid is null AND tur.url is null AND tur.ids is NULL 
      
      </select>
      
        <select id="selectFristSecound" resultMap="BaseResultMap" parameterType="Map">
      
              SELECT tur.* FROM TUs_Resource  AS tur 
              LEFT JOIN TRe_Resource tpe ON tur.id = tpe.reid
               where tur.pid = #{id,jdbcType=INTEGER} and tpe.pedid = #{pedid}
    AND  tur.pid is not null AND tur.sonid is null AND tur.url is null AND tur.ids is NULL 
      
      </select>
      
        <select id="selectFristThrid" resultMap="BaseResultMap" parameterType="Map">
              SELECT tur.* FROM TUs_Resource  AS tur 
              LEFT JOIN TRe_Resource tpe ON tur.id = tpe.reid
               where tur.pid = #{pid}  AND tur.sonid = #{sonid} and tpe.pedid = #{pedid} 
     AND  tur.pid is not null AND tur.sonid is not null AND tur.url is not null AND tur.ids is not NULL
      </select>

    其中第一个是,查询想对应的关系表id,接下来就是爷,父,子,依次查询。最后给就是返回的json数据

    其实空的对象,是应为查询的时候为空,前端可以判断。 最后前端 数据访问代码

       $.ajax({
                url : "getUserResource",
                type : "post",
                success: function(data){
                    data = eval("(" + data + ")");
                    var config = [];
                    for(var i in data){
                        if(data[i]['config'] != undefined){
                            config.push(data[i]['config']);
                        }
                    }
                    new PageUtil.MainPage({
                                modulesConfig : config
                      });
                }
            });

    最后效果可以出来,但是写到读取权限,也懵逼了 还好最后 想清楚了 ,不应该以json为重点,重心应该放到权限上。加油!2017 

  • 相关阅读:
    迭代器和生成器
    20.03.23作业
    装饰器
    集合
    元组类型
    字典类型
    列表类型
    字符串类型
    for循环
    深浅copy与while循环
  • 原文地址:https://www.cnblogs.com/jinxinblogs/p/6307749.html
Copyright © 2020-2023  润新知