package com.zanxiang.game.module.manage.pojo.params;

import com.zanxiang.game.module.manage.pojo.vo.GameAdRuleConditionVO;
import lombok.Data;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import java.util.List;

/**
 * @author tianhua
 * @version 1.0
 * @description: TODO
 * @date 2023/12/28 15:53
 */
@Data
public class GameAdPolicyAddOrUpdateParam {

    /**
     * 传id为修改, 不传id为新增
     */
    private Long id;

    /**
     * 规则名称
     */
    @NotBlank(message = "规则名不能为空")
    private String ruleName;

    /**
     * 规则类型:1-个人规则
     */
    @NotNull(message = "规则类型不能为空")
    private Integer ruleType;

    /**
     * 部门类型:1-游戏投放
     */
    @NotNull(message = "部门类型不能为空")
    private Integer department;

    /**
     * 游戏ID(子游戏维度)
     */
    @NotNull(message = "游戏不能为空")
    private Long gameId;

    /**
     * 媒体类型:1-腾讯;2-头条
     */
    @NotNull(message = "媒体类型不能为空")
    private Integer mediaType;

    /**
     * 规则维度:1-默认;2-渠道;3-账号;4-广告
     */
    @NotNull(message = "规则维度不能为空")
    private Integer ruleDimension;

    /**
     * 生效范围(依据规则维度变化):NULL（默认维度：当前创建人的所有广告）;其他（对应规则维度的ID字符串，'-'间隔）
     */
    private List<Long> effectiveScope;

    /**
     * 是否启用
     */
    @NotNull(message = "是否启用不能为空")
    private Boolean isStart;

    /**
     * 告警方式:1-短信;2-电话;3-钉钉
     */
    @NotNull(message = "告警方式不能为空")
    private Integer alarmType;

    /**
     * 通知频率:单位:分钟/次
     */
    @NotNull(message = "通知频率不能为空")
    private Integer alarmFrequency;

    /**
     * 通知总次数
     */
    @NotNull(message = "通知总次数不能为空")
    private Integer alarmCount;

    /**
     * 操作维度:1-广告
     */
    @NotNull(message = "操作维度不能为空")
    private Integer operateDimension;

    /**
     * 操作类型:1-仅告警通知;2-暂停广告;3-启动广告;4-增加预算;5-减少预算;6-广告置顶标黄;7-广告置顶标红
     */
    @NotNull(message = "操作类型不能为空")
    private Integer operateType;

    /**
     * 执行范围:1-所有广告（不含删除）;2-投放中;3-暂停投放;4-预算不足
     */
    @NotNull(message = "执行范围不能为空")
    private Integer executeScope;

    /**
     * 数据巡视周期:1-实时
     */
    @NotNull(message = "数据巡视周期不能为空")
    private Integer dataVisitsPeriod;

    /**
     * 规则条件(json存储对象格式,最多可同事设置5个指标条件)
     */
    @NotEmpty(message = "规则条件不能为空")
    private List<GameAdRuleConditionVO> ruleCondition;

}
