完成后台管理系統功能(七)KindEditor富文本編輯器的使用以及商品添加的實現


1.有關項目中KindEditor富文本編輯器的使用。

 我們是在商品描述的時候用的富文本編輯器,需要添加<textarea>組件來初始化我們的編輯器頁面,可以看到它是個隱藏域,它的作用有兩個,第一個是當在富文本編輯器編輯完內容后,將內容賦值給這個textarea,然后就可以隨着表單提交給數據庫處理了。第二個作用是當修改編輯內容的時候,需要先加載以前的內容,kindeditor便可以從這個隱藏域中獲取到原來的數據並展示出來。

 

 

2.商品添加功能的實現

ps:需要注意的是,在添加的時候其實是想數據保存到兩張表中取,一張是商品表tb_item,一張是商品描述表tb_item_desc

 

 由於每個操作都需要有狀態碼來表示操作成功與否以及相關信息,因此我們定義一個JingxiResult來專門處理,該類定義三個屬性,分別是狀態、消息及數據。由於這個類會被多個工程所使用,因此放到jingxi-common的pojo目錄下

package com.jingxi.common.pojo;

import java.util.List;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JingXiResult {

    // 定義jackson對象
    private static final ObjectMapper MAPPER= new ObjectMapper();
    // 響應業務狀態
    private Integer status;
    // 響應消息
    private String msg;
    // 響應中的數據
    private Object data;
    
    public static JingXiResult build(Integer status, String msg, Object data) {
        return new JingXiResult(status, msg, data);
        }
    
    public static JingXiResult ok(Object data) {
        return new JingXiResult(data);
        }
    
    public static JingXiResult ok() { 
        return new JingXiResult(null);
        }
    
    public JingXiResult() {
        
        }
    
    public static JingXiResult build(Integer status, String msg) {
        return new JingXiResult(status, msg, null);
        }
    
    public JingXiResult(Integer status, String msg, Object data) {
        this.status= status;
        this.msg= msg;
        this.data= data;
        }
    
    public JingXiResult(Object data) {
        this.status= 200;
        this.msg= "OK";
        this.data= data;
        }
    
    public Integer getStatus() {
        return status;
    }
    
    public void setStatus(Integer status) {
        this.status = status;
    }
    
    public String getMsg() {
        return msg;
    }
    
    public void setMsg(String msg) {
        this.msg = msg;
    }
    
    public Object getData() {
        return data;
    }
    
    public void setData(Object data) {
        this.data = data;
    }
    
    /*** 將json結果集轉化為JingXiResult對象
     * *  @paramjsonData json數據
     * *  @paramclazz JingXiResult中的object類型
     * *  @return
     * */
    public static JingXiResult formatToPojo(String jsonData, Class<?> clazz) {
        try{
            if(clazz== null) {
                return MAPPER.readValue(jsonData, JingXiResult.class);
                }
            JsonNode jsonNode= MAPPER.readTree(jsonData);
            JsonNode data= jsonNode.get("data");
            Object obj= null;
            if(clazz!= null) {
                if(data.isObject()) {
                    obj= MAPPER.readValue(data.traverse(), clazz);
                    } else if(data.isTextual()) {
                        obj= MAPPER.readValue(data.asText(), clazz);
                        }
                    }return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
                    } catch(Exception e) {
                            return null;
                            }
        }
    /*** 沒有object對象的轉化
     * * * @paramjson*
     *  @return*/
    public static JingXiResult format(String json) {
        try{
            return MAPPER.readValue(json, JingXiResult.class);
            } catch(Exception e) {
                e.printStackTrace();
                }
        return null;
        }
    /*** Object是集合轉化*
     *  * @paramjsonData json數據
     *  * @paramclazz 集合中的類型
     *  * @return*/
    public static JingXiResult formatToList(String jsonData, Class<?> clazz) {
        try{
            JsonNode jsonNode= MAPPER.readTree(jsonData);
            JsonNode data= jsonNode.get("data");
            Object obj= null;
            if(data.isArray() && data.size() > 0) {
                obj= MAPPER.readValue(data.traverse(),MAPPER.getTypeFactory()
                        .constructCollectionType(List.class, clazz));
                }return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
                } catch(Exception e) {
                    return null;
                    }
        }
    }

 

ii. DAO 層

我們使用反向代理生成的代碼即可,不需要編寫任何代碼。 

iii.    Service 層

方法入參:接收商品 pojo

方法返回:JingXiResult

邏輯:把商品的 pojo 內容補全,然后插入到數據表中。

@Override
    public JingXiResult createItem(TbItem item,String desc,String params) {
        JingXiResult result = new JingXiResult();
        result.setStatus(500);
        Date date=new Date();
        //獲得商品id
        long id=IDUtil.genItemId();
        //添加商品信息
        item.setId(id);
        //商品狀態,1-正常,2-下架,3-刪除
        item.setStatus((byte) 1);
        item.setCreated(date);
        item.setUpdated(date);
        int i=itemMapper.insert(item);
        itemParamServcie.createParamItem(id, params);
        if(i==1 && createTbItemDesc(id,desc)){
            result.setStatus(200);
            return result;
        }
        
        return result;
    }
    
    @Override
    public boolean createTbItemDesc(long itemId,String desc) {
        System.out.println(itemId+","+desc);
        TbItemDesc tbitemdesc =new TbItemDesc();
        tbitemdesc.setItemId(itemId);
        tbitemdesc.setItemDesc(desc);
        tbitemdesc.setCreated(new Date());
        tbitemdesc.setUpdated(new Date());
        if(tbitemdescmapper.insert(tbitemdesc) == 1)
            return true;
        return false;
    
    }

 

iv. Controller 層

方法入參:接收頁面傳過來的表單內容

方法返回:JingXiResult 對象(json) 

 

至此,kindeditor編輯器的使用以及商品的添加功能   結束~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM