package org.dromara.payment.util;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

public class MoneyUtils {
    /**
     * 金额分转换为格式化后元
     * @param money 金额（分）
     * @return 0.00
     */
    public static String getMoneyFormatYuan(Long money){
        return formatYuan(getMoneyYuan(money));
    }

    /**
     * 金额分转换为元
     * @param money 金额（分）
     * @return 0.00
     */
    public static BigDecimal getMoneyYuan(Long money){
        if(null == money){
            return new BigDecimal(0);
        }
        return BigDecimal.valueOf(money).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
    }

    /**
     * 金额分转换为万
     * @param money 金额（分）
     * @return 0.00
     */
    public static BigDecimal getMoneyWan(Long money){
        if(null == money){
            return new BigDecimal(0);
        }

        return BigDecimal.valueOf(money).divide(BigDecimal.valueOf(1000000), 2, RoundingMode.HALF_UP);
    }

    public static BigDecimal getMoneyWan(BigDecimal money){
        if(null == money){
            return new BigDecimal(0);
        }

        return money.divide(BigDecimal.valueOf(10000), 2, RoundingMode.HALF_UP);
    }


    /**
     * 金额元转换为格式化后元
     * @param money 金额（元）
     * @return 0.00
     */
    public static String formatYuan(BigDecimal money){
        DecimalFormat decimalFormat = new DecimalFormat("0.00");
        return decimalFormat.format(money);
    }

    /**
     * 金额元转换为分
     * @param money 金额（元）
     * @return 0
     */
    public static Long getMoneyFen(BigDecimal money){
        return money.multiply(new BigDecimal(100)).longValue();
    }
}
