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.
102 lines
1.9 KiB
102 lines
1.9 KiB
package cacheApi
|
|
|
|
import (
|
|
"encoding/json"
|
|
"epur-pay/model"
|
|
"epur-pay/pkg/logger"
|
|
"epur-pay/pkg/rds"
|
|
"epur-pay/pkg/utils"
|
|
"strconv"
|
|
"strings"
|
|
"sync"
|
|
)
|
|
|
|
type Config struct {
|
|
Data sync.Map
|
|
}
|
|
|
|
type configData struct {
|
|
Code string `json:"code"` //key
|
|
Comment string `json:"comment"` //comment
|
|
}
|
|
|
|
func (p *Config) Refresh() *Config {
|
|
data := []configData{}
|
|
utils.Error(rds.DB.Raw(`select * from config where pid != 0`).Scan(&data).Error)
|
|
|
|
for _, v := range data {
|
|
p.Data.Store(v.Code, v.Comment)
|
|
}
|
|
|
|
return p
|
|
}
|
|
|
|
func (p *Config) RefreshRow(data *model.Config) {
|
|
p.Data.Store(data.Code, data.Comment)
|
|
}
|
|
|
|
func (p *Config) RefreshDel(data *model.Config) {
|
|
p.Data.Delete(data.Code)
|
|
}
|
|
|
|
func (p *Config) Get(key string) string {
|
|
|
|
if row, ok := p.Data.Load(key); ok {
|
|
return row.(string)
|
|
} else {
|
|
logger.AccessLogger.Warnln("缓存不存在了,注意!", key)
|
|
return ""
|
|
}
|
|
}
|
|
|
|
func (p *Config) GetByte(key string) []byte {
|
|
|
|
if row, ok := p.Data.Load(key); ok {
|
|
return []byte(row.(string))
|
|
} else {
|
|
logger.AccessLogger.Warnln("缓存不存在了,注意!", key)
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func (p *Config) GetJsonRaw(key string) (row json.RawMessage) {
|
|
data := p.GetByte(key)
|
|
if data != nil {
|
|
_ = json.Unmarshal(data, &row)
|
|
}
|
|
return row
|
|
}
|
|
|
|
func (p *Config) GetMap(key string) map[string]interface{} {
|
|
data := p.GetByte(key)
|
|
row := make(map[string]interface{})
|
|
if data != nil {
|
|
configJson := []model.ConfigJson{}
|
|
_ = json.Unmarshal(data, &configJson)
|
|
for _, v := range configJson {
|
|
row[v.Key] = v.Value
|
|
}
|
|
}
|
|
|
|
return row
|
|
}
|
|
|
|
func (p *Config) GetArrayString(key string) []string {
|
|
row := []string{}
|
|
data := p.Get(key)
|
|
|
|
if len(data) > 0 {
|
|
row = strings.Split(p.Get(key), ",")
|
|
}
|
|
return row
|
|
}
|
|
|
|
func (p *Config) GetInt64(key string) int64 {
|
|
if row, ok := p.Data.Load(key); ok {
|
|
r, _ := strconv.Atoi(row.(string))
|
|
return int64(r)
|
|
} else {
|
|
return 0
|
|
}
|
|
}
|