商城电商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);
}
}
}
}
