player.go 1.16 KB
package cardholder

import (
	"apigame/configs"
	"apigame/service-common/svmysql"
	"apigame/util/util-lx/lxtime"
)

// SavePlayer 存储数据
func SavePlayer(gameId string, d *DataCardHolder) {
	d.UpdateTime = lxtime.NowUninx()
	d.Encode()

	_ = svmysql.Save(d, gameId)
}

func _LoadPlayer(gameId string, uid int64) (d *DataCardHolder) {
	d = NewDataCardHolder(uid)
	has, err := svmysql.First(d, gameId)
	if err != nil {
		return
	}
	if has {
		d.Decode()
	} else {
		d.Init(uid)
		_ = svmysql.Insert(d, gameId)
	}
	return
}

// LoadPlayer 获取数据 外部接口
func LoadPlayer(gameId string, uid int64, config *configs.CardActivityConfig) (d *DataCardHolder) {
	configId := config.Id
	d = _LoadPlayer(gameId, uid)
	// 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新
	if configId != 0 &&
		configId != d.ActivityId {

		// 剩余的星星数
		starCount := d.Details.StarCount

		d.ActivityId = configId
		d.Details = NewDataCardHolderDetails()

		// 使用剩余的星星数来自动兑换卡包
		d.Details.LastStarCount = starCount
		NextActivityAutoExchange(gameId, d, config)

		SavePlayer(gameId, d)
	}
	return
}