package moonfantasy import ( "go_dreamfactory/comm" "go_dreamfactory/lego/sys/redis" "go_dreamfactory/pb" ) //参数校验 func (this *apiComp) AskCheck(session comm.IUserSession, req *pb.MoonfantasyAskReq) (errdata *pb.ErrorData) { return } ///询问怪物是否可以挑战 func (this *apiComp) Ask(session comm.IUserSession, req *pb.MoonfantasyAskReq) (errdata *pb.ErrorData) { var ( mdata *pb.DBMoonFantasy lock *redis.RedisMutex // umfantasy *pb.DBUserMFantasy user *pb.DBUser isjson bool err error ) if errdata = this.AskCheck(session, req); errdata != nil { return } //月之秘境需要加分布式锁 防止多人同时操作 if lock, err = this.module.modelDream.newDreamLock(req.Mid); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), } return } defer lock.Unlock() if err = lock.Lock(); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), } this.module.Errorln(err) return } if mdata, err = this.module.modelDream.querymfantasy(req.Mid); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), } return } if mdata == nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_MoonfantasyHasExpired, Title: pb.ErrorCode_MoonfantasyHasExpired.ToString(), } return } if this.module.modelDream.checkMFantasyExpiration(mdata) { //已过期 errdata = &pb.ErrorData{ Code: pb.ErrorCode_MoonfantasyHasExpired, Title: pb.ErrorCode_MoonfantasyHasExpired.ToString(), } return } for _, v := range mdata.Join { if v.Uid == session.GetUserId() { isjson = true break } } if !isjson { if len(mdata.Join) >= int(mdata.Numup) { errdata = &pb.ErrorData{ Code: pb.ErrorCode_MoonfantasyJoinUp, Title: pb.ErrorCode_MoonfantasyJoinUp.ToString(), } return } // if umfantasy, err = this.module.modelUserMF.queryUsermfantasy(session.GetUserId()); err != nil { // code = pb.ErrorCode_CacheReadError // return // } // umfantasy.Mfantasys = append(umfantasy.Mfantasys, mdata.Id) // this.module.modelUserMF.Change(session.GetUserId(), map[string]interface{}{ // "mfantasys": umfantasy.Mfantasys, // }) if user, err = this.module.ModuleUser.GetUser(session.GetUserId()); err != nil { this.module.Errorf("no found uer:%d", session.GetUserId()) errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } mdata.Join = append(mdata.Join, &pb.BaseUserInfo{ Uid: user.Uid, Sid: user.Sid, Name: user.Name, Gender: user.Gender, Skin: user.CurSkin, Aframe: user.Curaframe, Title: user.Curtitle, Lv: user.Lv, }) this.module.modelDream.ChangeList("", mdata.Id, map[string]interface{}{ "join": mdata.Join, }) } session.SendMsg(string(this.module.GetType()), "ask", &pb.MoonfantasyAskResp{Info: mdata}) return }