Guns二次开发(七):商品分类管理之【查】字诀(2)

 

关于博客中使用的Guns版本问题请先阅读   Guns二次开发目录     

 

紧接上一篇博客 Guns二次开发(七):商品分类管理之【查】字诀(1)

 

3、状态字段的字典解析

(1)添加字典

 

(2)包装列表查询类,对状态字段进行包装

涉及到的类文件的目录结构:

 

CategoryController.java 类中修改的内容:

/**
 * 获取分类管理列表
 */
@RequestMapping(value = "/list")
@ResponseBody
public Object list(String condition) {

    List<Map<String, Object>> list = categoryService.selectMaps(null);
    return new CategoryWrapper(list).wrap();
}


 

CategoryWrapper.java

package cn.stylefeng.guns.elephish.wrapper;

import cn.stylefeng.guns.core.common.constant.factory.ConstantFactory;
import cn.stylefeng.guns.elephish.constants.WrapperDictNameConstant;
import cn.stylefeng.roses.core.base.warpper.BaseControllerWrapper;

import java.util.List;
import java.util.Map;

/**
 * 商品分类管理的包装类

 */
public class CategoryWrapper extends BaseControllerWrapper {

    public CategoryWrapper(List<Map<String, Object>> multi) {
        super(multi);
    }

    /**
     * 此处自定义添加需要包装的字段的字典信息
     */
    @Override
    protected void wrapTheMap(Map<String, Object> map) {
        //状态名称
        map.put("statusName", ConstantFactory.me().getDictById(
                WrapperDictNameConstant.MALL_CATEGORY_STATUS_ID, map.get("status").toString()));

    }
}

 

WrapperDictNameConstant.java

package cn.stylefeng.guns.elephish.constants;

/**
 *
 * 字典包装类的字典名称常量
 *
 */
public interface WrapperDictNameConstant {

    /**
     * sys_user 表中 sex 字段对应的字典名称 的ID
     */
    int SYS_USER_SEX_ID = 127;

    /**
     * mall_category 表中status字段对应的 字典ID
     */
    int MALL_CATEGORY_STATUS_ID = 130;

}

 

category.js 文件也要修改

 

 

重新运行项目,查看效果:

 

(3)时间字段要格式化成本地时间显示

 

这是 category.js 的部分代码:

 

然后去 https://cdnjs.com/libraries/moment.js 下载monent.js ,Moment.js 官方文档

并引入到项目中:

 

下载步骤是:

 

鼠标先点击页面,然后 ctrl+a全选本页内容,再 ctrl+c 复制本页内容

 

 

 

 

 

上面的这种引入方式,只能在category.html 页面中使用,为了能够在以后的所有代码生成的模板中都成功引入这个 moment.js文件,我们可以在公共的页面中引入这个js文件。

 

 

引入文件之后,以上步骤完成后,测试效果:

 


 

 

4、分页实现

    先上逾期实现的效果图:

 

      分页逻辑:在做多级菜单列表的分页时,首先要确定分页的对象。简单点说,一个父菜单可能会有很多子菜单,子菜单下可能还有子菜单,假设我要做分页查询,每次查询10条,那么这10条数据是不是要包含子菜单呢?我们可以分析,如果子菜单也计算进查询的条数,那么就有可能出现无法完全查出一级菜单下的所有子菜单详情,因为我们永远无法确定一个一级菜单下,有多少二级和三级菜单,如此一来,不管你每页定义的查询数据是多少条,都无法完整的将某个一级菜单下的所有子菜单都查询出来。鉴于此,我们的分页应该是相对同级别的菜单而言的。比如可能是对所有的一级菜单分页查询,每页查询10条(一级菜单),同时将他们的子菜单也查询出来,虽然每次查询出的总数量(包括一级菜单及他们子菜单)可能不同,但我可以确定的是,我每页查询出的都是10条一级菜单及他们所有的子菜单,这样的设计勉强说得过去吧。

       因为Guns中没有针对树形菜单栏的分页的实现案例,所以我这边自己写了一个。一开始本来是使用session存取分页信息的,但是发现session缓存导致数据更新不及时,影响了效果。后来通过一步一步解剖bootstrap源码(望天,我原本只是个Java开发啊,原本Jquery用起来都很生疏,居然被逼的不得不去读bootstrap源码!!!),对bootstrap的部分原理有所了解后,再在原来的bootstrap-treetable.js 基础上做了部分修改(修改后并不会影响原来的调用者的使用),最终实现功能。下面分析一下代码结果,此处只是截图,完整的代码我会在博客结尾处贴出。

(1)在不影响其它使用者使用的基础上,修改Guns中的bootstrap-treetable.js ,自定义树形菜单分页功能

 

 

(2)自定义分页的js函数

     

(3)需要引入分页功能的html页面和js函数需要做如下修改:

category.html页面:

 

category.js文件做的修改:

 

(4)列表查询接口返回值需要用固定格式封装

 

 

 

5、条件查询

      为了设计一个足够合理的条件查询,我也是花绞尽脑汁了。

A、默认查询一级菜单和一级菜单下的所有所有子菜单

B、当选择分类名称查询,不选择层级查询时,默认无法查询子类菜单,这样是为了防止查重和查出不必要的数据

C、当不选择分类名称查询,选择层级查询时,可以选择是否查询子类菜单

D、当选择分类名称查询,选择层级查询时,可以选择是否查询子类菜单

 

同样的,详细的代码在下一篇博客贴出。

我逾期实现的效果这样的:

 

(1)在页面上添加对应的标签,这是从guns其它模块中扣过来的。

 

(2)将请求参数赋值到要调用的后端接口上:

 

 

(3)后端接口要接收这些参数

 

 

 

(4)重置查询条件

 

对应的html:

 

对应的js:

 

由于篇幅太大,具体的代码都将在下一篇博客展示,点击 Guns二次开发(七):商品分类管理之【查】字诀(3) 查看

 

该系列更多文章请前往 Guns二次开发目录

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值