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

package com.yami.shop.bean.param;

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * 订单参数类
 * 该类用于封装与订单查询等操作相关的参数信息，通过各个属性来传递不同的筛选条件，例如店铺ID、订单状态、支付情况、订单编号以及时间范围等，方便在业务逻辑中根据这些条件进行订单数据的查询筛选操作。
 *
 * @author lanhai
 */
@Data
// 使用 @Data 注解，由 lombok 自动生成常用的方法，如Getter、Setter、toString、equals、hashCode等方法
public class OrderParam {
    /**
     * 店铺id属性
     * 用于指定要查询的订单所属的店铺的唯一标识，可根据该属性筛选出特定店铺下的订单信息。
     */
    private Long shopId;

    /**
     * 订单状态属性
     * 用于指定要查询的订单的状态，取值含义如下：
     * - -1 表示已取消的订单；
     * - 0 表示待付款的订单；
     * - 1 表示待发货的订单；
     * - 2 表示待收货的订单；
     * - 3 表示已完成的订单。
     * 通过该属性可以筛选出处于特定状态的订单集合。
     */
    private Integer status;

    /**
     * 是否已经支付属性
     * 用于指定要查询的订单是否已经完成支付，取值含义如下：
     * - 1 表示已经支付过的订单；
     * - 0 表示没有支付过的订单。
     * 可依据该属性筛选出已支付或未支付的订单数据。
     */
    private Integer isPayed;

    /**
     * 订购流水号属性
     * 用于指定要查询的订单的唯一编号，通过该属性可以精确查找某一个具体的订单记录。
     */
    private String orderNumber;

    /**
     * 开始时间属性
     * 用于指定订单查询的时间范围的起始时间，结合结束时间属性可以筛选出在该时间段内产生的订单信息。
     * 其日期时间格式通过 @DateTimeFormat 注解指定为 "yyyy-MM-dd HH:mm:ss"，在接收前端传入的时间数据时会按照此格式进行解析。
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /**
     * 结束时间属性
     * 用于指定订单查询的时间范围的结束时间，结合开始时间属性可以筛选出在该时间段内产生的订单信息。
     * 其日期时间格式通过 @DateTimeFormat 注解指定为 "yyyy-MM-dd HH:mm:ss"，在接收前端传入的时间数据时会按照此格式进行解析。
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;
}