package com.red.circle.other.app.dto.clientobject.team.bd;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.red.circle.framework.dto.ClientObject;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.sql.Timestamp;

/**
 * BD Details 明细项
 *
 * @author tf
 * @since 2025-11-17
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class BdDetailItemCO extends ClientObject {

    /**
     * 记录类型: CASH_OUT, TRANSFER, EXCHANGE, BD_INCOME, BD_LEADER_INCOME
     */
    private String type;

    /**
     * 类型显示文本
     */
    private String typeText;

    /**
     * 金额（美元）- 正数表示收入，负数表示支出
     */
    private BigDecimal amount;

    /**
     * 金额显示文本（带符号）
     */
    private String amountText;

    /**
     * 时间
     */
    private Timestamp time;

    /**
     * 时间显示文本
     */
    private String timeText;

    /**
     * 状态: Under review, Approved, Rejection（仅提现有）
     */
    private String status;

    /**
     * 状态显示文本
     */
    private String statusText;

    /**
     * 用户信息（仅转账有）
     */
    private BdDetailUserInfo userInfo;

    /**
     * 原始记录ID
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long recordId;

    /**
     * 详细信息（扩展字段）
     */
    private Object details;

    /**
     * BD Details 用户信息
     */
    @Data
    @Accessors(chain = true)
    public static class BdDetailUserInfo {
        /**
         * 用户ID
         */
        @JsonSerialize(using = ToStringSerializer.class)
        private Long userId;

        /**
         * 用户名称
         */
        private String userNickname;

        private String account;

        /**
         * 用户头像
         */
        private String avatar;
    }
}
