package com.red.circle.wallet.inner.model.cmd;

import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import lombok.Data;

/**
 * 发放工资命令（Inner）.
 */
@Data
public class SalaryIssueInnerCmd implements Serializable {

  private static final long serialVersionUID = 1L;

  /**
   * 用户ID.
   */
  @NotNull(message = "userId required.")
  private Long userId;

  /**
   * 系统来源.
   */
  private String sysOrigin;

  /**
   * 工资类型.
   */
  @NotBlank(message = "salaryType required.")
  private String salaryType;

  /**
   * 发放金额.
   */
  @NotNull(message = "amount required.")
  @DecimalMin(value = "0.01", message = "amount must > 0")
  private BigDecimal amount;

  /**
   * 账单归属（YYYYMM）.
   */
  @NotNull(message = "billBelong required.")
  private Integer billBelong;

  /**
   * 业务单号.
   */
  @NotBlank(message = "trackId required.")
  private String trackId;

  /**
   * 团队ID.
   */
  private Long teamId;

  /**
   * BD ID.
   */
  private Long bdId;

  /**
   * 代理ID.
   */
  private Long agentId;

  /**
   * 事件描述.
   */
  private String eventDesc;

  /**
   * 备注.
   */
  private String remark;

  /**
   * 操作用户ID.
   */
  private Long opUserId;
}
