Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4741a0bd93 | ||
|
|
f22c9df605 | ||
|
|
82cffdfe29 | ||
|
|
9da1a3bf25 | ||
|
|
2cb005e8ed | ||
|
|
374fdac477 | ||
|
|
595ababfde |
@@ -27,26 +27,26 @@ type Cfg struct {
|
|||||||
|
|
||||||
// Deprecated : pkg.Config().GetDbFile(name)
|
// Deprecated : pkg.Config().GetDbFile(name)
|
||||||
func (c *Cfg) GetDbFile(name string) (res *g.Var, err error) {
|
func (c *Cfg) GetDbFile(name string) (res *g.Var, err error) {
|
||||||
pkg.Config().GetDbFile(name)
|
res, err = pkg.Config().GetDbFile(name)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deprecated : pkg.Config().GetFile(name, obj...)
|
// Deprecated : pkg.Config().GetFile(name, obj...)
|
||||||
func (c *Cfg) GetFile(filename string, obj ...Load) (jsonObj *gjson.Json, err error) {
|
func (c *Cfg) GetFile(filename string, obj ...Load) (jsonObj *gjson.Json, err error) {
|
||||||
pkg.Config().GetFile(filename)
|
jsonObj, err = pkg.Config().GetFile(filename)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// getUrlFile 获取远程配置
|
// getUrlFile 获取远程配置
|
||||||
// Deprecated : pkg.Config().GetUrlFile(name)
|
// Deprecated : pkg.Config().GetUrlFile(name)
|
||||||
func (c *Cfg) GetUrlFile(name string) (jsonObj *gjson.Json, err error) {
|
func (c *Cfg) GetUrlFile(name string) (jsonObj *gjson.Json, err error) {
|
||||||
pkg.Config().GetUrlFile(name)
|
jsonObj, err = pkg.Config().GetUrlFile(name)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deprecated : pkg.Config().GetApollo(name, obj)
|
// Deprecated : pkg.Config().GetApollo(name, obj)
|
||||||
func (c *Cfg) GetApollo(name string, obj Load) (jsonObj *gjson.Json, err error) {
|
func (c *Cfg) GetApollo(name string, obj Load) (jsonObj *gjson.Json, err error) {
|
||||||
pkg.Config().GetApollo(name, obj)
|
jsonObj, err = pkg.Config().GetApollo(name, obj)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
4
go.mod
4
go.mod
@@ -4,7 +4,7 @@ go 1.24.0
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/apolloconfig/agollo/v4 v4.4.0
|
github.com/apolloconfig/agollo/v4 v4.4.0
|
||||||
github.com/ayflying/excel2json v1.1.7
|
github.com/ayflying/excel2json v1.1.8
|
||||||
github.com/elastic/go-elasticsearch/v8 v8.18.0
|
github.com/elastic/go-elasticsearch/v8 v8.18.0
|
||||||
github.com/go-pay/crypto v0.0.1
|
github.com/go-pay/crypto v0.0.1
|
||||||
github.com/go-pay/gopay v1.5.109
|
github.com/go-pay/gopay v1.5.109
|
||||||
@@ -12,7 +12,6 @@ require (
|
|||||||
github.com/goccy/go-json v0.10.5
|
github.com/goccy/go-json v0.10.5
|
||||||
github.com/gogf/gf/contrib/config/apollo/v2 v2.9.0
|
github.com/gogf/gf/contrib/config/apollo/v2 v2.9.0
|
||||||
github.com/gogf/gf/v2 v2.9.0
|
github.com/gogf/gf/v2 v2.9.0
|
||||||
github.com/gorilla/websocket v1.5.3
|
|
||||||
github.com/lionsoul2014/ip2region/binding/golang v0.0.0-20241220152942-06eb5c6e8230
|
github.com/lionsoul2014/ip2region/binding/golang v0.0.0-20241220152942-06eb5c6e8230
|
||||||
github.com/minio/minio-go/v7 v7.0.91
|
github.com/minio/minio-go/v7 v7.0.91
|
||||||
github.com/prometheus/client_golang v1.22.0
|
github.com/prometheus/client_golang v1.22.0
|
||||||
@@ -45,6 +44,7 @@ require (
|
|||||||
github.com/golang/protobuf v1.5.4 // indirect
|
github.com/golang/protobuf v1.5.4 // indirect
|
||||||
github.com/google/uuid v1.6.0 // indirect
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
github.com/googleapis/gax-go/v2 v2.0.5 // indirect
|
github.com/googleapis/gax-go/v2 v2.0.5 // indirect
|
||||||
|
github.com/gorilla/websocket v1.5.3 // indirect
|
||||||
github.com/grokify/html-strip-tags-go v0.1.0 // indirect
|
github.com/grokify/html-strip-tags-go v0.1.0 // indirect
|
||||||
github.com/hashicorp/hcl v1.0.0 // indirect
|
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||||
github.com/klauspost/compress v1.18.0 // indirect
|
github.com/klauspost/compress v1.18.0 // indirect
|
||||||
|
|||||||
1
go.sum
1
go.sum
@@ -52,6 +52,7 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV
|
|||||||
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
||||||
github.com/ayflying/excel2json v1.1.7 h1:gp4Ls6hNXd1EuT2MEiDQ6yPLaSKIFWkGyaNajMTc59c=
|
github.com/ayflying/excel2json v1.1.7 h1:gp4Ls6hNXd1EuT2MEiDQ6yPLaSKIFWkGyaNajMTc59c=
|
||||||
github.com/ayflying/excel2json v1.1.7/go.mod h1:GjXYP2cDzeTgQxssQ3ba8QRa9JsScAeJMwCrZ7QTlQo=
|
github.com/ayflying/excel2json v1.1.7/go.mod h1:GjXYP2cDzeTgQxssQ3ba8QRa9JsScAeJMwCrZ7QTlQo=
|
||||||
|
github.com/ayflying/excel2json v1.1.8/go.mod h1:GjXYP2cDzeTgQxssQ3ba8QRa9JsScAeJMwCrZ7QTlQo=
|
||||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||||
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
||||||
|
|||||||
@@ -136,6 +136,10 @@ func (s *sSystemCron) AddCronV2(typ v1.CronType, _func func(context.Context) err
|
|||||||
// @receiver s
|
// @receiver s
|
||||||
// @return err
|
// @return err
|
||||||
func (s *sSystemCron) StartCron() (err error) {
|
func (s *sSystemCron) StartCron() (err error) {
|
||||||
|
//如果没有数据库配置,跳过计划任务执行
|
||||||
|
if g.Cfg().MustGet(gctx.New(), "database") == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
//预防重复启动
|
//预防重复启动
|
||||||
if startTime != nil {
|
if startTime != nil {
|
||||||
return
|
return
|
||||||
|
|||||||
5
modules/websocket/go.mod
Normal file
5
modules/websocket/go.mod
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
module github.com/ayflying/utility_go/modules/websocket
|
||||||
|
|
||||||
|
go 1.24.0
|
||||||
|
|
||||||
|
require github.com/ayflying/utility_go v1.2.26
|
||||||
2
modules/websocket/go.sum
Normal file
2
modules/websocket/go.sum
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
github.com/ayflying/utility_go v1.2.26/go.mod h1:y6qwRUmYk73cH/dTRSzj2mnaQdtrAfFNH4wRFewxlIc=
|
||||||
|
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||||
@@ -3,120 +3,251 @@ package drive
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"github.com/gogf/gf/v2/container/gvar"
|
"github.com/gogf/gf/v2/container/gvar"
|
||||||
|
"github.com/gogf/gf/v2/crypto/gmd5"
|
||||||
|
"github.com/gogf/gf/v2/encoding/gjson"
|
||||||
"github.com/gogf/gf/v2/os/gcache"
|
"github.com/gogf/gf/v2/os/gcache"
|
||||||
"github.com/gogf/gf/v2/os/gfile"
|
"github.com/gogf/gf/v2/os/gfile"
|
||||||
|
"github.com/gogf/gf/v2/os/gtime"
|
||||||
"github.com/gogf/gf/v2/util/gconv"
|
"github.com/gogf/gf/v2/util/gconv"
|
||||||
"path"
|
"path"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
fileIndex = "index.txt"
|
||||||
|
)
|
||||||
|
|
||||||
|
type FileIndex struct {
|
||||||
|
File string `json:"file"`
|
||||||
|
Duration time.Duration `json:"duration"`
|
||||||
|
}
|
||||||
|
type FileData struct {
|
||||||
|
Data interface{} `json:"data"`
|
||||||
|
Time int64 `json:"time"`
|
||||||
|
}
|
||||||
|
|
||||||
type AdapterFile struct {
|
type AdapterFile struct {
|
||||||
FilePath string
|
FilePath string
|
||||||
|
Lock sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a AdapterFile) Set(ctx context.Context, key interface{}, value interface{}, duration time.Duration) error {
|
func (a *AdapterFile) Key2Name(key interface{}) string {
|
||||||
arr := strings.Split(":", gconv.String(key))
|
md5Str, _ := gmd5.Encrypt(key)
|
||||||
fileName := path.Join(arr...)
|
fileName := path.Join(md5Str[0:2], md5Str[2:4], md5Str[4:6], md5Str[16:])
|
||||||
return gfile.PutBytes(fileName, gconv.Bytes(value))
|
fileNameAll := path.Join(a.FilePath, fileName)
|
||||||
|
|
||||||
|
return fileNameAll
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a AdapterFile) SetMap(ctx context.Context, data map[interface{}]interface{}, duration time.Duration) error {
|
func (a *AdapterFile) AddIndex(FileName interface{}, duration time.Duration) {
|
||||||
|
var isEdit bool
|
||||||
|
|
||||||
|
var setTime int64
|
||||||
|
if duration == 0 {
|
||||||
|
setTime = 0
|
||||||
|
} else {
|
||||||
|
setTime = gtime.Now().Add(duration).Unix()
|
||||||
|
}
|
||||||
|
saveArr := []string{
|
||||||
|
gconv.String(FileName),
|
||||||
|
strconv.FormatInt(setTime, 10),
|
||||||
|
}
|
||||||
|
saveStr := strings.Join(saveArr, "|")
|
||||||
|
|
||||||
|
gfile.ReadLines(fileIndex, func(text string) (err error) {
|
||||||
|
arr := strings.Split(text, "|")
|
||||||
|
if arr[0] == FileName {
|
||||||
|
isEdit = true
|
||||||
|
gfile.ReplaceFile(text, saveStr, fileIndex)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
})
|
||||||
|
|
||||||
|
if isEdit {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
gfile.PutContentsAppend(fileIndex, saveStr+"\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AdapterFile) DelIndex(FileName interface{}) {
|
||||||
|
//var save bool
|
||||||
|
gfile.ReadLines(fileIndex, func(text string) (err error) {
|
||||||
|
arr := strings.Split(text, "|")
|
||||||
|
if arr[0] == FileName {
|
||||||
|
//save = true
|
||||||
|
err = gfile.ReplaceFile(text, "", fileIndex)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AdapterFile) Set(ctx context.Context, key interface{}, value interface{}, duration time.Duration) (err error) {
|
||||||
|
fileNameAll := a.Key2Name(key)
|
||||||
|
var send = &FileData{
|
||||||
|
Data: value,
|
||||||
|
Time: gtime.Now().Add(duration).Unix(),
|
||||||
|
}
|
||||||
|
err = gfile.PutBytes(fileNameAll, gjson.MustEncode(send))
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
a.AddIndex(key, duration)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AdapterFile) SetMap(ctx context.Context, data map[interface{}]interface{}, duration time.Duration) (err error) {
|
||||||
|
for k, v := range data {
|
||||||
|
//fileNameAll := a.Key2Name(k)
|
||||||
|
//var send = &FileData{
|
||||||
|
// Data: v,
|
||||||
|
// Time: gtime.Now().Add(duration).Unix(),
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//err = gfile.PutBytes(fileNameAll, gconv.Bytes(send))
|
||||||
|
a.Set(ctx, k, v, duration)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AdapterFile) SetIfNotExist(ctx context.Context, key interface{}, value interface{}, duration time.Duration) (ok bool, err error) {
|
||||||
|
err = a.Set(ctx, key, value, duration)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AdapterFile) SetIfNotExistFunc(ctx context.Context, key interface{}, f gcache.Func, duration time.Duration) (ok bool, err error) {
|
||||||
//TODO implement me
|
//TODO implement me
|
||||||
panic("implement me")
|
panic("implement me")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a AdapterFile) SetIfNotExist(ctx context.Context, key interface{}, value interface{}, duration time.Duration) (ok bool, err error) {
|
func (a *AdapterFile) SetIfNotExistFuncLock(ctx context.Context, key interface{}, f gcache.Func, duration time.Duration) (ok bool, err error) {
|
||||||
//TODO implement me
|
//TODO implement me
|
||||||
panic("implement me")
|
panic("implement me")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a AdapterFile) SetIfNotExistFunc(ctx context.Context, key interface{}, f gcache.Func, duration time.Duration) (ok bool, err error) {
|
func (a *AdapterFile) Get(ctx context.Context, key interface{}) (res *gvar.Var, err error) {
|
||||||
|
var data *FileData
|
||||||
|
name := a.Key2Name(key)
|
||||||
|
if !gfile.IsFile(name) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
file := gfile.GetBytes(name)
|
||||||
|
gjson.DecodeTo(file, &data)
|
||||||
|
if data.Time < time.Now().Unix() {
|
||||||
|
a.Remove(ctx, key)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
res = gvar.New(data.Data)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AdapterFile) GetOrSet(ctx context.Context, key interface{}, value interface{}, duration time.Duration) (result *gvar.Var, err error) {
|
||||||
|
a.Set(ctx, key, value, duration)
|
||||||
|
result, err = a.Get(ctx, key)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AdapterFile) GetOrSetFunc(ctx context.Context, key interface{}, f gcache.Func, duration time.Duration) (result *gvar.Var, err error) {
|
||||||
|
value := f
|
||||||
|
a.Set(ctx, key, value, duration)
|
||||||
|
result, err = a.Get(ctx, key)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AdapterFile) GetOrSetFuncLock(ctx context.Context, key interface{}, f gcache.Func, duration time.Duration) (result *gvar.Var, err error) {
|
||||||
|
a.Lock.Lock()
|
||||||
|
defer a.Lock.Unlock()
|
||||||
|
result, err = a.GetOrSetFunc(ctx, key, f, duration)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AdapterFile) Contains(ctx context.Context, key interface{}) (bool, error) {
|
||||||
|
return gfile.IsFile(a.FilePath), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AdapterFile) Size(ctx context.Context) (size int, err error) {
|
||||||
|
size = int(gfile.Size(a.FilePath))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AdapterFile) Data(ctx context.Context) (data map[interface{}]interface{}, err error) {
|
||||||
//TODO implement me
|
//TODO implement me
|
||||||
panic("implement me")
|
panic("implement me")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a AdapterFile) SetIfNotExistFuncLock(ctx context.Context, key interface{}, f gcache.Func, duration time.Duration) (ok bool, err error) {
|
func (a *AdapterFile) Keys(ctx context.Context) (keys []interface{}, err error) {
|
||||||
|
gfile.ReadLines(fileIndex, func(text string) (err error) {
|
||||||
|
|
||||||
|
return
|
||||||
|
})
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AdapterFile) Values(ctx context.Context) (values []interface{}, err error) {
|
||||||
//TODO implement me
|
//TODO implement me
|
||||||
panic("implement me")
|
panic("implement me")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a AdapterFile) Get(ctx context.Context, key interface{}) (*gvar.Var, error) {
|
func (a *AdapterFile) Update(ctx context.Context, key interface{}, value interface{}) (oldValue *gvar.Var, exist bool, err error) {
|
||||||
|
fileNameAll := a.Key2Name(key)
|
||||||
|
getFile := gfile.GetBytes(fileNameAll)
|
||||||
|
var data *FileData
|
||||||
|
gconv.Scan(getFile, &data)
|
||||||
|
oldValue.Set(data.Data)
|
||||||
|
|
||||||
|
var send = &FileData{
|
||||||
|
Data: value,
|
||||||
|
Time: data.Time,
|
||||||
|
}
|
||||||
|
|
||||||
|
err = gfile.PutBytes(fileNameAll, gconv.Bytes(send))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
a.AddIndex(key, time.Duration(data.Time-gtime.Now().Unix()))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AdapterFile) UpdateExpire(ctx context.Context, key interface{}, duration time.Duration) (oldDuration time.Duration, err error) {
|
||||||
//TODO implement me
|
//TODO implement me
|
||||||
panic("implement me")
|
panic("implement me")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a AdapterFile) GetOrSet(ctx context.Context, key interface{}, value interface{}, duration time.Duration) (result *gvar.Var, err error) {
|
func (a *AdapterFile) GetExpire(ctx context.Context, key interface{}) (time.Duration, error) {
|
||||||
//TODO implement me
|
//TODO implement me
|
||||||
panic("implement me")
|
panic("implement me")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a AdapterFile) GetOrSetFunc(ctx context.Context, key interface{}, f gcache.Func, duration time.Duration) (result *gvar.Var, err error) {
|
func (a *AdapterFile) Remove(ctx context.Context, keys ...interface{}) (lastValue *gvar.Var, err error) {
|
||||||
//TODO implement me
|
for _, v := range keys {
|
||||||
panic("implement me")
|
fileNameAll := a.Key2Name(v)
|
||||||
|
lastValue, err = a.Get(ctx, fileNameAll)
|
||||||
|
err = gfile.RemoveFile(fileNameAll)
|
||||||
|
//删除索引文件
|
||||||
|
a.DelIndex(v)
|
||||||
|
}
|
||||||
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a AdapterFile) GetOrSetFuncLock(ctx context.Context, key interface{}, f gcache.Func, duration time.Duration) (result *gvar.Var, err error) {
|
func (a *AdapterFile) Clear(ctx context.Context) error {
|
||||||
//TODO implement me
|
return gfile.RemoveAll(a.FilePath)
|
||||||
panic("implement me")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a AdapterFile) Contains(ctx context.Context, key interface{}) (bool, error) {
|
func (a *AdapterFile) Close(ctx context.Context) error {
|
||||||
//TODO implement me
|
return nil
|
||||||
panic("implement me")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a AdapterFile) Size(ctx context.Context) (size int, err error) {
|
|
||||||
//TODO implement me
|
|
||||||
panic("implement me")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a AdapterFile) Data(ctx context.Context) (data map[interface{}]interface{}, err error) {
|
|
||||||
//TODO implement me
|
|
||||||
panic("implement me")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a AdapterFile) Keys(ctx context.Context) (keys []interface{}, err error) {
|
|
||||||
//TODO implement me
|
|
||||||
panic("implement me")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a AdapterFile) Values(ctx context.Context) (values []interface{}, err error) {
|
|
||||||
//TODO implement me
|
|
||||||
panic("implement me")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a AdapterFile) Update(ctx context.Context, key interface{}, value interface{}) (oldValue *gvar.Var, exist bool, err error) {
|
|
||||||
//TODO implement me
|
|
||||||
panic("implement me")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a AdapterFile) UpdateExpire(ctx context.Context, key interface{}, duration time.Duration) (oldDuration time.Duration, err error) {
|
|
||||||
//TODO implement me
|
|
||||||
panic("implement me")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a AdapterFile) GetExpire(ctx context.Context, key interface{}) (time.Duration, error) {
|
|
||||||
//TODO implement me
|
|
||||||
panic("implement me")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a AdapterFile) Remove(ctx context.Context, keys ...interface{}) (lastValue *gvar.Var, err error) {
|
|
||||||
//TODO implement me
|
|
||||||
panic("implement me")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a AdapterFile) Clear(ctx context.Context) error {
|
|
||||||
//TODO implement me
|
|
||||||
panic("implement me")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a AdapterFile) Close(ctx context.Context) error {
|
|
||||||
//TODO implement me
|
|
||||||
panic("implement me")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewAdapterFile(filePath string) gcache.Adapter {
|
func NewAdapterFile(filePath string) gcache.Adapter {
|
||||||
|
fileIndex = path.Join(filePath, fileIndex)
|
||||||
return &AdapterFile{
|
return &AdapterFile{
|
||||||
FilePath: filePath,
|
FilePath: filePath,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/gogf/gf/v2/container/gvar"
|
"github.com/gogf/gf/v2/container/gvar"
|
||||||
"github.com/gogf/gf/v2/encoding/gjson"
|
"github.com/gogf/gf/v2/encoding/gjson"
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
"github.com/gogf/gf/v2/frame/g"
|
||||||
|
"github.com/gogf/gf/v2/os/gctx"
|
||||||
"github.com/gogf/gf/v2/os/gfile"
|
"github.com/gogf/gf/v2/os/gfile"
|
||||||
"github.com/gogf/gf/v2/os/gres"
|
"github.com/gogf/gf/v2/os/gres"
|
||||||
"github.com/gogf/gf/v2/text/gstr"
|
"github.com/gogf/gf/v2/text/gstr"
|
||||||
@@ -86,14 +87,22 @@ func (c *Cfg) GetFile(filename string, _pathStr ...string) (jsonObj *gjson.Json,
|
|||||||
bytes = gres.GetContent(filePath) // 从打包资源中获取内容
|
bytes = gres.GetContent(filePath) // 从打包资源中获取内容
|
||||||
}
|
}
|
||||||
|
|
||||||
//如果还是没有读取到配置,从当前目录返回上级读取
|
for range 5 {
|
||||||
if bytes == nil {
|
//如果还是没有读取到配置,从当前目录返回上级读取
|
||||||
// 拼接完整的文件路径
|
if bytes == nil {
|
||||||
filePath = "../../" + pathStr + filename + ".json"
|
// 上级拼接完整的文件路径
|
||||||
if gfile.IsFile(filePath) {
|
filePath = "../" + filePath
|
||||||
bytes = gfile.GetBytes(filePath) // 读取物理文件内容
|
if gfile.IsFile(filePath) {
|
||||||
|
bytes = gfile.GetBytes(filePath) // 读取物理文件内容
|
||||||
|
//找到配置了,跳过
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if bytes == nil {
|
||||||
|
g.Log().Errorf(gctx.New(), "未读取到配置文件:%v", filePath)
|
||||||
|
}
|
||||||
|
|
||||||
// 解析 JSON 内容并返回结果
|
// 解析 JSON 内容并返回结果
|
||||||
jsonObj, err = gjson.DecodeToJson(bytes)
|
jsonObj, err = gjson.DecodeToJson(bytes)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"github.com/ayflying/utility_go/pkg/notice"
|
"github.com/ayflying/utility_go/pkg/notice"
|
||||||
"github.com/ayflying/utility_go/pkg/rank"
|
"github.com/ayflying/utility_go/pkg/rank"
|
||||||
"github.com/ayflying/utility_go/pkg/s3"
|
"github.com/ayflying/utility_go/pkg/s3"
|
||||||
"github.com/ayflying/utility_go/pkg/websocket"
|
//"github.com/ayflying/utility_go/pkg/websocket"
|
||||||
"github.com/gogf/gf/v2/os/gcache"
|
"github.com/gogf/gf/v2/os/gcache"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -32,9 +32,9 @@ func Rank() *rank.Mod {
|
|||||||
return rank.New()
|
return rank.New()
|
||||||
}
|
}
|
||||||
|
|
||||||
func Websocket() *websocket.SocketV1 {
|
//func Websocket() *websocket.SocketV1 {
|
||||||
return websocket.NewV1()
|
// return websocket.NewV1()
|
||||||
}
|
//}
|
||||||
|
|
||||||
func Config() *config.Cfg {
|
func Config() *config.Cfg {
|
||||||
return config.NewV1()
|
return config.NewV1()
|
||||||
|
|||||||
Reference in New Issue
Block a user