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

// 该类所属的包名，表明其位于商城相关的Java Bean的参数（param）包下，通常用于封装前端传递给后端的参数信息，方便在业务逻辑中对这些参数进行统一的验证、获取和使用。
package com.yami.shop.bean.param;

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

/**
 * DeliveryOrderParam类是一个Java Bean，主要用于封装与发货订单相关的参数信息，这些参数通常是由前端传递给后端，以便后端进行发货相关的业务处理操作。
 * 同时，它借助了一些注解来对参数进行约束和文档描述，例如使用Jakarta Validation的@NotBlank注解进行参数非空验证，使用Swagger的@Schema注解对参数在API文档中的展示进行描述。
 *
 * @author lanhai
 */
public class DeliveryOrderParam {

    // 使用@NotBlank注解对orderNumber字段进行约束，表明该字段不能为空字符串，当验证不通过时（即传入的订单号为空字符串），会按照message属性中定义的提示信息“订单号不能为空”进行错误提示。
    // 同时使用@Schema注解对该字段在Swagger生成的API文档中进行描述，说明其代表“订单号”，并且是必填项（required=true），方便接口使用者了解该参数的含义和要求。
    @NotBlank(message = "订单号不能为空")
    @Schema(description = "订单号", required = true)
    private String orderNumber;

    // 类似地，对dvyId字段使用@NotBlank注解进行约束，要求该字段不能为空，验证不通过时提示“快递公司id不能为空”。
    // 通过@Schema注解在API文档中描述其代表“快递公司”且为必填项，这里的Long类型可能对应着快递公司在系统中的唯一标识符，用于明确指定发货所使用的快递公司。
    @NotBlank(message = "快递公司id不能为空")
    @Schema(description = "快递公司", required = true)
    private Long dvyId;

    // 对dvyFlowId字段同样使用@NotBlank注解确保其不能为空，不符合要求时提示“物流单号不能为空”，并通过@Schema注解在API文档里说明其代表“物流单号”且是必填项，
    // 物流单号用于追踪货物运输的具体情况，是发货流程中必不可少的关键信息。
    @NotBlank(message = "物流单号不能为空")
    @Schema(description = "物流单号", required = true)
    private String dvyFlowId;

    /**
     * 获取快递公司ID的Getter方法，用于在其他类中获取该对象中封装的快递公司的唯一标识符，方便在发货相关的业务逻辑中使用该ID去查询、匹配或记录快递公司相关的信息。
     */
    public Long getDvyId() {
        return dvyId;
    }

    /**
     * 设置快递公司ID的Setter方法，用于在外部给该对象的dvyId字段赋值，例如在接收前端传递的参数并封装到该对象时，通过这个方法将快递公司ID设置到对象中，以便后续业务逻辑使用。
     */
    public void setDvyId(Long dvyId) {
        this.dvyId = dvyId;
    }

    /**
     * 获取物流单号的Getter方法，方便其他类获取该对象中封装的物流单号信息，在发货业务逻辑中可能会用于将物流单号传递给物流查询接口或者记录到订单的物流信息字段中等操作。
     */
    public String getDvyFlowId() {
        return dvyFlowId;
    }

    /**
     * 设置物流单号的Setter方法，用于外部给该对象的dvyFlowId字段赋值，例如将前端传来的物流单号设置到对象中，以保证对象中封装的物流信息准确完整，便于后续的发货相关业务处理。
     */
    public void setDvyFlowId(String dvyFlowId) {
        this.dvyFlowId = dvyFlowId;
    }

    /**
     * 获取订单号的Getter方法，供其他类获取该对象中封装的订单号信息，在发货操作中会依据订单号来确定具体是哪个订单进行发货处理，比如查询订单详情、更新订单状态等操作都需要用到订单号。
     */
    public String getOrderNumber() {
        return orderNumber;
    }

    /**
     * 设置订单号的Setter方法，用于外部将订单号赋值给该对象的orderNumber字段，例如在接收前端传递的订单号参数时，通过这个方法将其设置到对象中，确保对象中包含准确的订单号信息，以便后续基于订单号开展发货相关业务逻辑。
     */
    public void setOrderNumber(String orderNumber) {
        this.orderNumber = orderNumber;
    }
}