一、两个概念SKU、SPU

SKU:最小库存单位(裤子—蓝色—XS大小---->对应一个库存)
SPU:商品具有的属性,不涉及到库存

(一)SKU相关表的设计:

(1) pms_product_attribute_category 商品属性表

通过attribute_count字段记录当前商品有多少个SKU属性在前端显示

(2) pms_product_attribute 商品属性参数表

product_attribute_category_id字段对应了商品属性表的id

注:商品属性表商品属性参数表是 1对N的关系。

(3) pms_product_attribute_value 存储产品参数具体信息的表

 该表是更细的划分,product_id说明当前是哪个商品,product_attribute_id对应的商品属性参数表的内容,value是当前商品的具体属性参数(哪一个属性的具体值)

二、商品下单的流程(未涉及支付部分)

Step1:添加购物车

分析购物车

(1)购物车 购物车是访问非常高频的场景,读写次数可能是最多的

(2)有的电商网站设置的即使不登陆仍然可以加入购物车,不计成本的直接加

(3)就分为了在线购物车离线购物车

(4)在线购物车实际是会写入DB中的做持久化,那么为什么能抗住那么大的压力是因为用了分库分表的中间件(Sharding),路由到不同的库上去。

(5)读的时候,会选择用redis来抗读的压力

离线购物车是怎么实现的?

(1)离线购物车,可以存在cookie里面,但是cookie不安全,且可能购物车东西多会把cookie衬得很大。

(2)经实验发现,京东的离线购物车通过F12查看其Cookie信息,发现其中有一个唯一标志,可通过Redis的hash结构结合该全局唯一标志当作购物车的数据结构。

(3)Hash结构中,cookie唯一标志加上购物车id为key value是(产品的skuid,购买数量),可以通过redis的设置超时时间来限制购物车存在时间。

(4)购物车是有上限的(可以通过hash数据结构的 hlen key 获取当前购物车中的商品种类数量)

(5)登录之后,离线购物车的信息就会同步到DB里面去

(6)如果cookie被禁用,可以将信息存储在http的header里面。(和jwt是一样的)

Step2:根据购物车信息生成订单信息
购物车生成订单具体逻辑
1、get到购物车的实体信息set到订单实体信息中。
2、判断是否有库存,没有则抛出异常
3、判断是否使用了优惠券,用了优惠券需要判断当前用户使用的优惠券是否符合该商品类别(优惠券下一模块讲怎么设计)
4、对每个下单商品进行优惠券金额分摊的计算
5、判断是否使用积分,不适用积分,则订单中积分这块直接set为0
6、使用积分,则先判断积分是否可用,可用情况下分摊到可用商品中(通过数学公式计算)
7、计算实际商品价格: 原价-促销优惠-优惠券抵扣-积分抵扣
8、进行库存锁定 原锁定库存数+当前购物车中下单数

为啥这么做?
在库存表中,有真实库存字段和锁定库存字段,未支付之前,是需要锁定库存的,因为不锁定而是直接减库存的话,假设原来真实库存有100件,那么最多只允许100个人下单,这100个人当中可能80个人退单,那么这样80%的退单率,800个人来下单才会把100个真正卖掉。所以不能直接减库存,需要设置一个锁库存的字段。

由其引出超卖现象:
超卖现象:200人支付了,但是库存不够,可以补充库存。不希望超卖怎么办?只有拒绝掉请求,并把支付到支付宝里的钱退还,走支付宝的退款流程
当然以上是应该跟产品经理去对的

(三)优惠券的设计

优惠券业务:
1、全场、会员、购物、注册赠券
2、适用平台:移动还是PC
3、门槛:例如 满2000 面额50 总发行量
4、有效期

表的介绍:
(1)SMS_coupon 优惠券信息表

添加一个优惠券都会在这个表添加记录,记录了过期时间、优惠券简介


(2)sms_coupon_history优惠券使用、领取历史表

使用过的或者领取的都会记录在该表,包含使用状态,使用/领取人等

(3)sms_coupon_product_category_relation 优惠券和产品分类关系表

 标识优惠券适于指定分类有关 ,也就是标明了该商品分类可以用哪些优惠券


(4)sms_coupon_product_relation 优惠券和产品的关系表

标识优惠券适于指定商品有关

(四) 其他

计算钱的时候不要用double类型,而是用BigDecimal计算

