From 00863fdbac44befc1915e64d1065120d88500f23 Mon Sep 17 00:00:00 2001
From: YunaiV <zhijiantianya@gmail.com>
Date: Fri, 12 Aug 2022 00:04:05 +0800
Subject: [PATCH] =?UTF-8?q?mall=EF=BC=9A=E8=B0=83=E6=95=B4=20trade=20?=
 =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=9A=84=E8=AE=BE=E8=AE=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../dal/dataobject/order/TradeOrderDO.java    | 67 +++++++++-------
 .../dataobject/order/TradeOrderItemDO.java    | 78 +++++++++++--------
 2 files changed, 85 insertions(+), 60 deletions(-)

diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java
index 38cc67a48..ae2cfbc7b 100644
--- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java
+++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java
@@ -109,26 +109,43 @@ public class TradeOrderDO extends BaseDO {
     private Date payTime;
 
     // ========== 价格 + 支付基本信息 ==========
+    // 价格文档 - 淘宝:https://open.taobao.com/docV3.htm?docId=108471&docType=1
+
+//  TODO  promotion_details(订单优惠信息明细,商品和订单级优惠一般都在里面)
+
     /**
-     * 购买(商品)总金额,单位:分
+     * 商品原价(总),单位:分
+     *
+     * 基于 {@link TradeOrderItemDO#getTotalOriginalPrice()} 求和
      */
-    private Integer buyPrice; // niu - goods_money;
+    private Integer skuOriginalPrice; // niu - goods_money;
+    /**
+     * 商品优惠(总),单位:分
+     *
+     * 基于 {@link TradeOrderItemDO#getTotalPromotionPrice()} 求和
+     */
+    private Integer skuPromotionPrice;
+    /**
+     * 订单优惠(总),单位:分
+     *
+     * 例如说:满减折扣;不包括优惠劵、商品优惠
+     */
+    private Integer orderPromotionPrice; // niu - promotion_money;taobao - discount_fee(主订单优惠)
     /**
      * 运费金额,单位:分
      */
-    private Integer deliveryPrice; // niu - delivery_money;
+    private Integer deliveryPrice; // niu - delivery_money;taobao - post_fee(订单邮费)
+    // TODO 芋艿:taobao 的:trade.adjust_fee/order.adjust_fee(调整金额,如:卖家手动修改订单价格,官方数据修复等等)
     /**
-     * 最终金额,单位:分
+     * 应付金额(总),单位:分
      *
-     * presentPrice = buyPrice + deliveryPrice -  couponPrice - integralPrice - marketPrice
+     * = {@link #skuOriginalPrice}
+     * + {@link #deliveryPrice}
+     * - {@link #skuPromotionPrice}
+     * - {@link #orderPromotionPrice}
+     * - {@link #couponPrice}
      */
-    private Integer presentPrice; // niu - order_money;
-    /**
-     * 实际已支付金额,单位:分
-     *
-     * 初始时,金额为 0 。等到支付成功后,会进行更新。
-     */
-    private Integer payPrice; // niu - pay_money;
+    private Integer payPrice; // niu - pay_money;taobao - payment(主订单实付金额) | trade.total_fee(主订单应付金额,参考使用);
     /**
      * 支付订单编号
      *
@@ -137,8 +154,10 @@ public class TradeOrderDO extends BaseDO {
     private Long payOrderId;
     /**
      * 支付成功的支付渠道
+     *
+     * 对应 PayChannelEnum 枚举
      */
-    private Integer payType;
+    private Integer payChannel;
 
     // ========== 收件 + 物流基本信息 ==========
     /**
@@ -226,20 +245,14 @@ public class TradeOrderDO extends BaseDO {
      * 优惠劵减免金额,单位:分
      */
     private Integer couponPrice; // niu - coupon_money;
-    /**
-     * 营销减免金额,单位:分
-     *
-     * 例如说:满减折扣
-     */
-    private Integer marketPrice; // niu - promotion_money;
-    /**
-     * 积分抵扣的金额,单位:分
-     */
-    private Integer integralPrice;
-    /**
-     * 使用的积分
-     */
-    private Integer useIntegral;
+//    /**
+//     * 积分抵扣的金额,单位:分
+//     */
+//    private Integer integralPrice;
+//    /**
+//     * 使用的积分
+//     */
+//    private Integer useIntegral;
 
     // TODO ========== 待定字段:yv =========
     // TODO cart_id:购物车 id
diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderItemDO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderItemDO.java
index 81961928e..5796e2916 100644
--- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderItemDO.java
+++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderItemDO.java
@@ -41,12 +41,18 @@ public class TradeOrderItemDO extends BaseDO {
     private Long orderId;
 
     // ========== 商品基本信息 ==========
+    /**
+     * 商品 SPU 编号
+     *
+     * 关联 ProductSkuDO 的 spuId 编号
+     */
+    private Long spuId;
     /**
      * 商品 SKU 编号
      *
      * 关联 ProductSkuDO 的 id 编号
      */
-    private Integer skuId;
+    private Long skuId;
     /**
      * 规格值数组,JSON 格式
      */
@@ -74,46 +80,51 @@ public class TradeOrderItemDO extends BaseDO {
 
     // ========== 价格 + 支付基本信息 ==========
     /**
-     * 购买单价,单位:分
+     * 商品原价(单),单位:分
      *
      * 对应 ProductSkuDO 的 price 字段
      */
-    private Integer buyPrice; // like - original_price;niu - costPrice
+    private Integer originalPrice; // like - original_price;niu - costPrice
     /**
-     * 最终单价,单位:分。
-     */
-    private Integer presentPrice; // like - goods_price;niu - price
-    /**
-     * 购买总金额,单位:分
-     */
-    private Integer buyTotal; // like - total_price;niu - 暂无
-    /**
-     * 最终总金额,单位:分。
+     * 商品原价(总),单位:分
      *
-     * 注意,presentPrice * count 不一定等于 presentTotal 。
-     * 因为,存在无法整除的情况。
-     * 举个例子,presentPrice = 8.33 ,stock = 3 的情况,presentTotal 有可能是 24.99 ,也可能是 25 。
-     * 所以,需要存储一个该字段。
+     * = {@link #originalPrice} * {@link #count}
      */
-    private Integer presentTotal; // like -  total_pay_price;niu - goods_money
+    private Integer totalOriginalPrice; // like - total_price;niu - 暂无
+    /**
+     * 商品级优惠(总),单位:分
+     *
+     * 例如说“限时折扣”:商品原价的 8 折;商品原价的减 50 元
+     */
+    private Integer totalPromotionPrice; // taobao - order.discount_fee(子订单商品优惠)
+    /**
+     * 最终购买金额(单),单位:分。
+     *
+     * = {@link #totalPresentPrice} / {@link #count}
+     */
+    private Integer presentPrice;
+    /**
+     * 最终购买金额(总),单位:分。
+     *
+     * = {@link #totalOriginalPrice}
+     * - {@link #totalPromotionPrice}
+     */
+    private Integer totalPresentPrice; // like -  total_pay_price;niu - goods_money; taobao - order.payment(子订单实付金额,不算主订单分摊金额) | order.total_fee(子订单应付金额,参考使用)
+    // TODO 芋艿:part_mjz_discount(子订单分摊金额);本质上,totalOriginalPrice - totalPayPrice
+    /**
+     * 应付金额(总),单位:分
+     */
+    private Integer totalPayPrice; // taobao - divide_order_fee (分摊后子订单实付金额);
 
     // ========== 营销基本信息 ==========
-    /**
-     * 优惠劵满减金额,单位:分
-     */
-    private Integer couponTotal; // like - discount_price;niu - coupon_money
-    /**
-     * 营销减免金额,单位:分
-     */
-    private Integer marketTotal; // like - discount_price;niu - promotion_money
-    /**
-     * 积分抵扣的金额,单位:分
-     */
-    private Integer integralTotal; // like - integral_price;niu - point_money
-    /**
-     * 使用的积分
-     */
-    private Integer useIntegral; // niu - use_point
+//    /**
+//     * 积分抵扣的金额,单位:分
+//     */
+//    private Integer integralTotal; // like - integral_price;niu - point_money
+//    /**
+//     * 使用的积分
+//     */
+//    private Integer useIntegral; // niu - use_point
 
     // ========== 退款基本信息 ==========
     /**
@@ -193,5 +204,6 @@ public class TradeOrderItemDO extends BaseDO {
     // TODO refund_status '退款状态'
     // TODO refund_type '退款状态'
     // TODO 一堆退款字段
+
 }