package com.gxwebsoft.house.param;

import java.math.BigDecimal;
import com.gxwebsoft.common.core.annotation.QueryField;
import com.gxwebsoft.common.core.annotation.QueryType;
import com.gxwebsoft.common.core.web.BaseParam;
import com.fasterxml.jackson.annotation.JsonInclude;
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)
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(name = "HouseUserParam对象", description = "用户表查询参数")
public class HouseUserParam extends BaseParam {
    private static final long serialVersionUID = 1L;

    @Schema(description = "用户id")
    @QueryField(type = QueryType.EQ)
    private Integer userId;

    @Schema(description = "用户类型，0个人用户 6开发者 10企业")
    @QueryField(type = QueryType.EQ)
    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女")
    @QueryField(type = QueryType.EQ)
    private Integer sex;

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

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

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

    @Schema(description = "邮箱是否验证, 0否, 1是")
    @QueryField(type = QueryType.EQ)
    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 String 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 = "用户可用余额")
    @QueryField(type = QueryType.EQ)
    private BigDecimal balance;

    @Schema(description = "用户可用积分")
    @QueryField(type = QueryType.EQ)
    private Integer points;

    @Schema(description = "用户总支付的金额")
    @QueryField(type = QueryType.EQ)
    private BigDecimal payMoney;

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

    @Schema(description = "会员等级ID")
    @QueryField(type = QueryType.EQ)
    private Integer gradeId;

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

    @Schema(description = "机构id")
    @QueryField(type = QueryType.EQ)
    private Integer organizationId;

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

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

    @Schema(description = "企业ID")
    @QueryField(type = QueryType.EQ)
    private Integer companyId;

    @Schema(description = "客户ID")
    @QueryField(type = QueryType.EQ)
    private Integer customerId;

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

    @Schema(description = "是否已实名认证")
    @QueryField(type = QueryType.EQ)
    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 = "年龄")
    @QueryField(type = QueryType.EQ)
    private Integer age;

    @Schema(description = "是否线下会员")
    @QueryField(type = QueryType.EQ)
    private Boolean offline;

    @Schema(description = "关注数")
    @QueryField(type = QueryType.EQ)
    private Integer followers;

    @Schema(description = "粉丝数")
    @QueryField(type = QueryType.EQ)
    private Integer fans;

    @Schema(description = "点赞数")
    @QueryField(type = QueryType.EQ)
    private Integer likes;

    @Schema(description = "评论数")
    @QueryField(type = QueryType.EQ)
    private Integer commentNumbers;

    @Schema(description = "是否推荐")
    @QueryField(type = QueryType.EQ)
    private Integer recommend;

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

    @Schema(description = "状态, 0在线, 1离线")
    @QueryField(type = QueryType.EQ)
    private Integer status;

    @Schema(description = "是否删除, 0否, 1是")
    @QueryField(type = QueryType.EQ)
    private Integer deleted;

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

    @Schema(description = "最后结算时间")
    private String settlementTime;

}
