package shop.alien.entity.storePlatform.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.JsonNode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import shop.alien.entity.store.StoreImg;

import java.util.Date;

/**
 * 运营活动 DTO
 * 用于接收前端请求参数
 *
 * @author system
 * @since 2025-11-26
 */
@Data
@ApiModel(value = "StoreOperationalActivityDTO", description = "运营活动传输对象")
public class StoreOperationalActivityDTO {

    @ApiModelProperty(value = "主键ID（更新时必填）")
    private Integer id;

    @ApiModelProperty(value = "商户ID")
    private Integer storeId;

    @ApiModelProperty(value = "活动名称", required = true)
    private String activityName;

    @ApiModelProperty(value = "活动宣传图URL")
    private String promotionalImage;

    @ApiModelProperty(value = "活动开始时间", required = true)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;

    @ApiModelProperty(value = "活动结束时间", required = true)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;

    @ApiModelProperty(value = "用户可参与次数，0表示不限制")
    private Integer participationLimit;

    @ApiModelProperty(value = "活动规则：VERIFY_AND_COMMENT-核销并评论, VERIFY-核销, CHECK_IN-打卡", required = true)
    private String activityRule;

    @ApiModelProperty(value = "奖励类型：COUPON-优惠券, RED_PACKET-红包, VOUCHER-代金券")
    private String rewardType;

    @ApiModelProperty(value = "优惠券ID")
    private Integer couponId;

    @ApiModelProperty(value = "优惠券发放数量")
    private Integer couponQuantity;

    @ApiModelProperty(value = "代金券ID")
    private Integer voucherId;

    @ApiModelProperty(value = "代金券发放数量")
    private Integer voucherQuantity;

    @ApiModelProperty(value = "状态：0-禁用, 1-启用")
    private Integer status;

    @ApiModelProperty(value = "拒绝原因")
    private String approvalComments;

    @ApiModelProperty(value = "活动标题图片")
    private StoreImg activityTitleImg;

    @ApiModelProperty(value = "活动详情图片")
    private StoreImg activityDetailImg;

    @ApiModelProperty(value = "页码")
    private Integer pageNum;

    @ApiModelProperty(value = "页数")
    private Integer pageSize;

    @ApiModelProperty(value = "上传图片的方式: 1-用户本地上传,2-使用用户输入的描述AI生成图片")
    private Integer uploadImgType;

    @ApiModelProperty(value = "用户输入的AI描述")
    private JsonNode imgDescribe;

    @ApiModelProperty(value = "AI审核的输入参数")
    private JsonNode auditParam;

    @ApiModelProperty(value = "活动类型：COMMENT-评论有礼, MARKETING-营销活动")
    private String activityType;

    @ApiModelProperty(value = "报名开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date signupStartTime;

    @ApiModelProperty(value = "报名结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date signupEndTime;

    @ApiModelProperty(value = "活动限制人数")
    private Integer activityLimitPeople;

    @ApiModelProperty(value = "活动详情")
    private String activityDetails;

    @ApiModelProperty(value = "结果类型：0-文字, 1-图片")
    private Integer resultType;

    @ApiModelProperty(value = "结果文字")
    private String resultText;

    @ApiModelProperty(value = "结果图片地址")
    private String resultMediaUrl;
}

