package com.crunii.micro.domain.entity.main;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import javax.persistence.*;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;

/**
 * 活动表;
 * @author : http://www.chiner.pro
 * @date : 2023-11-27
 */
@Entity
@Table(name = "YCQ_PUBLISH_ACTIVITY")
@NamedQuery(name = "YcqPublishActivity.findAll", query="SELECT t FROM YcqPublishActivity t")
@DynamicInsert
@DynamicUpdate
@Getter
@Setter
@ToString
@EqualsAndHashCode(of= {"id"})
@ApiModel(description = "活动发布表")
public class YcqPublishActivity implements Serializable {
    private static final long serialVersionUID = -81184988756739032L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name ="ID")
    @ApiModelProperty(value = "序号")
    private Long id;
    /** 活动标题 */
    @ApiModelProperty(value = "活动标题")
    @Column(name = "ACTIVITY_TITLE")
    private String activityTitle ;

    /** 所属业务名称 */
    @ApiModelProperty(value = "所属业务code")
    @Column(name = "BUSINESS_BELONG")
    private String businessBelong ;

    /** 所属业务名称 */
    @ApiModelProperty(value = "所属业务名称")
    @Column(name = "BUSINESS_BELONG_NAME")
    private String businessBelongName ;

    @Column(name = "BUSINESS_BELONG_LOGO_URL")
    private String businessBelongLogoUrl ;
    /** 活动类型id */
    @ApiModelProperty(value = "活动类型id")
    @Column(name = "ACTIVITY_TYPE_ID")
    private Integer activityTypeId ;
    /** 活动类型名称 */
    @ApiModelProperty(value = "活动类型名称")
    @Column(name = "ACTIVITY_TYPE_NAME")
    private String activityTypeName ;
    /** 活动开始时间 */
    @ApiModelProperty(value = "活动开始时间")
    @Column(name = "START_TIME")
    private LocalDateTime startTime ;
    /** 活动结束时间 */
    @ApiModelProperty(value = "活动结束时间")
    @Column(name = "END_TIME")
    private LocalDateTime endTime ;
    /** 活动地址 */
    @ApiModelProperty(value = "活动地址")
    @Column(name = "ACTIVITY_ADDRESS")
    private String activityAddress ;
    /** 活动举办方 */
    @ApiModelProperty(value = "活动举办方")
    @Column(name = "SPONSOR")
    private String sponsor ;

    @Column(name = "PUBLISH_TIME")
    private LocalDateTime publishTime;
    /** 联系方式 */
    @ApiModelProperty(value = "联系方式")
    @Column(name = "CONTACT_INFORMATION")
    private String contactInformation ;
    /** 活动状态（1-启用，0-未启用） */
    @ApiModelProperty(value = "活动状态（1-启用，0-未启用）")
    @Column(name = "ACTIVITY_STATE")
    private Integer activityState ;
    /** 是否限定人数 */
    @ApiModelProperty(value = "是否限定人数")
    @Column(name = "IS_LIMIT")
    private Integer isLimit ;
    /** 限定人数 */
    @ApiModelProperty(value = "限定人数")
    @Column(name = "LIMIT_COUNT")
    private Integer limitCount ;
    /** 是否需要报名 */
    @ApiModelProperty(value = "是否需要报名")
    @Column(name = "IS_APPLY")
    private Integer isApply ;
    /** 报名开始时间 */
    @ApiModelProperty(value = "报名开始时间")
    @Column(name = "APPLY_START_TIME")
    private Date applyStartTime ;
    /** 报名结束时间 */
    @ApiModelProperty(value = "报名结束时间")
    @Column(name = "APPLY_END_TIME")
    private Date applyEndTime ;
    /** 报名是否需要审核 */
    @ApiModelProperty(value = "报名是否需要审核")
    @Column(name = "NEEDED_AUDIT")
    private Integer neededAudit ;
    /** 是否需要签到签退 */
    @ApiModelProperty(value = "是否需要签到签退")
    @Column(name = "NEEDED_SIGN")
    private Integer neededSign ;

    /** 活动发布内容是否需要审核 */
