整体实体类关系如下图:
Order,订单。一次下单,生成一条订单记录,即使多种商品。
字段较多,我们进行简单的切块。
/**
* 订单ID
*/
@TableId
private Long orderId;
/**
* 店铺id
*/
private Long shopId;
/**
* 订购流水号
*/
private String orderNumber;
/**
* 订单状态 1:待付款 2:待发货 3:待收货 4:待评价 5:成功 6 交易失败
*/
private Integer status;
/**
* 订购时间
*/
private Date createTime;
/**
* 订单更新时间
*/
private Date updateTime;
/**
* 付款时间
*/
private Date payTime;
/**
* 发货时间
*/
private Date dvyTime;
/**
* 完成时间
*/
private Date finallyTime;
/**
* 取消时间
*/
private Date cancelTime;
orderId :订单id,自增,没啥用。
orderNumber:订单编号例如:1060804015757070336 。通过雪花算法生成id。
shopId :店铺编号。
status:订单状态,交易主状态。交易会有较多分支状态,例如退款状态、物流状态等等状态。不同于分支状态,主状态控制整个订单的生命周期。
/**
* 产品名称,多个产品将会以逗号隔开
*/
private String prodName;
/**
* 总值
*/
private Double total;
/**
* 实际总值
*/
private Double actualTotal;
/**
* 订单商品总数
*/
private Integer productNums;
/**
* 优惠总额
*/
private Double reduceAmount;
/**
* 订购用户ID
*/
private String userId;
/**
* 订单备注
*/
private String remarks;
userId ,买家用户编号。
remarks ,买家购买备注。
/**
* 总值
*/
private Double total;
/**
* 实际总值
*/
private Double actualTotal;
/**
* 订单运费
*/
private Double freightAmount;
/**
* 优惠总额
*/
private Double reduceAmount;
total :商品总价。该字段通过 OrderItem的 price 求和计算。
freightAmount :运费总价。该字段通过 OrderItem的商品的运费价格求和计算。
reduceAmount:交易优惠金额。注意,Order 的
折扣活动,原价 100 元,折扣价 10 元。那么数据如下(我们会看到折扣活动跟着 商品走):
total = 100 ,reduceAmount = 10 ,actualTotal = 90 。
购买的商品使用优惠劵,在上面例子的基础上,优惠劵打 2 折。那么数据如下(我们会看到优惠劵跟着 Trade 走):
total = 100 ,reduceAmount = 82 ,actualTotal = 18 。
actualTotal:actualTotal = total + freightAmount - reduceAmount
/**
* 配送类型
*/
private String dvyType;
/**
* 配送方式ID
*/
private Long dvyId;
/**
* 物流单号
*/
private String dvyFlowId;
通过物流的id获取物流方式,提供给前端显示
public class UserAddrOrder implements Serializable {
/**
* ID
*/
@TableId
private Long addrOrderId;
/**
* 地址ID
*/
private Long addrId;
/**
* 用户ID
*/
private String userId;
/**
* 收货人
*/
private String receiver;
/**
* 省
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 区
*/
private String area;
/**
* 地址
*/
private String addr;
/**
* 邮编
*/
private String postCode;
/**
* 省ID
*/
private Long provinceId;
/**
* 城市ID
*/
private Long cityId;
/**
* 区域ID
*/
private Long areaId;
/**
* 手机
*/
private String mobile;
/**
* 建立时间
*/
private Date createTime;
/**
* 版本号
*/
private Integer version;
}
addrOrderId ,收货人的地址编号。receiver 等等,冗余交易的收货地址信息,避免买家修改收货人地址编号对应的地址信息。
public class OrderSettlement implements Serializable {
/**
* 支付结算单据ID
*/
@TableId
private Long settlementId;
/**
* 用户系统内部的订单号
*/
private String payNo;
/**
* 外部订单流水号
*/
private String bizPayNo;
/**
* 订单号
*/
private String orderNumber;
/**
* 支付方式 0 手动代付 1 微信支付 2 支付宝
*/
private Integer payType;
/**
* 支付金额
*/
private Double payAmount;
/**
* 用户ID
*/
private String userId;
/**
* 是否清算 0:否 1:是
*/
private Integer isClearing;
/**
* 创建时间
*/
private Date createTime;
/**
* 清算时间
*/
private Date clearingTime;
/**
* 支付状态
*/
private Integer payStatus;
/**
* 版本号
*/
private Integer version;
/**
* 支付方式名称
*/
private String payTypeName;
}
orderNumber :关联订单的订单号payNo: 支付时的支付订单号,根据雪花算法生成payAmount:实付金额。bizPayNo:外部交易编号。比如,如果支付方式是微信支付,就是财付通的交易单号。每个订单都会有多个商品,每个商品就是一个订单项。
/**
* 订单项ID
*/
@TableId(type = IdType.AUTO)
private Long orderItemId;
private Long shopId;
/**
* 订单orderNumber
*/
private String orderNumber;
/**
* 产品ID
*/
private Long prodId;
/**
* 产品SkuID
*/
private Long skuId;
/**
* 购物车产品个数
*/
private Integer prodCount;
/**
* 产品名称
*/
private String prodName;
/**
* sku名称
*/
private String skuName;
/**
* 产品主图片路径
*/
private String pic;
/**
* 产品价格
*/
private Double price;
/**
* 用户Id
*/
private String userId;
/**
* 商品总金额
*/
private Double productTotalAmount;
/**
* 购物时间
*/
private Date recTime;
/**
* 评论状态: 0 未评价 1 已评价
*/
private Integer commSts;
/**
* 推广员使用的推销卡号
*/
private String distributionCardNo;
/**
* 加入购物车的时间
*/
private Date basketDate;
orderNumber :订单编号,指向 Order.orderNumber 。prodId:商品idprodName ,商品标题。pic ,商品主图片地址。skuId ,商品 SKU 编号,指向 ItemSku.id 。skuName ,SKU的值,即:商品的规格。如:机身颜色:黑色;手机套餐:官方标配。num ,购买数量。