package com.zhentao.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 活动实体类
 */
@Data
@TableName("activity")
public class Activity implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 活动ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    
    /**
     * 活动名称
     */
    private String name;
    
    /**
     * 活动类型（1：线上，2：线下）
     */
    private Integer type;
    
    /**
     * 活动类别（如：讲座、展览、比赛、派对等）
     */
    private String category;
    
    /**
     * 最大参与人数
     */
    private Integer maxParticipants;
    
    /**
     * 实际参与人数
     */
    private Integer actualParticipants;
    
    /**
     * 活动地点
     */
    private String location;
    
    /**
     * 活动开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;
    
    /**
     * 活动结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;
    
    /**
     * 活动封面图片URL
     */
    private String coverImage;
    
    /**
     * 参加活动费用
     */
    private Double price;
    
    /**
     * 活动状态（1：未开始，2：进行中，3：已结束）
     */
    private Integer status;
    
    /**
     * 报名截止时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime registrationEndTime;
    
    /**
     * 逻辑删除标识（0：未删除，1：已删除）
     */
    @TableLogic
    private Integer isDeleted;
    
    /**
     * 创建时间
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdTime;
    
    /**
     * 活动描述（用于详情页）
     */
    private String description;
    
    /**
     * 注意事项
     */
    private String notes;
    
    /**
     * 是否热门活动
     */
    private Boolean isHot;
}

