关键词:
商品服务
1.新增商品
1.1 品牌的关联
1.1.1 PubSub依赖缺失
打开新增商品页面的时候会出现的错误提示:
原因是缺少:PubSub相关依赖
解决办法
- 使用npm添加依赖:npm install --save pubsub-js(失败的话使用此命令:cnpm install --save pubsub-js)
- 在src下的main.js中引用:
import PubSub from ‘pubsub-js’
Vue.prototype.PubSub = PubSub - 在.eslintrc.js中添加一下配置
1.1.2 品牌关联
拷贝对应的前端页面文件
添加后端对应的服务
然后service中查询处理
最后的显示效果
1.1.3 会员等级
首先我们需要启动会员模块,并且配置对应的网关路由信息
1.1.4 规格参数
在新增商品的第二步我们就需要设置对应的规格参数,而这些规格参数是根据前面一步选择的三级分类来查询出来的。
响应对应的数据,我们需要先创建对应的VO对象。
package com.msb.mall.product.vo;
import com.baomidou.mybatisplus.annotation.TableId;
import com.msb.mall.product.entity.AttrEntity;
import lombok.Data;
import java.util.List;
@Data
public class AttrGroupWithAttrsVo
/**
* 分组id
*/
@TableId
private Long attrGroupId;
/**
* 组名
*/
private String attrGroupName;
/**
* 排序
*/
private Integer sort;
/**
* 描述
*/
private String descript;
/**
* 组图标
*/
private String icon;
/**
* 所属分类id
*/
private Long catelogId;
// 关联对应的属性信息
private List<AttrEntity> attrs;
然后创建对应的controller
然后创建对应的service
1.2 发布商品
1.2.1 VO 接收数据
前端页面提交的JSON数据非常复杂,我们需要在后端服务通过对应的VO对象来接收这些相关的数据。
然后通过在线的json格式处理工具生成对应的VO工具类
1.2.2 保存对应的数据
需要保存的数据拆解为一下六个部分。
1.2.3 保存商品基本信息
1.2.4 保存商品描述
需要注意的地方:
1.2.4 保存图集信息
1.2.5 保存规格参数
1.2.6 SKU基本信息存储
1.2.7 SKU的图集
1.2.8 SKU的销售属性
1.3 远程服务调用
1.3.1 满减,折扣,会员价保存
在coupon服务中定义相关的接口及处理的service
然后我们在Product服务中来处理接口的调用
然后在商品的service中完成服务的调用
完成满减折扣和会员价的service存储
public void saveSkuReduction(SkuReductionDTO dto)
// 5.3 保存满减信息,折扣,会员价
// mall_sms: sms_sku_ladder sms_full_reduction sms_member_price
// 1.折扣
SkuLadderEntity ladderEntity = new SkuLadderEntity();
ladderEntity.setSkuId(dto.getSkuId());
ladderEntity.setFullCount(dto.getFullCount());
ladderEntity.setDiscount(dto.getDiscount());
ladderEntity.setAddOther(dto.getCountStatus());
if(ladderEntity.getFullCount() > 0)
ladderService.save(ladderEntity);
// 2.满减
SkuFullReductionEntity fullReductionEntity = new SkuFullReductionEntity();
BeanUtils.copyProperties(dto,fullReductionEntity);
if(fullReductionEntity.getFullPrice().compareTo(new BigDecimal(0)) == 1)
this.save(fullReductionEntity);
// 3.会员价
List<MemberPriceEntity> memberPriceEntities = dto.getMemberPrice().stream().map(item ->
MemberPriceEntity priceEntity = new MemberPriceEntity();
priceEntity.setSkuId(dto.getSkuId());
priceEntity.setMemberLevelId(item.getId());
priceEntity.setMemberPrice(item.getPrice());
priceEntity.setAddOther(1); // 是否可叠加
return priceEntity;
).collect(Collectors.toList());
memberPriceService.saveBatch(memberPriceEntities);
1.3.2 会员积分存储
会员积分信息也是存储在Coupon服务中,我们同样需要通过Fegin来调用。
2.SPU管理
提供不同条件的检索,分类,品牌,状态,关键字检索。
后台我们需要在Service中完成对应的操作。
/**
* SPU信息检索
* 分页查询
* 分类 品牌 状态 关键字查询
* @param params
* @return
*/
@Override
public PageUtils queryPageByCondition(Map<String, Object> params)
QueryWrapper<SpuInfoEntity> wrapper = new QueryWrapper<>();
// 设置对应的检索条件
// 1. 关键字查询
String key = (String) params.get("key");
if(!StringUtils.isEmpty(key))
// 需要添加关键字查询
wrapper.and((w)->
w.eq("id",key)
.or().like("spu_name",key)
.or().like("spu_description",key);
);
// status
String status = (String) params.get("status");
if(!StringUtils.isEmpty(status))
wrapper.eq("publish_status",status);
// catalogId
String catalogId = (String) params.get("catalogId");
if(!StringUtils.isEmpty(catalogId) && !"0".equalsIgnoreCase(catalogId))
wrapper.eq("catalog_id",catalogId);
// brandId
String brandId = (String) params.get("brandId");
if(!StringUtils.isEmpty(brandId) && !"0".equalsIgnoreCase(brandId))
wrapper.eq("brand_id",brandId);
IPage<SpuInfoEntity> page = this.page(
new Query<SpuInfoEntity>().getPage(params),
wrapper
);
return new PageUtils(page);
然后解决页面显示数据的问题,比如类别和品牌显示的编号,创建时间和更新时间显示格式问题。
重启服务
上面的是设置全局的格式化方式,如果我也特殊设置,这时我们可以在对应的entity对象的属性上通过@JsonFormat 来指定,此处指定的会覆盖掉全局的设置。
针对显示的分类和品牌显示id的问题,我们需要通过对应的vo对象来传输,同时我们需要在service中完成对应的逻辑
显示的效果
3.商品管理
商品管理也就是我们讲的SKU管理。实现多条件的检索,比如 类别,品牌,价格区间。关键字等查询。
/**
* SKU 信息检索的方法
* 类别
* 品牌
* 价格区间
* 检索的关键字
* 分页查询
*
* @param params
* @return
*/
@Override
public PageUtils queryPageByCondition(Map<String, Object> params)
QueryWrapper<SkuInfoEntity> wrapper = new QueryWrapper<>();
// 检索关键字
String key = (String) params.get("key");
if(!StringUtils.isEmpty(key))
wrapper.and(w->
w.eq("sku_id",key).or().like("sku_name",key);
);
// 分类
String catalogId = (String)params.get("catalogId");
if(!StringUtils.isEmpty(catalogId) && !"0".equalsIgnoreCase(catalogId))
wrapper.eq("catalog_id",catalogId);
// 品牌
String brandId = (String)params.get("brandId");
if(!StringUtils.isEmpty(brandId) && !"0".equalsIgnoreCase(brandId))
wrapper.eq("brand_id",brandId);
// 价格区间
String min = (String) params.get("min");
if(!StringUtils.isEmpty(min))
wrapper.ge("price",min);
String max = (String) params.get("max");
if(!StringUtils.isEmpty(max))
try
// 如果max=0那么我们也不需要加这个条件
BigDecimal bigDecimal = new BigDecimal(max);
if(bigDecimal.compareTo(new BigDecimal(0)) == 1)
// 说明 max > 0
wrapper.le("price",max);
catch (Exception e)
e.printStackTrace();
IPage<SkuInfoEntity> page = this.page(
new Query<SkuInfoEntity>().getPage(params),
wrapper
);
return new PageUtils(page);
第五篇商城系统-商品属性管理(代码片段)
业务开发-基础业务-属性管理1.SKU和SPU介绍 商城系统中的商品信息肯定避免不了SPU和SKU这两个概念1.1SKU和SPU关系SPU=StandardProductUnit(标准化产品单元)SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的... 查看详情
第五篇商城系统-商品属性管理(代码片段)
业务开发-基础业务-属性管理1.SKU和SPU介绍 商城系统中的商品信息肯定避免不了SPU和SKU这两个概念1.1SKU和SPU关系SPU=StandardProductUnit(标准化产品单元)SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的... 查看详情
谷粒商城--spu和sku(代码片段)
目录1.SPU和SKU概念2.表的关系理解3.导入前端代码4.完善后端接口 5.属性分组详情 6.规格参数详情7.销售属性详情8.分组与属性关联9.发布商品10.仓库服务1.SPU和SKU概念SPU:standardproductunit(标准化产品单元):是商品信息聚合... 查看详情
商城项目14_商品新增vo抽取修改vo新增逻辑代码的具体落地spu检测sku检测流程图(代码片段)
文章目录①.商品新增vo抽取②.修改新增的vo③.新增商品的逻辑④.保存商品核心代码⑤.商品管理-SPU检测⑥.商品管理-SKU检测⑦.商品保持流程图-超级重要写在最前面,商品新增最重要的需要把前端的流程看懂,需要把对应的逻辑搞... 查看详情
商城项目14_商品新增vo抽取修改vo新增逻辑代码的具体落地spu检测sku检测流程图(代码片段)
文章目录①.商品新增vo抽取②.修改新增的vo③.新增商品的逻辑④.保存商品核心代码⑤.商品管理-SPU检测⑥.商品管理-SKU检测⑦.商品保持流程图-超级重要写在最前面,商品新增最重要的需要把前端的流程看懂,需要把对应的逻辑搞... 查看详情
商城项目11_商品spusku详解表结构属性分组列表展示修改新增分类级联更新(代码片段)
文章目录①.商品SPU和SKU管理②.详解SPU、SKU表结构③.属性分组-列表展示④.属性分组-新增修改⑤.品牌分类关联与级联更新⑥.商品服务-分页配置①.商品SPU和SKU管理①.SPU:standardproductunit(标准化产品单元):是商品信息聚合的最小单... 查看详情
商城系统答辩题目
文章目录1.商品的sku和spu的区别?2.商品分类查询实现?3.商品添加的实现?4.什么是跨域?5.跨域问题怎么解决的?6.商品表结构怎么设置的?7.你商品推荐怎么实现的?8.什么是ajax请求?1.商品的sku... 查看详情
美多商城项目:商品数据库表设计准备商品数据首页广告商品列表页(代码片段)
一、商品数据库表设计1.1 SPU和SKU在电商中对于商品,有两个重要的概念:SPU和SKU1.SPU介绍SPU=StandardProductUnit(标准产品单位)SPU是商品信息聚合的最小单位,是一组可服用、易检索的标准化信息的集合,... 查看详情
电商系统设计之商品管理
...样化展示,还能支撑在复杂环境下,商品信息在订单中的系统流转。SKU:中文译为最小存货单位,英文全称为StockKeepingUnit,简称SKU,定义为保存库存控制的最小可用单位。SPU:英文standardproductunit,标准化产品单元,是商品信息... 查看详情
sku和spu在商品中啥意思呢
...存管理等。SPU,是standardproductunit,标准化产品单元,是商品信息聚合的最小单位,属性值、特性相同的商品就可以成为一个SPU。例如:品牌苹果+型号:5s可以确定一个产品,即SPU;再加上颜色白色,尺码4.0,即表示一个SKU;SPU+... 查看详情
(10)商品管理
...除stock然后删除sku新增sku和stock更新spu和spuDetail搭建前台系统live-server --port=9002配置host文件配置nginxcommonjs:getUrlParam、formatprice、formatDate、stringify、parse 查看详情
电商通用型商品中心设计(代码片段)
...品的基本概念商品中心是电商各个系统的最基础单元,为商城、订单,优惠促销、库存、仓储物流等系统提供基础数据。电商的基本术语。SKU:(StockKeepingUint,即库存量单位),库存控制的最小可用单位。例如“iPhone7Plus128G银... 查看详情
spu与sku区别小结
...,都有SPU和SKU,只是叫法不同而已。以某宝和某东为例,商品这个名词在某宝中叫item,而某东叫product。所以某宝中看不到SPU,而是商品ID。SPU,StandardProductUnit标准化产品单元,是商品信息聚合的最小单位,是一组可复用、易检索... 查看详情
spu和sku都是什么意思
...两个概念SPU和SKUSPU=StandardProductUnit(标准产品单位)SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。在商品信息电子化过程中,商品的特性可以由多个“属性|属性... 查看详情
谷粒商城--整合elasticsearch和商品的上架(代码片段)
整合Elasticsearch和商品的上架一、整合ESES常用概念索引,类型,文档是什么?倒排索引相关度分数score的计算安装ES和Kibana快速安装ESkibana初步检索_catES的增删改查新增文档put新增post新增区别查询文档乐观锁的使用更新... 查看详情
sku跟spu有啥区别?
...号的简称,每种产品均对应有唯一的SKU号。单品:对一种商品而言,当其品牌、型号、配置、等级、花色、包装容量、单位、生产日期、保质期、用途、价格、产地等属性与其他商品存在不同时,可称为一个单品。首先,搞清楚... 查看详情
电商系统——商品管理模型
商品管理是电商系统的核心模块之一,非常重要,下图是商品管理模块的商品物理模型图,当然实际使用时还需根据特定业务进行调整:下面对上图中的一些表从概念上进行说明:1. 什么是SPU与SKU SPU全名StandardProductUnit(... 查看详情
什么是spu和sku
...概念SPU与SKU SPU=StandardProductUnit(标准产品单位)SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个SPU。 例如... 查看详情