/*
 * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved.
 *
 * https://www.mall4j.com/
 *
 * 未经允许，不可做商业用途！
 *
 * 版权所有，侵权必究！
 */

package com.yami.shop.bean.param;

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

/**
 * 用户注册参数类
 * 该类用于封装用户注册过程中需要传递的各项信息，作为一个数据载体，方便在用户注册相关的业务逻辑中接收前端传入的用户注册数据，并传递给后端进行相应的处理，例如验证、保存用户信息等操作。
 * 同时利用`io.swagger.v3.oas.annotations.media.Schema`注解对类及各个属性在`Swagger`文档中进行描述，便于生成清晰的接口文档供前端开发人员查看接口参数要求等信息。
 *
 * @author lh
 */
@Data
// 使用 @Data 注解，由 lombok 自动生成常用的方法，如Getter、Setter、toString、equals、hashCode等方法
@Schema(description = "设置用户信息")
public class UserRegisterParam {

    /**
     * 密码属性
     * 用于接收用户注册时设置的登录密码信息，在后续的用户验证、密码加密等业务逻辑中会使用该属性值进行相应处理，以确保用户账户的安全性。
     * 通过 @Schema 注解在 `Swagger` 文档中对该属性进行描述，提示前端开发人员该属性代表密码信息。
     */
    @Schema(description = "密码")
    private String passWord;

    /**
     * 邮箱属性
     * 用于接收用户注册时填写的邮箱地址信息，可用于后续的账号验证、找回密码、发送通知等业务场景，比如向该邮箱发送注册验证邮件等操作。
     * 通过 @Schema 注解在 `Swagger` 文档中对该属性进行描述，提示前端开发人员该属性代表邮箱信息。
     */
    @Schema(description = "邮箱")
    private String userMail;

    /**
     * 昵称属性
     * 用于接收用户注册时设定的昵称，该昵称通常会在用户个人信息展示、社区互动等场景中使用，方便其他用户识别该用户。
     * 通过 @Schema 注解在 `Swagger` 文档中对该属性进行描述，提示前端开发人员该属性代表昵称信息。
     */
    @Schema(description = "昵称")
    private String nickName;

    /**
     * 用户名属性
     * 用于接收用户注册时设定的用户名，可能在登录、系统内部识别用户等场景中有特定作用，具体使用方式取决于系统的业务逻辑设计。
     * 通过 @Schema 注解在 `Swagger` 文档中对该属性进行描述，提示前端开发人员该属性代表用户名信息。
     */
    @Schema(description = "用户名")
    private String userName;

    /**
     * 手机号属性
     * 用于接收用户注册时填写的手机号码信息，可用于多种业务场景，例如手机号登录、短信验证码验证、绑定手机号等操作，增强账号的安全性和便捷性。
     * 通过 @Schema 注解在 `Swagger` 文档中对该属性进行描述，提示前端开发人员该属性代表手机号信息。
     */
    @Schema(description = "手机号")
    private String mobile;

    /**
     * 头像属性
     * 用于接收用户注册时上传或选择的头像图片相关信息（可能是图片的路径、链接等形式，具体取决于系统的设计），头像会在用户个人信息展示等场景中显示，体现用户的个性化。
     * 通过 @Schema 注解在 `Swagger` 文档中对该属性进行描述，提示前端开发人员该属性代表头像信息。
     */
    @Schema(description = "头像")
    private String img;

    /**
     * 校验登陆注册验证码成功的标识属性
     * 用于传递在注册过程中对登录注册验证码进行校验后得到的成功标识信息，后台业务逻辑会根据该标识判断验证码是否验证通过，进而决定是否允许用户注册流程继续进行。
     * 通过 @Schema 注解在 `Swagger` 文档中对该属性进行描述，提示前端开发人员该属性代表校验登陆注册验证码成功的标识信息。
     */
    @Schema(description = "校验登陆注册验证码成功的标识")
    private String checkRegisterSmsFlag;

    /**
     * 当账户未绑定时，临时的uid属性
     * 在某些特定的注册或账号绑定逻辑中，若账户还未完成最终绑定操作，可能会生成一个临时的用户唯一标识（uid），该属性用于传递这个临时的标识信息，方便后续业务逻辑对未绑定状态的账号进行处理。
     * 通过 @Schema 注解在 `Swagger` 文档中对该属性进行描述，提示前端开发人员该属性代表当账户未绑定时，临时的uid信息。
     */
    @Schema(description = "当账户未绑定时，临时的uid")
    private String tempUid;

    /**
     * 用户id属性
     * 通常用于标识用户的唯一编号，在一些涉及用户信息更新、关联其他业务数据等场景中会用到，不过在注册阶段可能根据具体业务逻辑，该属性有不同的用途（比如已有部分预注册信息，通过该id来关联更新等情况）。
     * 通过 @Schema 注解在 `Swagger` 文档中对该属性进行描述，提示前端开发人员该属性代表用户id信息。
     */
    @Schema(description = "用户id")
    private Long userId;
}