package com.ylx.massage.domain;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

@Data
@TableName("after_sale_order")
public class AfterSaleOrder implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /** 售后单号（唯一） */
    private String afterSaleNo;

    /** 原订单ID */
    private Long orderId;

    /** 原订单编号 */
    private String orderNo;

    /** 用户openId */
    private String openId;

    /**
     * 售后类型
     * 1退货 2换货 3:未收到货
     */
    private Integer afterSaleType;

    /**
     * 售后状态
     * 0待审核 1审核通过 2审核拒绝 3待买家退货 4待商家收货 5退款处理中 6售后完成
     */
    private Integer afterSaleStatus;

    /** 申请原因 */
    private String applyReason;

    /** 问题描述 */
    private String applyDesc;

    /** 凭证图片URL，多个逗号分隔（最多3张） */
    private String applyImages;

    /** 申请退款金额 */
    private Integer applyAmount;

    /** 实际退款金额 */
    private Integer actualRefundAmount;

    /**
     * 退款方式
     * 1原路退回 2退至余额
     */
    private Integer refundType;

    /** 审核人ID */
    private Long auditUserId;

    /** 审核时间 */
    private LocalDateTime auditTime;

    /** 审核备注（拒绝原因等） */
    private String auditRemark;

    /**
     * 拒绝原因
     * 1超过售后期限 2不符合售后条件 3凭证不足 4其他
     */
    private Integer rejectReason;

    /** 退款完成时间 */
    private LocalDateTime refundTime;

    /** 退款流水号（第三方） */
    private String refundNo;

    /** 换货新订单ID */
    private Long exchangeOrderId;

    /** 换货新订单编号 */
    private String exchangeOrderNo;

    /** 售后申请过期时间 */
    private LocalDateTime expireTime;

    /** 售后完成时间 */
    private LocalDateTime finishTime;

    /** 快递单号 */
    private String logisticsNo;

    /** 备注 */
    private String remark;

    /** 是否删除 0否 1是 */
    @TableLogic
    private Integer isDeleted;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
