106 lines
3.1 KiB
Go
106 lines
3.1 KiB
Go
// package 设置助战英雄
|
|
package friend
|
|
|
|
import (
|
|
"go_dreamfactory/comm"
|
|
"go_dreamfactory/lego/sys/log"
|
|
"go_dreamfactory/pb"
|
|
|
|
"google.golang.org/protobuf/proto"
|
|
)
|
|
|
|
// 设置助战英雄
|
|
|
|
func (this *apiComp) AssistheroCheck(session comm.IUserSession, req *pb.FriendAssistheroReq) (code pb.ErrorCode) {
|
|
if req.HeroObjId == "" {
|
|
code = pb.ErrorCode_ReqParameterError
|
|
this.moduleFriend.Error("设置助战英雄参数错误", log.Field{Key: "uid", Value: session.GetUserId()}, log.Field{Key: "params", Value: req.String()})
|
|
}
|
|
return
|
|
}
|
|
|
|
func (this *apiComp) Assisthero(session comm.IUserSession, req *pb.FriendAssistheroReq) (code pb.ErrorCode, data proto.Message) {
|
|
if code = this.AssistheroCheck(session, req); code != pb.ErrorCode_Success {
|
|
return
|
|
}
|
|
uid := session.GetUserId()
|
|
// 获取英雄
|
|
hero, err := this.moduleFriend.ModuleHero.QueryCrossHeroinfo(req.HeroObjId)
|
|
if err != nil {
|
|
code = pb.ErrorCode_DBError
|
|
this.moduleFriend.Error("查询英雄数据 QueryCrossHeroinfo",
|
|
log.Field{Key: "uid", Value: uid},
|
|
log.Field{Key: "params", Value: req.HeroObjId},
|
|
log.Field{Key: "err", Value: err.Error()},
|
|
)
|
|
return
|
|
}
|
|
|
|
if hero == nil {
|
|
code = pb.ErrorCode_HeroNoExist
|
|
return
|
|
}
|
|
|
|
//获取玩家自己好友数据
|
|
self := this.moduleFriend.modelFriend.GetFriend(uid)
|
|
if self == nil {
|
|
code = pb.ErrorCode_FriendSelfNoData
|
|
return
|
|
}
|
|
|
|
update := map[string]interface{}{
|
|
"assistHeroId": req.HeroObjId,
|
|
"hero": hero,
|
|
}
|
|
|
|
received := self.Received
|
|
if received == 0 {
|
|
update["received"] = 1 //设置可领取状态
|
|
}
|
|
|
|
if err := this.moduleFriend.modelFriend.Change(self.Uid, update); err != nil {
|
|
code = pb.ErrorCode_FriendApplyError
|
|
this.moduleFriend.Error("设置助战英雄",
|
|
log.Field{Key: "uid", Value: uid},
|
|
log.Field{Key: "params", Value: req.HeroObjId},
|
|
log.Field{Key: "err", Value: err.Error()},
|
|
)
|
|
return
|
|
}
|
|
|
|
rsp := &pb.FriendAssistheroResp{HeroObjId: req.HeroObjId, Received: received}
|
|
if err := session.SendMsg(string(this.moduleFriend.GetType()), FriendSubTypeAssistHero, rsp); err != nil {
|
|
code = pb.ErrorCode_SystemError
|
|
return
|
|
}
|
|
|
|
// 有好友时再推送
|
|
if len(self.FriendIds) > 0 {
|
|
//把设置的助战英雄推送给好友
|
|
push := &pb.FriendAssistHeroUpdatePush{
|
|
Friend: &pb.FriendBase{
|
|
UserId: self.Uid,
|
|
HeroObjId: req.HeroObjId,
|
|
},
|
|
}
|
|
|
|
this.moduleFriend.Debug("设置的助战英雄推送给好友",
|
|
log.Field{Key: "uid", Value: uid},
|
|
log.Field{Key: "friendIds", Value: self.FriendIds},
|
|
log.Field{Key: "heroObjId", Value: req.HeroObjId},
|
|
)
|
|
if err := this.moduleFriend.SendMsgToUsers(string(this.moduleFriend.GetType()), "assistheroupdate", push, self.FriendIds...); err != nil {
|
|
this.moduleFriend.Error("推送助战英雄列表",
|
|
log.Field{Key: "uid", Value: uid},
|
|
log.Field{Key: "friends", Value: self.FriendIds},
|
|
log.Field{Key: "err", Value: err.Error()},
|
|
)
|
|
}
|
|
}
|
|
|
|
// 随机任务Rtype13
|
|
// this.moduleFriend.ModuleRtask.SendToRtask(session, comm.Rtype13, 1)
|
|
go this.moduleFriend.ModuleRtask.TriggerTask(session.GetUserId(), comm.GettaskParam(comm.Rtype13, 1))
|
|
return
|
|
}
|