• 完成后台管理系统功能(七)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编辑器的使用以及商品的添加功能   结束~

  • 相关阅读:
    python检测服务器端口
    nodejs创建文件
    Git:代码冲突常见解决方法
    爬虫常用库介绍
    关于git提示“warning: LF will be replaced by CRLF”终极解答
    linux系统磁盘使用情况
    tkinter拦截关闭事件
    如何在python中调用C语言代码
    spring in action学习笔记十六:配置数据源的几种方式
    spring in action学习笔记十五:配置DispatcherServlet和ContextLoaderListener的几种方式。
  • 原文地址:https://www.cnblogs.com/mumudechengzhang/p/7685927.html
Copyright © 2020-2023  润新知