Commit a17aa6cab25fafff7232ecad89812e13465a6688

Authored by 王家文
1 parent 7ffab05c
Exists in master and in 1 other branch dev-wjw

feat✨:游戏功能配置

configs/confapi/config.go
... ... @@ -3,8 +3,6 @@ package confapi
3 3 import (
4 4 "apigame/configs/confbase"
5 5 "apigame/service-common/svconst"
6   - "apigame/service-common/svmysql"
7   - "apigame/service-common/svredis"
8 6 "fmt"
9 7 )
10 8  
... ... @@ -24,22 +22,6 @@ func (c *ApiGameConfig) ConfInfo(suffix string) *confbase.ConfInfo {
24 22 }
25 23 }
26 24  
27   -func (c *ApiGameConfig) RedisInfo(suffix string) *svredis.RedisInfo {
28   - tableName := "s_game_config"
29   - return &svredis.RedisInfo{
30   - CacheKey: fmt.Sprintf("%s:%s:%s", svconst.REDIS_CACHEP_REFIX, tableName, suffix),
31   - CacheTime: 300,
32   - }
33   -}
34   -
35   -func (c *ApiGameConfig) MysqlInfo(suffix string) *svmysql.MysqlInfo {
36   - tableName := "s_game_config"
37   - return &svmysql.MysqlInfo{
38   - DbMysql: svconst.DbApi.Where("gameid = ?", suffix),
39   - TableName: tableName,
40   - }
41   -}
42   -
43 25 // Raw 配置原始数据
44 26 type Raw struct {
45 27 AppId string `gorm:"column:appid"`
... ... @@ -48,3 +30,9 @@ type Raw struct {
48 30 AppKey string `gorm:"column:appkey"`
49 31 Name string `gorm:"column:name"`
50 32 }
  33 +
  34 +// Decode 解析配置原始数据
  35 +func (c *ApiGameConfig) Decode(gameId string, rawData any) {
  36 + raw := rawData.(*Raw)
  37 + c.Raw = raw
  38 +}
... ...
configs/confapi/get.go
1 1 package confapi
2 2  
3 3 import (
4   - "apigame/service-common/svmysql"
5   - "apigame/service-common/svredis"
6   - "apigame/util/util-lx/lxalilog"
7   - "fmt"
  4 + "apigame/configs/confbase"
  5 + "errors"
8 6 )
9 7  
10 8 // GetConfig 获取 api游戏配置
11 9 func GetConfig(gameId string) (conf *ApiGameConfig, err error) {
  10 +
12 11 conf = new(ApiGameConfig)
13   - has := svredis.LoadData(gameId, conf)
14   - if has {
15   - fmt.Println("dwjw confapi.GetConfig use cache")
16   - return
17   - }
18   - has, err = svmysql.First(conf, gameId)
19   - if err != nil {
20   - lxalilog.Errors(err, "confapi.GetConfig error", gameId)
21   - return
22   - }
  12 + has := confbase.GetConfig[*ApiGameConfig, Raw](gameId, gameId, conf)
23 13 if !has {
  14 + err = errors.New("confapi.GetConfig error")
24 15 return
25 16 }
26   - fmt.Println("dwjw confapi.GetConfig save cache")
27   - svredis.SaveData(gameId, conf)
28 17  
29 18 return
30 19 }
... ...
configs/confbase/index.go
... ... @@ -9,7 +9,7 @@ import (
9 9 "fmt"
10 10 )
11 11  
12   -func SaveCache(gameId string, obj IConfData) {
  12 +func SaveCache[T IConfData](gameId string, obj T) {
13 13 info := obj.ConfInfo(gameId)
14 14 _ = zredis.SetEx(zredis.GetConn(), info.CacheKey, zjson.Str(obj), info.CacheTime)
15 15 }
... ... @@ -61,21 +61,14 @@ func FindDuringTime(obj svmysql.IMysqlData, gameId string) (has bool) {
61 61 }
62 62  
63 63 func GetConfig[T1 IConfData, T2 IConfRawData](gameId string, id any, obj T1) (has bool) {
64   - confRaw := new(T2)
65   - info := obj.ConfInfo(gameId)
66   - db := info.DbMysql
67   - result := db.Table(info.TableName).Where(fmt.Sprintf("%s = ?", info.KeyName), id).First(confRaw)
68   -
69   - has = result.RowsAffected != 0
70   - err := result.Error
71   - if err != nil {
72   - lxalilog.Errors(err, "confbase.LoadData error", gameId)
  64 + has = LoadCache(gameId, obj)
  65 + if has {
73 66 return
74 67 }
  68 + has = LoadData[T1, T2](gameId, id, obj)
75 69 if !has {
76 70 return
77 71 }
78   -
79   - obj.Decode(gameId, confRaw)
  72 + SaveCache(gameId, obj)
80 73 return
81 74 }
... ...
middleware/sign/index.go
... ... @@ -232,7 +232,7 @@ func CheckSign(data interface{}, checkToken bool) (code string, gameconfig *conf
232 232 return
233 233 }
234 234  
235   - appkey := gameconfig.AppKey
  235 + appkey := gameconfig.Raw.AppKey
236 236  
237 237 if appkey == "" {
238 238 code = code_msg.RECODE_SIGNERROR
... ...