go_dreamfactory/modules/library/api_getstoryreward.go
2023-05-29 19:39:31 +08:00

90 lines
2.4 KiB
Go

package library
/*
* 单个英雄剧情id 奖励
*/
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
)
//参数校验
func (this *apiComp) GetStoryRewardCheck(session comm.IUserSession, req *pb.LibraryGetStoryRewardReq) (code pb.ErrorCode) {
if req.Oid == "" || req.History == 0 {
code = pb.ErrorCode_ReqParameterError
}
return
}
func (this *apiComp) GetStoryReward(session comm.IUserSession, req *pb.LibraryGetStoryRewardReq) (code pb.ErrorCode, data *pb.ErrorData) {
var (
update map[string]interface{}
)
update = make(map[string]interface{}, 0)
resp := &pb.LibraryGetStoryRewardResp{}
code = this.GetStoryRewardCheck(session, req)
if code != pb.ErrorCode_Success {
return // 参数校验失败直接返回
}
_heroFetter := this.module.modelFetter.getOneHeroFetter(session.GetUserId(), req.Oid)
if _heroFetter == nil {
code = pb.ErrorCode_ReqParameterError
return
}
favorConf, err := this.module.configure.GetFavorability(_heroFetter.Heroid, 1) // 取1级的就可以
if err != nil {
code = pb.ErrorCode_ConfigNoFound
data.Message = err.Error()
return
}
// 领取传记往事id
for _, v := range _heroFetter.History {
if v == req.History { // 已经领取过奖励
code = pb.ErrorCode_LibraryReward
return
}
}
// 等级规则校验
_len := len(_heroFetter.History)
if len(favorConf.Favorlv) < _len {
if favorConf.Favorlv[_len] > _heroFetter.Favorlv { // 等级不够
code = pb.ErrorCode_LibraryLvReward
return
}
}
for iPos, v := range favorConf.BiographyName {
var res []*cfg.Gameatn
if v == req.History {
if iPos == 0 {
res = append(res, favorConf.BiographyReward1...)
} else if iPos == 1 {
res = append(res, favorConf.BiographyReward2...)
} else if iPos == 2 {
res = append(res, favorConf.BiographyReward3...)
}
if len(res) > 0 {
if code = this.module.DispenseRes(session, res, true); code != pb.ErrorCode_Success {
return
}
} else {
this.module.Errorf("领取奖励配置错误:%d", req.History)
code = pb.ErrorCode_LibraryLvReward
return
}
break
}
}
_heroFetter.History = append(_heroFetter.History, req.History)
update["history"] = _heroFetter.History
this.module.modelFetter.modifyHeroFetterDataByObjId(session.GetUserId(), _heroFetter.Id, update)
resp.Data = _heroFetter
session.SendMsg(string(this.module.GetType()), LibraryGetStoryRewardResp, resp)
return
}