package com.zhongshu.card.client.model.payment;

import com.github.microservice.types.OrderModeType;
import com.github.microservice.types.payment.PaymentType;
import com.zhongshu.card.client.model.base.SuperSearch;
import com.github.microservice.types.OrderState;
import com.zhongshu.card.client.type.RefundState;
import com.zhongshu.card.client.type.StatisticType;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author TRX
 * @date 2024/6/17
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ExpenseFlowSearch extends SuperSearch {

    @Schema(description = "用户userId")
    private String userId;

    @Schema(description = "订单类型")
    private OrderModeType orderModeType = OrderModeType.Consume;

    @Schema(description = "订单状态")
    private List<OrderState> orderTypes;

    @Schema(description = "订单所属的商户")
    private String shopOid;

    @Schema(description = "订单所属的学校")
    private String schoolOid;

    @Schema(description = "消费类型，如：餐饮消费")
    private String payType;

    @Schema(description = "年份，如：2024")
    private Integer year;

    @Schema(description = "月份，如 6")
    private Integer month;

    @Schema(description = "第几周，如：32")
    private Integer week;

    @Schema(description = "当前月的第几天")
    private Integer dayOfMonth;

    @Schema(description = "当前年的第几天")
    private Integer dayOfYear;

    @Schema(description = "当前的第几小时")
    private Integer hourOfDay;

    @Schema(description = "消费订单号")
    private String orderNo;

    @Schema(description = "支付订单号")
    private String paymentNo;

    @Schema(description = "支付方式")
    private String paymentWay;

    @Schema(description = "支付方式")
    private PaymentType paymentType;

    @Schema(description = "消费金额（单位：分）")
    private BigDecimal payAmount;

    @Schema(description = "支付订单状态")
    private String paymentStatus;

    @Schema(description = "是否消费成功")
    private Boolean isPaySuccess;

    @Schema(description = "退款状态")
    private RefundState refundState;

    @Schema(description = "")
    private Boolean verifyParamIsSuccess;

    @Schema(description = "是否退款")
    private Boolean isRefund;

    // ------------------商户查询参数 start-----------------

    @Schema(description = "是否查询所有的商户")
    private Boolean isAllBusinessMain = Boolean.TRUE;

    @Schema(description = "查询商户集合", hidden = true)
    private List<String> shopOids;

    @Schema(description = "统计类型，按年、月、周", hidden = true)
    private StatisticType statisticType;

    @Schema(description = "group 字段名称", hidden = true)
    private String fieldName = "";

}
