package com.fs.qw.utils;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * 金额单位转换工具
 * 企业微信接口金额单位：分
 * 商城系统内部金额单位：元（BigDecimal）
 */
public class MoneyUtils {

    private static final int SCALE = 2; // 保留两位小数
    private static final int CENT_FACTOR = 100;

    /**
     * 分 → 元（BigDecimal）
     * @param cent 分（整数）
     * @return 元（BigDecimal）
     */
    public static BigDecimal centToYuan(Integer cent) {
        if (cent == null) {
            return BigDecimal.ZERO;
        }
        return BigDecimal.valueOf(cent).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
    }

    /**
     * 分 → 元（String，带两位小数）
     */
    public static String centToYuanStr(Integer cent) {
        return centToYuan(cent).toString();
    }

    /**
     * 元 → 分
     * @param yuan 元（BigDecimal）
     * @return 分（整数）
     */
    public static Integer yuanToCent(BigDecimal yuan) {
        if (yuan == null) {
            return 0;
        }
        return yuan.multiply(BigDecimal.valueOf(CENT_FACTOR)).intValue();
    }

    /**
     * 元（字符串）→ 分
     */
    public static Integer yuanToCent(String yuanStr) {
        if (yuanStr == null || yuanStr.isEmpty()) {
            return 0;
        }
        return yuanToCent(new BigDecimal(yuanStr));
    }
}