package sociaty import ( "go_dreamfactory/comm" "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" "go_dreamfactory/utils" ) // 公会解散 func (this *apiComp) DismissCheck(session comm.IUserSession, req *pb.SociatyDismissReq) (code pb.ErrorCode) { if req.Dismiss > 1 { code = pb.ErrorCode_ReqParameterError this.module.Error("公会解散参数错误", log.Field{Key: "uid", Value: session.GetUserId()}, log.Field{Key: "params", Value: req.String()}) } return } func (this *apiComp) Dismiss(session comm.IUserSession, req *pb.SociatyDismissReq) (code pb.ErrorCode, data *pb.ErrorData) { if code = this.DismissCheck(session, req); code != pb.ErrorCode_Success { return } uid := session.GetUserId() sociaty := this.module.modelSociaty.getUserSociaty(uid) if sociaty == nil { code = pb.ErrorCode_SociatyNoFound this.module.Error("当前玩家所在的公会未找到", log.Field{Key: "uid", Value: uid}) return } rsp := &pb.SociatyDismissResp{ Uid: uid, SociatyId: sociaty.Id, } // 校验权限 if !this.module.modelSociaty.isRight(uid, sociaty, pb.SociatyJob_PRESIDENT) { code = pb.ErrorCode_SociatyNoRight return } //公会解散 update := map[string]interface{}{} globalCnf := this.module.globalConf var isUpdate bool if sociaty.DismissTime == 0 { //更新解散倒计时 update["dismissTime"] = utils.AddHour(int(globalCnf.GuildDissolutionCountDownCd)).Unix() isUpdate = true } else { if req.Dismiss == 1 { //取消解散 if utils.IsInCDHour(int64(sociaty.DismissCD)) { code = pb.ErrorCode_SociatyCDLimit return } else { // 设置冷区时间 update["dismissCD"] = utils.AddHour(int(globalCnf.GuildDissolutionCd)).Unix() } //取消倒计时 update["dismissTime"] = 0 isUpdate = true } } if isUpdate { if err := this.module.modelSociaty.updateSociaty(sociaty.Id, update); err != nil { code = pb.ErrorCode_DBError return } } if err := session.SendMsg(string(this.module.GetType()), SociatySubTypeDismiss, rsp); err != nil { code = pb.ErrorCode_SystemError } return }