Advertisement

商城电商day 04 spu相关业务介绍

阅读量:

day 04 spu相关业务介绍

1.1 销售属性

销售属性,就是商品详情页右边,可以通过销售属性来定位一组spu下的哪款sku。可以让当前的商品详情页,跳转到自己的“兄弟”商品。
一般每种商品的销售属性不会太多,大约1-4种。整个电商的销售属性种类也不会太多,大概10种以内。比如:颜色、尺寸、版本、套装等等。不同销售属性的组合也就构成了一个spu下多个sku的结构。

因此,在制作spu之前要先确定当前商品有哪些销售属性!

1.2 spu数据结构图

二、列表查询功能开发

分析用到那几张表
spuInfo
SQL语句

控制层

复制代码
     @GetMapping("{page}/{size}")
    public Result getSpuInfoPage(@PathVariable Long page,
                                 @PathVariable Long size,
                                 SpuInfo spuInfo)

业务层Dao层

复制代码
    IPage<SpuInfo> getSpuInfoPage(Page<SpuInfo> pageParam, SpuInfo spuInfo);

难点

E:\淘宝下载\电商视频\day111 12
有几种获取三级分类id的方法呢
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

用实体类接收 传进来的参数 因为实体类中有这个对象属性 为的是接收categoryId
控制器 多了个spuInfo 所以manageService.getSpuInfoPage要改变

复制代码
    //品牌分页查询
      @GetMapping("{page}/{size}")
    public Result getSpuInfoPage(@PathVariable Long page,
                                 @PathVariable Long size,
                                 SpuInfo spuInfo){
        // 创建一个Page 对象
        Page<SpuInfo> spuInfoPage = new Page<>(page,size);
        // 获取数据
        IPage<SpuInfo> spuInfoPageList = manageService.getSpuInfoPage(spuInfoPage, spuInfo);
        // 将获取到的数据返回即可!
        return Result.ok(spuInfoPageList);
    }
    }

实现类

复制代码
    @Override
    public IPage<SpuInfo> getSpuInfoPage(Page<SpuInfo> pageParam, SpuInfo spuInfo) {
        QueryWrapper<SpuInfo> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("category3_id", spuInfo.getCategory3Id());
        queryWrapper.orderByDesc("id");
        return spuInfoMapper.selectPage(pageParam, queryWrapper);
    }

三、商标品牌管理

分析用到那几张表

SQL语句

控制层
@GetMapping("{page}/{limit}")
public Result index(@PathVariable Long page,
@PathVariable Long limit)

业务层Dao层
IPage getPage(Page pageParam);

难点

复制代码
    @ApiOperation(value = "分页列表")
       @GetMapping("{page}/{limit}")
       public Result index(@PathVariable Long page,
                       @PathVariable Long limit) {
    
      Page<BaseTrademark> pageParam = new Page<>(page, limit);
      IPage<BaseTrademark> pageModel = baseTrademarkService.getBaseTradeMarkList(pageParam);
      return Result.ok(pageModel);
       }

实现类

复制代码
     @Override
       public IPage<BaseTrademark> getBaseTradeMarkList(Page<BaseTrademark> pageParam) {
      QueryWrapper<BaseTrademark> queryWrapper = new QueryWrapper<>();
      queryWrapper.orderByAsc("id");
    
      IPage<BaseTrademark> page = baseTrademarkMapper.selectPage(pageParam, queryWrapper);
      return page;
       }

四、spu的保存功能中的图片上传

介绍
FastDFS 是一个由 C 语言实现的开源轻量级分布式文件系统,作者余庆(happyfish100),支持 Linux、FreeBSD、AID 等 Unix 系统,解决了大数据存储和读写负载均衡等问题,适合存储 4KB~500MB 之间的小文件,如图片网站、短视频网站、文档、app 下载站等,UC、京东、支付宝、迅雷、酷狗等都有使用。

4.2 FastDFS上传的流程

只要 storage 返回图片的路径图片名称,我们就能通过浏览器来访问图片了?
图片服务器在linux ? nginx 做反向代理{图片服务器}!

分析用到那几张表

SQL语句

控制层

业务层Dao层

难点

五、spu保存 保存商品数据 5.3 保存后台代码

复制代码
    在这里插入代码片

分析用到那几张表

复制代码
    spu_image(商品图片表) spu_id(商品Id)
    spu_info(商品表) category3_id(三级分类Id) tm_id(品牌Id)
    没用  spu_poster(商品海报表) spu_id(商品Id)
    spu_sale_attr(商品销售属性表) spu_id(商品Id) base_sale_attr_id(销售属性Id)
    spu_sale_attr_value(商品销售属性值) spu_id(商品Id) base_sale_attr_id(销售属性Id)

SQL语句
记得看实体类中包含的数据库中不存在的集合包含关系型

复制代码
    @PostMapping("saveSpuInfo")
    public Result saveSpuInfo(@RequestBody SpuInfo spuInfo)
    return Result.ok();

业务层Dao层

复制代码
    @Transactional(rollbackFor = Exception.class)
    public void saveSpuInfo(SpuInfo spuInfo)

难点

// spuInfo 商品表
spuImage 商品图片表
// spuSaleAttr 销售属性表
// spuSaleAttrValue 销售属性值表

找到那几个表 再看对应的实体类

复制代码
     //        spuSaleAttr 销售属性表  多个 spuSaleAttrList
        List<SpuSaleAttr> spuSaleAttrList = spuInfo.getSpuSaleAttrList();
        if (spuSaleAttrList != null && spuSaleAttrList.size() > 0) {
    
            for (SpuSaleAttr spuSaleAttr : spuSaleAttrList) {
                spuSaleAttr.setId(spuInfo.getId());
                spuSaleAttrMapper.insert(spuSaleAttr);
    
                //        spuSaleAttrValue 销售属性值表
                //一个销售属性对应多个销售属性值
    
                List<SpuSaleAttrValue> spuSaleAttrValueList = spuSaleAttr.getSpuSaleAttrValueList();
                if (spuSaleAttrValueList != null && spuSaleAttrValueList.size() > 0) {
                    for (SpuSaleAttrValue spuSaleAttrValue : spuSaleAttrValueList) {
                        spuSaleAttrValue.setSpuId(spuInfo.getId());
                        spuSaleAttrValue.setSaleAttrName(spuSaleAttr.getSaleAttrName());
                        spuSaleAttrValueMapper.insert(spuSaleAttrValue);
                    }
                }
    
    
            }
        }

表结构 是个问题 你是如何设计表的?

全部评论 (0)

还没有任何评论哟~