| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- package data
- import (
- "f1-game/internal/types"
- cstring "github.com/cherry-game/cherry/extend/string"
- clog "github.com/cherry-game/cherry/logger"
- )
- type (
- SdkRow struct {
- SdkID int32 `json:"sdkID"` // sdk配置id
- CallbackName string `json:"callbackName"` // 支付回调名称路由使用
- Salt string `json:"salt"` // !禁止JSON输出
- Params map[string]string `json:"params"` // !禁止JSON输出
- PIDList []int32 `json:"pidList"` // 平台id列表
- PIDRanges types.Map[int32, int32] `json:"pidRanges"` // pid范围
- Desc string `json:"desc"`
- }
- // 平台sdk参数
- sdkConfig struct {
- pidMaps map[int32]*SdkRow // key:pid, value:SdkRow
- nameMap map[string]*SdkRow // key:callbackName, value:SdkRow
- }
- )
- func (p *sdkConfig) Name() string {
- return "sdk"
- }
- func (p *sdkConfig) Init() {
- p.pidMaps = map[int32]*SdkRow{}
- p.nameMap = map[string]*SdkRow{}
- }
- func (p *sdkConfig) OnLoad(maps any, _ bool) (int, error) {
- var list []*SdkRow
- if err := DecodeData(maps, &list); err != nil {
- return 0, err
- }
- var (
- loadMaps = map[int32]*SdkRow{}
- nameMaps = map[string]*SdkRow{}
- )
- for _, row := range list {
- row.mergePIDRanges()
- for _, pid := range row.PIDList {
- if value, found := loadMaps[pid]; found {
- clog.Errorf("duplicate sdk config. [pid = %,cfg = %v]",
- pid,
- value,
- )
- continue
- }
- loadMaps[pid] = row
- nameMaps[row.CallbackName] = row
- }
- }
- p.pidMaps = loadMaps
- p.nameMap = nameMaps
- return len(list), nil
- }
- func (p *sdkConfig) OnAfterLoad(_ bool) {
- }
- func (p *sdkConfig) Get(pid int32) *SdkRow {
- sdkRow, found := p.pidMaps[pid]
- if found {
- return sdkRow
- }
- return nil
- }
- func (p *sdkConfig) GetWithName(callName string) *SdkRow {
- if callName == "" {
- return nil
- }
- return p.nameMap[callName]
- }
- func (p *SdkRow) AppId() string {
- return p.Params["appId"]
- }
- func (p *SdkRow) AppKey() string {
- return p.Params["appKey"]
- }
- func (p *SdkRow) LoginURL() string {
- return p.Params["loginUrl"]
- }
- func (p *SdkRow) GetString(key string) string {
- v, found := p.Params[key]
- if !found {
- return ""
- }
- return v
- }
- func (p *SdkRow) GetInt(key string) int {
- v, found := p.Params[key]
- if !found {
- return 0
- }
- intValue, _ := cstring.ToInt(v, 0)
- return intValue
- }
- func (p *SdkRow) mergePIDRanges() {
- if p.PIDRanges == nil {
- return
- }
- for k, v := range p.PIDRanges {
- if k < 1 || v < 1 || k >= v {
- clog.Warnf("pid range error from:%d, end:%d", k, v)
- continue
- }
- for pid := k; pid <= v; pid++ {
- p.PIDList = append(p.PIDList, pid)
- }
- }
- }
|