143 lines
3.4 KiB
Go
143 lines
3.4 KiB
Go
|
package common
|
||
|
|
||
|
import (
|
||
|
"cutego/pkg/config"
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
"os"
|
||
|
"runtime"
|
||
|
"strconv"
|
||
|
)
|
||
|
|
||
|
// IntToString int转string
|
||
|
func IntToString(n int) string {
|
||
|
return strconv.Itoa(n)
|
||
|
}
|
||
|
func mapToBytes(data map[string]interface{}) []byte {
|
||
|
bytes, _ := json.Marshal(data)
|
||
|
return bytes
|
||
|
}
|
||
|
|
||
|
// MapToStruct map转struct
|
||
|
func MapToStruct(data map[string]interface{}, v interface{}) {
|
||
|
_ = json.Unmarshal(mapToBytes(data), v)
|
||
|
}
|
||
|
|
||
|
// GetDirPath 获取目录路径
|
||
|
func GetDirPath(resType string) string {
|
||
|
sysType := runtime.GOOS
|
||
|
switch sysType {
|
||
|
case "linux":
|
||
|
if resType == "log" {
|
||
|
return config.AppCoreConfig.CuteGoConfig.File.Linux.Logs
|
||
|
} else if resType == "avatar" {
|
||
|
return config.AppCoreConfig.CuteGoConfig.File.Linux.Avatar
|
||
|
} else if resType == "file" {
|
||
|
return config.AppCoreConfig.CuteGoConfig.File.Linux.Path
|
||
|
}
|
||
|
break
|
||
|
case "windows":
|
||
|
if resType == "log" {
|
||
|
return config.AppCoreConfig.CuteGoConfig.File.Windows.Logs
|
||
|
} else if resType == "avatar" {
|
||
|
return config.AppCoreConfig.CuteGoConfig.File.Windows.Avatar
|
||
|
} else if resType == "file" {
|
||
|
return config.AppCoreConfig.CuteGoConfig.File.Windows.Path
|
||
|
}
|
||
|
break
|
||
|
case "mac":
|
||
|
if resType == "log" {
|
||
|
return config.AppCoreConfig.CuteGoConfig.File.Mac.Logs
|
||
|
} else if resType == "avatar" {
|
||
|
return config.AppCoreConfig.CuteGoConfig.File.Mac.Avatar
|
||
|
} else if resType == "file" {
|
||
|
return config.AppCoreConfig.CuteGoConfig.File.Mac.Path
|
||
|
}
|
||
|
break
|
||
|
case "darwin":
|
||
|
if resType == "log" {
|
||
|
return config.AppCoreConfig.CuteGoConfig.File.Mac.Logs
|
||
|
} else if resType == "avatar" {
|
||
|
return config.AppCoreConfig.CuteGoConfig.File.Mac.Avatar
|
||
|
} else if resType == "file" {
|
||
|
return config.AppCoreConfig.CuteGoConfig.File.Mac.Path
|
||
|
}
|
||
|
}
|
||
|
return config.AppCoreConfig.CuteGoConfig.File.Linux.Logs
|
||
|
}
|
||
|
|
||
|
// CreateAllDir 递归创建文件夹
|
||
|
func CreateAllDir(filePath string) error {
|
||
|
if !IsFileOrDirExist(filePath) {
|
||
|
err := os.MkdirAll(filePath, os.ModePerm)
|
||
|
if err != nil {
|
||
|
fmt.Println("创建文件夹失败, error info:", err)
|
||
|
return err
|
||
|
}
|
||
|
return err
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// IsFileOrDirExist 判断所给路径文件/文件夹是否存在(返回true是存在)
|
||
|
func IsFileOrDirExist(path string) bool {
|
||
|
// os.Stat获取文件信息
|
||
|
_, err := os.Stat(path)
|
||
|
if err != nil {
|
||
|
if os.IsExist(err) {
|
||
|
return true
|
||
|
}
|
||
|
return false
|
||
|
}
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
// 类三元表达式
|
||
|
// condition 成立条件
|
||
|
// trueVal 当条件为true时返回
|
||
|
// false 当条件为false时返回
|
||
|
func If(condition bool, trueVal, falseVal interface{}) interface{} {
|
||
|
if condition {
|
||
|
return trueVal
|
||
|
}
|
||
|
return falseVal
|
||
|
}
|
||
|
|
||
|
// 结构体、Map等转Json字符串
|
||
|
// @Param v interface{}
|
||
|
// @Return Json字符串
|
||
|
func StructToJson(v interface{}) string {
|
||
|
jsonBytes, err := json.Marshal(&v)
|
||
|
if err != nil {
|
||
|
ErrorLog(err)
|
||
|
return ""
|
||
|
}
|
||
|
s := string(jsonBytes)
|
||
|
DebugLogf("StructToJson, json=%s", s)
|
||
|
return s
|
||
|
}
|
||
|
|
||
|
// Json字符串转结构体、Map等
|
||
|
//
|
||
|
// 单个对象
|
||
|
// s := new(models2.SysConfig)
|
||
|
// return common.JsonToStruct(get, s).(*models2.SysConfig)
|
||
|
//
|
||
|
// 切片(interface{}.(期望类型))
|
||
|
// s := make([]interface {}, 0)
|
||
|
// target := common.JsonToStruct(get, s)
|
||
|
// target.([]entity.SysDictData)
|
||
|
//
|
||
|
// @Param data Json字符串
|
||
|
// @Param s 容器(结构体、Map等)
|
||
|
// @Return interface{}
|
||
|
func JsonToStruct(data string, s interface{}) interface{} {
|
||
|
err := json.Unmarshal([]byte(data), &s)
|
||
|
if err != nil {
|
||
|
ErrorLog(err)
|
||
|
return nil
|
||
|
}
|
||
|
DebugLogf("JsonToStruct, obj=%v", s)
|
||
|
return s
|
||
|
}
|