//    @ApiModelProperty(value = "活动发布内容是否需要审核")
//    @Column(name = "CONTENT_NEEDED_AUDIT")
//    private Integer contentNeededAudit ;
    /** 活动反馈方式 */
    @ApiModelProperty(value = "活动反馈方式")
    @Column(name = "REPLY_TYPE")
    private Integer replyType ;
    /** 自定义反馈表id */
//    @ApiModelProperty(value = "自定义反馈表id")
//    @Column(name = "FEEDBACK_FORM_ID")
//    private Long feedbackFormId ;
    /** 活动内容 */
    @ApiModelProperty(value = "活动内容")
    @Column(name = "ACTIVITY_CONTENT")
    private String activityContent ;

    /** 组织id */
    @ApiModelProperty(value = "组织id")
    @Column(name = "ORG_ID")
    private Long orgId ;

    @Column(name = "ORG_NAME")
    private String orgName ;

//    /** 审核活动的组织id */
//    @Column(name = "AUDIT_ORG_ID")
//    private Long auditOrgId;

    /** 创建人 */
    @ApiModelProperty(value = "创建人")
    @Column(name = "CREATE_USER_ID")
    private Integer createUserId ;

    @Column(name = "CREATE_USER_NAME")
    private String createUserName;

    /** 创建时间 */
    @ApiModelProperty(value = "创建时间")
    @Column(name = "CREATE_TIME")
    private Date createTime ;
    /** 更新人 */
    @ApiModelProperty(value = "更新人")
    @Column(name = "UPDATE_USER_ID")
    private Integer updateUserId ;
    /** 更新人 */
    @ApiModelProperty(value = "更新人")
    @Column(name = "UPDATE_USER_NAME")
    private String updateUserName ;
    /** 更新时间 */
    @ApiModelProperty(value = "更新时间")
    @Column(name = "UPDATE_TIME")
    private Date updateTime ;
    /** 是否被删除 */
    @ApiModelProperty(value = "是否被删除")
    @Column(name = "IS_DELETED")
    private Integer isDeleted;

    /** 是否置顶 */
    @ApiModelProperty(value = "")
    @Column(name = "IS_TOP")
    private Integer isTop ;

    /**  */
    @ApiModelProperty(value = "")
    @Column(name = "publisher")
    private String publisher ;


    @Column(name = "IS_MANUAL_SHUTDOWN")
    private Integer isManualShutdown;

    @Column(name = "APPLYER_COUNT")
    private Integer applyerCount;

    @Column(name = "BROWSE_COUNT")
    private Integer browseCount;

    @Column(name = "COPY_TIMES")
    private Integer copyTimes;

    @Column(name = "AUDIT_COUNT")
    private Integer auditCount;

    /**
     * 发布时间（活动内容部分）
     */
    @Column(name = "CONTENT_PUBLISH_TIME")
    private LocalDateTime contentPublishTime;

    /**
     * 发布所属组织（活动内容部分）
     */
    @Column(name = "CONTENT_PUBLISH_ORG_NAME")
    private String contentPublishOrgName;

    /**
     * 上下架 1发布/已上架 2已下架 3待发布 4初始状态';
     */
    @Column(name = "PUT_ON_LIST")
    private Integer putOnList;

    /**
     * 发布活动审核状态 1已审核 2审核通过并向上级提交 3審核不通過 4待审核
     */
    @Column(name = "PUBLISH_AUDIT_STATUS")
    private Integer publishAuditStatus;

//    /**
//     * 当前发布活动的审核组织id
//     */
//    @Column(name = "PUBLISH_AUDIT_ORG_ID")
//    private Long publishAuditOrgId;

    /**
     * 1待审核 2待发布 3未开始 4报名中 5进行中 6签到中 7签退中 8已结束 9已下架
     */
    @Column(name = "ACTIVITY_STATUS_TYPE_ID")
    private Integer activityStatusTypeId;

    /**
     * 男性人数（青春之约使用）
     */
    @Column(name = "MALE_COUNT")
    private Integer maleCount;

    /**
     * 女性限制人数（青春之约使用）
     */
    @Column(name = "FEMALE_COUNT")
    private Integer femaleCount;

}