package cn.iocoder.yudao.module.trade.dal.dataobject.aftersale; 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.aftersale.AfterSaleStatusEnum; import cn.iocoder.yudao.module.trade.enums.aftersale.AfterSaleTypeEnum; import cn.iocoder.yudao.module.trade.enums.aftersale.AfterSaleWayEnum; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.handlers.Jackson3TypeHandler; import lombok.Data; import java.time.LocalDateTime; import java.util.List; /** * 售后订单,用于处理 {@link TradeOrderDO} 交易订单的退款退货流程 * * @author 芋道源码 */ @TableName(value = "trade_after_sale", autoResultMap = true) @KeySequence("trade_after_sale_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data public class AfterSaleDO extends BaseDO { /** * 售后编号,主键自增 */ private Long id; /** * 售后单号 * * 例如说,1146347329394184195 */ private String no; /** * 退款状态 * * 枚举 {@link AfterSaleStatusEnum} */ private Integer status; /** * 售后方式 * * 枚举 {@link AfterSaleWayEnum} */ private Integer way; /** * 售后类型 * * 枚举 {@link AfterSaleTypeEnum} */ private Integer type; /** * 用户编号 * * 关联 MemberUserDO 的 id 编号 */ private Long userId; /** * 申请原因 * * type = 退款,对应 trade_after_sale_refund_reason 类型 * type = 退货退款,对应 trade_after_sale_refund_and_return_reason 类型 */ private String applyReason; /** * 补充描述 */ private String applyDescription; /** * 补充凭证图片 * * 数组,以逗号分隔 */ @TableField(typeHandler = Jackson3TypeHandler.class) private List applyPicUrls; // ========== 交易订单相关 ========== /** * 交易订单编号 * * 关联 {@link TradeOrderDO#getId()} */ private Long orderId; /** * 订单流水号 * * 冗余 {@link TradeOrderDO#getNo()} */ private String orderNo; /** * 交易订单项编号 * * 关联 {@link TradeOrderItemDO#getId()} */ private Long orderItemId; /** * 商品 SPU 编号 * * 关联 ProductSpuDO 的 id 字段 * 冗余 {@link TradeOrderItemDO#getSpuId()} */ private Long spuId; /** * 商品 SPU 名称 * * 关联 ProductSkuDO 的 name 字段 * 冗余 {@link TradeOrderItemDO#getSpuName()} */ private String spuName; /** * 商品 SKU 编号 * * 关联 ProductSkuDO 的编号 */ private Long skuId; /** * 属性数组,JSON 格式 * * 冗余 {@link TradeOrderItemDO#getProperties()} */ @TableField(typeHandler = Jackson3TypeHandler.class) private List properties; /** * 商品图片 * * 冗余 {@link TradeOrderItemDO#getPicUrl()} */ private String picUrl; /** * 退货商品数量 */ private Integer count; // ========== 审批相关 ========== /** * 审批时间 */ private LocalDateTime auditTime; /** * 审批人 * * 关联 AdminUserDO 的 id 编号 */ private Long auditUserId; /** * 审批备注 * * 注意,只有审批不通过才会填写 */ private String auditReason; // ========== 退款相关 ========== /** * 退款金额,单位:分。 */ private Integer refundPrice; /** * 支付退款编号 * * 对接 pay-module-biz 支付服务的退款订单编号,即 PayRefundDO 的 id 编号 */ private Long payRefundId; /** * 退款时间 */ private LocalDateTime refundTime; // ========== 退货相关 ========== /** * 退货物流公司编号 * * 关联 LogisticsDO 的 id 编号 */ private Long logisticsId; /** * 退货物流单号 */ private String logisticsNo; /** * 退货时间 */ private LocalDateTime deliveryTime; /** * 收货时间 */ private LocalDateTime receiveTime; /** * 收货备注 * * 注意,只有拒绝收货才会填写 */ private String receiveReason; }