go_dreamfactory/modules/sociaty/api_cross_mine.go

84 lines
2.4 KiB
Go

package sociaty
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/pb"
"go_dreamfactory/utils"
"google.golang.org/protobuf/proto"
)
// 我的公会
func (this *apiComp) MineCheck(session comm.IUserSession, req *pb.SociatyMineReq) (code pb.ErrorCode) {
return
}
func (this *apiComp) Mine(session comm.IUserSession, req *pb.SociatyMineReq) (code pb.ErrorCode, data proto.Message) {
uid := session.GetUserId()
userEx, err := this.module.ModuleUser.GetUserExpand(uid)
if err != nil {
this.module.Error("GetRemoteUserExpand", log.Fields{"uid": uid, "err": err})
code = pb.ErrorCode_UserSessionNobeing
return
}
rsp := &pb.SociatyMineResp{}
// 未加入公会
if userEx.SociatyId == "" {
code = pb.ErrorCode_SociatyNoAdded
return
}
// 获取公会
sociaty := this.module.modelSociaty.getUserSociaty(uid)
if sociaty != nil && sociaty.Id == "" {
code = pb.ErrorCode_SociatyNoFound
this.module.Error("当前玩家所在的公会未找到", log.Fields{"uid": uid})
return
}
//判断公会是否解散(公会解散非立即执行)
if this.module.modelSociaty.isDismiss(sociaty) {
code = pb.ErrorCode_SociatyDismissed
return
}
// 初始玩家公会任务
sociatyTask := this.module.modelSociatyTask.getUserTask(uid, sociaty.Id)
if sociatyTask.SociatyId != "" {
// 今日首次进入公会
if utils.IsFirstTody(sociatyTask.LastUpdateTime) {
// 删除任务
if err := this.module.modelSociatyTask.deleTask(sociaty.Id, uid); err == nil {
// 初始新的公会任务
if err = this.module.modelSociatyTask.initSociatyTask(uid, sociaty.Id); err != nil {
this.module.Error("初始化玩家公会任务", log.Fields{"uid": uid, "sociatyId": sociaty.Id, "err": err})
}
}
}
}
// 获取会长
master := this.module.modelSociaty.getMasterInfo(sociaty)
if master != nil {
// 会长弹劾判断
if err := this.module.modelSociaty.extendJob(master.Uid, sociaty); err == nil {
// 获取新的会长
master = this.module.modelSociaty.getMasterInfo(sociaty)
} else {
code = pb.ErrorCode_DBError
this.module.Error("会长弹劾", log.Fields{"uid": uid, "sociatyId": sociaty.Id, "master": master.Uid, "err": err})
}
}
rsp.Sociaty = sociaty
rsp.Master = master
if err := session.SendMsg(string(this.module.GetType()), SociatySubTypeMine, rsp); err != nil {
code = pb.ErrorCode_SystemError
}
return
}