package com.hzs.sale.order.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.hzs.common.core.annotation.BigDecimalFormat;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import com.hzs.common.domain.sale.deliver.SaDeliver;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.order.SaOrder;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

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

/**
 * @Description: 我的订单返回VO
 * @Author: jiang chao
 * @Time: 2023/1/13 16:13
 * @Classname: MyOrderVO
 * @PackageName: com.hzs.sale.order.vo
 */
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class MyOrderVO implements Serializable {

    /**
     * 订单id
     */
    private Long pkId;
    /**
     * 订单编号
     */
    private String orderCode;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date creationTime;

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

    /**
     * 订单类型（EOrderType）
     */
    @Transaction(transactionKey = EnumsPrefixConstants.ORDER_TYPE)
    private Integer orderType;
    /**
     * 订单类型显示
     */
    private String orderTypeVal;

    /**
     * 订单金额
     */
    @BigDecimalFormat
    private BigDecimal orderAmount;

    /**
     * 支付编号
     */
    private String creatorCode;
    /**
     * 创建人姓名
     */
    private String creatorName;

    /**
     * 订单业绩（PV）
     */
    @BigDecimalFormat
    private BigDecimal orderAchieve;

    /**
     * bv
     */
    @BigDecimalFormat
    private BigDecimal orderAssAchieve;

    /**
     * 会员编号
     */
    private String memberCode;
    /**
     * 会员姓名
     */
    private String memberName;
    /**
     * 会员电话
     */
    private String memberPhone;

    /**
     * 订单状态（EOrderStatus）
     */
    @Transaction(transactionKey = EnumsPrefixConstants.ORDER_STATUS)
    private Integer orderStatus;
    /**
     * 订单状态显示
     */
    private String orderStatusVal;

    /**
     * 收货人
     */
    private String recName;

    /**
     * 收货电话
     */
    private String recPhone;

    /**
     * 收货省
     */
    private String recProvince;
    /**
     * 收货市
     */
    private String recCity;
    /**
     * 收货县
     */
    private String recCounty;
    /**
     * 收货地址
     */
    private String address;

    /**
     * 备注
     */
    private String remark;
    /**
     * 邮费
     */
    @BigDecimalFormat
    private BigDecimal postage;

    /**
     * 订单明细列表
     */
    private List<MyOrderItemsVO> itemList;

    /**
     * 发货明细列表
     */
    private List<SaDeliver> deliverList;

    /**
     * 国家
     */
    @JsonIgnore
    private Integer pkCountry;

    /**
     * 返回的消息
     */
    private String msg;
    /**
     * 订单
     */
    private SaOrderExt saOrderExt;
    /**
     * 升级订单
     */
    private SaOrder updSaOrder;
    /**
     * 撤单的列表
     */
    private List<OrderCancelRegisterMemberVO> memberList;

    /**
     * 订单创建人
     */
    @JsonIgnore
    private Long pkCreator;
    /**
     * 会员编号
     */
    @JsonIgnore
    private Long pkMember;
    /**
     * 服务编号
     */
    private String memberServiceCode;
    /**
     * 会员昵称
     */
    private String memberNickName;
    /**
     * 所属体系
     */
    private Long memberPkVertex;
}
