package com.ghy.common.adapay.model;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import javax.validation.constraints.NotNull;

/**
 * 分账对象信息
 *
 * @author HH 2022/5/12
 */
@Data
public class DivMember {

    /**
     * 分账用户 Member 对象的 id；若是商户本身时传入"0"
     */
    @JSONField(name = "member_id")
    private String memberId;

    /**
     * 分账金额，精确到分，如 "0.50"、"1.00" 等
     * 分账总金额必须等于主交易金额，金额不能为 "0.00"
     */
    private String amount;

    /**
     * 是否手续费承担方，N-否，Y-是，手续费承担方有且只能有一个
     */
    @JSONField(name = "fee_flag")
    private String feeFlag;

    /**
     * 构造方法
     *
     * @param memberId 分账用户 Member 对象的 id；若是商户本身时传入"0"
     * @param amount   分账金额，精确到分，如 "0.50"、"1.00" 等 分账总金额必须等于主交易金额，金额不能为 "0.00"
     * @param feeFlag  是否手续费承担方，N-否，Y-是，手续费承担方有且只能有一个
     */
    public DivMember(@NotNull String memberId, @NotNull String amount, boolean feeFlag) {
        this.memberId = memberId;
        this.amount = amount;
        this.feeFlag = feeFlag ? "Y" : "N";
    }

    /**
     * 此构造方法不指定手续费承担方
     * 由商户手续费账户扣取手续费
     * 使用时请确保商户手续费账户余额充足
     *
     * @param memberId 分账用户 Member 对象的 id；若是商户本身时传入"0"
     * @param amount   分账金额，精确到分，如 "0.50"、"1.00" 等 分账总金额必须等于主交易金额，金额不能为 "0.00"
     */
    public DivMember(@NotNull String memberId, @NotNull String amount) {
        this.memberId = memberId;
        this.amount = amount;
    }

}