天天看點

宜立方商品管理課後練習

這段時間在做傳智播客的宜立方商城項目,在此将視訊裡的課後練習寫出來分享一下

目錄

​​編輯​​

​​批量删除​​

​​上下架​​

編輯

按思路先找到JS代碼裡對應的URL,在分析JS代碼時發現無法打開編輯頁面,原來是代碼裡的URL并沒有寫的和JS代碼對應起來,首先要将item-list.jsp的對應代碼改為

<div id="itemEditWindow" class="easyui-window" title="編輯商品" data-options="modal:true,closed:true,iconCls:'icon-save',href:'item-edit'" style="width:80%;height:80%;padding:10px;">
</div>      

現在可以出現對應的頁面,但是頁面裡并沒有商品的原始資訊。需要寫異步回寫的方法,通過分析JS代碼,可以發現對應的URL為

/rest/item/query/item/desc/'+data.id
/rest/item/param/item/query/'+data.id      

接着開始實作

首先寫接口層

/**
     * 查詢商品描述資訊
     *
     * @param id 商品id
     * @return tbItem
     */
    TbItemDesc getItemDescById(long id);
   /**
     * 查詢商品項
     *
     * @param itemId 商品訂單
     * @return TbItem
     */
    TbItem getItemById(long itemId);      

然後将接口進行實作

@Override
    public TbItemDesc getItemDescById(long id) {
        return itemDescMapper.selectByPrimaryKey(id);
    }

    @Override
    public TbItem getItemById(long itemId) {
        //根據主鍵查詢
        TbItemExample example = new TbItemExample();
        TbItemExample.Criteria criteria = example.createCriteria();
        //設定查詢條件
        criteria.andIdEqualTo(itemId);
        //執行查詢
        List<TbItem> list = itemMapper.selectByExample(example);
        if (list != null && list.size() > 0) {
            return list.get(0);
        }
        return null;
    }      

 最後寫controller層

/**
   * 異步重新加載商品描述
   *
   * @param id 商品id
   * @return TbItemDesc
   */
  @RequestMapping("/rest/item/query/item/desc/{id}")
  @ResponseBody
  public TbItemDesc selectTbItemDesc(@PathVariable long id) {
    return itemService.getItemDescById(id);
  }

  /**
   * 異步重新加載商品資訊
   *
   * @param id 商品id
   * @return TbItem
   */
  @RequestMapping("/rest/item/param/item/query/{id}")
  @ResponseBody
  public TbItem queryById(@PathVariable long id) {
    return itemService.getItemById(id);
  }      

這時會發現有另外一個問題,代碼似乎已經沒問題了,但是無法顯示出商品描述資料。

這是因為在這兒我們并沒有傳回狀态資訊,是以将判斷先去掉

宜立方商品管理課後練習

這時編輯功能就已經實作

批量删除

和上面類似,先找到對應url為

/rest/item/delete      

然後開始寫接口層

/**
     * 批量删除商品
     * @param ids 批量商品id
     * @return E3Result
     */
    E3Result deleteItems(String ids);      

然後将其實作

@Override
  public E3Result deleteItems(String ids) {
    //判斷ids不為空
    if (StringUtils.isNoneBlank(ids)) {
      //将ids分别處理
      String[] split = ids.split(",");
      for (String id : split) {
        itemMapper.deleteByPrimaryKey(Long.valueOf(id));
        itemDescMapper.deleteByPrimaryKey(Long.valueOf(id));
      }
      return E3Result.ok();
    }
    return null;
  }      

最後寫controller

/**
   * 批量删除
   *
   * @param ids 商品編号
   * @return E3Result
   */
  @RequestMapping("/rest/item/delete")
  @ResponseBody
  public E3Result delete(String ids) {
    return itemService.deleteItems(ids);
  }      

上下架

首先找到對應URL

下架:/rest/item/instock
上架:/rest/item/reshelf      

将其按三步進行實作

接口層

/**
     * 批量上架産品
     * @param ids 批量商品id
     * @return E3Result
     */
    E3Result groundingItem(String ids);

    /**
     * 批量下架産品
     * @param ids 批量商品id
     * @return E3Result
     */
    E3Result soldOutItem(String ids);      
@Override
  public E3Result groundingItem(String ids) {
    //判斷ids不為空
    if (StringUtils.isNoneBlank(ids)) {
      String[] split = ids.split(",");
      //周遊所有id,進行修改下架
      for (String id : split) {
        TbItem item = itemMapper.selectByPrimaryKey(Long.valueOf(id));
        item.setStatus((byte) 1);
        //儲存到資料庫
        itemMapper.updateByPrimaryKey(item);
      }
      return E3Result.ok();
    }
    return null;
  }

  @Override
  public E3Result soldOutItem(String ids) {
    //判斷ids不為空
    if (StringUtils.isNoneBlank(ids)) {
      String[] split = ids.split(",");
      //周遊所有id進行修改下架
      for (String id : split) {
        TbItem item = itemMapper.selectByPrimaryKey(Long.valueOf(id));
        item.setStatus((byte) 2);
        //儲存到資料庫
        itemMapper.updateByPrimaryKey(item);
      }
      return E3Result.ok();
    }
    return null;
  }      
/**
   * 批量下架商品
   *
   * @param ids 商品編号
   * @return E3Result
   */
  @RequestMapping("/rest/item/instock")
  @ResponseBody
  public E3Result soldOutItem(String ids) {
    return itemService.soldOutItem(ids);
  }

  /**
   * 批量上架商品
   *
   * @param ids 商品編号
   * @return E3Result
   */
  @RequestMapping("/rest/item/reshelf")
  @ResponseBody
  public E3Result groundingItem(String ids) {
    return itemService.groundingItem(ids);
  }