go_dreamfactory/modules/gameinvite/api_qiecuo.go
2023-11-22 17:32:04 +08:00

112 lines
2.8 KiB
Go

package gameinvite
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
"time"
)
// 踢馆(熊猫武馆)
func (this *apiComp) QiecuoCheck(session comm.IUserSession, req *pb.GameInviteQiecuoReq) (errdata *pb.ErrorData) {
if req.Fid == "" {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Title: pb.ErrorCode_ReqParameterError.ToString(),
}
}
return
}
func (this *apiComp) Qiecuo(session comm.IUserSession, req *pb.GameInviteQiecuoReq) (errdata *pb.ErrorData) {
if errdata = this.QiecuoCheck(session, req); errdata != nil {
return
}
var (
err error
info *pb.GameInviteQiecuoRecord
gamedata *pb.GameInviteData
user *pb.DBUser
ok bool
keep bool
)
//切磋请求处理
if info, err = this.module.model.queryQiecuo(session.GetUserId()); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
//目标是否在线
if !this.module.ModuleUser.IsOnline(req.Fid) {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_UserOffline,
Title: pb.ErrorCode_UserOffline.ToString(),
}
return
}
if user, err = this.module.ModuleUser.GetUser(session.GetUserId()); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
keep = false
if gamedata, ok = info.Invite[req.Gtype]; !ok {
gamedata = &pb.GameInviteData{
Targets: make([]*pb.GameInviteQiecuoInvite, 0),
Member: make([]string, 0),
Rules: req.Rules,
}
info.Invite[req.Gtype] = gamedata
} else {
gamedata.Rules = req.Rules
}
// for i, v := range gamedata.Targets {
// if v.Uid == session.GetUserId() {
// gamedata.Targets = append(gamedata.Targets[0:i], gamedata.Targets[i+1:]...)
// keep = true
// }
// }
for _, v := range gamedata.Targets {
if v.Uid == req.Fid {
keep = true
if configure.Now().Sub(time.Unix(v.Timestamp, 0)).Seconds() > 10 {
v.Timestamp = configure.Now().Unix()
} else {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_PracticeSent,
Title: pb.ErrorCode_PracticeSent.ToString(),
}
return
}
}
}
if !keep {
gamedata.Targets = append(gamedata.Targets, &pb.GameInviteQiecuoInvite{
Uid: req.Fid,
Timestamp: configure.Now().Unix(),
})
}
this.module.model.Change(session.GetUserId(), map[string]interface{}{
"invite": info.Invite,
})
session.SendMsg(string(this.module.GetType()), "qiecuo", &pb.DColorQiecuoResp{Fid: req.Fid})
this.module.SendMsgToUser(string(this.module.GetType()), "qiecuonotify",
&pb.GameInviteQiecuonotifyPush{User: comm.GetUserBaseInfo(user), NotifyType: 1, Gtype: req.Gtype, Rules: req.Rules}, req.Fid)
return
}