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頁面需要做的修改:

 

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

 

 

 

5、條件查詢

      爲了設計一個足夠合理的條件查詢,我也是花絞盡腦汁了。

A、默認查詢一級菜單和一級菜單下的所有所有子菜單

B、當選擇分類名稱查詢,不選擇層級查詢時,默認無法查詢子類菜單,這樣是爲了防止查重和查出不必要的數據

C、當不選擇分類名稱查詢,選擇層級查詢時,可以選擇是否查詢子類菜單

D、當選擇分類名稱查詢,選擇層級查詢時,可以選擇是否查詢子類菜單

 

同樣的,詳細的代碼在下一篇博客貼出。

我逾期實現的效果這樣的:

 

(1)在頁面上添加對應的標籤,這是從guns其它模塊中扣過來的。

 

(2)將請求參數賦值到要調用單後端接口上:

 

 

(3)後端接口要接收這些參數

 

 

 

 

 

 

由於篇幅太大,具體的代碼都將在下一篇博客展示,點擊 查看

 

該系列更多文章請前往 Guns二次開發目錄

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章