|
3 năm trước cách đây | |
---|---|---|
api | 3 năm trước cách đây | |
doc | 3 năm trước cách đây | |
public | 3 năm trước cách đây | |
rpc | 3 năm trước cách đây | |
README.md | 3 năm trước cách đây | |
go.mod | 3 năm trước cách đây | |
go.sum | 3 năm trước cách đây |
统一商品标准化,包括:商品定义(维护)、商品分类管理、下单支付、权限(资源)管理。同时兼顾toC、toB用户需求。
商品分类
系统能力树
定义系统需要检查资源,需要授权的点
商品 (spu)
商品基本属性:名称、分类、统一编码、介绍、特性等
评价
基本属性:用户、sku编号、商品编号、订单编号、评分、评价内容等
订单
订单基础属性:编号、商品、规格、数量、单价、总价、应付、实付、付款方式、付款状态、订单状态。。。。
支付/回款、退款 支付的基本属性:付款类型、付款时间、付款人、付款金额、订单号 退款记录,考虑权益关闭
用户权限资源
下单后,根据购买商品,给用户开通、增加相应功能资源
服务提供
系统在线提供服务,并与商品标准化的权限资源对接,实现权限验证,消费有资源扣减
@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
说明: 中台服务,仅抽取多个系统共享部分;
业务部分需要在领域模型实现;并不是说有的领域模型能力都需要抽到中台服务。 计价中心,订单计算价格的服务,等同于医院的划价窗口;
订单包含多个物品、不同规格、参与活动的赠品、折扣、红包(卡劵)抵扣等,均在此做计算,对外提供统一服务。输出订单总价(总价、应付价,预使用的卡劵、积分、红包等)
@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
说明:
** 商品对象图 **
@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
** 秒杀活动 流程图**
@startuml
autonumber
alt "活动进行中,并且库存充足"
客户 -> 商城 : 抢商品,不一定会抢成功
商城 -> NSQ队列 : 请求进入队列,缓冲
NSQ队列 -> 营销活动: 请求出队,处理请求
营销活动 -> 营销活动: 生成订单前检查
alt "检查活动是在进行,以及库存充足"
营销活动 -> 订单中心 : 生成订单
营销活动 -> 营销活动 : 减库存
订单中心 -> 客户:"通知用户抢成功,需要30分钟内支付"
客户 -> 客户 : "订单支付"
alt "30分钟内未完成支付"
订单中心 -> 订单中心 : "订单失效"
订单中心 -> 营销活动 : 恢复库存
营销活动 -> 客户 :"告知抢购失败"
else
营销活动 -> 客户 :"告知抢购成功"
end
alt "活动到期、或者库存抢购完了"
营销活动 -> 营销活动 :"活动结束"
end
else
营销活动 -> 客户:"告知客户活动已经结束,或者库存不足"
end
else
营销活动 -> 客户:"告知客户活动已经结束,或者库存不足"
end
@enduml
goctl rpc protoc goodsCenter.proto --go_out=. --go-grpc_out=. --zrpc_out=.
goctl api go -api goodsCenter.api -dir .