商品服务(SKU、下单流程、购物车、优惠券设计)相关推荐

  1. sku设计mysql_基于spring boot拥有完整sku和下单流程的完全商城

    一个基于spring boot.spring oauth2.0.mybatis.redis的轻量级.前后端分离.防范xss攻击.拥有分布式锁,为生产环境多实例完全准备,数据库为b2b2c设计,拥有完整 ...

  2. HH SaaS电商系统服务商品在移动端下单结算的交互设计

    服务商品只能单独下单购买,不允许加入购物车 我们知道服务商品有三种形式:线上服务.到店服务.上门服务,因为不同服务形式买家和卖家所需的信息不同,所以交互界面也会不同,前端需要判断当前服务商品的服务形式 ...

  3. css将商品加入购物车,简单实用的商品购物和添加购物车UI设计

    简要说明 这是一款使用jQuery和CSS3制作的简单实用的商品购物和添加购物车界面设计方案.用户可以在商品购物界面中预览各种型号.颜色.尺寸的商品.然后通过点击添加到购物车按钮就可以将该商品添加到购 ...

  4. DEVOPS 运维开发系列一:ITIL服务目录管理流程的设计与信息化管理系统功能的开发

    ITIL是世界范围内公认的运维服务管理的最佳实践.ITIL的理论落地,不需要什么信息系统的支持,使用word文件.Excel表格一样可以对ITIL的十几个关键管理流程做到很好的落地.虽然是这么讲,但现 ...

  5. 购物车html页面,简单实用的商品购物和添加购物车界面设计

    这是一款使用jQuery和CSS3制作的简单实用的商品购物和添加购物车界面设计方案.用户可以在商品购物界面中预览各种型号.颜色.尺寸的商品.然后通过点击添加到购物车按钮就可以将该商品添加到购物车中,操 ...

  6. 面试常问:说一下下单流程~

    关于下单我有话要说...... 对于存在订单流程的系统,下单是举足轻重的一步...... 差一步掉进深渊(扣绩效)无法生还~ 一份订单在生成到交易结束的整个生命周期里 在之前都会让产品和研发绞尽脑汁~ ...

  7. 常见b2c网站购物车的设计

    对于大部分B2C网站来说,购物车是网站的咽喉之地,订单是白花花的银子,所有银子都必然流经购物车,购物车不能有失.优秀的购物车设计至少需要完成两项使命:一是方便用户多买货多掏银子:二是帮用户保管好待购的 ...

  8. 保姆级教程,一文理顺优惠券设计

    ​运营活动中发放优惠券已成为一种基本形式,在优惠券设计中,对于整体业务流程的设计尤为重要.优惠券模块的架构主要包括: 在运营活动中,优惠券使用过程有几个重要阶段:制券--发券--核销(作废)--统计, ...

  9. Day400401402403404405406.商品服务 -谷粒商城

    商品服务 一.品牌管理 1.效果优化与快速显示开关 将逆向工程product得到的resources\src\views\modules\product文件拷贝到achangmall/renren-f ...

最新文章

  1. python语法手册-《Python 手册》pdf版电子书免费下载
  2. 作为一名产品经理,我是如何快速做项目计划的?
  3. Java黑皮书课后题第5章:**5.33(完全数)如果一个正整数等于除它它本身外其他所有除数之和。就称之为完全数。如6是第一个完全数,因为6=1+2+3。10000以下的完全数有4个,编写程序找出
  4. MySQL事务与存储引擎相关设置
  5. 如何实现两个数据库之间的同步
  6. cookies的存值问题
  7. LeetCode 659. 分割数组为连续子序列(哈希)
  8. android 最新写法,详解Android 硬布局item的高级写法
  9. HTML5 响应式网页设计之页面美化(一.响应式布局)
  10. CODEVS 2102 石子归并 2
  11. 【软技能】完全写作指南--评论
  12. 小刘同学的 virtuoso IC 618 版图初学
  13. mysql设计用户标签库_针对Tag/标签的数据库设计思考 | 学步园
  14. 平安人寿优+计划广纳英才,平安代理人实现职涯发展
  15. 智能优化算法——模拟退火法(PythonMatla实现)
  16. 不仅仅是土豆_设计成功不仅仅需要设计技能
  17. LAZARUS APT利用恶意word文档攻击MAC用户
  18. 企业工商信息查询第三方软件/API查询原理分析
  19. Oracle - 锁
  20. Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接<2021SC@SDUSC>

热门文章

  1. PYQT Pushbutton 右键菜单
  2. 台式电脑鼠标怎么选?
  3. Linux命令--定时运行程序(脚本)--方法/实例
  4. Java程序员认证考试 ---SUN认证
  5. 推荐一本好书《Spring实战(第四版)》
  6. python制作索引图像
  7. 数据库实验一 数据库定义及数据导入
  8. 【PAT乙级】1082 射击比赛 (20分)
  9. 5g上行速率怎么提升_「5G学习」怎么样粗略计算5G的理论峰值速率
  10. 两张图让你了解,Web前端开发就业前景及薪资究竟如何!