package com.hzs.sale.order.param;

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.core.constant.msg.MemberMsgConstants;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 用于订单返回相应的实体类
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OrderReturn implements Serializable {

    /**
     * 是否首单
     */
    private Boolean isFirst;

    /**
     * 订单编号
     */
    private String orderCode;

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

    /**
     * 订单总业绩
     */
    private BigDecimal orderAchieve;

    /**
     * 订单考核业绩
     */
    private BigDecimal orderAssAchieve;

    /**
     * 订单支付剩余时间
     */
    private Long payTime;

    /**
     * 订单抵扣返回参数
     */
    private List<OrderDeduct> orderDeductList;

    /**
     * 是否待支付
     */
    private Integer isToBePay;

    /**
     * 会员名称
     */
    private String memberName;

    /**
     * 满足条件
     */
    private Boolean isEnough;

    /**
     * 结算等级
     */
    private Integer pkSettleGrade;

    /**
     * 邮费
     */
    private BigDecimal postage;

    /**
     * 安置编号
     */
    private String placeParent;

    /**
     * 安置部门
     */
    @Transaction(transactionKey = EnumsPrefixConstants.PLACE_DEPT)
    private Integer placeDept;

    private String placeDeptVal;

    /**
     * 订单下单时间
     */
    private Date orderTime;

    /**
     * 会员编号
     */
    private String memberCode;

    /**
     * 会员类型（0.正常 1.空单 2.死点 4.嗨粉 5.商城小程序游客）
     */
    private Integer customerType;

    /**
     * 等级
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_GRADE)
    private Integer pkGrade;

    /**
     * 等级名称
     */
    private String pkGradeVal;

    /**
     * 手机号码
     */
    @Size(min = 1, max = 30, message = MemberMsgConstants.PHONE_LENGTH)
    private String phone;

    /**
     * 证件号码
     */
    private String idCard;

    /**
     * 性别（0=未知,1=男,2=女）
     */
    private Integer sex;

    /**
     * 自然国家
     */
    private Integer pkCountry;

    /**
     * 推荐人编号
     */
    private String parent;

    /**
     * 推荐人姓名
     */
    private String parentName;


    /**
     * 安置人姓名
     */
    private String placeParentName;

    /**
     * 报单中心名称
     */
    private String centerName;

    /**
     * 升级会员编号，需要验证血缘线，只能给自己的血缘以下升级
     */
    private String upgradeMemberCode;

    /**
     * 数据来源（1=PC端,2=APP,3=H5）
     */
    private Integer source;

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

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

    /**
     * 收货省字符串
     */
    private String recProvince;

    /**
     * 收货市字符串
     */
    private String recCity;

    /**
     * 收货县字符串
     */
    private String recCounty;

    /**
     * 收货地址
     */
    private String recAddress;

    /**
     * 备注
     */
    private String remark;

    /**
     * 配送中心
     */
    private Integer deliveryCenter;

    /**
     * 配送省
     */
    private Integer deliveryProvince;

    /**
     * 配送市
     */
    private Integer deliveryCity;

    /**
     * 配送县
     */
    private Integer deliveryCounty;

    /**
     * 发货方式
     */
    @Transaction(transactionKey = EnumsPrefixConstants.DELIVERY)
    @JsonIgnore
    private Integer deliveryWay;

    private String deliveryWayVal;

    /**
     * 运输类型 1=陆运，2=空运，3=海运
     */
    @Transaction(transactionKey = EnumsPrefixConstants.ENU_TRA)
    @JsonIgnore
    private Integer transType;

    private String transTypeVal;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 所属专区
     */
    @Transaction(transactionKey = EnumsPrefixConstants.ORDER_TYPE)
    private Integer specialArea;

    private String specialAreaVal;

    /**
     * 银行
     */
    private Integer pkBank;

    /**
     * 支行名称
     */
    private String subBankName;

    /**
     * 银行卡号
     */
    private String cardNumber;

    /**
     * 登录密码明文
     */
    private String loginPassword;

    /**
     * 支付密码明文
     */
    private String payPassword;

    /**
     * 登录网址
     */
    private String urlAddress;

    /**
     * 显示默认，0=快速注册，1=普通注册
     */
    private Integer displayDefault;


    // 2023.09.26 添加用于前台显示
    /**
     * 公众号
     */
    private String gzh;
    /**
     * IOS
     */
    private String ios;
    /**
     * 安卓
     */
    private String android;


}
