package shop.alien.entity.storePlatform.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * 运营活动详情返回对象（用户端）
 *
 * @author system
 * @since 2025-01-XX
 */
@Data
@JsonInclude
@ApiModel(value = "StoreOperationalActivityDetailVo", description = "运营活动详情返回对象，包含活动基本信息、优惠券信息、代金券信息等")
public class StoreOperationalActivityDetailVo {

    @ApiModelProperty(value = "主键")
    private Integer id;

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

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

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

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

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

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

    @ApiModelProperty(value = "活动规则")
    private String activityRule;

    @ApiModelProperty(value = "奖励类型")
    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 = "状态")
    private Integer status;

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

    @ApiModelProperty(value = "活动类型")
    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 = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createdTime;

    @ApiModelProperty(value = "活动状态名称")
    private String statusName;

    @ApiModelProperty(value = "优惠券名称")
    private String couponName;

    @ApiModelProperty(value = "代金券名称")
    private String voucherName;

    @ApiModelProperty(value = "商户名称")
    private String storeName;

    @ApiModelProperty(value = "活动标题图片URL")
    private String activityTitleImgUrl;

    @ApiModelProperty(value = "活动详情图片URL")
    private String activityDetailImgUrl;

    @ApiModelProperty(value = "活动详情图片URL列表")
    private List<String> activityDetailImgUrlList;

    @ApiModelProperty(value = "当前报名人数")
    private Integer currentSignupCount;

    @ApiModelProperty(value = "当前通过人数")
    private Integer currentApprovedCount;

    @ApiModelProperty(value = "是否已报名")
    private Boolean signedUp;

    @ApiModelProperty(value = "是否在报名时间内")
    private Boolean inSignupTime;

    @ApiModelProperty(value = "详情按钮状态：0-活动已结束，1-报名已截止，2-等待活动开始，3-报名成功，4-已报名，5-立即报名")
    private Integer detailStatus;

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

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

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

    @ApiModelProperty(value = "审核时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date auditTime;

}
