08、商品新增、是否启用默认、商家显示商品列表、商家提交审核、运营商显示商品列表、商品分类中文处理、运营商审核商家、逻辑删除、注解式事务

商品新增(在shop-web模块)

分析:需要对多张表格进行插入,有些数据需要手动封装,如状态等。
1、将controller层的参数对象改成我们的自定义对象Goods(里边设计到八张表的操作)
2、在goodsServiceImpl实现类中实现添加的方法(需要分别添加三个对象)

注意:在添加的方法中有if-else判断,是在处理添加时有没有规格选项的问题,因为页面上可以选择是否气启用规格选项。

注意:在添加属性时,有几个属性需要手动添加,如创建时间,初始状态等。具体需要对比数据库。
  /**
     * 增加
     */
    @Override
    public void add(Goods goods) {

        //将goods保存到数据库
        TbGoods tbGoods = goods.getGoods();
        tbGoods.setAuditStatus("0");
        goodsMapper.insert(tbGoods);

        //将goodsDesc保存到数据库
        TbGoodsDesc goodsDesc = goods.getGoodsDesc();
        goodsDesc.setGoodsId(goods.getGoods().getId());
        goodsDescMapper.insert(goodsDesc);

        //将item保存到数据库
        if ("1".equals(goods.getGoods().getIsEnableSpec())){

            List<TbItem> itemList = goods.getItemList();
            for (TbItem item : itemList) {
                String title = goods.getGoods().getGoodsName();
                Map<String, String> maps = JSON.parseObject(item.getSpec(), Map.class);

                for (String key : maps.keySet()) {
                    title += " " + maps.get(key);
                }
                item.setTitle(title);

                item.setSellPoint(goods.getGoods().getCaption());
                List<Map> imgMaps = JSON.parseArray(goodsDesc.getItemImages(), Map.class);
                if (imgMaps.size() > 0) {
                    item.setImage(imgMaps.get(0).get("url").toString());
                }

                item.setCategoryid(goods.getGoods().getCategory3Id());

                item.setCreateTime(new Date());
                item.setUpdateTime(new Date());

                item.setGoodsId(goods.getGoods().getId());

                item.setSellerId(goods.getGoods().getSellerId());

                item.setCategory(itemCatMapper.selectByPrimaryKey(goods.getGoods().getCategory3Id()).getName());

                item.setBrand(brandMapper.selectByPrimaryKey(goods.getGoods().getBrandId()).getName());

                item.setSeller(sellerMapper.selectByPrimaryKey(goods.getGoods().getSellerId()).getName());

                itemMapper.insert(item);
            }
        }else {

            TbItem item = new TbItem();

            item.setSellPoint(goods.getGoods().getCaption());
            List<Map> imgMaps = JSON.parseArray(goodsDesc.getItemImages(), Map.class);
            if (imgMaps.size() > 0) {
                item.setImage(imgMaps.get(0).get("url").toString());
            }

            item.setCategoryid(goods.getGoods().getCategory3Id());

            item.setCreateTime(new Date());
            item.setUpdateTime(new Date());

            item.setGoodsId(goods.getGoods().getId());

            item.setSellerId(goods.getGoods().getSellerId());

            item.setCategory(itemCatMapper.selectByPrimaryKey(goods.getGoods().getCategory3Id()).getName());

            item.setBrand(brandMapper.selectByPrimaryKey(goods.getGoods().getBrandId()).getName());

            item.setSeller(sellerMapper.selectByPrimaryKey(goods.getGoods().getSellerId()).getName());


            item.setStatus("0");
            item.setTitle(tbGoods.getGoodsName());
            item.setNum(9999);
            item.setPrice(goods.getGoods().getPrice());
            item.setIsDefault("1");

            itemMapper.insert(item);

        }


    }

是否启用默认

在页面中有一个单选按钮,可以选择时候选择启用规格。
在这里插入图片描述
1、在html中对应位置添加:
在这里插入图片描述

2、在添加商品信息时,在goodsServiceImpl实现类中判断是否有规格选项的添加(已经在上文中添加)

商家显示商品列表(在shop-web模块)

注意:商家显示商品列表只需要显示自己的全部(即进行搜索所有商品时需要添加根据sellerId搜索的条件)
1、在页面绑定模型
在这里插入图片描述
2、在init方法中引用findAll方法
在这里插入图片描述
3、在goodsController控制器中改造findAll方法,变成根据商家sellerId进行所有所有商品

注意:只能在controller中添加,不能再impl实现类中添加,因为两个web模块使用的是同一个serviceImol模块。

**使用安全框架的方法来获取当前操作的商家名称**
 String sellerId = SecurityContextHolder.getContext().getAuthentication().getName();

在这里插入图片描述

商家显示商品时状态信息的中文显示问题

分析:显示在页面的状态是数字,因为我们的状态码在数据库中的形式就是数字。我们需要将数字转成具体的中文文字信息。
1、在js文件的controller定义一个数组
在这里插入图片描述
2、在页面进行数组引用
在这里插入图片描述

商家提交审核

分析:商家填写的商品信息最 基本的有这样几个状态,草稿、未审核、审核通过、审核未通过等等。在添加商品信息时,默认将状态设置成了0,即草稿状态。现在需要提交审核,只需要将状态该成1(未审核)即可。
一、前端部分

1、在复选框的位置添加动态添加进selectIds数组的方法
在这里插入图片描述

2、在页面提交审核的位置绑定修改状态的方法,传入固定值为1
在这里插入图片描述

3、在js文件中定义对应方法(需要在改变状态的方法中,手动放入selectIds)
在这里插入图片描述

二、后端部分

1、在controller层定义updateStatus方法
在这里插入图片描述

2、在impl实现类调用方法实现更改功能
在这里插入图片描述

运营商显示商品列表(在manager-web模块)

1、在页面绑定模型
在这里插入图片描述
2、在init方法中定义一个搜索对象(运营商需要看到所有商家的所有没有被审核的商品)
在这里插入图片描述

商品分类中文处理

在分类列表中,因为存入数据库的是id值,所以也只能显示id。现在需要显示具体的分类名称。需要定义一个新的方法生成名称数组,在页面调用显示。

1、在js文件controller定义方法
在这里插入图片描述
2、在页面中使用这个数组,将显示的id替换成对应的具体名称
在这里插入图片描述

运营商审核商家(manager-web模块)

一、前端部分
(为了避免以前的方法过于累赘,所以这个模块使用的所有有关goods的js和controller重新创建)
1、在左上部分的按钮上绑定对应方法
在这里插入图片描述

2、定义更新状态的方法,和shop-web使用的是同一套service,所以引入文件,在js的controller定义方法即可。
在这里插入图片描述

运营商审核页面的模糊搜索

1、页面绑定模型,调用reloadList方法即可。
在这里插入图片描述
需要将goodsServiceImpl中的findPage拼接条件进行调整(中间的两个其实没有用,可以删除)
在这里插入图片描述

逻辑删除(三个部分)

一、前端部分
1、在页面绑定删除方法
在这里插入图片描述

2、在复选框添加动态添加到selectIds的方法
在这里插入图片描述
二、后端部分
1、改造删除方法,在impl层将物理删除改为逻辑删除
在这里插入图片描述
三、查询改造
在查询时添加条件,不显示逻辑删除的结果。只显示isDelete为null的(因为为1代表已经删除)
注意:这个方法可以在serviceImpl中添加,因为manager和shop共用service,并且删除的数据两个web都不需要看到,所以在这里添加。
在这里插入图片描述

注解式事务

在impl实现类添加@Transactional注解即可
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43421537/article/details/88380315