package com.yushu.web.controller.system;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import com.yushu.common.core.controller.BaseController;
import com.yushu.common.core.domain.AjaxResult;

/**
 * 图标管理Controller（仅开发环境使用）
 * 
 * @author YuShu
 */
@RestController
@RequestMapping("/system/icon")
public class SysIconController extends BaseController
{
    @Value("${yushu.icon.path:}")
    private String iconPath;

    /**
     * 上传图标（开发环境使用，上传到前端icons目录）
     */
    @PreAuthorize("@ss.hasPermi('tool:icon:add')")
    @PostMapping("/upload")
    public AjaxResult upload(@RequestParam("file") MultipartFile file) throws IOException
    {
        if (file.isEmpty()) {
            return AjaxResult.error("请选择要上传的图标文件");
        }
        
        String originalFilename = file.getOriginalFilename();
        if (originalFilename == null || !originalFilename.toLowerCase().endsWith(".svg")) {
            return AjaxResult.error("只支持上传SVG格式的图标");
        }
        
        if (iconPath == null || iconPath.isEmpty()) {
            return AjaxResult.error("图标存储路径未配置，请检查 yushu.icon.path 配置");
        }
        
        // 确保目录存在
        File iconDir = new File(iconPath);
        if (!iconDir.exists()) {
            iconDir.mkdirs();
        }
        
        // 保存文件（文件名转小写，空格转横线）
        String fileName = originalFilename.toLowerCase().replace(" ", "-");
        Path targetPath = Paths.get(iconPath, fileName);
        
        // 检查是否已存在
        if (Files.exists(targetPath)) {
            return AjaxResult.error("图标 " + fileName + " 已存在");
        }
        
        file.transferTo(targetPath.toFile());
        
        Map<String, Object> result = new HashMap<>();
        result.put("name", fileName.replace(".svg", ""));
        result.put("fileName", fileName);
        
        return AjaxResult.success("上传成功，刷新页面后可使用", result);
    }
}
