package com.hzs.common.domain.member.base;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzs.common.core.annotation.Excel;
import com.hzs.common.core.web.domain.BaseEntity;
import lombok.*;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;

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

/**
 * 会员
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@KeySequence("CU_MEMBER_SEQ")
@TableName("CU_MEMBER")
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CuMember extends BaseEntity {

    private static final long serialVersionUID = 1L;
    /**
     * 用户ID
     */
    @TableId("PK_ID")
    private Long pkId;

    /**
     * 会员编号
     */
    @TableField("MEMBER_CODE")
    @Excel(name = "会员编号", sort = 1)
    private String memberCode;

    /**
     * 会员姓名
     */
    @TableField("MEMBER_NAME")
    @Excel(name = "会员姓名", sort = 2)
    private String memberName;

    /**
     * 用户类型分类（0=正常（正常 空单 嗨粉） 1=待激活（撤单死点）2=已注销（退单））
     */
    @TableField("CATEGORY")
    private Integer category;
    /**
     * 会员类型（0.正常 1.空单 2.死点 4.嗨粉）
     */
    @TableField("CUSTOMER_TYPE")
    private Integer customerType;

    /**
     * 手机号码
     */
    @TableField("PHONE")
    @Excel(name = "联系方式", sort = 3)
    private String phone;

    /**
     * 邮箱
     */
    @TableField("EMAIL")
    @Excel(name = "邮箱地址", sort = 20)
    private String email;

    /**
     * 证件号码
     */
    @TableField("ID_CARD")
    @Excel(name = "证件号码", sort = 10)
    private String idCard;
    /**
     * 证件类型
     */
    @TableField("CARD_TYPE")
    private Integer cardType;

    /**
     * 性别（0=未知,1=男,2=女）
     */
    @TableField("SEX")
    private Integer sex;

    /**
     * 出生日期（年月日）
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("BIRTH_DATE")
    @Excel(name = "出生日期", sort = 8)
    private Date birthDate;

    /**
     * 结算国
     */
    @TableField("PK_SETTLE_COUNTRY")
    private Integer pkSettleCountry;

    /**
     * 推荐人编号
     */
    @TableField("PK_PARENT")
    private Long pkParent;

    /**
     * 安置人编号
     */
    @TableField("PK_PLACE_PARENT")
    private Long pkPlaceParent;

    /**
     * 安置部门
     */
    @TableField("PLACE_DEPT")
    private Integer placeDept;

    /**
     * 所属团队编号
     */
    @TableField("PK_TEAM_CODE")
    private Long pkTeamCode;

    /**
     * 报单中心编号
     */
    @TableField("PK_CENTER_CODE")
    private Long pkCenterCode;

    /**
     * 数据来源（1=PC端,2=APP,3=H5）
     */
    @TableField("SOURCE")
    private Integer source;

    /**
     * 注册等级
     */
    @TableField("PK_REGISTER_GRADE")
    private Integer pkRegisterGrade;

    /**
     * 结算等级
     */
    @TableField("PK_SETTLE_GRADE")
    private Integer pkSettleGrade;

    /***
     * 结算等级value值
     */
    @TableField(exist = false)
    private Integer pkSettleGradeValue;

    /**
     * 当月奖衔
     */
    @TableField("PK_AWARDS")
    private Integer pkAwards;

    /**
     * 最高奖衔（荣誉奖衔）
     */
    @TableField("PK_MAX_AWARDS")
    private Integer pkMaxAwards;

    /**
     * 消费金额
     */
    @TableField("CONSUME_MONEY")
    private BigDecimal consumeMoney;

    /**
     * 消费业绩
     */
    @TableField("CONSUME_ACHIEVE")
    private BigDecimal consumeAchieve;

    /**
     * 复购免考（0=是,1=否）
     */
    @TableField("PURCHASE_STATUS")
    private Integer purchaseStatus;

    /**
     * 分红免考（0=是,1=否）
     */
    @TableField("SHARE_STATUS")
    private Integer shareStatus;

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "支付时间", dateFormat = "yyyy-MM-dd HH:mm:ss", sort = 22)
    @TableField(value = "PAY_TIME", jdbcType = JdbcType.DATE, updateStrategy = FieldStrategy.IGNORED)
    private Date payTime;

    /**
     * 支付状态
     */
    @TableField("PAY_STATUS")
    private Integer payStatus;

    /**
     * 登录密码
     */
    @TableField("LOGIN_PWD")
    private String loginPwd;

    /**
     * 支付密码
     */
    @TableField("PAY_PWD")
    private String payPwd;

    /**
     * 登录密码明文
     */
    @TableField("LOGIN_PASSWORD")
    private String loginPassword;

    /**
     * 支付密码明文
     */
    @TableField("PAY_PASSWORD")
    private String payPassword;

    /**
     * 修改次数
     */
    @TableField("EDIT_NUMBER")
    private Integer editNumber;

    /**
     * 注册权限（0=普通用户,1=报单中心,2=服务中心）
     */
    @TableField("REGISTER_AUTHORITY")
    private Integer registerAuthority;

    /**
     * 顶点编号
     */
    @TableField("PK_VERTEX")
    private Long pkVertex;

    /**
     * 账号状态（0=正常,1=冻结,2=封停）
     */
    @TableField("ACCOUNT_STATUS")
    private Integer accountStatus;

    /**
     * 订单来源 (1=实单注册,2=空单注册)
     */
    @TableField("ORDER_SOURCE")
    private Integer orderSource;

    /**
     * 是否实名认证（0=是,1=否）
     */
    @TableField("IS_REAL_NAME")
    private Integer isRealName;

    /**
     * 是否认证营业执照（0=是,1=否）
     */
    @TableField("IS_BUS_LICENSE")
    private Integer isBusLicense;

    /**
     * 是否认证创客空间（0=是,1=否）
     */
    @TableField("IS_MAKER_SPACE")
    private Integer isMakerSpace;

    /**
     * 收益状态 (0=正常,1=停止收益)
     */
    @TableField("INCOME_STATUS")
    private Integer incomeStatus;
    /**
     * 变更次数
     */
    @TableField("CHANGE_NUMBER")
    private Integer changeNumber;
    /**
     * 微信
     */
    @TableField("WECHAT")
    private String wechat;

    /**
     * 会员昵称
     */
    @TableField("NICK_NAME")
    private String nickName;

    /**
     * 会员头像
     */
    @TableField("HEAD_PATH")
    private String headPath;
    /**
     * 修改直推次数
     */
    @TableField("DIRECT_PUSH_NUMBER")
    private Integer directPushNumber;
    /**
     * 是否是经销商 0 是 1 否
     */
    @TableField("IS_DEALER")
    private Integer isDealer;
    /**
     * 系统级别
     */
    @TableField("SYSTEM_LEVEL")
    private Integer systemLevel;
    /**
     * 讲师级别
     */
    @TableField("LECTURER_LEVEL")
    private Integer lecturerLevel;
    /**
     * 是否认证超级工作室 0 是 1否
     */
    @TableField("SUPER_STUDIO")
    private Integer superStudio;

    /**
     * 全球编号
     */
    @TableField("GLOBAL_CODE")
    private String globalCode;

    /**
     * 国家编号
     */
    @TableField("COUNTRY_CODE")
    private String countryCode;

    /**
     * 服务协议
     */
    @TableField("SERVICE_AGREEMENT")
    private Integer serviceAgreement;

    /**
     * 有效期（时间内会员操作正常，超过进入休止期）
     */
    @TableField("EXPIRE_DATE")
    private Date expireDate;

    /**
     * 休止期（时间内会员操作受限，超过会员服务终止）
     */
    @TableField("STOP_DATE")
    private Date stopDate;

    /**
     * 有效状态（1=有效期，2=休止期，3=已终止）
     */
    @TableField("EXPIRE_STATUS")
    private Integer expireStatus;

    /**
     * 是否创客合伙人标记（0=是，1=否）
     */
    @TableField("IS_MAKER_GIFT")
    private Integer isMakerGift;

    /**
     * 创客礼包标记时间
     */
    @TableField("MAKER_GIFT_TIME")
    private Date makerGiftTime;

    /**
     * 服务编号（或店铺编号）
     */
    @TableField("SERVICE_CODE")
    private String serviceCode;

    /**
     * 系统类型（2=新零售，3=美业） ESystemType
     */
    @TableField("SYSTEM_TYPE")
    private Integer systemType;

    /**
     * 分红奖衔
     */
    @TableField("PK_RANGE_AWARDS")
    private Integer pkRangeAwards;

    /**
     * 福利奖衔(暂时不用）
     */
    @TableField("PK_BENEFIT_AWARDS")
    private Integer pkBenefitAwards;

    /**
     * 是否收益区域（0=是，1=否）
     */
    @TableField("IS_REGION")
    private Integer isRegion;

    /**
     * 是否激活（0=是，1=否）
     */
    @TableField("IS_ACTIVATE")
    private Integer isActivate;

}
