package com.jeesharp.business.modules.coupon.application.support;

import cn.hutool.core.util.StrUtil;

/**
 * 优惠券领券小程序 scene 生成（≤32 字符）。
 *
 * @author jeesharp
 * @since 2026-07-03
 */
public final class CouponWxSceneSupport {

    private static final String PREFIX = "t";
    private static final int WX_SCENE_MAX_LEN = 32;

    private CouponWxSceneSupport() {
    }

    /**
     * 由模板主键生成 scene，扫码后 C 端解析为 templateId。
     */
    public static String buildClaimScene(String templateId) {
        if (StrUtil.isBlank(templateId)) {
            throw new IllegalArgumentException("templateId 不能为空");
        }
        String raw = PREFIX + templateId.trim();
        if (raw.length() > WX_SCENE_MAX_LEN) {
            throw new IllegalArgumentException("模板主键过长，无法生成微信 scene（上限 " + WX_SCENE_MAX_LEN + " 字符）");
        }
        return raw;
    }

    /**
     * 从 scene 解析模板主键；非领券 scene 返回 null。
     */
    public static String parseTemplateIdFromScene(String scene) {
        if (StrUtil.isBlank(scene)) {
            return null;
        }
        String s = scene.trim();
        if (!s.startsWith(PREFIX) || s.length() <= PREFIX.length()) {
            return null;
        }
        return s.substring(PREFIX.length());
    }
}
