package com.hzs.member.self.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import com.hzs.common.core.web.domain.BaseApprovalEntity;
import com.hzs.member.account.dto.MemberAmountDTO;
import com.hzs.system.sys.dto.LoginUser;
import lombok.*;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * 自助服务日志表VO
 */
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SelfModifyAddressVO extends BaseApprovalEntity {


    /**
     * 主键
     */
    private Long pkId;

    /**
     * 会员主键
     */
    private Long pkMember;

    /**
     * 审批业务类型来源于  枚举： EApprovalBusiness
     */
    private Integer editType;

    /**
     * 原值
     */
    private String oldValue;

    /**
     * 新值
     */
    private String newValue;

    /**
     * 业务单号
     */
    private String businessNo;

    /**
     * 审核状态（0=待提交，1=待审核，2=审核通过，3=审核驳回）
     */
    @Transaction(transactionKey = EnumsPrefixConstants.APPROVE_RECHARGE_OPERATION)
    private Integer approveStatus;
    private String approveStatusVal;

    /**
     * 初审审核状态（1=通过，2=驳回） EApproveOperation
     */
    private Integer approveOperation;

    /**
     * 审核次数
     */
    private Integer approveNumber;

    /**
     * 支付业务类型来源于枚举
     */
    private Integer editTypePay;

    /**
     * 扣费金额
     */
    private BigDecimal singleAmount;


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

    /**
     * 创建人ID
     */
    private Long pkCreator;

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

    /**
     * 修改人ID
     */
    private Long pkModified;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date modifiedTime;


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

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date payTime;
    /**
     * 收货人
     */
    private String recName;
    /**
     * 新手机
     */
    private String newRecPhone;

    /**
     * 新收货人
     */
    private String newRecName;
    /**
     * 手机
     */
    private String recPhone;

    /**
     * 收货省id
     */
    private Integer recProvince;
    /**
     * 新收货省id
     */
    private Integer newRecProvince;
    /**
     * 收货省
     */
    private String recProvinceVal;
    /**
     * 收货省
     */
    private String newRecProvinceVal;
    /**
     * 收货市id
     */
    private Integer recCity;
    /**
     * 收货市id
     */
    private Integer newRecCity;
    /**
     * 收货市
     */
    private String recCityVal;
    /**
     * 收货市
     */
    private String newRecCityVal;
    /**
     * 收货县id
     */
    private Integer recCounty;
    /**
     * 收货县id
     */
    private Integer newRecCounty;
    /**
     * 收货县
     */
    private String recCountyVal;
    /**
     * 新收货县
     */
    private String newRecCountyVal;
    /**
     * 详细地址
     */
    private String recAddress;
    /**
     * 新地址
     */
    private String newRecAddress;

    /**
     * 发货仓库
     */
    private Integer pkStorehouse;

    /**
     * 会员手续费
     */
    List<MemberAmountDTO> memberAmountDTOList;
    /**
     * 错误信息
     */
    private String errorMsg;
    /**
     * 业务涉及会员ID列表 -- 提交审核必传
     */
    private Set<Long> pkMemberList;
    /**
     * 旧邮费
     */
    private BigDecimal postage;
    /**
     * 新邮费
     */
    private BigDecimal newPostage = BigDecimal.ZERO;
    /**
     * 备注
     */
    private String selfRemark;
    /**
     * 扣款币种类型
     */
    private Integer pkAccount;
    /**
     * 扣款币种翻译key
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_ACC)
    private Integer pkAccountKey;
    /**
     * 扣款币种翻译
     */
    private String pkAccountKeyVal;

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

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

    /**
     * 注册编号 报单中心编号
     */
    private String creatorCode;

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


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


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

    /**
     * 当前登录用户信息
     */
    private LoginUser loginUser;
    /**
     * 业务单号集合
     */
    private List<String> businessNoList;

    /**
     * 集合
     */
    private List<SelfModifyAddressVO> selList;
    /**
     * 驳回原因
     */
    private String rejectMsg;


}
