17 .0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 数据读写频度高 //购买道具 相关的模块:6个 func (dm *BlackMallMgr) uint32) cl.RET { if dm == nil {BuyGoods(goodID 相关的需要存储的属性:8个 log4go.Warn("[BlackMallMgr] BuyGood dm nil") return cl.RET(entity.RET_ENTITY_NOT_EXIST) } //安全检查 if dm.ptrUser == nil { log4go.Warn("[BlackMallMgr] BuyGood ptrUser nil") return cl.RET(entity.RET_ENTITY_NOT_EXIST) } //安全检查 if dm.outData == nil { log4go.Warn("[BlackMallMgr] BuyGood outData nil, UID:%d", dm.ptrUser.UID()) return cl.RET(entity.RET_ENTITY_NOT_EXIST) } //功能是否开启 if !dm.ptrUser.UserModuleM.RoleMgr().UserFunction.IsFuncOpen(uint32(entity.FunctionId_FunctionId_BlackMall)) { log4go.Warn("[BlackMallMgr] BuyGood func not open, UID:%d goodID:%d", dm.ptrUser.UID(), goodID) return cl.RET(entity.RET_FUNCTION_NOT_OPEN) } //物品的配置信息是否存在 cfg := configparse.ParseShopConfigM.BlackGoodInfo(goodID) if cfg == nil { log4go.Warn("[BlackMallMgr] BuyGood config nil, UID:%d goodID:%d", dm.ptrUser.UID(), goodID)