public async Task<PlayerInfo> RequestPlayerInfo(ulong pid) { if (!await CheckValid(pid)) { return null; } using (var accesser = await Program.CacheService.GetPlayerInfoAccesser(pid)) { var info = await accesser.LoadPlayerInfoAsync(); if (info != null) { Console.WriteLine("LogicServiceImpl.RequestPlayerInfo load PlayerInfo complete pid={0}", pid); return info; } Console.WriteLine("LogicServiceImpl.RequestPlayerInfo cache miss pid={0}", pid); using (var dbAccesser = await Program.DbService.GetPlayerInfoReader(pid)) { info = await dbAccesser.LoadPlayerInfoAsync(); if (info == null) { Console.WriteLine("LogicServiceImpl.RequestPlayerInfo db not exist create new pid={0}", pid); info = new PlayerInfo() { Pid = pid, Name = "default", Level = 1, Item = new PlayerInfoItem() { ItemList = new List<uint>() { 10001 }, Money = 100 }, Skill = new PlayerInfoSkill() { SkillList = new List<uint>() { 1001 }, }, }; } accesser.UpdatePlayerInfo(info); await accesser.SubmitChanges(); return info; } } }