package stonehenge import ( "go_dreamfactory/comm" "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" ) //参数校验 func (this *apiComp) StoreCheck(session comm.IUserSession, req *pb.StonehengeStoreReq) (errdata *pb.ErrorData) { if req.StoreId == 0 { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.String(), } } return } func (this *apiComp) Store(session comm.IUserSession, req *pb.StonehengeStoreReq) (errdata *pb.ErrorData) { var ( stone *pb.DBStonehenge err error storeConf *cfg.GameStoneStoreData update map[string]interface{} ) update = make(map[string]interface{}) if errdata = this.StoreCheck(session, req); errdata != nil { return } if stone, err = this.module.modelStonehenge.GetStonehengeData(session.GetUserId()); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.String(), Message: err.Error(), } return } if storeConf, err = this.module.configure.GetStoneStoreConf(req.StoreId); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ConfigNoFound, Title: pb.ErrorCode_ConfigNoFound.String(), Message: err.Error(), } return } newEvent := storeConf.EventId this.module.modelStonehenge.AddNewEvent([]int32{newEvent}, stone) if stone.Rooms.Shop == nil { stone.Rooms.Shop = make(map[int32]int32) } // 校验次数限制 if stone.Rooms.Shop[storeConf.EventId] >= storeConf.LimitTime { // 超过购买上限 errdata = &pb.ErrorData{ Code: pb.ErrorCode_StonehengeStoreMax, Title: pb.ErrorCode_StonehengeStoreMax.String(), } return } // 校验 是否有这个事件 // if _, ok := stone.Rooms.Eventid[storeConf.EventId]; ok { // errdata = &pb.ErrorData{ // Code: pb.ErrorCode_StonehengeCantBuy, // Title: pb.ErrorCode_StonehengeCantBuy.String(), // } // return // } stone.Rooms.Shop[storeConf.EventId] += 1 stone.Rooms.Eventid[storeConf.EventId] = false update["rooms"] = stone.Rooms this.module.modelStonehenge.ChangeStonehengeData(session.GetUserId(), update) session.SendMsg(string(this.module.GetType()), "store", &pb.StonehengeStoreResp{ StoreId: req.StoreId, Shop: stone.Rooms.Shop, Room: stone.Rooms, }) return }