package com.starry.admin.modules.clerk.module.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.starry.admin.common.conf.StringTypeHandler;
import com.starry.common.domain.BaseEntity;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 店员对象 play_clerk_user_info
 *
 * @author admin
 * @since 2024-03-30
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "play_clerk_user_info", autoResultMap = true)
public class PlayClerkUserInfoEntity extends BaseEntity<PlayClerkUserInfoEntity> {

    /**
     * UUID
     */
    private String id;

    /**
     * 租户ID
     */
    private String tenantId;

    /**
     * 电话号码
     */
    private String phone;

    /**
     * 微信号码
     */
    private String weiChatCode;
    private String weiChatAvatar;

    /**
     * 陪聊用户ID
     */
    private String sysUserId;

    /**
     * 用户的标识，对当前公众号唯一
     */
    private String openid;

    /**
     * 店员昵称
     */
    private String nickname;

    /**
     * 是否固定等级(0:固定等级，1:不固定)
     */
    private String fixingLevel;

    /**
     * 分组ID
     */
    private String groupId;

    /**
     * 店员等级
     */
    private String levelId;

    /**
     * 店员类型
     */
    private String typeId;

    /**
     * 性别[0:未知;1:男;2:女]
     */
    private String sex;

    /**
     * 身份证号码
     */
    private String code;

    /**
     * 头像
     */
    private String avatar;

    /**
     * 头像框
     */
    private String avatarFrameId;

    /**
     * 音频
     */
    private String audio;

    /**
     * 星座
     */
    private String constellation;

    /**
     * 标签
     */
    @TableField(typeHandler = StringTypeHandler.class)
    private List<String> label;

    /**
     * 个性签名
     */
    private String signature;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 所在国家
     */
    private String country;

    /**
     * 所在省份
     */
    private String province;

    /**
     * 所在城市
     */
    private String city;

    /**
     * 账户余额
     */
    private BigDecimal accountBalance;

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

    /**
     * 在职状态（1：在职，0：离职）
     */
    private String onboardingState;

    /**
     * 入职时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDateTime entryTime;

    /**
     * 离职时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDateTime resignationTime;

    /**
     * 在职天数
     */
    private Integer workingHours = 0;

    /**
     * 是否推荐状态（1：已推荐，0：未推荐）
     */
    private String recommendationState;

    /**
     * 是否置顶状态（1：已置顶，0：未置顶）
     */
    private String pinToTopState;

    /**
     * 在线状态【1：在线，0：离线】
     */
    private String onlineState;

    /**
     * 上架状态【1：上架，0：下架】
     */
    private String listingState;

    /**
     * 显示状态【1：显示，0：隐藏】
     */
    private String displayState;

    /**
     * 实名状态【1：已实名，0：未实名】
     */
    private String realState;

    /**
     * 是否必须实名【0:非必须实名;1:必须实名;2:跟随店铺设置】
     */
    private String mandatoryRealState;

    /**
     * 随机接单状态【1：允许，0：禁止】
     */
    private String randomOrderState;

    /**
     * 店员状态（0:不是陪聊，1:陪聊，2:资料审核中）
     */
    private String clerkState;
    /**
     * 相册
     */
    @TableField(typeHandler = StringTypeHandler.class)
    private List<String> album;
    /**
     * 微信二维码
     **/
    private String weChatCodeImage;

    /**
     * 微信收款码图片
     **/
    private String weChatPayImage;

    /**
     * 支付宝收款码图片
     **/
    private String alipayImage;

    /**
     * 创建时间
     **/
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime addTime;

    /**
     * 最近一次登录token
     */
    @JsonIgnore
    private String token;

    public PlayClerkUserInfoEntity() {
    }

    public PlayClerkUserInfoEntity(String id, BigDecimal accountBalance) {
        this.id = id;
        this.accountBalance = accountBalance;
    }
}
