package com.hzs.activity.people.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzs.activity.fest.vo.AcFestivalRuleConfigVO;
import com.hzs.activity.work.vo.AcSuperWorkRuleConfigVO;
import com.hzs.common.core.annotation.Excel;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import com.hzs.common.core.web.domain.BaseApprovalEntity;
import com.hzs.common.domain.activity.base.AcGoalMemberConfig;
import com.hzs.system.sys.dto.LoginUser;
import lombok.*;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 新人礼包活动基础VO
 */
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AcBaseConfigVO extends BaseApprovalEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 活动状态 EActivityStatus
     */
    @Transaction(transactionKey = EnumsPrefixConstants.ACTIVITY_STATUS)
    private Integer activityStatus;
    /**
     * 活动状态 EActivityStatus
     */
    private String activityStatusVal;
    /**
     * 活动主键
     */
    private Long pkId;
    /**
     * 国家
     */
    private Integer pkCountry;

    /**
     * 审核状态（1=未审核,2=审核通过,3=审核驳回） 枚举 ： EAgentApprovalStatus
     */
    private Integer approvalStatus;
    /**
     * 审批业务类型 来源于枚举  EApprovalBusiness
     */
    private Integer approvalType;

    /**
     * 修改前数据
     */
    private String beforeData;

    /**
     * 修改后数据
     */
    private String afterData;

    /**
     * 活动名称
     */
    private String actName;
    /**
     * 活动封面
     */
    private String actCover;
    /**
     * 活动类型（1=商品赠送 2=消费赠送 3=直推赠送 4=超级工作室赠送 5=节日赠送 6=新人礼包 7=抽奖 8=红包）
     */
    private Integer actType;
    /**
     * 活动说明
     */
    private String actExplain;
    /**
     * 金额
     */
    private BigDecimal payMoney;
    /**
     * 活动开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date actStartDate;
    /**
     * 活动开始时间 查询开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startActStartDate;
    /**
     * 活动开始时间 查询结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endActStartDate;

    /**
     * 活动结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date actEndDate;
    /**
     * 活动结束时间 查询开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startActEndDate;

    /**
     * 活动结束时间 查询结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endActEndDate;

    /**
     * 显示开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date disStartDate;
    /**
     * 显示结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date disEndDate;

    /**
     * 开始活动结束时间
     */
    private Date startCreationTime;

    /**
     * 结束活动结束时间
     */
    private Date endCreationTime;
    /**
     * 管理员登录信息
     */
    private LoginUser loginUser;

    /**
     * 新人礼包规则集合
     */
    private List<AcNewPeopleRuleConfigVO> anpList;
    /**
     * 超级工作室赠送规则集合
     */
    private List<AcSuperWorkRuleConfigVO> aswList;
    /**
     * 节日赠送规则集合
     */
    private List<AcFestivalRuleConfigVO> afrList;
    /**
     * 目标群体配置列表
     */
    private List<AcGoalMemberConfig> goalMemberConfigList;
    /**
     * 操作类型（1=新增,2=修改,3=删除）EcontrolType
     */
    private Integer controlType;


    /**
     * 活动模块 (活动类型的小类)
     */
    private Integer atcModule;
    /**
     * 创建时间
     */
    @Excel(name = "创建时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date creationTime;

}
