package com.jeesharp.business.modules.finance.settle;

import cn.hutool.core.util.StrUtil;
import com.jeesharp.business.modules.finance.paymentrecord.enums.PayRecordBizSceneEnum;

/**
 * 合并支付（多商户合单）规则：当前仅商城 {@code MALL_ORDER} 存在真实批次与子单拆分。
 *
 * @author jeesharp
 * @since 2026-06-11
 */
public final class PaySettleMergePayRules {

    private PaySettleMergePayRules() {
    }

    /**
     * 是否支持合并支付批次（多子单同笔微信单、批次号解析、按批次 finish 等）。
     */
    public static boolean supportsMergePayBatch(String bizScene) {
        return PayRecordBizSceneEnum.MALL_ORDER.getCode().equals(normalize(bizScene));
    }

    /**
     * 非商城场景下解析用于查财务支付单的批次键：固定为业务子单 ID，忽略外部传入的合并批次 ID。
     */
    public static String resolvePayBatchKey(String bizScene, String bizOrderId, String requestedPayBatchId) {
        if (supportsMergePayBatch(bizScene)) {
            return StrUtil.blankToDefault(requestedPayBatchId, bizOrderId);
        }
        return bizOrderId;
    }

    private static String normalize(String bizScene) {
        return bizScene == null ? null : bizScene.trim();
    }
}
