package utils

import (
	"fmt"
	"log"
	"os"
	"path/filepath"
	"strconv"
	"time"
)

// FormatFileSize
/*
@Description: 转换文件单位
@param fileSize 文件大小
@return size 字符串
*/
func FormatFileSize(fileSize float64) (size string) {
	units := []string{"B", "KB", "MB", "GB", "TB"}
	var unitIndex int
	for fileSize >= 1024 && unitIndex < len(units)-1 {
		fileSize /= 1024
		unitIndex++
	}
	return fmt.Sprintf("%.2f %s", fileSize, units[unitIndex])
}

func FillData(num int) []string {
	return make([]string, num)
}

func MakeDir(filePath string) {
	_, err := os.Stat(filePath)
	if os.IsNotExist(err) {
		err = os.MkdirAll(filePath, os.ModePerm)
		if err != nil {
			log.Println("创建文件夹失败:", err)
		}
	}
}

// DecodeToUnicode unicode中文解码
func DecodeToUnicode(name string) (string, error) {
	// 使用 strconv.Unquote 解码
	decodedStr, err := strconv.Unquote(`"` + name + `"`)
	if err != nil {
		return "", err
	}

	return decodedStr, nil
}

func MakeSavePath(s string) string {
	//wd, _ := os.Getwd()wd,
	folderPath := filepath.Join("files", time.Now().Format("2006-01"), s)
	if _, err := os.Stat(folderPath); os.IsNotExist(err) {
		_ = os.MkdirAll(folderPath, os.ModePerm)
	}
	return folderPath
}
