You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

282 lines
5.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package CommonUtil
import (
"bufio"
"bytes"
"crypto/md5"
"crypto/sha1"
"dsSzxy/Utils/ConfigUtil"
"encoding/hex"
"encoding/json"
"errors"
"fmt"
"github.com/astaxie/beego/httplib"
uuid "github.com/satori/go.uuid"
"net/http"
"log"
"github.com/spf13/viper"
"math/rand"
"os"
"os/exec"
"strconv"
"strings"
"time"
)
/**
功能获取UUID
作者:黄海
时间2020-02-03
*/
func GetUUID() string {
u2 := strings.ToUpper(uuid.NewV4().String())
return u2
}
/**
功能将JSON字符串转化为map数组
作者: 黄海
时间2020-04-17
*/
func ConvertJsonStringToMapArray(data string) []map[string]interface{} {
var m = make([]map[string]interface{}, 0)
str := []byte(data)
json.Unmarshal(str, &m)
return m
}
func MD5(v string) string {
d := []byte(v)
m := md5.New()
m.Write(d)
return hex.EncodeToString(m.Sum(nil))
}
// 判断所给路径文件/文件夹是否存在
func Exists(path string) bool {
_, err := os.Stat(path) //os.Stat获取文件信息
if err != nil {
if os.IsExist(err) {
return true
}
return false
}
return true
}
//json字符串转map
func JsonStringToMap(jsonStr string) (map[string]interface{}, error) {
m := make(map[string]interface{})
err := json.Unmarshal([]byte(jsonStr), &m)
if err != nil {
fmt.Printf("Unmarshal with error: %+v\n", err)
return nil, err
}
return m, nil
}
//将字符串转为int32整数
func ConvertStringToInt32(s string) int32 {
i, _ := strconv.Atoi(s)
return int32(i)
}
//将整数64转为字符串
func ConvertInt64ToString(i int64) string {
s := strconv.FormatInt(i, 10)
return s
}
/**
功能: 获取扩展名
*/
func Ext(path string) string {
for i := len(path) - 1; i >= 0 && path[i] != '/'; i-- {
if path[i] == '.' {
return path[i:]
}
}
return ""
}
/**
功能带回显的执行DOS命令
作者:黄海
时间2020-05-18
*/
func Exec(name string, args ...string) error {
cmd := exec.Command(name, args...)
stderr, _ := cmd.StderrPipe()
stdout, _ := cmd.StdoutPipe()
if err := cmd.Start(); err != nil {
log.Println("exec the cmd ", name, " failed")
return err
}
// 正常日志
logScan := bufio.NewScanner(stdout)
go func() {
for logScan.Scan() {
log.Println(logScan.Text())
}
}()
// 错误日志
errBuf := bytes.NewBufferString("")
scan := bufio.NewScanner(stderr)
for scan.Scan() {
s := scan.Text()
log.Println("", s)
errBuf.WriteString(s)
errBuf.WriteString("\n")
}
// 等待命令执行完
cmd.Wait()
if !cmd.ProcessState.Success() {
// 执行失败,返回错误信息
return errors.New(errBuf.String())
}
return nil
}
/**
功能:获取当前的时间字符串
作者:黄海
时间2020-02-21
*/
func GetCurrentTime() string {
timeStr := time.Now().Format("2006-01-02 15:04:05")
//当前时间的字符串2006-01-02 15:04:05据说是golang的诞生时间固定写法
return timeStr
}
/**
功能获取6位随机数
作者:吴缤
*/
func GetSixRandom() string {
return fmt.Sprintf("%v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(1000000))
}
/**
功能:获取毫秒时间戳
作者:吴缤
*/
func GetTimeStamp() string {
return fmt.Sprintf("%v", time.Now().UnixNano()/1e6)
}
/**
功能字符串SHA1加密
作者:吴缤
*/
func SHA1(s string) string {
o := sha1.New()
o.Write([]byte(s))
return hex.EncodeToString(o.Sum(nil))
}
/**
功能:获取融云配置信息
作者:吴缤
*/
func GetRongYunConfig() (map[string]string, error) {
m := make(map[string]string)
viper.SetConfigFile(ConfigUtil.RongYunConfigPath)
if err := viper.ReadInConfig(); err != nil {
return nil, err
}
m["suffix"] = viper.GetString("rong_server_name")
m["app_key"] = viper.GetString("rong_key")
m["app_secret"] = viper.GetString("rong_secret")
return m, nil
}
/**
功能:判断是不是合法的日期格式
作者:黄海
时间2020-03-23
*/
func IsDate(date string) bool {
_, err := time.Parse("2006-01-02 15:04:05", date)
if err != nil {
return false
} else {
return true
}
}
/**
功能:是不是在指定的数组中存在
作者:黄海
时间2020-05-15
*/
func IsContain(items []string, item string) bool {
for _, eachItem := range items {
if eachItem == item {
return true
}
}
return false
}
/**
功能:获取蛇形命名的字符串
作者:黄海
时间2020-01-22
*/
func GetSnakeCaseStr(str string) string {
array := strings.Split(str, "_")
var result string
for i := 0; i < len(array); i++ {
result = result + strings.ToUpper(array[i][0:1]) + array[i][1:]
}
return result
}
/**
功能interface转string
作者:吴缤
日期2021-09-06
*/
func ConvertInterfaceToString(inter interface{}) string {
str := fmt.Sprintf("%v", inter)
return str
}
/**
功能请求云平台接口时增加Cookie
作者:吴缤
日期2021-09-13
*/
func AddCookie(req *httplib.BeegoHTTPRequest, personIdCookie string, identityIdCookie string, tokenCookie string, qAccessTokenCookie string) {
req.SetCookie(&http.Cookie{
Name: "person_id",
Value: personIdCookie,
Path: "/",
Domain: ConfigUtil.DsidealYyDomain,
})
req.SetCookie(&http.Cookie{
Name: "identity_id",
Value: identityIdCookie,
Path: "/",
Domain: ConfigUtil.DsidealYyDomain,
})
req.SetCookie(&http.Cookie{
Name: "token",
Value: tokenCookie,
Path: "/",
Domain: ConfigUtil.DsidealYyDomain,
})
req.SetCookie(&http.Cookie{
Name: "q_access_token",
Value: qAccessTokenCookie,
Path: "/",
Domain: ConfigUtil.DsidealYyDomain,
})
}