day70_淘淘商城項目_03_作業

9.4、作業

  商品編輯、商品刪除、商品上架下架。

9.4.1、商品編輯

功能分析: item-list.jsp

我們再來看看item-add.jsp,先看看隱藏域

再來看看URL部分

請求URL: /item/update 參數: 表單數據(TbItem) 返回值:Taotaoresult


業務邏輯:   根據商品id,更新商品表,條件更新。   根據商品id,更新商品描述表,條件更新。   TaotaoResult.ok()。

1)Dao 單表更新商品數據,直接使用逆向工程生成的Mapper。

2)Service 接口代碼:

    /**
    * 更新商品
    * @param item
    * @param desc
    * @return
    */
    TaotaoResult updateItem(TbItem item, String desc);

ItemServiceImpl實現類代碼:

    @Override
    public TaotaoResult updateItem(TbItem item, String desc) {
        // 1、根據商品id,更新商品表,條件更新
        TbItemExample itemExample = new TbItemExample();
        Criteria criteria = itemExample.createCriteria();
        criteria.andIdEqualTo(item.getId());
        itemMapper.updateByExampleSelective(item, itemExample);

        // 2、根據商品id,更新商品描述表,條件更新
        TbItemDesc itemDesc = new TbItemDesc();
        itemDesc.setItemDesc(desc);
        TbItemDescExample itemDescExample = new TbItemDescExample();
        com.taotao.pojo.TbItemDescExample.Criteria createCriteria =itemDescExample.createCriteria();
        createCriteria.andItemIdEqualTo(item.getId());
        itemDescMapper.updateByExampleSelective(itemDesc, itemDescExample);

        return TaotaoResult.ok();
    }

3)發佈服務 在taotao-manager-service工程applicationContext-service.xml中發佈服務

4)引用服務 在taotao-manager-web工程springmvc.xml中引用服務

5)Controller

    /**
     * 更新(修改)商品
     * @param item
     * @param desc
     * @return
     */
    @RequestMapping("/update")
    @ResponseBody
    public TaotaoResult updateItem(TbItem item, String desc) {
        TaotaoResult result = itemService.updateItem(item, desc);
        return result;
    }

6)測試 我們重新安裝taotao-content工程、taotao-manager工程和taotao-manager-web工程後,啓動他們。瀏覽器測試成功。不在贅圖!

9.4.2、商品刪除

功能分析:

可以發現,請求的都是相似url:/item/status/xxxx,參數都是:params = {"ids":ids} 提示成功後都會$("#itemList").datagrid("reload");刷新當前頁面。 最後在common.js中,需要修改一點代碼,如下:

在item-list.jsp頁面中,格式化狀態時需要用

我們知道,數據來之不易,一般情況下,我們不建議真正刪除數據,而是將它的狀態改變爲刪除狀態,想再用他們的話,將數據狀態再改回來,要是真正刪除數據直接從後臺數據庫中刪。所以本例中,商品刪除、下架、上架本質上都是修改tb_item表中的狀態字段status的值。 所以我們只需要編寫一個方法即可,根據請求的方法動態修改商品狀態爲1,2,3。


業務邏輯: 頁面點擊不同的按鈕,表現層映射成不同的方法處理即可。   商品狀態爲正常,更新status=1即可   商品狀態爲下架,更新status=2即可   商品狀態爲刪除,更新status=3即可

1)Dao 單表修改數據,直接使用逆向工程生成的Mapper。

2)Service ItemService接口代碼:

    /**
     * 根據商品id,更新商品狀態:1-正常,2-下架,3-刪除
     * @param ids
     * @param method
     * @return
     */
    TaotaoResult updateItemStatus(List<Long> ids,String method);

ItemServiceImpl實現類代碼:

    @Override
    public TaotaoResult updateItemStatus(List<Long> ids, String method) {
        TbItem item = new TbItem();
        if (method.equals("reshelf")) {
            // 商品狀態爲正常,更新status=1即可
            item.setStatus((byte) 1);
        } else if (method.equals("instock")) {
            // 商品狀態爲下架,更新status=2即可
            item.setStatus((byte) 2);
        } else if (method.equals("delete")) {
            // 商品狀態爲刪除,更新status=3即可
            item.setStatus((byte) 3);
        }

        for (Long id : ids) {
            // 創建查詢條件,根據id更新
            TbItemExample example = new TbItemExample();
            Criteria criteria = example.createCriteria();
            criteria.andIdEqualTo(id);
            // 第一個參數:是要修改的部分值組成的對象,其中有些屬性爲null則表示該項不修改。
            // 第二個參數:是一個對應的查詢條件的類, 通過這個類可以實現 order by 和一部分的where 條件。
            itemMapper.updateByExampleSelective(item, example);
        }
        return TaotaoResult.ok();
    }

3)發佈服務 同上“商品編輯”。

4)引用服務 同上“商品編輯”。

5)Controller

    /**
     * 根據商品id,更新商品狀態:1-正常(上架),2-下架,3-刪除
     * @param ids
     * @param method
     * @return
     */
    @RequestMapping("/status/{method}")
    @ResponseBody
    public TaotaoResult updateItemStatus(@RequestParam(value="ids") List<Long> ids, @PathVariable String method) {
        TaotaoResult result = itemService.updateItemStatus(ids, method);
        return result;
    }

6)測試 我們重新安裝taotao-content工程、taotao-manager工程和taotao-manager-web工程後,啓動他們。瀏覽器測試成功。如下圖所示:

9.4.3、商品上架下架

同上“商品刪除”。

至此商品管理就完成了。

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