go_dreamfactory/modules/pagoda/api_getrace.go
2023-07-28 17:43:05 +08:00

82 lines
1.9 KiB
Go

package pagoda
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
"go_dreamfactory/utils"
)
//参数校验
func (this *apiComp) GetRaceCheck(session comm.IUserSession, req *pb.PagodaGetRaceReq) (errdata *pb.ErrorData) {
return
}
///获取阵营爬塔信息
func (this *apiComp) GetRace(session comm.IUserSession, req *pb.PagodaGetRaceReq) (errdata *pb.ErrorData) {
var (
bChange bool
)
list, err := this.module.modelRacePagoda.getPagodaRaceList(session.GetUserId())
if err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
// 初始化每天挑战塔的层数
for k, v := range list.Race {
if !utils.IsToday(v.Rtime) {
list.Race[k].Rtime = configure.Now().Unix()
list.Race[k].Defeat = 0
bChange = true
}
// 校验循环塔是否过期
if v.Endtime < configure.Now().Unix() {
var cir int32 // 循环
c := this.module.configure.GetRaceCirculateConf()
for pos, v := range c {
if v == k {
pos += 1
if pos >= len(c) {
cir = c[0]
} else {
cir = c[pos]
}
break
}
}
delete(list.Race, k)
list.Race[cir] = &pb.RaceData{
Race: cir,
Task: []int32{},
Rtime: configure.Now().Unix(),
Defeat: 0,
Endtime: this.module.GetSeasonData(),
Curfloor: 0,
}
bChange = true
}
}
if bChange {
mapData := make(map[string]interface{}, 0)
mapData["race"] = list.Race
if err = this.module.modelRacePagoda.ModifyPagodaRaceDataByObjId(session.GetUserId(), mapData); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
}
}
session.SendMsg(string(this.module.GetType()), PagodaGetRaceResp, &pb.PagodaGetRaceResp{Race: list.Race})
return
}