package com.nbport.zgwl.partner.utils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ThreadLocalRandom;

/**
 * 相关方ID生成工具
 *
 * 本地相关方ID：自己系统生成，后续同步给法务系统时对应 o_id。
 * 集团相对方ID：这里先做模拟生成，后续真实联调时用法务系统回传值覆盖。
 */
public final class PartnerIdUtils {

    private static final String PARTNER_PREFIX = "OPP";

    private static final String GROUP_PREFIX = "JT";

    private PartnerIdUtils() {
    }

    /** 生成本地相对方编码（格式：OPP-yyyyMMddHHmmss-随机4位） */
    public static String buildPartnerId() {
        return PARTNER_PREFIX + "-" + formatNow("yyyyMMddHHmmss") + "-" + randomDigits(4);
    }

    /** 生成集团相对方 ID（格式：JT-yyyyMMddHHmmss-随机4位，后续联调时由法务系统返回替换） */
    public static String buildGroupPartnerId() {
        return GROUP_PREFIX + "-" + formatNow("yyyyMMddHHmmss") + "-" + randomDigits(4);
    }

    private static String formatNow(String pattern) {
        return new SimpleDateFormat(pattern).format(new Date());
    }

    private static String randomDigits(int length) {
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < length; i++) {
            builder.append(ThreadLocalRandom.current().nextInt(10));
        }
        return builder.toString();
    }
}
