package com.gxwebsoft.house.entity;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDate;
import com.baomidou.mybatisplus.annotation.TableId;

import com.baomidou.mybatisplus.annotation.TableLogic;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;

import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 用户表
 *
 * @author 科技小王子
 * @since 2025-03-05 15:13:05
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Schema(name = "HouseUser对象", description = "用户表")
public class HouseUser implements Serializable {
    private static final long serialVersionUID = 1L;

    @Schema(description = "用户id")
    @TableId(value = "user_id", type = IdType.AUTO)
    private Integer userId;

    @Schema(description = "用户类型，0个人用户 6开发者 10企业")
    private Integer type;

    @Schema(description = "账号")
    private String username;

    @Schema(description = "密码")
    private String password;

    @Schema(description = "昵称")
    private String nickname;

    @Schema(description = "手机号")
    private String phone;

    @Schema(description = "性别 1男 2女")
    private Integer sex;

    @Schema(description = "职务")
    private String position;

    @Schema(description = "注册来源客户端 (APP、H5、小程序等)")
    private String platform;

    @Schema(description = "邮箱")
    private String email;

    @Schema(description = "邮箱是否验证, 0否, 1是")
    private Integer emailVerified;

    @Schema(description = "别名")
    private String alias;

    @Schema(description = "真实姓名")
    private String realName;

    @Schema(description = "单位姓名")
    private String companyName;

    @Schema(description = "证件号码")
    private String idCard;

    @Schema(description = "出生日期")
    private LocalDate birthday;

    @Schema(description = "所在国家")
    private String country;

    @Schema(description = "所在省份")
    private String province;

    @Schema(description = "所在城市")
    private String city;

    @Schema(description = "所在辖区")
    private String region;

    @Schema(description = "街道地址")
    private String address;

    @Schema(description = "经度")
    private String longitude;

    @Schema(description = "纬度")
    private String latitude;

    @Schema(description = "用户可用余额")
    private BigDecimal balance;

    @Schema(description = "用户可用积分")
    private Integer points;

    @Schema(description = "用户总支付的金额")
    private BigDecimal payMoney;

    @Schema(description = "实际消费的金额(不含退款)")
    private BigDecimal expendMoney;

    @Schema(description = "会员等级ID")
    private Integer gradeId;

    @Schema(description = "个人简介")
    private String introduction;

    @Schema(description = "机构id")
    private Integer organizationId;

    @Schema(description = "头像")
    private String avatar;

    @Schema(description = "背景图")
    private String bgImage;

    @Schema(description = "企业ID")
    private Integer companyId;

    @Schema(description = "客户ID")
    private Integer customerId;

    @Schema(description = "用户编码")
    private String userCode;

    @Schema(description = "是否已实名认证")
    private Integer certification;

    @Schema(description = "兴趣爱好")
    private String interest;

    @Schema(description = "身高")
    private String height;

    @Schema(description = "体重")
    private String weight;

    @Schema(description = "月薪")
    private String monthlyPay;

    @Schema(description = "学历")
    private String education;

    @Schema(description = "职业")
    private String vocation;

    @Schema(description = "年龄")
    private Integer age;

    @Schema(description = "是否线下会员")
    private Boolean offline;

    @Schema(description = "关注数")
    private Integer followers;

    @Schema(description = "粉丝数")
    private Integer fans;

    @Schema(description = "点赞数")
    private Integer likes;

    @Schema(description = "评论数")
    private Integer commentNumbers;

    @Schema(description = "是否推荐")
    private Integer recommend;

    @Schema(description = "备注")
    private String comments;

    @Schema(description = "状态, 0在线, 1离线")
    private Integer status;

    @Schema(description = "是否删除, 0否, 1是")
    @TableLogic
    private Integer deleted;

    @Schema(description = "商户编码")
    private String merchantCode;

    @Schema(description = "租户id")
    private Integer tenantId;

    @Schema(description = "最后结算时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime settlementTime;

    @Schema(description = "注册时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @Schema(description = "修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

}
