package com.haha.entity.dto;

import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 统一活动查询DTO
 * 支持所有活动类型：1-首单立减 2-优惠折扣 3-商品满减 4-邀请有礼
 * 继承 PageQueryDTO 支持分页查询
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class UnifiedActivityQueryDTO extends PageQueryDTO {

    // ===== 基础查询条件 =====

    /**
     * 活动名称（模糊查询）
     */
    private String activityName;

    /**
     * 活动类型：1-首单立减 2-优惠折扣 3-商品满减 4-邀请有礼
     * 支持查询单个类型或所有类型（不传则查询全部）
     */
    private Integer activityType;

    /**
     * 活动状态：0-未开始 1-进行中 2-已结束 3-已停用
     */
    private Integer status;

    /**
     * 创建人ID
     */
    private Long creatorId;

    // ===== 时间范围查询 =====

    /**
     * 开始时间范围 - 起始
     */
    private LocalDateTime startTimeBegin;

    /**
     * 开始时间范围 - 结束
     */
    private LocalDateTime startTimeEnd;

    /**
     * 结束时间范围 - 起始
     */
    private LocalDateTime endTimeBegin;

    /**
     * 结束时间范围 - 结束
     */
    private LocalDateTime endTimeEnd;

    // ===== 适用范围筛选 =====

    /**
     * 适用范围：0-全平台 1-指定设备/门店
     */
    private Integer applyScope;

    // ===== 邀请活动特有筛选条件 (type=4) =====

    /**
     * 是否包含已达到每日上限的活动（仅对邀请有礼类型有效）
     */
    private Boolean includeDailyLimitReached;

    /**
     * 是否包含已达到总上限的活动（仅对邀请有礼类型有效）
     */
    private Boolean includeTotalLimitReached;

    /**
     * 按邀请人数排序：asc-升序 desc-降序（仅对邀请有礼类型有效）
     */
    private String orderByInviteCount;

    // ===== 排序字段 =====

    /**
     * 排序字段：createTime, startTime, endTime, activityName 等
     */
    private String sortField;

    /**
     * 排序方式：asc-升序 desc-降序
     */
    private String sortOrder;
}
