zoukankan      html  css  js  c++  java
  • 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
    接口代码:

        /**
         * 根据商品id查询商品描述,将查询结果封装到TaotaoResult中
         * @param itemId
         * @return
         */

        TaotaoResult getItemDesc(Long itemId);

        /**
        * 更新商品
        * @param item
        * @param desc
        * @return
        */

        TaotaoResult updateItem(TbItem item, String desc);

    ItemServiceImpl实现类代码:

        @Override
        public TaotaoResult getItemDesc(Long itemId) {
            TbItemDesc itemDesc = itemDescMapper.selectByPrimaryKey(itemId);
            return TaotaoResult.ok(itemDesc);
        }

        @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

        /**
         * 根据商品id,获取商品描述
         * @param itemId
         * @return
         */

        @RequestMapping(value="/item/desc/{itemId}")
        @ResponseBody
        public TaotaoResult getItemDesc(@PathVariable Long itemId) {
            TaotaoResult result = itemService.getItemDesc(itemId);
            return result;
        }
        、
        /**
         * 更新(修改)商品
         * @param item
         * @param desc
         * @return
         */

        @RequestMapping("/item/update")
        @ResponseBody
        public TaotaoResult updateItem(TbItem item, String desc) {
            TaotaoResult result = itemService.updateItem(item, desc);
            return result;
        }

    6)测试
    我们重新安装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((byte1);
            } else if (method.equals("instock")) {
                // 商品状态为下架,更新status=2即可
                item.setStatus((byte2);
            } else if (method.equals("delete")) {
                // 商品状态为删除,更新status=3即可
                item.setStatus((byte3);
            }

            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("/item/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-manager工程和taotao-manager-web工程后,启动他们。浏览器测试成功。如下图所示:

    9.4.3、商品上架下架

      同上“商品删除”。

      至此商品管理就完成了。

  • 相关阅读:
    简明Python3教程 12.问题解决
    简明Python3教程 11.数据结构
    【SPOJ 694】Distinct Substrings
    【codeforces Manthan, Codefest 17 C】Helga Hufflepuff's Cup
    【CF Manthan, Codefest 17 B】Marvolo Gaunt's Ring
    【CF Manthan, Codefest 17 A】Tom Riddle's Diary
    【SPOJ 220】 PHRASES
    【POJ 3261】Milk Patterns
    【POJ 3294】Life Forms
    【POJ 1226】Substrings
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/9977277.html
Copyright © 2011-2022 走看看