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

package com.yami.shop.sys.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;

/**
 * UpdatePasswordDto类，用于在系统中作为更新密码操作时的数据传输对象。
 * 它封装了更新密码相关的必要参数，即旧密码和新密码，并且通过相关的校验注解对参数进行格式和必填性等方面的约束，
 * 同时使用Swagger的Schema注解对字段进行描述，方便在API文档生成等场景中清晰展示参数信息。
 *
 * @author lanhai
 */
@Data
@Schema(description = "更新密码参数")
public class UpdatePasswordDto {

    /**
     * 旧密码字段，用于接收用户输入的当前正在使用的密码信息。
     * 通过@NotBlank注解约束该字段不能为空字符串，若为空则会触发相应的校验提示信息（“旧密码不能为空”）。
     * @Size注解限制了该字段的最大长度为50个字符，避免过长的密码输入可能带来的一些问题（比如存储、比对等方面的不便）。
     * @Schema注解用于在Swagger等API文档生成工具中描述该字段，表示这是旧密码，且在接口请求中是必填项。
     */
    @NotBlank(message = "旧密码不能为空")
    @Size(max = 50)
    @Schema(description = "旧密码", required = true)
    private String password;

    /**
     * 新密码字段，用于接收用户输入的想要更新设置的新密码信息。
     * 同样受到@NotBlank注解约束不能为空，若为空会有相应校验提示（“新密码不能为空”），并且@Size注解限制最大长度为50个字符。
     * @Schema注解表明在API文档中该字段代表新密码，且在接口请求里是必填内容。
     */
    @NotBlank(message = "新密码不能为空")
    @Size(max = 50)
    @Schema(description = "新密码", required = true)
    private String newPassword;
}