diff --git a/yudao-module-mall/yudao-module-product-biz/pom.xml b/yudao-module-mall/yudao-module-product-biz/pom.xml
index e4ffde3170..bb9a36f943 100644
--- a/yudao-module-mall/yudao-module-product-biz/pom.xml
+++ b/yudao-module-mall/yudao-module-product-biz/pom.xml
@@ -29,10 +29,6 @@
cn.iocoder.boot
yudao-spring-boot-starter-biz-operatelog
-
- cn.iocoder.boot
- yudao-spring-boot-starter-biz-weixin
-
cn.iocoder.boot
yudao-spring-boot-starter-biz-tenant
diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/comment/ProductCommentDO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/comment/ProductCommentDO.java
index cd7d81aece..88c57f5797 100644
--- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/comment/ProductCommentDO.java
+++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/comment/ProductCommentDO.java
@@ -41,11 +41,11 @@ public class ProductCommentDO extends BaseDO {
*/
private Long spuId;
/**
- * 订单项编号
+ * 交易订单项编号
*
* 关联 OrderItemDO 的 id 编号
*/
- private Long orderItemId;
+ private Long tradeOrderItemId;
/**
* 用户编号
diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/spu/ProductSpuDO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/spu/ProductSpuDO.java
index 74b41d1eae..f9863f0f00 100755
--- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/spu/ProductSpuDO.java
+++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/spu/ProductSpuDO.java
@@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.product.dal.dataobject.brand.ProductBrandDO;
import cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO;
import cn.iocoder.yudao.module.product.dal.dataobject.delivery.DeliveryTemplateDO;
+import cn.iocoder.yudao.module.product.dal.dataobject.shop.ShopDO;
import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
import cn.iocoder.yudao.module.product.enums.delivery.DeliveryModeEnum;
import com.baomidou.mybatisplus.annotation.KeySequence;
diff --git a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderCloseTypeEnum.java b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderCloseTypeEnum.java
new file mode 100644
index 0000000000..4fdaf92981
--- /dev/null
+++ b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderCloseTypeEnum.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.trade.enums.order;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * 交易订单 - 关闭类型
+ *
+ * @author Sin
+ */
+@RequiredArgsConstructor
+@Getter
+public enum TradeOrderCloseTypeEnum {
+
+ PAY_TIMEOUT(10, "超时未支付"),
+ REFUND_CLOSE(20, "退款关闭"),
+ MEMBER_CANCEL(30, "买家取消"),
+ PAY_ON_DELIVERY(40, "已通过货到付款交易"),;
+
+ /**
+ * 关闭类型
+ */
+ private final Integer type;
+ /**
+ * 关闭类型名
+ */
+ private final String name;
+
+}
diff --git a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderStatusEnum.java b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderStatusEnum.java
new file mode 100644
index 0000000000..cd777e1248
--- /dev/null
+++ b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderStatusEnum.java
@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.trade.enums.order;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * 交易订单 - 状态
+ *
+ * @author Sin
+ */
+@RequiredArgsConstructor
+@Getter
+public enum TradeOrderStatusEnum {
+
+ WAITING_PAYMENT(10, "待付款"),
+ WAIT_SHIPMENT(20, "待发货"),
+ ALREADY_SHIPMENT(30, "待收货"),
+ WAITING_COMMENT(40, "待评价"),
+ COMPLETED(50, "成功"),
+ CLOSED(60, "失败");
+
+ /**
+ * 状态值
+ */
+ private final Integer status;
+ /**
+ * 状态名
+ */
+ private final String name;
+
+}
diff --git a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/refund/TradeRefundStatusEnum.java b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/refund/TradeRefundStatusEnum.java
new file mode 100644
index 0000000000..b272ac9831
--- /dev/null
+++ b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/refund/TradeRefundStatusEnum.java
@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.trade.enums.refund;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * 交易退款 - 状态
+ *
+ * @author Sin
+ */
+@RequiredArgsConstructor
+@Getter
+public enum TradeRefundStatusEnum {
+
+ NONE(0, "未退款"),
+ AUDIT(10, "审核中"),
+ APPROVE(30, "已通过"),
+ REJECT(40, "不通过"),;
+
+ /**
+ * 状态值
+ */
+ private final Integer value;
+ /**
+ * 状态名
+ */
+ private final String name;
+
+}
diff --git a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/refund/TradeRefundTypeEnum.java b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/refund/TradeRefundTypeEnum.java
new file mode 100644
index 0000000000..f74b39bbae
--- /dev/null
+++ b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/refund/TradeRefundTypeEnum.java
@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.module.trade.enums.refund;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * 交易退款 - 申请类型
+ *
+ * @author Sin
+ */
+@RequiredArgsConstructor
+@Getter
+public enum TradeRefundTypeEnum {
+
+ REFUND(10, "退款"),
+ RETURN_AND_REFUND(20, "退货退款");
+
+ /**
+ * 状态值
+ */
+ private final Integer type;
+ /**
+ * 状态名
+ */
+ private final String name;
+
+}
diff --git a/yudao-module-mall/yudao-module-trade-biz/pom.xml b/yudao-module-mall/yudao-module-trade-biz/pom.xml
index 282f5c9969..ee95393a97 100644
--- a/yudao-module-mall/yudao-module-trade-biz/pom.xml
+++ b/yudao-module-mall/yudao-module-trade-biz/pom.xml
@@ -23,6 +23,43 @@
yudao-module-trade-api
${revision}
+
+ cn.iocoder.boot
+ yudao-module-product-api
+ ${revision}
+
+
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-biz-operatelog
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-biz-tenant
+
+
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-web
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-excel
+
+
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-mybatis
+
+
+
+
+ cn.iocoder.boot
+ yudao-spring-boot-starter-test
+
diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/cart/CartItemDO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/cart/CartItemDO.java
new file mode 100644
index 0000000000..7f49a968e5
--- /dev/null
+++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/cart/CartItemDO.java
@@ -0,0 +1,90 @@
+package cn.iocoder.yudao.module.trade.dal.dataobject.cart;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * 购物车的商品信息 DO
+ */
+@TableName("trade_cart_item")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+public class CartItemDO extends BaseDO {
+
+ // ========= 基础字段 BEGIN =========
+
+ /**
+ * 编号,唯一自增
+ */
+ private Long id;
+ /**
+ * 是否选中
+ */
+ private Boolean selected;
+ /**
+ * 购物时间
+ */
+ private Date buyTime; // basket_date
+
+ // ========= 基础字段 END =========
+
+ // ========= 买家信息 BEGIN =========
+
+// /**
+// * 店铺编号
+// *
+// * 关联 {@link ShopDO#getId()} TODO 芋艿:多店铺,暂不考虑
+// */
+// private Long shopId;
+ /**
+ * 用户编号
+ *
+ * 关联 MemberUserDO 的 id 编号
+ */
+ private Long userId;
+
+ // ========= 买家信息 END =========
+
+ // ========= 商品信息 BEGIN =========
+
+ /**
+ * 商品 SPU 编号
+ *
+ * 关联 ProductSpuDO 的 id 编号
+ */
+ private Long spuId;
+ /**
+ * 商品 SKU 编号
+ *
+ * 关联 ProductSkuDO 的 id 编号
+ */
+ private Long skuId;
+ /**
+ * 商品购买数量
+ */
+ private Integer stock;
+
+ // ========= 商品信息 END =========
+
+ // ========= 优惠信息 BEGIN =========
+
+// /**
+// * 商品营销活动编号
+// */
+// private Long activityId; // discount_id
+// /**
+// * 商品营销活动类型
+// */
+// private Integer activityType;
+
+ // ========= 优惠信息 END =========
+
+ // TODO 芋艿:distribution_card_no
+
+}
diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/OrderPreferentialDO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/OrderPreferentialDO.java
new file mode 100644
index 0000000000..a5d6cd9c58
--- /dev/null
+++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/OrderPreferentialDO.java
@@ -0,0 +1,49 @@
+package cn.iocoder.yudao.module.trade.dal.dataobject.order;
+
+/**
+ * 订单优惠明细
+ *
+ * 可参考 https://jos.jd.com/apilist?apiGroupId=55&apiId=16757&apiName=jingdong.pop.order.coupondetail
+ */
+// TODO 芋艿 后续在完善
+@Deprecated
+public class OrderPreferentialDO {
+
+ /**
+ * 编号
+ */
+ private Integer id;
+ /**
+ * 类型
+ *
+ * 1 - 促销活动
+ * 2 - 优惠劵
+ */
+ private Integer type;
+ // TODO 芋艿 优惠劵编号 or 促销活动编号
+ /**
+ * 订单编号
+ */
+ private Integer orderId;
+ /**
+ * 商品 SPU 编号
+ */
+ private Integer spuId;
+ /**
+ * 商品 SKU 编号
+ */
+ private Integer skuId;
+ /**
+ * 商品数量
+ */
+ private Integer quantity;
+ /**
+ * 传入时的价格
+ */
+ private Integer originTotal;
+ /**
+ * 总优惠价格
+ */
+ private Integer discountTotal;
+
+}
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
new file mode 100644
index 0000000000..72db0bbc5f
--- /dev/null
+++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java
@@ -0,0 +1,202 @@
+package cn.iocoder.yudao.module.trade.dal.dataobject.order;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import cn.iocoder.yudao.module.product.enums.delivery.DeliveryModeEnum;
+import cn.iocoder.yudao.module.trade.enums.order.TradeOrderCloseTypeEnum;
+import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum;
+import cn.iocoder.yudao.module.trade.enums.refund.TradeRefundStatusEnum;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.util.Date;
+
+/**
+ * 交易订单 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("trade_order")
+@KeySequence("trade_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TradeOrderDO extends BaseDO {
+
+ // ========== 订单基本信息 ==========
+ /**
+ * 订单编号,主键自增
+ */
+ private Integer id;
+ /**
+ * 订单流水号
+ *
+ * 例如说,1146347329394184195
+ */
+ private String sn;
+ // TODO 芋艿:order_type 订单类型
+// /**
+// * 店铺编号
+// *
+// * 关联 {@link ShopDO#getId()} TODO 芋艿:多店铺,暂不考虑
+// */
+// private Long shopId;
+ /**
+ * 用户编号
+ *
+ * 关联 MemberUserDO 的 id 编号
+ */
+ private Long userId;
+ /**
+ * 订单状态
+ *
+ * 枚举 {@link TradeOrderStatusEnum}
+ */
+ private Integer status;
+ /**
+ * 关闭类型
+ *
+ * 枚举 {@link TradeOrderCloseTypeEnum}
+ */
+ private Integer closeType;
+ // TODO 芋艿:要不要存储 prod_name 购买的商品名门?
+ /**
+ * 购买的商品数量
+ */
+ private Integer productCount;
+ /**
+ * 备注
+ */
+ private String remark;
+ /**
+ * 订单结束时间
+ *
+ * 即交易订单状态变成 {@link TradeOrderStatusEnum#COMPLETED} 或 {@link TradeOrderStatusEnum#CLOSED} 的时间
+ */
+ private Date endTime;
+
+ // ========== 价格 + 支付基本信息 ==========
+ /**
+ * 是否已支付
+ *
+ * true - 已经支付过
+ * false - 没有支付过
+ */
+ private Boolean payed;
+ /**
+ * 付款时间
+ */
+ private Date payTime;
+
+ // TODO 芋艿:delete_status 用户订单删除状态;0 - 未删除;1 - 回收站;2 - 永久删除
+
+ // ========== 价格 + 支付基本信息 ==========
+ /**
+ * 购买(商品)总金额,单位:分
+ */
+ private Integer buyPrice; // total
+ /**
+ * 优惠总金额,单位:分。
+ */
+ private Integer discountPrice; // reduce_amount
+ /**
+ * 物流金额 (分)
+ */
+ private Integer logisticsPrice; // freight_amount
+ /**
+ * 最终金额,单位:分
+ *
+ * buyPrice + logisticsPrice - discountPrice = presentPrice
+ */
+ private Integer presentPrice; // actual_total
+ /**
+ * 实际已支付金额,单位:分
+ *
+ * 初始时,金额为 0 。等到支付成功后,会进行更新。
+ */
+ private Integer payPrice;
+ /**
+ * 退款金额,单位:分
+ *
+ * 注意,退款并不会影响 {@link #payPrice} 实际支付金额
+ * 也就说,一个订单最终产生多少金额的收入 = payPrice - refundPrice
+ */
+ @Deprecated
+ private Integer refundPrice;
+ /**
+ * 支付订单编号
+ *
+ * 对接 pay-module-biz 支付服务的支付订单编号,即 PayOrderDO 的 id 编号
+ */
+ private Long payOrderId;
+ /**
+ * 支付成功的支付渠道
+ */
+ private Integer payType;
+
+ // ========== 收件 + 物流基本信息 ==========
+ /**
+ * 配送方式
+ *
+ * 枚举 {@link DeliveryModeEnum}
+ */
+ private Integer deliveryMode;
+ /**
+ * 配置模板的编号
+ *
+ * 关联 DeliveryTemplateDO 的 id 编号
+ */
+ private Long deliveryTemplateId; // dvy_id
+ /**
+ * 物流公司单号
+ */
+ private String expressNo; // dvy_flow_id
+ /**
+ * 发货时间
+ */
+ private Date deliveryTime;
+ /**
+ * 收货时间
+ */
+ private Date receiveTime;
+ /**
+ * 收件人名称
+ */
+ private String receiverName;
+ /**
+ * 收件人手机
+ */
+ private String receiverMobile;
+ /**
+ * 收件人地区编号
+ */
+ private Integer receiverAreaId;
+ /**
+ * 收件人邮编
+ */
+ private Integer receiverPostCode;
+ /**
+ * 收件人详细地址
+ */
+ private String receiverDetailAddress;
+
+ // ========== 退款基本信息 ==========
+ /**
+ * 退款状态
+ *
+ * 枚举 {@link TradeRefundStatusEnum}
+ */
+ private Integer refundStatus;
+
+ // ========== 营销基本信息 ==========
+ /**
+ * 优惠劵编号
+ */
+ private Integer couponCardId;
+
+ // TODO 芋艿,这块还要结合营销和价格计算,在去优化下。
+
+}
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
new file mode 100644
index 0000000000..fd649b1f69
--- /dev/null
+++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderItemDO.java
@@ -0,0 +1,125 @@
+package cn.iocoder.yudao.module.trade.dal.dataobject.order;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 交易订单项 DO
+ *
+ * @author 芋道源码
+ */
+@TableName(value = "trade_order_item")
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class TradeOrderItemDO extends BaseDO {
+
+ // ========== 订单项基本信息 ==========
+ /**
+ * 编号
+ */
+ private Integer id;
+// /**
+// * 店铺编号
+// *
+// * 关联 {@link ShopDO#getId()} TODO 芋艿:多店铺,暂不考虑
+// */
+// private Long shopId;
+ /**
+ * 用户编号
+ *
+ * 关联 MemberUserDO 的 id 编号
+ */
+ private Long userId;
+ /**
+ * 订单编号
+ *
+ * 关联 {@link TradeOrderDO#getId()}
+ */
+ private Long orderId;
+
+ // ========== 商品基本信息 ==========
+ /**
+ * 商品 SPU 编号
+ *
+ * 关联 ProductSpuDO 的 id 编号
+ */
+ private Long spuId;
+ /**
+ * 商品 SKU 编号
+ *
+ * 关联 ProductSkuDO 的 id 编号
+ */
+ private Integer skuId;
+ /**
+ * 商品名称
+ */
+ private String name;
+ /**
+ * 商品图片
+ */
+ private String picUrl;
+ /**
+ * 购买数量
+ */
+ private Integer stock;
+ /**
+ * 是否评论
+ *
+ * false - 未评论
+ * true - 已评论
+ */
+ private Boolean commented;
+
+ // ========== 价格 + 支付基本信息 ==========
+ /**
+ * 原始单价,单位:分。
+ */
+ private Integer originPrice; // price
+ /**
+ * 购买单价,单位:分
+ */
+ private Integer buyPrice;
+ /**
+ * 最终单价,单位:分。
+ */
+ private Integer presentPrice;
+ /**
+ * 购买总金额,单位:分
+ *
+ * 用途类似 {@link #presentTotal}
+ */
+ private Integer buyTotal;
+ /**
+ * 优惠总金额,单位:分。
+ */
+ private Integer discountTotal;
+ /**
+ * 最终总金额,单位:分。
+ *
+ * 注意,presentPrice * stock 不一定等于 presentTotal 。
+ * 因为,存在无法整除的情况。
+ * 举个例子,presentPrice = 8.33 ,stock = 3 的情况,presentTotal 有可能是 24.99 ,也可能是 25 。
+ * 所以,需要存储一个该字段。
+ */
+ private Integer presentTotal; // product_total_amount
+ // 如上字段,举个例子:
+ // 假设购买三个,即 stock = 3 。
+ // originPrice = 15
+ // 使用限时折扣(单品优惠)8 折,buyPrice = 12
+ // 开始算总的价格
+ // buyTotal = buyPrice * stock = 12 * 3 = 36
+ // discountTotal ,假设有满减送(分组优惠)满 20 减 10 ,并且使用优惠劵满 1.01 减 1 ,则 discountTotal = 10 + 1 = 11
+ // presentTotal = buyTotal - discountTotal = 24 - 11 = 13
+ // 最终 presentPrice = presentTotal / stock = 13 / 3 = 4.33
+ /**
+ * 退款总金额,单位:分
+ */
+ private Integer refundTotal;
+
+ // TODO 芋艿:basket_date 加入购物车时间;
+ // TODO 芋艿:distribution_card_no 推广员使用的推销卡号
+}
diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/refund/TradeRefundDO.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/refund/TradeRefundDO.java
new file mode 100644
index 0000000000..ce53e755d1
--- /dev/null
+++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/refund/TradeRefundDO.java
@@ -0,0 +1,154 @@
+package cn.iocoder.yudao.module.trade.dal.dataobject.refund;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
+import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
+import cn.iocoder.yudao.module.trade.enums.refund.TradeRefundStatusEnum;
+import cn.iocoder.yudao.module.trade.enums.refund.TradeRefundTypeEnum;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 交易退款,用于处理 {@link TradeOrderDO} 交易订单的退货换流程
+ */
+// TODO 芋艿:需要调整下每个字段的命名
+@TableName(value = "trade_refund")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+public class TradeRefundDO extends BaseDO {
+
+ /**
+ * 交易退款编号,主键自增
+ */
+ @Deprecated
+ private Long id;
+ /**
+ * 退款流水号
+ *
+ * 例如说,1146347329394184195
+ */
+ private String sn;
+ /**
+ * 退款状态
+ *
+ * 枚举 {@link TradeRefundStatusEnum}
+ */
+ private Integer status;
+// /**
+// * 店铺编号
+// *
+// * 关联 {@link ShopDO#getId()} TODO 芋艿:多店铺,暂不考虑
+// */
+// private Long shopId;
+ /**
+ * 用户编号
+ *
+ * 关联 MemberUserDO 的 id 编号
+ */
+ private Long userId;
+ /**
+ * 用户手机
+ */
+ private String userMobile;
+ /**
+ * 申请类型
+ *
+ * 枚举 {@link TradeRefundTypeEnum}
+ */
+ private Integer type;
+ /**
+ * 用户售后说明
+ */
+ private String reasonMemo; // buyer_msg
+ /**
+ * 用户售后凭证图片的地址数组
+ *
+ * 数组,以逗号分隔
+ */
+ @TableField(typeHandler = JacksonTypeHandler.class)
+ private List reasonPicUrls; // photo_files
+
+ // ========== 商家相关 ==========
+
+ /**
+ * 商家处理时间
+ */
+ private Date handleTime; // handel_time
+ /**
+ * 商家拒绝理由
+ */
+ private String rejectReasonMemo; // seller_msg
+
+ // ========== 交易订单相关 ==========
+ /**
+ * 交易订单编号
+ *
+ * 外键 {@link TradeOrderDO#getId()}
+ */
+ private Long tradeOrderId;
+ /**
+ * 交易订单项编号
+ *
+ * 关联 {@link TradeOrderItemDO#getId()}
+ * 如果全部退款,则该值设置为 0 即可
+ */
+ private Long tradeOrderItemId;
+ /**
+ * 商品 SKU 编号
+ */
+ @Deprecated
+ private Integer skuId;
+ /**
+ * 退货商品数量
+ */
+ private Integer stock; // goods_num
+
+ // ========== 退款相关 ==========
+ /**
+ * 退款金额,单位:分。
+ */
+ private Integer refundPrice; // refund_amount
+ /**
+ * 支付退款编号
+ *
+ * 对接 pay-module-biz 支付服务的退款订单编号,即 PayRefundDO 的 id 编号
+ */
+ private Long payRefundId;
+ // TODO 芋艿:看看是否有必要冗余,order_number、order_amount、flow_trade_no、out_refund_no、pay_type、return_money_sts、refund_time
+
+ // ========== 退货相关 ==========
+ /**
+ * 退货物流公司编号
+ *
+ * 关联 ExpressDO 的 id 编号
+ */
+ private Long returnExpressId; // express_name
+ /**
+ * 退货物流单号
+ */
+ private String returnExpressNo; // express_no
+ /**
+ * 退货时间
+ */
+ private Date returnDate; // ship_time
+
+ // ========== 收获相关 ==========
+
+ /**
+ * 收获备注
+ */
+ private String receiveMemo; // receive_message
+ /**
+ * 收货时间
+ */
+ private Date receiveDate; // receive_time
+
+}
diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/address/AddressDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/address/AddressDO.java
index 97abb113fc..d470e8f908 100644
--- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/address/AddressDO.java
+++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/address/AddressDO.java
@@ -31,7 +31,7 @@ public class AddressDO extends BaseDO {
/**
* 收件人名称
*/
- private String receiver;
+ private String name;
/**
* 手机号
*/