package com.hzs.member.base.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzs.common.core.annotation.BigDecimalFormat;
import com.hzs.common.core.annotation.Excel;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * @Description: 会员后台查询会员的实体vo
 * @Author: sui q
 * @Time: 2022/10/13 11:21
 * @Classname: CuMemberVO
 * @PackageName: com.hzs.member.base.vo
 */
@Data
@EqualsAndHashCode(callSuper = false)
@AllArgsConstructor
@NoArgsConstructor
public class CuMemberVO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户ID
     */

    private Long pkId;
    /**
     * 会员编号
     */
    private String newMemberCode;

    /**
     * 会员编号
     */
    @Excel(name = "会员编号")
    private String memberCode;

    /**
     * 会员姓名
     */
    @Excel(name = "会员姓名")
    private String memberName;
    /**
     * 联系方式
     */
    @Excel(name = "联系方式")
    private String phone;
    /**
     * 推荐人编号
     */
    @Excel(name = "推荐编号")
    private String parMemberCode;

    /**
     * 推荐人姓名
     */
    @Excel(name = "推荐姓名")
    private String parMemberName;
    /**
     * 安置人编号
     */
    @Excel(name = "安置编号")
    private String placeMemberCode;

    /**
     * 安置人姓名
     */
    @Excel(name = "安置姓名")
    private String placeMemberName;
    /**
     * 真实奖衔
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_AWARD)
    private Integer pkAwards;

    @Excel(name = "真实奖衔")
    private String pkAwardsVal;
    /**
     * 代理等级
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_GRADE)
    private Integer agentGrade;
    @Excel(name = "代理等级")
    private String agentGradeVal;
    /**
     * 订单来源 (1=实单注册,2=空单注册)订单状态 EOrderSource
     */
    @Transaction(transactionKey = EnumsPrefixConstants.ORDER_SOURCE)
    private Integer orderSource;
    @Excel(name = "订单类型")
    private String orderSourceVal;
    /**
     * 报单中心编号 服务中心编号
     */
    @Excel(name = "服务中心编号")
    private String centerMemberCode;

    /**
     * 报单中心姓名 服务中心姓名
     */
    @Excel(name = "服务中心姓名")
    private String centerMemberName;
    /**
     * 讲师级别
     */
    @Excel(name = "讲师级别")
    private String lecturerLevelVal;
    @Excel(name = "系统级别")
    private String systemLevelVal;

    /**
     * 注册等级
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_GRADE)
    private Integer pkRegisterGrade;
    @Excel(name = "注册等级")
    private String pkRegisterGradeVal;

    /**
     * 结算等级
     */
    @Transaction(transactionKey = EnumsPrefixConstants.KEY_GRADE)
    private Integer pkSettleGrade;
    @Excel(name = "结算等级")
    private String pkSettleGradeVal;
    /**
     * 消费金额 注册金额
     */
    @Excel(name = "注册金额(￥)")
    private BigDecimal consumeMoney;

    /**
     * 消费业绩 注册业绩
     */
    @Excel(name = "注册业绩($)")
    private BigDecimal consumeAchieve;
    /**
     * 隶属体系
     */
    @Excel(name = "隶属体系")
    private String vertexName;
    /**
     * 隶属团队
     */
    @Excel(name = "隶属团队")
    private String teamName;


    /**
     * 注册权限（0=普通用户,1=报单中心,2=服务中心）ERegistrationAuthority
     */
    @Transaction(transactionKey = EnumsPrefixConstants.REGISTRATION_AUTHORITY)
    private Integer registerAuthority;
    @Excel(name = "注册权限")
    private String registerAuthorityVal;
    /**
     * 是否实名认证（0=已认证,1=未认证） EYesNoAttestation
     */
    @Transaction(transactionKey = EnumsPrefixConstants.YES_NO_ATTESTATION)
    private Integer isRealName;
    @Excel(name = "实名认证")
    private String isRealNameVal;
    /**
     * 是否是经销商 0 已认证 1 未认证 EYesNoAttestation
     */
    @Transaction(transactionKey = EnumsPrefixConstants.YES_NO_ATTESTATION)
    private Integer isDealer;
    @Excel(name = "经销商")
    private String isDealerVal;
    /**
     * 是否认证超级工作室 0 是 1否 EYesNoAttestation
     */
    @Excel(name = "超级工作室")
    private String superStudioVal;
    /**
     * 是否认证创客空间（0=已认证,1=未认证）EYesNoAttestation
     */
    @Transaction(transactionKey = EnumsPrefixConstants.YES_NO_ATTESTATION)
    private Integer isMakerSpace;
    @Excel(name = "创客空间")
    private String isMakerSpaceVal;
    /**
     * 账户状态（0=正常,1=冻结,2=封停） EAccountStatus
     */
    @Transaction(transactionKey = EnumsPrefixConstants.ACCOUNT_STATUS)
    private Integer accountStatus;
    @Excel(name = "账户状态")
    private String accountStatusVal;
    /**
     * 钱包状态 翻译 EMemberAccount
     */
    @Excel(name = "钱包状态")
    private String memberAccountVal;
    /**
     * 创建时间
     */
    @Excel(name = "创建时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date creationTime;
    /**
     * 支付时间
     */
    @Excel(name = "支付时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date payTime;
    /**
     * 变更次数
     */
    @Excel(name = "变更次数")
    private Integer changeNumber;
    /**
     * 修改直推次数
     */
    @Excel(name = "修改直推次数")
    private Integer directPushNumber;
    /**
     * 剩余天数
     */
    @Excel(name = "剩余天数")
    private Long expireDateNumber;

    /**
     * 有效期，到期日期
     */
    private Date expireDate;

    /**
     * 用户类型分类（0=正常（正常 空单 嗨粉） 1=死点（死点）） ECategory
     */
    @Transaction(transactionKey = EnumsPrefixConstants.ENU_CAT)
    private Integer category;
    @Excel(name = "会员类型")
    private String categoryVal;

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

    private String customerTypeVal;



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

    /**
     * 性别（0=未知,1=男,2=女）
     */
    @Transaction(transactionKey = EnumsPrefixConstants.SEX)

    private Integer sex;

    private String sexVal;

    /**
     * 出生日期（年月日）
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthDate;

    /**
     * 结算国
     */
    private Integer pkSettleCountry;





    /**
     * 安置部门
     */
    @Transaction(transactionKey = EnumsPrefixConstants.PLACE_DEPT)

    private Integer placeDept;
    private String placeDeptVal;

    /**
     * 是否是代理商
     */
    @Transaction(transactionKey = EnumsPrefixConstants.YES_NO)
    private Integer agentType;
    private String agentTypeVal;




    /**
     * 数据来源（1=PC端,2=APP,3=H5）
     */
    @Transaction(transactionKey = EnumsPrefixConstants.DATASOURCE)
    private Integer source;

    private String sourceVal;







    /**
     * 是否复购考核状态（0=是,1=否）
     */
    @Transaction(transactionKey = EnumsPrefixConstants.YES_NO)
    private Integer purchaseStatus;

    private String purchaseStatusVal;

    /**
     * 是否分红考核状态（0=是,1=否）
     */
    @Transaction(transactionKey = EnumsPrefixConstants.YES_NO)
    private Integer shareStatus;

    private String shareStatusVal;



    /**
     * 支付状态 EPayStatus
     */
    @Transaction(transactionKey = EnumsPrefixConstants.ORDER_STATUS)
    private Integer payStatus;

    private String payStatusVal;

    /**
     * 修改次数
     */
    private Integer editNumber;



    /**
     * 顶点编号
     */
    private String topMemberCode;

    /**
     * 顶点姓名
     */
    private String topMemberName;

    /**
     * 钱包状态（0=正常,1=锁定）EWalletStatus
     */
    @Transaction(transactionKey = EnumsPrefixConstants.WALLET_STATUS)
    private Integer walletStatus;

    private String walletStatusVal;



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





    /**
     * 是否认证营业执照（0=已上传,1=未上传）EYesNoUpLoads
     */
    @Transaction(transactionKey = EnumsPrefixConstants.YES_NO_UPLOADS)
    private Integer isBusLicense;
    private String isBusLicenseVal;

    /**
     * 收益状态 EIncomeStatus
     */
    @Transaction(transactionKey = EnumsPrefixConstants.INCOME_STATUS)
    private Integer incomeStatus;

    private String incomeStatusVal;





    /**
     * 钱包状态 EMemberAccount
     */
    @Transaction(transactionKey = EnumsPrefixConstants.MEMBER_ACCOUNT)
    private Integer memberAccount;

    /**
     * 能否转账（0=是,1=否）EMemberAccount
     */
    private Integer isTransfer;
    /**
     * 能否提现（0=是,1=否）EMemberAccount
     */
    private Integer isWithdraw;

    /**
     * 能否消费（0=是,1=否）EMemberAccount
     */
    private Integer isConsume;
    /**
     * ETransferStatus 全网转账 0 正常 1 全网
     */
    private Integer transferStatus;

    /**
     * 体系ID
     */
    private Integer vertexId;
    /**
     * 团队ID
     */
    private Integer teamId;

    /**
     * 创建时间开始时间
     */
    @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 startDatePay;

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

    /**
     * 微信
     */
    private String wechat;

    /**
     * 证件类型 ECardType
     */
    @Transaction(transactionKey = EnumsPrefixConstants.CARD_TYPE)
    private Integer cardType;

    /**
     * 证件类型
     */
    private String cardTypeVal;

    /**
     * 证件正面
     */
    private String idCardJust;
    /**
     * 证件反面
     */
    private String idCardBack;

    /**
     * 省
     */
    private String giftProvince;

    /**
     * 市
     */
    private String giftCity;
    /**
     * 县（区）
     */
    private String giftCounty;
    /**
     * 详细地址
     */
    private String giftAddress;
    /**
     * 银行名称
     */
    private String bankName;
    /**
     * 支行名称
     */
    private String subBankName;
    /**
     * 开户姓名
     */
    private String accountName;
    /**
     * 预留电话
     */
    private String reservePhone;
    /**
     * 银行卡号
     */
    private String cardNumber;
    /**
     * 认证时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date attestationTime;

    /**
     * 认证开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startAttestationTime;

    /**
     * 认证结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endAttestationTime;
    /**
     * 银行ID
     */
    private Integer pkBdBank;

    /**
     * 会员昵称
     */
    private String nickName;

    /**
     * 会员头像
     */
    private String headPath;





    /**
     * 系统级别  ESystemLevel
     */
    @Transaction(transactionKey = EnumsPrefixConstants.ENUM_SYS_LEV)
    private Integer systemLevel;



    /**
     * 讲师级别 ELecturerLevel
     */
    @Transaction(transactionKey = EnumsPrefixConstants.ENUM_LEC_LEV)
    private Integer lecturerLevel;


    /**
     * 是否认证超级工作室 0 是 1否 EYesNoAttestation
     */
    @Transaction(transactionKey = EnumsPrefixConstants.YES_NO_ATTESTATION)
    private Integer superStudio;


    /**
     * 创客空间级别
     */
    @Transaction(transactionKey = EnumsPrefixConstants.ESTORE_LEVEL)
    private Integer storeLevel;

    private String storeLevelVal;

    /**
     * 体系列表
     */
    private List<Long> vertexList;

    /**
     * 团队列表
     */
    private List<Long> teamList;
    /**
     * 国家
     */
    private Integer pkCountry;

    /**
     * 复消收益奖金
     */
    @BigDecimalFormat
    private BigDecimal resaleIncomeBonus;

}

