diff --git a/common/svconst/consts.go b/common/svconst/consts.go new file mode 100644 index 0000000..7e1c15f --- /dev/null +++ b/common/svconst/consts.go @@ -0,0 +1 @@ +package svconst diff --git a/common/svconst/vars.go b/common/svconst/vars.go new file mode 100644 index 0000000..09d5280 --- /dev/null +++ b/common/svconst/vars.go @@ -0,0 +1,5 @@ +package svconst + +var ( + AppName = "" +) diff --git a/common/svlog/ali-log.go b/common/svlog/ali-log.go new file mode 100644 index 0000000..e83c11a --- /dev/null +++ b/common/svlog/ali-log.go @@ -0,0 +1,40 @@ +package svlog + +import ( + "apigame/util/util-lx/lxalilog" + "fmt" + "github.com/astaxie/beego" + lalilog "github.com/lixu-any/go-tools/ali/log" +) + +func InitAliLog(appName string) { + + //初始化阿里云日志 + logm, _ := beego.AppConfig.GetSection("alilog") + lxalilog.InitAliLog(lxalilog.MapAlilogConfig{ + Endpoint: logm["endpoint"], + AccessKeyId: logm["accesskeyid"], + AccessKeySecret: logm["accesskeysecret"], + Project: logm["project"], + AppNaame: appName, + On: logm["on"], + Debug: logm["debug"], + TableError: "api_code_merge", + TableDebug: logm["tabledebug"], + Env: beego.AppConfig.String("env"), + }) + + lalilog.InitAliLog(lalilog.MapAlilogConfig{ + Endpoint: logm["endpoint"], + AccessKeyId: logm["accesskeyid"], + AccessKeySecret: logm["accesskeysecret"], + Project: logm["project"], + On: logm["on"], + Debug: logm["debug"], + TableError: logm["tableerror"], + TableDebug: logm["tabledebug"], + Env: beego.AppConfig.String("env"), + }) + + fmt.Println(appName + " alilog init success") +} diff --git a/common/svlog/log.go b/common/svlog/log.go new file mode 100644 index 0000000..d879916 --- /dev/null +++ b/common/svlog/log.go @@ -0,0 +1,21 @@ +package svlog + +import ( + "apigame/common/svconst" + "apigame/util/util-lx/lxbeego" + "fmt" + "github.com/astaxie/beego" +) + +func Init() { + + // 初始化日志文件 + conf, _ := beego.AppConfig.GetSection("log") + conf["filename"] = conf["path"] + "api.log" + + if err := lxbeego.Inits(conf); err != nil { + fmt.Println("svlog.Inits Error::" + err.Error()) + } + + fmt.Println(svconst.AppName + " svlog init success") +} diff --git a/common/svredis/index.go b/common/svredis/index.go new file mode 100644 index 0000000..570eb23 --- /dev/null +++ b/common/svredis/index.go @@ -0,0 +1,35 @@ +package svredis + +import ( + "apigame/common/svconst" + "apigame/util/utstring" + "apigame/util/zredis" + "fmt" + "github.com/astaxie/beego" + "github.com/mitchellh/mapstructure" +) + +type RedisConfig struct { + Host string `json:"host"` + Port string `json:"port"` + Pwd string `json:"pwd"` + Db string `json:"Db"` + Prefix string `json:"prefix"` +} + +func Init() bool { + //初始化Redis + confText, _ := beego.AppConfig.GetSection("redis") + var conf RedisConfig + err := mapstructure.Decode(confText, &conf) + if err != nil { + fmt.Println("svredis.Init mapstructure.Decode Error::" + err.Error()) + } + zredis.Init(conf.Host+":"+conf.Port, conf.Pwd, utstring.StringToInt(conf.Db)) + if !zredis.Check() { + return false + } + + fmt.Println(svconst.AppName + " redis init success") + return true +} diff --git a/common/zconst/consts.go b/common/zconst/consts.go deleted file mode 100644 index f894311..0000000 --- a/common/zconst/consts.go +++ /dev/null @@ -1 +0,0 @@ -package zconst diff --git a/common/zconst/vars.go b/common/zconst/vars.go deleted file mode 100644 index fe94ea2..0000000 --- a/common/zconst/vars.go +++ /dev/null @@ -1,5 +0,0 @@ -package zconst - -var ( - AppName = "" -) diff --git a/common/zlog/ali-log.go b/common/zlog/ali-log.go deleted file mode 100644 index 43cd044..0000000 --- a/common/zlog/ali-log.go +++ /dev/null @@ -1,40 +0,0 @@ -package zlog - -import ( - "apigame/util/util-lx/lxalilog" - "fmt" - "github.com/astaxie/beego" - lalilog "github.com/lixu-any/go-tools/ali/log" -) - -func InitAliLog(appName string) { - - //初始化阿里云日志 - logm, _ := beego.AppConfig.GetSection("alilog") - lxalilog.InitAliLog(lxalilog.MapAlilogConfig{ - Endpoint: logm["endpoint"], - AccessKeyId: logm["accesskeyid"], - AccessKeySecret: logm["accesskeysecret"], - Project: logm["project"], - AppNaame: appName, - On: logm["on"], - Debug: logm["debug"], - TableError: "api_code_merge", - TableDebug: logm["tabledebug"], - Env: beego.AppConfig.String("env"), - }) - - lalilog.InitAliLog(lalilog.MapAlilogConfig{ - Endpoint: logm["endpoint"], - AccessKeyId: logm["accesskeyid"], - AccessKeySecret: logm["accesskeysecret"], - Project: logm["project"], - On: logm["on"], - Debug: logm["debug"], - TableError: logm["tableerror"], - TableDebug: logm["tabledebug"], - Env: beego.AppConfig.String("env"), - }) - - fmt.Println(appName + " alilog init success") -} diff --git a/common/zlog/log.go b/common/zlog/log.go deleted file mode 100644 index b55c4f6..0000000 --- a/common/zlog/log.go +++ /dev/null @@ -1,21 +0,0 @@ -package zlog - -import ( - "apigame/common/zconst" - "apigame/util/util-lx/lxbeego" - "fmt" - "github.com/astaxie/beego" -) - -func Init() { - - // 初始化日志文件 - logconfig, _ := beego.AppConfig.GetSection("log") - logconfig["filename"] = logconfig["path"] + "api.log" - - if err := lxbeego.Inits(logconfig); err != nil { - fmt.Println("lxbeelog.Inits Error::" + err.Error()) - } - - fmt.Println(zconst.AppName + " beelog init success") -} diff --git a/common/zredis/index.go b/common/zredis/index.go deleted file mode 100644 index 23520bc..0000000 --- a/common/zredis/index.go +++ /dev/null @@ -1 +0,0 @@ -package zredis diff --git a/dto/inits.go b/dto/inits.go index 25d5330..d9e3740 100644 --- a/dto/inits.go +++ b/dto/inits.go @@ -11,22 +11,6 @@ func Inits() (err error) { appname := beego.AppConfig.String("appname") - ////初始化Redis - //redisconfig, _ := beego.AppConfig.GetSection("redis") - //var mredisconfig lxredis.MapRedisConfig - //err = mapstructure.Decode(redisconfig, &mredisconfig) - //if err != nil { - // fmt.Println(" mapstructure.Decode Error::" + err.Error()) - //} else { - // err = lxredis.InitRedis(mredisconfig) - // if err != nil { - // fmt.Println(" lxredis.InitRedis Error::" + err.Error()) - // return err - // } - //} - // - //fmt.Println(appname + " redis init success") - //初始化MYSQL var conns []lxmysql.MapMysqlConn diff --git a/go.mod b/go.mod index 1fa9103..3afb8e9 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,9 @@ require ( github.com/astaxie/beego v1.12.3 github.com/garyburd/redigo v1.6.4 github.com/go-sql-driver/mysql v1.7.0 + github.com/gomodule/redigo v2.0.0+incompatible github.com/lixu-any/go-tools v0.0.0-20221128094643-07d54c69e9bf + github.com/mitchellh/mapstructure v1.1.2 gorm.io/driver/mysql v1.5.6 gorm.io/gorm v1.25.9 ) diff --git a/go.sum b/go.sum index 5ef80ef..bd05bc3 100644 --- a/go.sum +++ b/go.sum @@ -156,6 +156,7 @@ github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0 github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0= github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -251,6 +252,7 @@ github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eI github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= diff --git a/main.go b/main.go index f9d5126..4d926f3 100644 --- a/main.go +++ b/main.go @@ -1,8 +1,9 @@ package main import ( - "apigame/common/zconst" - "apigame/common/zlog" + "apigame/common/svconst" + "apigame/common/svlog" + "apigame/common/svredis" "apigame/dto" _ "apigame/routers" "apigame/service/cardholder" @@ -36,13 +37,16 @@ func main() { func Init() { - zconst.AppName = beego.AppConfig.String("appname") + svconst.AppName = beego.AppConfig.String("appname") - zlog.Init() + svlog.Init() + svlog.InitAliLog(svconst.AppName) - _ = dto.Inits() + if !svredis.Init() { + return + } - zlog.InitAliLog(zconst.AppName) + _ = dto.Inits() // 初始化配置 cardholder.Init() diff --git a/service/cardholder/logic.go b/service/cardholder/logic.go index 671c225..c5fc141 100644 --- a/service/cardholder/logic.go +++ b/service/cardholder/logic.go @@ -6,9 +6,9 @@ import ( "apigame/service/constd" "apigame/util/util-lx/lxalilog" "apigame/util/util-lx/lxtime" - "apigame/util/utjson" "apigame/util/utslice" "apigame/util/utstring" + "apigame/util/zjson" ) // SaveData 存储数据 @@ -229,7 +229,7 @@ func DoOpen(gameId string, { recordBase := dto.NewCardHolderRecordBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round) dto.SaveRecord(gameId, dto.NewCardHolderRecordOpen(recordBase, - openMode, utstring.StringToInt(confCardholder.Id), utjson.JsonString(newCards))) + openMode, utstring.StringToInt(confCardholder.Id), zjson.Str(newCards))) } return diff --git a/util/zjson/json.go b/util/zjson/json.go new file mode 100644 index 0000000..7e94219 --- /dev/null +++ b/util/zjson/json.go @@ -0,0 +1,29 @@ +package zjson + +import "encoding/json" + +func Byte(obj any) (buf []byte) { + jsons, err := json.Marshal(obj) + if err == nil { + buf = jsons + } else { + } + return +} + +func Str(obj any) (text string) { + jsons, err := json.Marshal(obj) + if err == nil { + text = string(jsons) + } else { + } + return +} + +func Obj(text string, obj any) (err error) { + err = json.Unmarshal([]byte(text), &obj) + if err != nil { + + } + return +} diff --git a/util/zredis/handler.go b/util/zredis/handler.go new file mode 100644 index 0000000..47267bc --- /dev/null +++ b/util/zredis/handler.go @@ -0,0 +1,30 @@ +package zredis + +import ( + "fmt" + "github.com/gomodule/redigo/redis" +) + +func Check() bool { + if pool == nil { + fmt.Println("redis pool nil") + } + conn := pool.Get() + defer AutoClose(conn) + + _, err := redis.Int64(conn.Do("GET", "test")) + if err != nil { + if err == redis.ErrNil { + //fmt.Println("redis.ErrNil") + } else { + fmt.Println("err", err) + fmt.Println("redis conn error", + "_addr", _addr, + "_pass", _pass, + "_db", _db) + return false + } + } + + return true +} diff --git a/util/zredis/hash.go b/util/zredis/hash.go new file mode 100644 index 0000000..1a0df02 --- /dev/null +++ b/util/zredis/hash.go @@ -0,0 +1,29 @@ +package zredis + +import ( + "github.com/gomodule/redigo/redis" +) + +// HSet HSet +func HSet(conn redis.Conn, tableName, key, value any) error { + _, err := conn.Do("HSET", tableName, key, value) + return err +} + +// HGet HGet +func HGet(conn redis.Conn, tableName, key any) any { + reply, err := conn.Do("HGET", tableName, key) + if err != nil { + return nil + } + return reply +} + +// HGetInt64 HGetInt64 +func HGetInt64(conn redis.Conn, tableName, key any) int64 { + reply, err := redis.Int64(conn.Do("HGET", tableName, key)) + if err == nil { + return reply + } + return 0 +} diff --git a/util/zredis/hash_data.go b/util/zredis/hash_data.go new file mode 100644 index 0000000..45c292c --- /dev/null +++ b/util/zredis/hash_data.go @@ -0,0 +1,24 @@ +package zredis + +import ( + "apigame/util/zjson" + "github.com/gomodule/redigo/redis" +) + +// HSetData HSetData +func HSetData(conn redis.Conn, value IData) error { + _, err := conn.Do("HSET", value.TableName(), value.DbKey(), value.ToString()) + return err +} + +// HGetData HSetData +func HGetData(conn redis.Conn, value IData) IData { + text, err := redis.String(conn.Do("HGET", value.TableName(), value.DbKey())) + if err == nil { + errJson := zjson.Obj(text, value) + if errJson != nil { + return nil + } + } + return value +} diff --git a/util/zredis/interface.go b/util/zredis/interface.go new file mode 100644 index 0000000..984add3 --- /dev/null +++ b/util/zredis/interface.go @@ -0,0 +1,7 @@ +package zredis + +type IData interface { + TableName() (text string) + DbKey() (text string) + ToString() (text string) +} diff --git a/util/zredis/kv.go b/util/zredis/kv.go new file mode 100644 index 0000000..d2ac13e --- /dev/null +++ b/util/zredis/kv.go @@ -0,0 +1,19 @@ +package zredis + +import ( + "github.com/gomodule/redigo/redis" +) + +func Increment(key string) int64 { + conn := GetConn() + if conn == nil { + return 0 + } + defer conn.Close() + + value, err := redis.Int64(conn.Do("INCR", key)) + if err == nil { + return value + } + return 0 +} diff --git a/util/zredis/redis.go b/util/zredis/redis.go new file mode 100644 index 0000000..df5d214 --- /dev/null +++ b/util/zredis/redis.go @@ -0,0 +1,50 @@ +package zredis + +import ( + "github.com/gomodule/redigo/redis" + "time" +) + +var ( + _addr string + _pass string + _db int +) +var pool *redis.Pool + +func Init(addr, pass string, db int) { + + _addr, _pass, _db = addr, pass, db + + pool = &redis.Pool{ + MaxActive: 10240, + MaxIdle: 10240, // Maximum number of idle connections in the pool. + IdleTimeout: 240 * time.Second, // Close connections after remaining idle for this duration + Dial: dial, + Wait: true, + } +} + +func dial() (redis.Conn, error) { + conn, err := redis.Dial("tcp", _addr, + redis.DialPassword(_pass), + redis.DialDatabase(_db), + redis.DialConnectTimeout(5*time.Second), + redis.DialReadTimeout(5*time.Second), + redis.DialWriteTimeout(5*time.Second), + ) + return conn, err +} + +func GetConn() redis.Conn { + if pool == nil { + return nil + } + return pool.Get() +} + +func AutoClose(conn redis.Conn) { + err := conn.Close() + if err != nil { + } +} -- libgit2 0.21.0