【第七篇】商城系统-商品发布-SKU和SPU管理
商品服务
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*/@TableIdprivate 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*/@Overridepublic 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);});}// statusString status = (String) params.get("status");if(!StringUtils.isEmpty(status)){wrapper.eq("publish_status",status);}// catalogIdString catalogId = (String) params.get("catalogId");if(!StringUtils.isEmpty(catalogId) && !"0".equalsIgnoreCase(catalogId)){wrapper.eq("catalog_id",catalogId);}// brandIdString 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*/@Overridepublic 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 > 0wrapper.le("price",max);}}catch (Exception e){e.printStackTrace();}}IPage<SkuInfoEntity> page = this.page(new Query<SkuInfoEntity>().getPage(params),wrapper);return new PageUtils(page);}
【第七篇】商城系统-商品发布-SKU和SPU管理相关推荐
- 多用户商城系统商品表设计
多用户商城系统商品表用于存储商家上架的商品信息. 商品表(wst_goods) 字段名称 字段说明 字段描述 类型 长度 默认 必填 goodsId 自增ID int 11 是 1 goo ...
- 畅购商城 04商品发布
第4章 商品发布 1 SPU与SKU 1.1 SPU与SKU概念 SPU = Standard Product Unit (标准产品单位) 概念 : SPU 是商品信息聚合的最小单位,是一组可复用.易 ...
- 商城系统商品属性的数据库设计思路
京东商城的数据库是如何搭建的,那么多商品,每种商品的参数各不相同,是怎样设计数据库的? 在提及这种设计思路前,首先得了解数据表可以分为两种结构: 1\横表,也就是我们经常用到的表结构, 2\纵表,这种 ...
- 商品的SKU与SPU
spu 和 sku 都是属性值的集合, 举个栗子 >> 一部 6S, 它身上有很多的属性和值. 比如 : 毛重: 420.00 g 产地: 中国大陆 容量: 16G, 64G, 128G ...
- 记录谷粒商城P90 商品发布关于[500] during [POST](null空指针)的坑
代码小白,记录自学制作谷粒商城遇到的坑 如有错误请轻喷 1.问题的出现:关于[500] during [POST]以及null空指针 在做到发布商品的时候突然报了一个post500的错误,这比较诡异啊 ...
- 电商系统中的商品的SKU和SPU是什么?
SPU = Standard Product Unit (标准化产品单元) SPU是商品信息聚合的最小单位,是一组可复用.易检索的标准化信息的集合,该集合描述了一个产品的特性. SPU属性:不会影响到 ...
- (转)商城系统商品属性的数据库设计思路
http://www.360doc.com/content/12/0513/18/1542811_210764350.shtml 最近看到一个题目,要求提出一套商品属性相关的数据库设计思路,要求是商品 ...
- B2B2C分销商城系统,带进货模块,二级分销商城Java系统源码
B2B2C分销商城系统,带进货模块,二级分销商城Java系统源码 功能简介: 一.商家入驻体系 B2B2C商城系统可以招商入驻,用户在商城中注册后可以根据要求向平台运营商提供相应的 申请资料,选择商品 ...
- 中小型商城系统中的分类/产品属性/扩展属性的数据库设计
声明:之所以定位在"中小型"商城系统,而非"大型"(指淘宝.拍拍这类巨无霸),理由很简单----我一直都呆在(创业型的)小公司,没见过这些大家伙是怎么设计的:) ...
最新文章
- JetsonTX2上安装tensorflow的心酸史
- 文件重命名批量处理(Matlab)
- BZOJ 3304: [Shoi2005]带限制的最长公共子序列( LCS )
- 数据结构-链表的删除和添加
- 法兰克机械手手动操作_谈谈多工位冲床机械手的操作方法
- YUV序列下采样以及彩色4:2:0与灰度4:0:0转换---基于matlab实现
- cookie与token对比(转)
- 如何有效地刷算法题?
- python之time:基于python语言利用time模块计算运行时间—计算机器学习模型训练前后的时间代码实现
- win7激活码失效 报错0xC004F057解决方法
- excel选择性粘贴为何是html,选择性粘贴,教您excel选择性粘贴怎么用
- 程序员的奋斗史(三十四)——人在囧途之应聘篇(四)
- adobe reader XI打开pdf崩溃修复2020.05
- CCF公布国家集训队50进15名单!5月确定IOI2019选手!
- Android性能优化系列篇(五):弱网优化
- protect 继承_c++三种继承方式public,protect,private
- 使用indexedDB(三)(翻译)
- 解决VMware16无法在Win7安装VMTools的问题,报Windows 无法验证此驱动程序软件的发布者
- 专接本数学第一章知识梳理(1)
- linux中文设置教程视频,为您linux输入法
【视频教程】
的设置技巧
热门文章
- 擦完键盘后电脑桌面变成黑色背景,word文档等也变成黑色背景
- java安卓布局与画布_Android 画布绘图
- 奇瑞背水一战,或止于“理想很丰满”
- AES的CFB模式加解密不一致的原因
- 日迹2022.3.22
- The POM for oracle:ojdbc6:jar:11.2.0.3 is missing, no dependency information available
- python post 登录_Python爬虫之模拟post登陆及get登陆
- “母亲节”谈竟争、讲创业_有人泪奔,有人笑
- (Java程序)Excel自动生成mysql表
- C语言中定义字符串的几种方法