handle.go 1.22 KB
package roomrank

import (
	"apigame/configs/confroomrank"
	"apigame/models"
	"apigame/service/code-msg"
)

// HandleGetConfig 活动配置
func HandleGetConfig(req *models.ReqRoomRankGetConfig) (code string, rsp models.RspRoomRankGetConfig) {
	rsp = models.RspRoomRankGetConfig{}
	code = code_msg.RECODE_OK
	gameId := req.GameID

	// 尝试更新配置
	config, _ := confroomrank.GetCurrent(gameId)
	rsp.ActivityId = config.Id

	rsp.Config = config.Client

	return
}

// HandleInfo 房间排行信息
func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRankInfo) {
	rsp = models.RspRoomRankInfo{}
	code = code_msg.RECODE_OK
	gameId := req.GameID
	playerUid := req.UID
	playerLevel := req.PlayerLevel

	// 尝试更新配置
	config, hasConfig := confroomrank.GetCurrent(gameId)
	if !hasConfig {
		config = new(confroomrank.ActivityConfig)
	}

	// 读取游戏数据
	player := LoadPlayer(gameId, playerUid)

	// 尝试判断结算
	hasSettle := TrySettle(gameId, player, config)

	// 尝试加入房间
	room, hasRoom := TryGetRoom(gameId, player, config, playerLevel)

	if hasSettle || hasRoom {
		SavePlayer(gameId, player)
	}
	if hasRoom {
		SaveRoom(gameId, room)
	}

	rsp.RoomRankInfo = GetInfo(player, config)

	return
}