fix(common): 新增文件类型检测工具并更新 Redis 依赖
This commit is contained in:
+4
-39
@@ -3,7 +3,6 @@ package utils
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net"
|
||||
"reflect"
|
||||
@@ -14,12 +13,10 @@ import (
|
||||
"time"
|
||||
|
||||
"gitea.redpowerfuture.com/red-future/common/beans"
|
||||
"github.com/gogf/gf/v2/container/gvar"
|
||||
"github.com/gogf/gf/v2/database/gredis"
|
||||
"github.com/gogf/gf/v2/errors/gcode"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/glog"
|
||||
"github.com/gogf/gf/v2/os/gtime"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"github.com/tiger1103/gfast-token/gftoken"
|
||||
@@ -107,7 +104,8 @@ func GetUserInfo(ctx context.Context) (user *beans.User, err error) {
|
||||
|
||||
if !g.IsNil(ctx.Value("token")) {
|
||||
var tokenData *gftoken.TokenData
|
||||
tokenData, _, err = gft.GetTokenData(ctx, ctx.Value("token").(string))
|
||||
tk := ctx.Value("token").(string)
|
||||
tokenData, _, err = gft.GetTokenData(ctx, tk)
|
||||
if err != nil {
|
||||
return user, gerror.Wrap(err, "ctx token 解析失败")
|
||||
}
|
||||
@@ -117,7 +115,8 @@ func GetUserInfo(ctx context.Context) (user *beans.User, err error) {
|
||||
}
|
||||
} else if g.RequestFromCtx(ctx) != nil {
|
||||
// 解析 token
|
||||
data, err = gft.ParseToken(g.RequestFromCtx(ctx))
|
||||
req := g.RequestFromCtx(ctx)
|
||||
data, err = gft.ParseToken(req)
|
||||
if err != nil {
|
||||
return user, gerror.Wrap(err, "token 解析失败")
|
||||
}
|
||||
@@ -389,40 +388,6 @@ func intPow10(n int) int {
|
||||
return result
|
||||
}
|
||||
|
||||
// Lock 分布式锁
|
||||
func Lock(ctx context.Context, key string, expireSeconds int64, fn func(ctx context.Context) error) (success bool, err error) {
|
||||
limit := 3
|
||||
LOOP:
|
||||
if limit < 0 {
|
||||
return false, errors.New("锁重试次数耗尽")
|
||||
}
|
||||
limit--
|
||||
var val *gvar.Var
|
||||
if val, err = g.Redis().Set(ctx, key, true, gredis.SetOption{
|
||||
TTLOption: gredis.TTLOption{
|
||||
EX: &expireSeconds,
|
||||
},
|
||||
NX: true,
|
||||
}); err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
if val.Bool() {
|
||||
defer func(ctx context.Context, key string) {
|
||||
if _, err = g.Redis().Del(ctx, key); err != nil {
|
||||
glog.Errorf(ctx, "redis client Del error: %v", err)
|
||||
}
|
||||
}(ctx, key)
|
||||
if err = fn(ctx); err != nil {
|
||||
return false, err
|
||||
}
|
||||
return true, nil
|
||||
}
|
||||
|
||||
time.Sleep(time.Second)
|
||||
goto LOOP
|
||||
}
|
||||
|
||||
// IsLocalIP 判断是否是本地IP
|
||||
func IsLocalIP(ip string) bool {
|
||||
addrs, err := net.InterfaceAddrs()
|
||||
|
||||
Reference in New Issue
Block a user