package com.red.circle.other.inner.model.cmd.material;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.red.circle.framework.dto.Command;
import com.red.circle.other.inner.enums.material.BadgeBackpackExpireTypeEnum;
import com.red.circle.other.inner.enums.sys.SysBadgeConfigTypeEnum;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * @author pengliang on 2023/11/6
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class GiveBadgeCmd extends Command {

  /**
   * 接收用户.
   */
  @NotNull(message = "acceptUserId required.")
  @JsonSerialize(using = ToStringSerializer.class)
  private Long acceptUserId;

  /**
   * 徽章id.
   */
  @NotNull(message = "badgeId required.")
  @JsonSerialize(using = ToStringSerializer.class)
  private Long badgeId;

  /**
   * 过期类型.
   */
  @NotNull(message = "expireType required.")
  private BadgeBackpackExpireTypeEnum expireType;

  /**
   * 赠送天数.
   */
  @NotNull(message = "days required.")
  private Integer days;

  /**
   * 徽章类型.
   */
  @NotNull(message = "badgeType required.")
  private SysBadgeConfigTypeEnum badgeType;

}
