mall:初始化 trade 表结构

This commit is contained in:
YunaiV 2022-08-01 00:53:16 +08:00
parent 2b71a1588c
commit 96e2a27d07
14 changed files with 777 additions and 7 deletions

View File

@ -29,10 +29,6 @@
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-biz-operatelog</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-biz-weixin</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-biz-tenant</artifactId>

View File

@ -41,11 +41,11 @@ public class ProductCommentDO extends BaseDO {
*/
private Long spuId;
/**
* 订单项编号
* 交易订单项编号
*
* 关联 OrderItemDO id 编号
*/
private Long orderItemId;
private Long tradeOrderItemId;
/**
* 用户编号

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -23,6 +23,43 @@
<artifactId>yudao-module-trade-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-product-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 业务组件 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-biz-operatelog</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-biz-tenant</artifactId>
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-excel</artifactId>
</dependency>
<!-- DB 相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-mybatis</artifactId>
</dependency>
<!-- Test 测试相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -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
}

View File

@ -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;
}

View File

@ -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") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 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 芋艿这块还要结合营销和价格计算在去优化下
}

View File

@ -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 推广员使用的推销卡号
}

View File

@ -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<String> 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_numberorder_amountflow_trade_noout_refund_nopay_typereturn_money_stsrefund_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
}

View File

@ -31,7 +31,7 @@ public class AddressDO extends BaseDO {
/**
* 收件人名称
*/
private String receiver;
private String name;
/**
* 手机号
*/