首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >『互联网架构』软件架构-解密电商系统-订单交易业务(74)

『互联网架构』软件架构-解密电商系统-订单交易业务(74)

作者头像
IT架构圈
发布2019-06-17 16:02:03
8600
发布2019-06-17 16:02:03
举报
文章被收录于专栏:IT架构圈IT架构圈

很多人都在淘宝购买过东西,基本得流程都是一致的。

(一)订单
  • 购物车

例如:jd分为自营和多家店铺的,它的购物车比较复杂些。 购物车如果保存在session中的话,用户量比较大的情况下,tomcat承受不住。比较合理的方式是保存在redis中,来一起说下redis保存的数据格式。 针对购物车结构

  1. CartGroup(一个店铺一个CartGroup)
  2. CartPkg(一个订单就是一个包裹)
  3. 一个订单里面就是一个List

购物车分两种,登录前购物车和登录后购物车

  1. 登录前是通过redis内部保存的,key=ip_类型(pc,ios,android)
  2. 登录后是通过用户的userid,key=userId
  3. 登录前到登录后他们两者通过redis进行对比,获取最新的合并结果。
  • 下单

买个索尼电视,佳能的相机,这是2个店铺,配送方式不同,仓库也不一样,每个商家的优惠力度也不一样,有打五折的,有打七折的。例如:苹果打5折,我买10个,地址是在郑州,配送方式是从武汉,武汉仓库只有9个苹果,但是河北那边有2个,长沙有3个。按照订单理论如果武汉有11个,买10个刚刚够你买。但是现在武汉只有9个,所以直接就给你发了武汉的9个,河北的1个,够你的10个,这个就是就近原则。但是这样有个问题退单怎么办,整体退单要退一起退,反之不要退。 设计到订单的拆分合并。 订单号生成?订单防重。只要保证分布式下不重复就可以

  1. redis incr 自增
  2. 时间戳+自增变量
  3. UUID
  • 电商订单的流程梳理

t_order 订单表

字段名

数据类型

是否主键

描述

id

int

订单编号。

account

String

账号

payType

varchar

付款方式

carry

varchar

运送方式

rebate

DECIMAL(9,2)

折扣

createdate

datetime

创建日期

remark

varchar

备注、支付宝的WIDsubject

status

String

init:未审核;pass:已审核;send:已发货;sign:已签收;cancel:已取消;file:已归档;finish:交易完成;

refundStatus

String

退款状态(直接借用了支付宝的退款状态)。WAITSELLERAGREE:等待卖家同意退款;WAITBUYERRETURNGOODS:卖家同意退款,等待买家退货;WAITSELLERCONFIRMGOODS:买家已退货,等待卖家收到退货;REFUND_SUCCESS:卖家收到退货,退款成功,交易关闭

paystatus

String

n:未支付;p:部分支付;y:全部支付

lowStocks

String

n:库存不足;y:库存充足。默认n

amount

Double

订单总金额

amountExchangeScore

Int

订单总兑换积分

fee

Double

运费总金额

ptotal

Double

商品总金额

quantity

Int

商品总数量

updateAmount

String

n:没有修改过;y:修改过;默认:n

expressCode

String

配送方式编码

expressName

String

配送方式名称

expressNo

String

快递运单号

expressCompanyName

String

快递公司名称

confirmSendProductRemark

String

确认发货备注

otherRequirement

String

客户的附加要求

closedComment

String

此订单的所有订单项对应的商品都进行了评论,则此值为y,表示此订单的评论功能已经关闭,默认为null,在订单状态为已发货后,则用户可以对订单进行评价。

score

Int

订单获赠的积分

t_orderdetail订单明细表

字段名

数据类型

是否主键

描述

ID

int

ID号

orderID

int

与t_order表的id字段关联

orderdetailID

String

订单项ID

productID

int

商品ID

giftID

String

商品赠品ID

productName

String

商品名称

price

money

价格

number

int

数量

total0

Double

总金额(数量*价格)

fee

Double

配送费

isComment

String

是否评价过。n:未评价,y:已评价;默认n

lowStocks

String

n:库存不足;y:库存充足。默认n

s

String

商品规格信息

t_orderpay 支付记录表

字段名

数据类型

是否主键

描述

id

int

自增

orderid

String

订单ID

paystatus

String

支付状态。y:支付成功,n:支付失败

payamount

Double

支付金额

createtime

String

支付时间

paymethod

String

支付方式

confirmdate

String

确认日期

confirmuser

String

确认人

remark

String

备注

tradeNo

String

支付宝交易号,以后用来发货

t_ordership 订单配送表

字段名

数据类型

是否主键

描述

id

int

自增

orderid

String

订单ID

shipname

String

收货人姓名

shipaddress

String

收货人详细地址

provinceCode

String

省份代码

province

String

省份

cityCode

String

城市代码

city

String

城市

areaCode

String

区域代码

area

String

区域

phone

String

手机

tel

String

座机

zip

String

邮编

sex

String

性别

remark

String

备注

t_orderlog订单日志表

字段名

数据类型

是否主键

描述

id

int

自增

orderid

String

订单ID

account

String

操作人

createdate

date

记录时间,默认是当前时间

content

String

日志内容

accountType

String

w:会员;m:后台管理人员;p:第三方支付系统异步通知

t_express快递配送表

字段名

描述

类型

数据类型

id

自增长

int

唯一

code

快递编码

String

三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)

name

快递名称

String

fee

物流费用

Double

order1

排序

Int

  • MQ实现最大特点:异步和解耦。(付款,订单状态,发布状态)

显示状态

订单状态

支付状态

发货状态

已付款

活动订单

已支付

未发货

已发货

活动订单

已支付

已发货

待自提

活动订单

已支付

自提点签收

已签收

活动订单

已支付

用户签收

已拒收

活动订单

已支付

用户拒收

配送成功

活动订单

已支付

配送成功

配送失败

活动订单

已支付

配送失败

交易成功

已完成

已支付

配送成功

交易失败

已完成

已支付

配送失败

取消中

取消中

已支付

未发货

已取消

订单取消

未发货

(二)统一配置文件神器-Disconf

百度disconf是一套完整的基于zookeeper的分布式配置统一解决方案。 一个分布式环境中,同类型的服务往往会部署很多实例。这些实例使用了一些配置,为了更好地维护这些配置就产生了配置管理服务。通过这个服务可以轻松地管理成千上百个服务实例的配置问题.

  • 官网介绍

https://github.com/knightliao/disconf 虽然3年没维护了,但是依然很给力

  • 文档

http://disconf.readthedocs.io/zh_CN/latest/

  • 介绍
  • disconf的模块架构图
  • 快速开始

这里直说pom里面的配置,具体看disconf文档写的更清楚

<dependency>    <groupId>com.baidu.disconf</groupId>    <artifactId>disconf-client</artifactId>    <version>2.6.36</version></dependency><dependency>    <groupId>org.apache.httpcomponents</groupId>    <artifactId>httpclient</artifactId>    <version>4.5.5</version></dependency><dependency>    <groupId>org.apache.httpcomponents</groupId>    <artifactId>httpcore</artifactId>    <version>4.4.6</version></dependency>

PS:订单交易的流程和在web开发中如果多项目通过统一配置文件来进行处理。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程坑太多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (一)订单
  • (二)统一配置文件神器-Disconf
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档