package com.mosquito.project.domain;

import java.time.ZonedDateTime;
import java.util.List;
import java.util.Set;

public class Activity {
    private Long id;
    private String name;
    private ZonedDateTime startTime;
    private ZonedDateTime endTime;
    private String status; // 活动状态
    private Set<Long> targetUserIds;
    private List<RewardTier> rewardTiers;
    private RewardMode rewardMode = RewardMode.DIFFERENTIAL; // 默认为补差模式
    private List<MultiLevelRewardRule> multiLevelRewardRules;

    // 数据权限相关字段
    private Long departmentId;  // 部门ID
    private Long creatorId;     // 创建者ID

    // 四大配置字段（JSON字符串格式）
    private String targetUsersConfig;    // 目标人群配置
    private String pageContentConfig;   // 页面内容配置
    private String rewardTiersConfig;   // 阶梯奖励配置
    private String rewardCalculationMode; // 奖励计算模式
    private String multiLevelRewardConfig; // 多级邀请衰减奖励配置

    // Getters and Setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public ZonedDateTime getStartTime() {
        return startTime;
    }

    public void setStartTime(ZonedDateTime startTime) {
        this.startTime = startTime;
    }

    public ZonedDateTime getEndTime() {
        return endTime;
    }

    public void setEndTime(ZonedDateTime endTime) {
        this.endTime = endTime;
    }

    public Set<Long> getTargetUserIds() {
        return targetUserIds;
    }

    public void setTargetUserIds(Set<Long> targetUserIds) {
        this.targetUserIds = targetUserIds;
    }

    public List<RewardTier> getRewardTiers() {
        return rewardTiers;
    }

    public void setRewardTiers(List<RewardTier> rewardTiers) {
        this.rewardTiers = rewardTiers;
    }

    public RewardMode getRewardMode() {
        return rewardMode;
    }

    public void setRewardMode(RewardMode rewardMode) {
        this.rewardMode = rewardMode;
    }

    public List<MultiLevelRewardRule> getMultiLevelRewardRules() {
        return multiLevelRewardRules;
    }

    public void setMultiLevelRewardRules(List<MultiLevelRewardRule> multiLevelRewardRules) {
        this.multiLevelRewardRules = multiLevelRewardRules;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    // 四大配置字段的 getter 和 setter
    public String getTargetUsersConfig() {
        return targetUsersConfig;
    }

    public void setTargetUsersConfig(String targetUsersConfig) {
        this.targetUsersConfig = targetUsersConfig;
    }

    public String getPageContentConfig() {
        return pageContentConfig;
    }

    public void setPageContentConfig(String pageContentConfig) {
        this.pageContentConfig = pageContentConfig;
    }

    public String getRewardTiersConfig() {
        return rewardTiersConfig;
    }

    public void setRewardTiersConfig(String rewardTiersConfig) {
        this.rewardTiersConfig = rewardTiersConfig;
    }

    public String getRewardCalculationMode() {
        return rewardCalculationMode;
    }

    public void setRewardCalculationMode(String rewardCalculationMode) {
        this.rewardCalculationMode = rewardCalculationMode;
    }

    public String getMultiLevelRewardConfig() {
        return multiLevelRewardConfig;
    }

    public void setMultiLevelRewardConfig(String multiLevelRewardConfig) {
        this.multiLevelRewardConfig = multiLevelRewardConfig;
    }

    // 数据权限字段的 getter 和 setter
    public Long getDepartmentId() {
        return departmentId;
    }

    public void setDepartmentId(Long departmentId) {
        this.departmentId = departmentId;
    }

    public Long getCreatorId() {
        return creatorId;
    }

    public void setCreatorId(Long creatorId) {
        this.creatorId = creatorId;
    }
}
