package com.red.circle.other.infra.database.mongo.entity.bd;

import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Timestamp;

/**
 * 管理员工资政策配置 - 统一管理所有政策类型.
 *
 * @author AI Assistant
 * @since 2025-12-13
 */
@Data
@Accessors(chain = true)
@Document("admin_salary_policy")
public class AdminSalaryPolicy implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * ID.
     */
    @Id
    private String id;

    /**
     * 政策类型.
     * BD_TEAM_SALARY - BD团队工资政策
     * BD_TEAM_RECHARGE - BD团队充值政策
     * RECHARGE_AGENT - 充值代理政策
     * BD_LEADER - BD Leader政策
     */
    private String policyType;

    /**
     * 等级（用于BD和BD Leader政策）.
     */
    private Integer level;

    // ==================== BD Policy 字段 ====================
    
    /**
     * 所需 Agency 数量（BD政策使用）.
     */
    private Integer requiredAgencyNumber;

    /**
     * 团队金额要求（美元）.
     * - BD_TEAM_SALARY: 团队工资总和要求
     * - BD_TEAM_RECHARGE: 团队充值总和要求
     */
    private BigDecimal requiredTeamAmount;

    /**
     * 提成比例（百分比，如 4% 存储为 4.00）.
     * 用于 BD_TEAM_SALARY 和 BD_TEAM_RECHARGE 政策
     */
    private BigDecimal commissionRate;

    // ==================== Recharge Agent Policy 字段 ====================
    
    /**
     * Coin Seller 充值要求（美元）.
     * 用于 RECHARGE_AGENT 政策
     */
    private BigDecimal requiredCoinSellerRecharge;

    /**
     * 管理员固定工资（美元）.
     * 用于 RECHARGE_AGENT 政策
     */
    private BigDecimal adminFixedSalary;

    /**
     * 管理员提成百分比（如 5% 存储为 5.00）.
     * 用于 RECHARGE_AGENT 政策
     */
    private BigDecimal adminPercentage;

    // ==================== BD Leader Policy 字段 ====================
    
    /**
     * 所需 BD 数量（BD Leader政策使用）.
     */
    private Integer requiredBdNumber;

    /**
     * 团队工资要求（美元）- 所有 BD 的工资总和.
     * 用于 BD_LEADER 政策
     */
    private BigDecimal requiredTeamSalary;

    /**
     * 基础工资（美元）- Basic Salary.
     * 用于 BD_LEADER 政策
     */
    private BigDecimal basicSalary;

    /**
     * 奖励金额（美元）- Reward Amount.
     * 用于 BD_LEADER 政策
     */
    private BigDecimal rewardAmount;

    // ==================== 公共字段 ====================
    
    /**
     * 是否启用.
     */
    private Boolean enabled;

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

    /**
     * 创建人.
     */
    private Long createdBy;

    /**
     * 更新人.
     */
    private Long updatedBy;

    /**
     * 创建时间.
     */
    private Timestamp createTime;

    /**
     * 更新时间.
     */
    private Timestamp updateTime;
}
