package cn.sikey.hmd.util;

import lombok.experimental.UtilityClass;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Optional;

/**
 * @Author: qin
 * @Date: 2025/3/31
 * @Description: 价格
 */
@UtilityClass
public class PriceUtil {
    /**
     * 将价格从分转换为元（安全处理 NULL 值）
     *
     * @param priceInFen 数据库中的价格（单位分，可能为 NULL）
     * @return 转换后的价格（单位元，保留两位小数，若输入为 NULL 则返回 0.00）
     */
    public static String convertFenToYuan(Integer priceInFen) {
        return Optional.ofNullable(priceInFen)
                .map(fen ->
                        // 分转元：price / 100，保留两位小数（四舍五入）
                        new BigDecimal(fen)
                                .divide(new BigDecimal(100), 2, RoundingMode.HALF_UP)
                                .toPlainString() // 转换为无指数格式的字符串（例如 "1.99"）
                )
                .orElse("0.00"); // 输入为 null 时返回 "0.00"
    }
}
