
package com.czg.market.dto;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.alibaba.fastjson2.annotation.JSONField;
import jakarta.validation.Valid;
import jakarta.validation.constraints.*;
import lombok.experimental.Accessors;
import java.io.Serial;
import java.util.List;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 分销配置 实体类。
 *
 * @author ww
 * @since 2025-10-25
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class MkDistributionConfigDTO implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 是否开启
     */
//    @NotNull(message = "是否开启不能为空")
    private Integer isEnable;

    /**
     * pay购买开通 auto自动开通 manual手动开通
     */
//    @NotBlank(message = "开通方式不能为空")
    private String openType;

    /**
     * 邀请条件人数
     */
    @Min(value = 1, message = "邀请人数不能小于1")
    private Integer inviteCount;

    /**
     * 被邀请人消费有效 0 1
     */
    private Integer inviteConsume;

    /**
     * 购买开通金额
     */
    @DecimalMin(value = "0.01", message = "购买开通金额不能小于0.01")
    private BigDecimal payAmount;

    /**
     * 每人奖励次数
     */
//    @NotNull(message = "每人奖励次数不能为空")
    @Min(value = 1, message = "每人奖励次数不能小于1")
    private Integer rewardCount;

    /**
     * n天结算
     */
//    @NotNull(message = "结算天数不能为空")
    @Min(value = 0, message = "结算天数不能小于0")
    private Integer settlementDay;

    /**
     * not_upgrade不自动升级 invite邀请有效人数 cost消费金额
     */
//    @NotBlank(message = "升级条件不能为空")
    private String upgradeType;

    /**
     * 未开通页面富文本
     */
    private String notActivatedPage;


    @Valid
    private List<MkDistributionLevelConfigDTO> levelConfigList;

}
