• 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、商品上架下架

      同上“商品删除”。

      至此商品管理就完成了。

  • 相关阅读:
    robot framework 文本校验,文本与关键字重复的处理
    python pip切本地源
    sqlalchemy 多个数据库地址配置
    python SQLAlchemy的简单配置和查询
    根据列表中字典中的某个value排序
    python SQLAlchemy中子查询subquery的使用
    python SQLAlchemy中query与query()
    weekly paper read
    C++调用windowsAPI
    English 邮件
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/9977277.html
Copyright © 2020-2023  润新知