2022-2024商城业务技术总结

技术架构 cyanprobe 5个月前 (05-07) 369次浏览 已收录 0个评论

提要:

ugrow相关工作总结, 包含相关的开源组件。

正文:

技术方案部分:

casbin 可支持模型的RBAC的鉴权组件有多个语言实现, 后端基于db的策略装载器实现不统一,部分API有些小问题(角色权限被清空等)仔细使用

jakesgordon / javascript-state-machine  js状态机用于复杂订单售后单流转处理

airbytehq / airbyte 社区比较全面的ELT pipeline工具 用于大型数据统计填充工作

apache / superset 类似于达芬奇的数据挖掘工具 给运营展示数据面板

dtm-labs / dtm 基于golang的分布式事务处理方案

pnpm / pnpm 本地npm管理复用

shopizer-ecommerce / shopizer    比较好的java开源商城项目参考

drone 基于go的持续集成服务 相对于jenkins占用资源极低

docker swarm  私有化部署

docker-register 私有仓库构建 可挂载oss

业务部分:

做通用的平台产品比较复杂,  需要用中台的思想去拆分定制化的业务模块, 尽量避免杂乱的设计。
这部分是后台产品需要规划的需要有产品技术融合的思想,对后台功能的拆分既符合技术服务的架构迭代又要复合使用人的使用习惯,推荐阅读陈国利的《商城系统架构设计与实现》。另外后台的页面分级基本就能体现业务架构的完成质量,比较好的案例=》参考有赞 和 CRMEB。
避免复杂的逻辑进入到server中, 如从mms拿取优惠信息,从gms拿去商品信息,从mpms里拿取积分信息=》组合产生结算信息。要保证核心计算模块能够单独的进行测试。另外如积分兑换,加价购,抢购之类的应该附加单独的策略,参考c#开源项目 coreshop的实现,另外coreshop是不会对前端的结算策略进行验证的这是个漏洞。这里的改进点需要gms提供一个打标功能,从mpms拉取活动信息,后端结合前端的策略信息和打标服务返回的活动信息进行验证。打标的逻辑其实就是有赞的活动冲突表类似的实现。
另外对于不同的业务方也可以参考DSL的思路,让前端拉取配置来实现,简化定制复杂度。
还有很多东西有空再记录…..
Markdown 语法只做记录, 下面是部分服务拆分和较为重点的订单部分(懒得写copy了下readme)。
微服务
* ums 用户中心 (User Management System)
* pms 支付服务 (Payment Management Service)
* oms 订单中心 (Order Management System)
* mpms 会员积分 (Member Point Management System)
* gms 商品中心 (Goods Management System)
* mms 营销中心 (Marking Management System)
* admin 后台管理服务 – 管理API聚合层
* api 用户bff层
* sto 店铺导购管理
* tpms 第三方服务(Third-Party Management System)

## 订单状态

1. 待付款(NOT_PAID)
2. 待发货(PENDING_SHIPMENT)
3. 待收货(PENDING_RECEIVING)
4. 交易成功(COMPLETED)
5. 已取消(CANCELED)
6. 交易关闭(CLOSED)
7. 父订单无效(INVALID)

## 状态流转

“`mermaid
stateDiagram-v2
direction LR
[*] –> 待付款
待付款 –> 已取消
待付款 –> 待发货: 支付
待发货 –> 已取消
state 待发货 {
[*] –> 无效订单: 拆单
}
待发货 –> 待收货
待收货 –> 交易成功
交易成功 –> 交易关闭: 发起售后(全额退款)
待收货 –> 交易关闭: 发起售后(全额退款)
已取消 –> [*]
交易成功 –> [*]
交易关闭 –> [*]
“`

## 售后单状态

1. 退款申请待处理(PENDING)
2. 拒绝退款申请待买家处理(REFUSE)
3. 同意退款申请待买家退货(APPROVE)
4. 买家已退货待确认收货(SHIPMENT)
5. 拒绝收货待买家处理(REJECT_SHIPMENT)
6. 退款处理中(REFUND_PENDING)
7. 退款成功(REFUND_SUCCESS)
8. 售后关闭(CLOSE)

## 售后单状态流转(退货退款)

“`mermaid
stateDiagram-v2
direction LR
[*] –> 退款申请待处理
退款申请待处理 –> 售后关闭: 用户主动取消
退款申请待处理 –> 拒绝退款: 商家审核
拒绝退款 –> 售后关闭: 买家取消或重新发起
退款申请待处理 –> 同意退款: 商家审核
同意退款 –> 买家已退货待确认收货: 买家填写退货信息
买家已退货待确认收货 –> 拒绝收货待买家处理: 卖家拒绝收货
拒绝收货待买家处理 –> 售后关闭
买家已退货待确认收货 –> 退款处理中: 卖家同意退款
退款处理中 –> 退款成功
退款成功 –> [*]
售后关闭 –> [*]
“`

