/*
 * Copyright (c) 2018-2999 广州亚米信息科技有限公司 All rights reserved.
 *
 * https://www.gz-yami.com/
 *
 * 未经允许，不可做商业用途！
 *
 * 版权所有，侵权必究！
 */

package com.yami.shop.delivery.comment.param;

import com.baomidou.mybatisplus.annotation.TableField;
import com.yami.shop.bean.model.OrderItem;
import com.yami.shop.bean.model.UserAddrOrder;
import com.yami.shop.delivery.comment.model.DeliveryOrder;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

@Data
public class OrderParam implements Serializable {
    private static final long serialVersionUID = 6222259729062826852L;
    /**
     * 订单ID
     */
    private Long orderId;

    /**
     * 店铺id
     */
    private Long shopId;

    /**
     * 产品名称,多个产品将会以逗号隔开
     */
    private String prodName;

    /**
     * 订购用户ID
     */
    private String userId;

    /**
     * 订购流水号
     */
    private String orderNumber;

    /**
     * 总值
     */
    private Double total;

    /**
     * 实际总值
     */
    private Double actualTotal;

    /**
     * 支付方式 1 微信支付 2 支付宝
     */
    private Integer payType;

    /**
     * 用户备注
     */
    private String remarks;

    /**
     * 卖家备注
     */
    private String shopRemarks;

    /**
     * 订单状态 参考com.yami.shop.bean.enums.OrderStatus
     */
    private Integer status;

    /**
     * 配送类型
     */
    private Integer dvyType;

    /**
     * 配送方式ID
     */
    private Long dvyId;

    /**
     * 物流单号
     */
    private String dvyFlowId;

    /**
     * 订单运费
     */
    private Double freightAmount;

    /**
     * 用户订单地址Id
     */
    private Long addrOrderId;

    /**
     * 订单商品总数
     */
    private Integer productNums;

    /**
     * 订购时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 订单更新时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 付款时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date payTime;

    /**
     * 发货时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date dvyTime;

    /**
     * 完成时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date finallyTime;


    /**
     * 取消时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date cancelTime;

    /**
     * 是否已经支付，1：已经支付过，0：，没有支付过
     */
    private Integer isPayed;

    /**
     * 用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除
     */
    private Integer deleteStatus;

    /**
     * 订单退款状态（1:申请退款 2:退款成功 3:部分退款成功 4:退款失败）
     */
    private Integer refundStatus;

    /**
     * 平台优惠总额
     */
    private Double platformAmount;

    /**
     * 优惠总额
     */
    private Double reduceAmount;

    /**
     * 订单类型参考orderType ,1团购订单 2秒杀订单,3积分订单
     */
    private Integer orderType;

    /**
     * 订单关闭原因 (1:超时未支付 2:退款关闭 4:买家取消 15:已通过货到付款交易)
     */
    private Integer closeType;

    /**
     * 店铺名称
     */
    @TableField(exist = false)
    private String shopName;

    @TableField(exist = false)
    private List<OrderItem> orderItems;

    /**
     * 用户订单地址
     */
    @TableField(exist = false)
    private UserAddrOrder userAddrOrder;

    /**
     * 退款订单编号
     */
    @TableField(exist = false)
    private String refundSn;

    /**
     * 订单所用积分
     */
    @TableField(exist = false)
    private Integer score;

    /**
     * 买家昵称
     */
    @TableField(exist = false)
    private String nickName;

    /**
     * 退款状态
     */
    @TableField(exist = false)
    private Integer returnMoneySts;

    /**
     * 退款类型
     */
    @TableField(exist = false)
    private Integer refundType;

    /**
     * 亏损金额
     */
    @TableField(exist = false)
    private Double lossAmount;

    /**
     * 包裹信息
     */
    @TableField(exist = false)
    private List<DeliveryOrder> deliveryExpresses;

    /**
     * 买家手机号
     */
    @TableField(exist = false)
    private String userMobile;
}
