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) (errdata *pb.ErrorData) { if req.Dismiss > 1 { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } 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) (errdata *pb.ErrorData) { if errdata = this.DismissCheck(session, req); errdata != nil { return } uid := session.GetUserId() sociaty := this.module.modelSociaty.getUserSociaty(uid) if sociaty == nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_SociatyNoFound, Title: pb.ErrorCode_SociatyNoFound.ToString(), } 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) { errdata = &pb.ErrorData{ Code: pb.ErrorCode_SociatyNoRight, Title: pb.ErrorCode_SociatyNoRight.ToString(), } return } //公会解散 update := map[string]interface{}{} globalCnf := this.module.globalConf var isUpdate bool if sociaty.DismissTime == 0 { if sociaty.DismissCD != 0 { if utils.IsInCDHour(int64(sociaty.DismissCD)) { errdata = &pb.ErrorData{ Code: pb.ErrorCode_SociatyCDLimit, Title: pb.ErrorCode_SociatyCDLimit.ToString(), } return } else { update["dismissCD"] = 0 } } update["dismissTime"] = utils.AddHour(int(globalCnf.GuildDissolutionCountDownCd)).Unix() isUpdate = true } else { if req.Dismiss == 1 { //取消解散 if sociaty.DismissCD == 0 { // 设置冷区时间 update["dismissCD"] = utils.AddHour(int(globalCnf.GuildDissolutionCd)).Unix() } else { if utils.IsInCDHour(int64(sociaty.DismissCD)) { errdata = &pb.ErrorData{ Code: pb.ErrorCode_SociatyCDLimit, Title: pb.ErrorCode_SociatyCDLimit.ToString(), } return } } //取消倒计时 update["dismissTime"] = 0 isUpdate = true } } if isUpdate { if err := this.module.modelSociaty.updateSociaty(sociaty.Id, update); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } } session.SendMsg(string(this.module.GetType()), SociatySubTypeDismiss, rsp) return }