package com.tourism.webadmin.app.website.dto;

import com.tourism.common.core.validator.ConstDictRef;
import com.tourism.common.core.validator.UpdateGroup;
import com.tourism.webadmin.upms.model.constant.SysUserStatus;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

/**
 * 门户网站用户管理Dto对象。
 *
 * @author 吃饭睡觉
 * @date 2024-09-06
 */
@Schema(description = "TourUserDto对象")
@Data
public class TourUserRegisterDto {

    /**
     * 主键Id。
     */
    @Schema(description = "主键Id。", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "数据验证失败，主键Id不能为空！", groups = {UpdateGroup.class})
    private Long userId;

    /**
     * 用户登录名称。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "用户登录名称。可支持等于操作符的列表数据过滤。", requiredMode = Schema.RequiredMode.REQUIRED)
    private String loginName;

    /**
     * 密码。
     */
    @Schema(description = "密码。", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "数据验证失败，密码不能为空！")
    private String password;

    /**
     * 用户显示名称。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "用户显示名称。可支持等于操作符的列表数据过滤。", requiredMode = Schema.RequiredMode.REQUIRED)
    private String showName;

    /**
     * 用户头像的Url。
     */
    @Schema(description = "用户头像的Url。")
    private String headImageUrl;

    /**
     * 状态(0: 正常 1: 锁定)。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "状态(0: 正常 1: 锁定)。可支持等于操作符的列表数据过滤。", requiredMode = Schema.RequiredMode.REQUIRED)
    @ConstDictRef(constDictClass = SysUserStatus.class, message = "数据验证失败，状态(0: 正常 1: 锁定)为无效值！")
    private Integer userStatus;

    /**
     * 用户邮箱。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "用户邮箱。可支持等于操作符的列表数据过滤。")
    private String email;

    /**
     * 用户手机。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "用户手机。可支持等于操作符的列表数据过滤。")
    @NotBlank(message = "数据验证失败，手机号不能为空！")
    private String mobile;

    /**
     * 图形验证码的uuid。
     */
//    @NotBlank(message = "数据验证失败，uuid不能为空！")
    private String uuid;

    /**
     * 图形验证码的结果。
     */
//    @NotBlank(message = "数据验证失败，结果不能为空！")
    private String code;

    /**
     * 短信验证码。
     */
//    @NotBlank(message = "数据验证失败，短信验证码不能为空！")
    private String smsCode;
}
