|
@@ -0,0 +1,398 @@
|
|
|
+# 一、项目目的
|
|
|
+
|
|
|
+统一商品标准化,包括:商品定义(维护)、商品分类管理、下单支付、权限(资源)管理。同时兼顾toC、toB用户需求。
|
|
|
+
|
|
|
+# 二、概念设计
|
|
|
+
|
|
|
+- 商品分类
|
|
|
+ - 标准统一分类
|
|
|
+ 行业、大类、小类
|
|
|
+ - 商家私有商品分类(第三方市场)
|
|
|
+ 自定义商品分类,可用户商户自己管理,以及商铺中作为分栏(栏目)展示
|
|
|
+
|
|
|
+- 系统能力树
|
|
|
+
|
|
|
+ 定义系统需要检查资源,需要授权的点
|
|
|
+ - 能力分组
|
|
|
+ - 能力块
|
|
|
+ - 接口(能力点)
|
|
|
+ - 指标(资源)
|
|
|
+ 指标是指某个(类)功能涉及资源的检查项,这里用于定义某个资源项。
|
|
|
+ 基本属性:代码,类型,模式;
|
|
|
+
|
|
|
+- 商品 (spu)
|
|
|
+ 商品基本属性:名称、分类、统一编码、介绍、特性等
|
|
|
+
|
|
|
+ * 规格 (sku)
|
|
|
+ 规格基本属性:名称、统一编码、各类定价
|
|
|
+ 多份购买时, 考虑权益合并,企业许可
|
|
|
+ * 权限资源配置矩阵
|
|
|
+ * 组合商品(多sku)
|
|
|
+ 可打包多个sku
|
|
|
+- 评价
|
|
|
+ 基本属性:用户、sku编号、商品编号、订单编号、评分、评价内容等
|
|
|
+
|
|
|
+- 订单
|
|
|
+
|
|
|
+ 订单基础属性:编号、商品、规格、数量、单价、总价、应付、实付、付款方式、付款状态、订单状态。。。。
|
|
|
+
|
|
|
+- 支付/回款、退款
|
|
|
+ 支付的基本属性:付款类型、付款时间、付款人、付款金额、订单号
|
|
|
+ 退款记录,考虑权益关闭
|
|
|
+
|
|
|
+
|
|
|
+- 用户权限资源
|
|
|
+
|
|
|
+ 下单后,根据购买商品,给用户开通、增加相应功能资源
|
|
|
+
|
|
|
+- 服务提供
|
|
|
+
|
|
|
+系统在线提供服务,并与商品标准化的权限资源对接,实现权限验证,消费有资源扣减
|
|
|
+
|
|
|
+
|
|
|
+- 营销活动
|
|
|
+ - 满减 、 满赠 、 优惠卷
|
|
|
+ - 秒杀、抢购
|
|
|
+
|
|
|
+# 三、概要设计
|
|
|
+
|
|
|
+
|
|
|
+## 3.1 架构图
|
|
|
+```plantuml
|
|
|
+@startuml
|
|
|
+ rectangle 1应用 #FFFFCC{
|
|
|
+ rectangle 商城
|
|
|
+ rectangle 营销平台
|
|
|
+ rectangle 商城控制台
|
|
|
+ }
|
|
|
+
|
|
|
+ rectangle 2接口服务 #CCFFCC{
|
|
|
+ rectangle 商品服务
|
|
|
+ rectangle 商铺服务
|
|
|
+ rectangle 订单服务
|
|
|
+ rectangle 支付服务
|
|
|
+ rectangle 发票服务
|
|
|
+ rectangle 营销服务
|
|
|
+ rectangle 评价服务
|
|
|
+ rectangle 权益服务
|
|
|
+ }
|
|
|
+
|
|
|
+ rectangle 3领域模型 #CCFFFF{
|
|
|
+ rectangle 商品模型
|
|
|
+ rectangle 订单模型
|
|
|
+ rectangle 营销模型
|
|
|
+ rectangle 评价模型
|
|
|
+ rectangle 权益模型
|
|
|
+ rectangle 计价模型
|
|
|
+ rectangle 计费模型
|
|
|
+ }
|
|
|
+
|
|
|
+ rectangle 4中台服务 #CCFFFF{
|
|
|
+ rectangle 商品中心
|
|
|
+ rectangle 订单中心
|
|
|
+ rectangle 权益中心
|
|
|
+ rectangle 计价中心
|
|
|
+ rectangle 计费中心
|
|
|
+ }
|
|
|
+
|
|
|
+ rectangle 5存储 #6699CC{
|
|
|
+ rectangle TiDB
|
|
|
+ rectangle EleasticSearch
|
|
|
+ rectangle OSS
|
|
|
+ rectangle ArangoDB
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ 1应用 -down-> 2接口服务
|
|
|
+ 2接口服务 -down-> 3领域模型 :"调用"
|
|
|
+ 3领域模型 -down-> 4中台服务 :"调用"
|
|
|
+ 4中台服务-down-> 5存储 :"调用"
|
|
|
+ 3领域模型 -right-> 5存储 :"调用"
|
|
|
+ 1应用 -right-> OSS :"文件访问"
|
|
|
+
|
|
|
+@enduml
|
|
|
+```
|
|
|
+说明:
|
|
|
+中台服务,仅抽取多个系统共享部分;
|
|
|
+
|
|
|
+业务部分需要在领域模型实现;**并不是说有的领域模型能力都需要抽到中台服务。**
|
|
|
+计价中心,订单计算价格的服务,等同于医院的划价窗口;
|
|
|
+
|
|
|
+订单包含多个物品、不同规格、参与活动的赠品、折扣、红包(卡劵)抵扣等,均在此做计算,对外提供统一服务。输出订单总价(总价、应付价,预使用的卡劵、积分、红包等)
|
|
|
+
|
|
|
+## 3.3 关键实体关系图
|
|
|
+```plantuml
|
|
|
+@startuml
|
|
|
+package 1、系统服务能力_静态资源{
|
|
|
+ entity 标准商品分类{
|
|
|
+ * ID
|
|
|
+ * 代码
|
|
|
+ * 名称
|
|
|
+ * 父级ID
|
|
|
+ }
|
|
|
+ entity 商家商品分类{
|
|
|
+ * ID
|
|
|
+ * 代码
|
|
|
+ * 名称
|
|
|
+ * 父级ID
|
|
|
+ * 商家ID
|
|
|
+ }
|
|
|
+ 标准商品分类 ||-|{ 标准商品分类 :"包含"
|
|
|
+ 商家商品分类 ||-|{ 商家商品分类 :"包含"
|
|
|
+ entity 资源定义{
|
|
|
+ * 名称
|
|
|
+ * 代码
|
|
|
+ * 计量类型
|
|
|
+ * 检验模式
|
|
|
+ * 扣减模式
|
|
|
+ * 资源使用限制
|
|
|
+ }
|
|
|
+ entity 功能分组{
|
|
|
+ * ID
|
|
|
+ * 名称
|
|
|
+ * 代码
|
|
|
+ * 父级ID
|
|
|
+ }
|
|
|
+ entity 功能点定义{
|
|
|
+ * 名称
|
|
|
+ * 代码
|
|
|
+ }
|
|
|
+
|
|
|
+ 功能分组 ||-|{ 功能分组 :"包含"
|
|
|
+ 功能分组 ||-|{ 功能点定义 :"包含"
|
|
|
+ 功能点定义 ||-|{ 资源定义 :"包含"
|
|
|
+}
|
|
|
+
|
|
|
+package 2、商品{
|
|
|
+ entity 商品{
|
|
|
+ * 名称
|
|
|
+ * 代码
|
|
|
+ * 标准分类
|
|
|
+ * 商户分类
|
|
|
+ * 介绍
|
|
|
+ * 特点、优势、卖相
|
|
|
+ }
|
|
|
+ entity 规格 {
|
|
|
+ * 名称
|
|
|
+ * 代码
|
|
|
+ * 描述
|
|
|
+ * 各种定价
|
|
|
+ }
|
|
|
+ entity 功能点<<功能点定义>>{
|
|
|
+ * 名称
|
|
|
+ * 代码
|
|
|
+ * 功能点路径
|
|
|
+ }
|
|
|
+
|
|
|
+ entity 资源<<资源定义>>{
|
|
|
+
|
|
|
+ }
|
|
|
+ entity 规格快照<<规格>>{
|
|
|
+ * 版本号
|
|
|
+ * 创建时间
|
|
|
+ }
|
|
|
+ 商品||-|{规格:"包含"
|
|
|
+ 规格||-|{功能点:"包含"
|
|
|
+ 功能点||-|{资源:"包含"
|
|
|
+ 规格快照||-|{功能点:"包含"
|
|
|
+ 规格||-|{规格快照:"包含,每次修改规格,都会产生快照"
|
|
|
+}
|
|
|
+
|
|
|
+package 3、订单权益等{
|
|
|
+ entity 订单 {
|
|
|
+ * 订单编号
|
|
|
+ * 应付
|
|
|
+ * 实付
|
|
|
+ * 支付方式
|
|
|
+ * 支付状态
|
|
|
+ * 订单状态
|
|
|
+ * 客户标识
|
|
|
+ * 下单时间
|
|
|
+ * 其他字段balabala
|
|
|
+ }
|
|
|
+ entity 订单物品 {
|
|
|
+ * 商品
|
|
|
+ * 规格快照
|
|
|
+ * 数量
|
|
|
+ * 单价
|
|
|
+ * 合计
|
|
|
+ * 优惠
|
|
|
+ }
|
|
|
+
|
|
|
+ entity 支付 {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ entity 退款 {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ entity 发票 {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ entity 评价 {
|
|
|
+ * 订单号
|
|
|
+ * 商品id
|
|
|
+ * 规格id
|
|
|
+ * 评分
|
|
|
+ * 评价内容
|
|
|
+ * 时间
|
|
|
+ * 用户id
|
|
|
+ }
|
|
|
+ entity 客户权益{
|
|
|
+
|
|
|
+ }
|
|
|
+ 订单||-|{订单物品:"包含"
|
|
|
+ 客户权益 --> 规格快照:"根据商品规格权益设置,增加客户权益"
|
|
|
+ 订单--> 客户权益:"下单支付后,更新客户权益"
|
|
|
+ 评价 --> 订单物品
|
|
|
+
|
|
|
+ 订单 -- 支付
|
|
|
+ 订单 -- 退款
|
|
|
+ 订单 -- 发票
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+package 4、营销活动{
|
|
|
+ entity 活动{
|
|
|
+ * 名称
|
|
|
+ * 代码
|
|
|
+ * 期限
|
|
|
+ * 模式【满减、满赠、打折、秒杀】
|
|
|
+ }
|
|
|
+ 活动 ||--|{商品:"关联"
|
|
|
+ 活动 ||--|{规格:"关联"
|
|
|
+}
|
|
|
+
|
|
|
+@enduml
|
|
|
+```
|
|
|
+说明:
|
|
|
+- 标准商品分类、商家商品分类 自身嵌套,多级分类树
|
|
|
+
|
|
|
+## 3.4 关键对象图
|
|
|
+** 商品对象图 **
|
|
|
+```plantuml
|
|
|
+@startuml
|
|
|
+ object 剑鱼标讯服务<<商品>>{
|
|
|
+ 名称:剑鱼基础标讯服务
|
|
|
+ 代码:0001
|
|
|
+ 介绍:大图文
|
|
|
+ 标准分类:"标讯服务"
|
|
|
+ 商户分类:"核心服务"
|
|
|
+ }
|
|
|
+ object 规格1<<商品规格>>{
|
|
|
+ 名称:基础版
|
|
|
+ 描述:基础班标讯服务,\n包括订阅、检索、附件下载基础能力
|
|
|
+ }
|
|
|
+
|
|
|
+ object 规格2<<商品规格>>{
|
|
|
+ 名称:豪华版
|
|
|
+ 描述:豪华版标讯服务,\n包括订阅、检索、附件下载基础能力\n在资源配额上,开放更大范围。
|
|
|
+ }
|
|
|
+
|
|
|
+ object 标讯订阅<<功能点>>{
|
|
|
+ 代码:GND001
|
|
|
+ 名称:订阅设置
|
|
|
+ }
|
|
|
+
|
|
|
+ object 标讯推送<<功能点>>{
|
|
|
+ 代码:GND002
|
|
|
+ 名称:标讯推送
|
|
|
+ }
|
|
|
+
|
|
|
+ object 权益1<<权益资源>>{
|
|
|
+ 代码:QY001
|
|
|
+ 名称:省份配额
|
|
|
+ 类型:数值
|
|
|
+ 检验模式:小于等于
|
|
|
+ 扣减模式:无
|
|
|
+ 已用:9
|
|
|
+ 值:10
|
|
|
+ }
|
|
|
+ object 权益2<<权益资源>>{
|
|
|
+ 代码:QY002
|
|
|
+ 名称:关键词词组数量
|
|
|
+ 类型:数值
|
|
|
+ 检验模式:小于等于
|
|
|
+ 扣减模式:无
|
|
|
+ 已用:240
|
|
|
+ 值:300
|
|
|
+ }
|
|
|
+ object 权益3<<权益资源>>{
|
|
|
+ 代码:QY003
|
|
|
+ 名称:关键词词组数量
|
|
|
+ 类型:数值
|
|
|
+ 检验模式:小于等于
|
|
|
+ 扣减模式:无
|
|
|
+ 已用:240
|
|
|
+ 值:300
|
|
|
+ }
|
|
|
+ object 权益4<<权益资源>>{
|
|
|
+ 代码:QY004
|
|
|
+ 名称:数据条数
|
|
|
+ 类型:数值
|
|
|
+ 检验模式:小于等于
|
|
|
+ 扣减模式:无
|
|
|
+ 已用:2400
|
|
|
+ 资源使用限制:每天不超过50条
|
|
|
+ 值:30000
|
|
|
+ }
|
|
|
+ object 权益5<<权益资源>>{
|
|
|
+ 代码:QY005
|
|
|
+ 名称:有效期
|
|
|
+ 类型:日期范围
|
|
|
+ 检验模式:无
|
|
|
+ 扣减模式:无
|
|
|
+ 值:"2022-01-01__2023-01-01"
|
|
|
+ }
|
|
|
+ 剑鱼标讯服务 --> 规格1 : 包含
|
|
|
+ 剑鱼标讯服务 --> 规格2 : 包含
|
|
|
+ 规格1 --> 标讯订阅:包含
|
|
|
+ 规格1 --> 标讯推送:包含
|
|
|
+ 标讯订阅 --> 权益1:包含
|
|
|
+ 标讯订阅 --> 权益2:包含
|
|
|
+ 标讯订阅 --> 权益3:包含
|
|
|
+ 标讯推送 --> 权益4:包含
|
|
|
+ 标讯推送 --> 权益5:包含
|
|
|
+@enduml
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+## 3.5 关键序列图
|
|
|
+** 秒杀活动 流程图**
|
|
|
+```plantuml
|
|
|
+@startuml
|
|
|
+ autonumber
|
|
|
+ alt "活动进行中,并且库存充足"
|
|
|
+ 客户 -> 商城 : 抢商品,不一定会抢成功
|
|
|
+ 商城 -> NSQ队列 : 请求进入队列,缓冲
|
|
|
+ NSQ队列 -> 营销活动: 请求出队,处理请求
|
|
|
+ 营销活动 -> 营销活动: 生成订单前检查
|
|
|
+ alt "检查活动是在进行,以及库存充足"
|
|
|
+ 营销活动 -> 订单中心 : 生成订单
|
|
|
+ 营销活动 -> 营销活动 : 减库存
|
|
|
+ 订单中心 -> 客户:"通知用户抢成功,需要30分钟内支付"
|
|
|
+ 客户 -> 客户 : "订单支付"
|
|
|
+ alt "30分钟内未完成支付"
|
|
|
+ 订单中心 -> 订单中心 : "订单失效"
|
|
|
+ 订单中心 -> 营销活动 : 恢复库存
|
|
|
+ 营销活动 -> 客户 :"告知抢购失败"
|
|
|
+ else
|
|
|
+ 营销活动 -> 客户 :"告知抢购成功"
|
|
|
+ end
|
|
|
+ alt "活动到期、或者库存抢购完了"
|
|
|
+ 营销活动 -> 营销活动 :"活动结束"
|
|
|
+ end
|
|
|
+ else
|
|
|
+ 营销活动 -> 客户:"告知客户活动已经结束,或者库存不足"
|
|
|
+ end
|
|
|
+ else
|
|
|
+ 营销活动 -> 客户:"告知客户活动已经结束,或者库存不足"
|
|
|
+ end
|
|
|
+@enduml
|
|
|
+```
|
|
|
+# 四、成本估算
|
|
|
+# 五、计划安排
|