天天看点

宜立方商城内容管理课后作业

CMS系统中的内容管理主要是管理前端首页的展示,如首页轮播展示的商品等

作业共三个模块,内容显示,修改,删除

目录

​​内容显示​​

​​编辑​​

​​批量删除​​

内容显示

首先在前端代码中找到相应HTML代码,并在其中找到URL

<table class="easyui-datagrid" id="contentList"
                   data-options="toolbar:contentListToolbar,singleSelect:false,collapsible:true,pagination:true,method:'get',pageSize:20,url:'/content/query/list',queryParams:{categoryId:0}">      

由HTML代码加以分析可以得出需要返回的应该是一个对象,并需要对其进行分页(分页部分模仿第四天内容)

宜立方商城内容管理课后作业

接着开始写代码

interface层

/**
   * 显示内容列表
   *
   * @param categoryId 商品id
   * @param page       页数
   * @param rows       行数
   * @return EasyUIDataGridResult
   */
  EasyUIDataGridResult getItemList(Long categoryId, Integer page, Integer rows);      

Service层

@Override
  public EasyUIDataGridResult getItemList(Long categoryId, Integer page, Integer rows) {
    //设置分页信息
    PageHelper.startPage(page,rows);
    //创建查询条件
    TbContentExample example = new TbContentExample();
    TbContentExample.Criteria criteria = example.createCriteria();
    //设置查询条件
    criteria.andCategoryIdEqualTo(categoryId);
    //执行查询
    List<TbContent> tbContents = contentMapper.selectByExample(example);
    //提取分页信息
    PageInfo<TbContent> pageInfo = new PageInfo<>(tbContents);
    //创建返回结果对象
    EasyUIDataGridResult easyUIDataGridResult = new EasyUIDataGridResult();
    //显示商品信息
    easyUIDataGridResult.setRows(tbContents);
    //显示分页
    easyUIDataGridResult.setTotal(pageInfo.getTotal());
    return easyUIDataGridResult;
  }      

controller层

/**
   * 分页显示内容管理数据
   *
   * @param categoryId 内容id
   * @param page       页数
   * @param rows       行数
   * @return EasyUIDataGridResult
   */
  @RequestMapping("/content/query/list")
  @ResponseBody
  public EasyUIDataGridResult getItemList(Long categoryId, Integer page, Integer rows) {
    return contentService.getItemList(categoryId, page, rows);
  }      

编辑

首先分析URL

宜立方商城内容管理课后作业

要做编辑功能,首先要做的就是回写,这个和前面的编辑思路的一样的

首先查询本来的信息异步回写到页面中

interface层

/**
   * 回写内容描述
   * @param id 内容id
   * @return TbContent
   */
  TbContent selectByIdContent(Long id);      

Service层

@Override
  public TbContent selectByIdContent(Long id) {
    return contentMapper.selectByPrimaryKey(id);
  }      

Controller层

/**
   * 回写内容描述
   *
   * @param id 内容id
   * @return TbContent
   */
  @RequestMapping("/query/content/{id}")
  @ResponseBody
  public TbContent selectContent(@PathVariable Long id) {
    return contentService.selectByIdContent(id);
  }      

此时内容已经传到了前端,却并没有显示出来,经过分析,在jsp页面中加入

// 加载商品描述
                    $.getJSON('/query/content/' + data.id, function (data) {
                        //if(_data.status == 200){
                        //UM.getEditor('itemeEditDescEditor').setContent(_data.data.itemDesc, false);
                        contentEditEditor.html(data.content);
                        // }
                    });      

此时能够进行正常回写,然后开始修改、提交

Interface

/**
   * 修改内容
   *
   * @param content 内容pojo
   * @return E3Result
   */
  E3Result editContent(TbContent content);      

Service

@Override
  public E3Result editContent(TbContent content) {
    //设置修改时间
    content.setUpdated(new Date());
    //执行修改
    contentMapper.updateByPrimaryKey(content);
    return E3Result.ok();
  }      

Controller

/**
   * 修改内容
   *
   * @param content 修改内容pojo
   * @return E3Result
   */
  @RequestMapping("/rest/content/edit")
  @ResponseBody
  public E3Result editContent(TbContent content) {
    return contentService.editContent(content);
  }      

到这儿本来已经结束了,然而在测试时发现每次写的描述并不能更新成功,也不会持久化到数据库,刚开始太信赖逆向工程,就一直在分析前端的传输,后来再进行后台调试,发现信息是能到达后台的,所以才开始看mpaaer文件,发现果然是插入语句的问题。应改为

<update id="updateByPrimaryKey" parameterType="cn.e3mall.pojo.TbContent">
        update tb_content
        set category_id = #{categoryId,jdbcType=BIGINT},
            title       = #{title,jdbcType=VARCHAR},
            sub_title   = #{subTitle,jdbcType=VARCHAR},
            title_desc  = #{titleDesc,jdbcType=VARCHAR},
            url         = #{url,jdbcType=VARCHAR},
            pic         = #{pic,jdbcType=VARCHAR},
            pic2        = #{pic2,jdbcType=VARCHAR},
            created     = #{created,jdbcType=TIMESTAMP},
            updated     = #{updated,jdbcType=TIMESTAMP},
            content     = #{content}
        where id = #{id,jdbcType=BIGINT}
    </update>      

或通过其他方式,调用updateByPrimaryKeyWithBLOBs方法

批量删除

找到URL为

宜立方商城内容管理课后作业

Interface

/**
   * 批量删除选中删除内容
   * @param ids 选中内容列表
   * @return E3Result
   */
  E3Result deleteBatchContent(String[] ids);      
@Override
  public E3Result deleteBatchContent(String[] ids) {
    for (String id  :ids) {
      //执行删除操作
      contentMapper.deleteByPrimaryKey(Long.valueOf(id));
      TbContent content = contentMapper.selectByPrimaryKey((long) Integer.parseInt(id));
    }
    return E3Result.ok();
  }      
/**
   * 批量删除内容
   *
   * @param ids 批量内容id
   * @return E3Result
   */
  @RequestMapping("/content/delete")
  @ResponseBody
  public E3Result deleteContent(String[] ids) {
    return contentService.deleteBatchContent(ids);
  }