package com.sz.admin.monitor.utils;

import java.io.File;

public class UrlConvert {
    private static final String RESOURCE_PREFIX = "/save/";

    // 定义我们配置的两个静态资源根目录 (注意统一用正斜杠 / )
    private static final String BASE_DIR_IMAGES = "D:/work/images/";
    private static final String BASE_DIR_TEMP = "D:/work/temp/";

    /**
     * 将本地绝对路径转换为网络相对路径
     * @param localPath 例如: D:\work\temp\task_123\test.jpg
     * @return /save/task_123/test.jpg
     */
    public static String convertToUrl(String localPath) {
        if (localPath == null || localPath.isEmpty()) {
            return null;
        }

        // 1. 统一路径分隔符：将 Windows 的反斜杠 \ 全部替换为标准的正斜杠 /
        String normalizedPath = localPath.replace("\\", "/");

        String relativePath = "";

        // 2. 剥离根目录，保留后面的子文件夹和文件名
        if (normalizedPath.startsWith(BASE_DIR_IMAGES)) {
            // 截取掉 D:/work/images/ 这一部分
            relativePath = normalizedPath.substring(BASE_DIR_IMAGES.length());
        } else if (normalizedPath.startsWith(BASE_DIR_TEMP)) {
            // 截取掉 D:/work/temp/ 这一部分，保留 task_123/test.jpg
            relativePath = normalizedPath.substring(BASE_DIR_TEMP.length());
        } else {
            // 兜底方案：如果传进来的路径不在这两个目录里，退回到只取文件名
            relativePath = new File(localPath).getName();
        }

        // 3. 拼接映射前缀
        return RESOURCE_PREFIX + relativePath;
    }
}