## 流程参考

![下单流程参考](https://staticcdn1-5.umiwi.com/pcebook/online/img/202006/0315911786494380892169100078383031748605.jpg?x-oss-process=image/resize,w_1512,m_lfit)

## 订单创建流程

## 结算流程

### 结算规则

1. 一口价结算
2. 卡券
3. 积分
4. 兑换卡

### order 订单表字段

| 名称 | 字段 | 描述 |
|———-|————————-|—————————————–|
| appId | appId | appId |
| 用户Id | userId | – |
| 订单号 | orderNo | 订单号唯一 |
| 订单状态描述符 | orderStatusCode | 默认 user_created |
| 支付状态 | payStatus | 0 未支付 1已支付 |
| 支付方式 | payCode | 支付方式 默认为 null |
| 商品总价 | goodsAmount | 商品总价 = 商品数量*商品标价 |
| 应付金额 | payableAmount | – |
| 实收金额 | receivableAmount | – |
| 实收积分 | payablePoint | 积分支付字段 |
| 订单实际销售金额 | orderAmount | 订单实际销售金额(优惠后) 不包含运费 |
| 订单总优惠金额 | orderDiscountAmount | 订单总优惠金额 = 活动扣减+积分扣减+卡券扣减+礼品卡-改价金额 |
| 订单类型 | orderType | 默认 0 正常订单 1 预售订单(未实现) |
| 货品重量 | weight | 重量 |
| 支付时间 | payTime | 不能存在为null |
| 确认收货时间 | confirmTime | 不能存在为null |
| 预计发货时间 | guaranteeDeliverTime | ??? |
| 订单过期时间 | expirationTime | 订单支付有效期 |
| 发货时间 | deliverTime | – |
| 订单完成时间 | completeTime | – |
| 买家订单备注 | memo | – |
| 卖家备注 | remark | – |
| 下单ip | clientIp | – |
| 订单来源 | source | – |
| 父订单 | parentNo | 预售单用 |
| 活动参数列表 | promotionList | 只是创建订单时使用的参数,未验证 |
| 卡券参数列表 | couponList | 使用卡券列表已经认证 |
| 元数据 | metadata | – |
| 导购Id | guideId | – |
| 商店Code | storeCode | – |
| 发货商店Code | shipStoreCode | – |
| 发货导购Id | shipGuideId | – |
| 物流类型 | logisticsType | 无需物流 0,快递 1,自提 2 |
| 物流Id | logisticsId | – |
| 运费 | costFreight | – |
| 活动扣减金额 | promotionDiscountAmount | – |
| 卡券扣减金额 | couponDiscountAmount | – |
| 礼品卡抵扣考呢 | giftCardDiscountAmount | – |
| 积分抵扣金额 | pointExchangeMoney | – |
| 订单改价金额 | changeAmount | – |
| 运费改价金额 | changeCostFreight | – |
| 售后状态 | serveStatus | 售后进行中 serving,当前无售后 noserving,全退款 close |
| 取消订单原因 | cancelMemo | – |
| 是否发货 | isShipped | – |
| 使用积分数 | point | – |
| 订单模式参数 | orderModeConfig | 默认为null |
| 订单创建时间 | createTime | – |
| 订单展示时间 | displayTime | – |
| 平台Id | platformId | 默认”” |
| 业务code | bizCode | 默认 default, 抽签 drawLots, 礼品卡 giftCard |

### order_item 订单商品表

| 名称 | 字段 | 描述 |
|———|————————-|———————————————————————————————————————————————————————-|
| 主键 | id | |
| appId | appId | |
| 商品信息 | goodsInfo | goods sku 镜像参数 |
| 订单号 | orderNo | |
| 支付分摊金额 | payableAmount | 分摊后的支付金额 |
| 购买数量 | count | |
| 卡券扣减金额 | couponDiscountAmount | |
| 积分扣减金额 | pointDiscountAmount | |
| 改价金额 | changeAmount | |
| 商品标价 | mktPrice | |
| 商品总价 | totalPrice | |
| 总扣减价格 | totalDiscountAmount | totalDiscountAmount = pointDiscountAmount + couponDiscountAmount+promotionDiscountAmount+ giftCardDiscountAmount-changeAmount;<br />优惠总金额 = 活动扣减+积分扣减+卡券扣减+礼品卡-改价金额 |
| 规格Id | skuId | |
| 商品Id | goodsId | |
| 活动扣减金额 | promotionDiscountAmount | |
| 礼品卡扣减金额 | giftCardDiscountAmount |


CyanProbe , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:2022-2024商城业务技术总结
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址