2025-02-14 17:31:28 +08:00

52 lines
808 B
Go

package svc
import (
"encoding/json"
"sync"
)
type EcpmConfigCli struct {
*sync.Map
}
func NewEcpmConfig() *EcpmConfigCli {
return &EcpmConfigCli{
Map: &sync.Map{},
}
}
type Ecpm struct {
AppId string `json:"app_id"`
Value float64 `json:"value"`
View int `json:"view"`
}
func (c *EcpmConfigCli) Get(appId string) (*Ecpm, bool) {
v, ok := c.Map.Load(appId)
if !ok {
return nil, false
}
return v.(*Ecpm), true
}
func (c *EcpmConfigCli) Set(appId string, ecpmConfig *Ecpm) {
c.Map.Store(appId, ecpmConfig)
}
func (c *EcpmConfigCli) SetAll(list []Ecpm) {
c.Map.Clear()
for _, v := range list {
c.Map.Store(v.AppId, &v)
}
}
func (c *EcpmConfigCli) SetAllByJson(data []byte) {
var list []Ecpm
err := json.Unmarshal(data, &list)
if err != nil {
return
}
c.SetAll(list)
}