package com.bonus.canteen.core.supermarket.domain;

import com.alibaba.excel.util.StringUtils;
import com.bonus.common.houqin.utils.SM4EncryptUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * 订单对象 order_info
 * 
 * @author ruoyi
 * @date 2025-04-14
 */

@Data
public class ShopOrderQueryParam implements Serializable
{
    private static final long serialVersionUID = 1L;

    /** 设备订单号 */
    private String deviceOrderId;

    /** 设备sn */
    private String deviceSn;

    private Long orderId;

    private List<Long> orderIdList;

    private List<Long> deptIdList;

    /** 设备编号 */
    private String deviceNum;

    /** 人员编号 */
    private Long userId;

    /** 身份验证方式 1 刷卡 2 刷脸 3 扫码 */
    private Integer identityVerification;

    /** 订单来源类型 */
    private Integer sourceType;

    /** 是否在线订单 1 是 2 否 */
    private Integer isOnline;

    private Long areaId;

    /** 食堂id */
    private Long canteenId;

    private List<Long> canteenIdList;

    /** 档口id */
    private Long stallId;

    private List<Long> stallIdList;

    /** 餐次类型 1-早餐 2-午餐 3-晚餐 4-下午茶 5-夜宵 */
    private Integer mealtimeType;

    private List<Integer> mealtimeTypeList;

    /** 订单日期 yyyy-MM-dd */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date orderDate;

    /** 下单时间 yyyy-MM-dd HH:mm:ss */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date orderTime;

    /** 订单类型 1 当餐 2 预订餐 3 报餐 4 商城  11 线下消费 12 自助餐 21 补扣 22 外部订单 */
    @NotNull(message = "订单类型不能为空")
    private Integer orderType;

    private List<Integer> orderTypeList;

    /** 订单状态 1 已下单 2 已完成 3 已取消 */
    private Integer orderState;

    private List<Integer> orderStateList;

    /** 订单退款状态 1 未退单 2 已退单 3 部分退单 */
    private Integer orderRefundState;

    /** 扣款类型 1 下单扣款 2 核销扣款 */
    private Integer deductionType;

    /** 支付时间 yyyy-MM-dd HH:mm:ss */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date payTime;

    /** 支付方式 */
    private Integer payType;

    /** 支付渠道 */
    private Integer payChannel;

    /** 支付状态 1 待支付 2 支付中 3 支付成功 4 支付失败 5 支付取消 6 部分支付 */
    private Integer payState;

    private List<Integer> payStateList;

    /** 评论状态 1 已评论 2 未评论 */
    private Integer commentState;

    @ApiModelProperty("开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startDateTime;

    @ApiModelProperty("结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endDateTime;

    @ApiModelProperty("开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate startDate;

    @ApiModelProperty("结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate endDate;

    private String custSearchInfo;

    public ShopOrderQueryParam() {
        this.endDate = LocalDate.now().plusDays(7);
        this.startDate = LocalDate.now().minusDays(7);
    }
}
