feat(upserver): 保存M2客户端KV迁移至本人统计写检查点

保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。
保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。

验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。
包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
This commit is contained in:
Liubing\LB
2026-09-30 19:19:05 +08:00
parent 1c0cdf7a99
commit 6813da149a
511 changed files with 151858 additions and 2376 deletions

View File

@@ -1,4 +1,4 @@
using asap.core;
using asap.core;
using cfg;
using game;
using GameCore;
@@ -21,23 +21,25 @@ public class SurveyService
const string SurveyData = "SurveyData";
const string SurveyReadSidData = "SurveyReadSidData";
readonly game.PlayerDataStorage.IPlayerSaveStore saveStore;
IUserService userService;
cfg.Tables tables;
List<string> receivedReward = new List<string>();
List<string> readSid = new List<string>();
string access_token;
public SurveyData tableData;
public SurveyService(IUserService userService, cfg.Tables tables)
public SurveyService(IUserService userService, cfg.Tables tables, game.PlayerDataStorage.IPlayerSaveStore saveStore)
{
this.userService = userService;
this.saveStore = saveStore;
this.tables = tables;
tableData = null;
string surveyData = PlayFabMgr.Instance.GetLocalData(SurveyData);
string surveyData = saveStore.Read(SurveyData).ValueOrThrow();
if (!string.IsNullOrEmpty(surveyData))
{
receivedReward = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(surveyData);
}
string surveyReadSidData = PlayFabMgr.Instance.GetLocalData(SurveyReadSidData);
string surveyReadSidData = saveStore.Read(SurveyReadSidData).ValueOrThrow();
if (!string.IsNullOrEmpty(surveyReadSidData))
{
readSid = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(surveyReadSidData);
@@ -53,7 +55,7 @@ public class SurveyService
PlayerData playerData = GContext.container.Resolve<PlayerData>();
List<SurveyData> surveyDataTable = tables.TbSurveyData.DataList;
ulong userId = Convert.ToUInt64(userService.UserId, 16);
ulong userId = Convert.ToUInt64(userService.UserId, saveStore is game.PlayerDataStorage.KVPlayerSaveStore ? 10 : 16);
tableData = null;
if (surveyDataTable.Count > 0)
{
@@ -109,7 +111,7 @@ public class SurveyService
string url = $"{SurveyUrl}s2/{tableData.ID}/{tableData.Hash}/?&uid={userService.CustomId}";
//标记已读
readSid.Add(tableData.ID.ToString());
PlayFabMgr.Instance.UpdateUserDataValue(SurveyReadSidData, Newtonsoft.Json.JsonConvert.SerializeObject(readSid));
saveStore.Write(SurveyReadSidData, Newtonsoft.Json.JsonConvert.SerializeObject(readSid)).RequireAccepted();
GetSurveyMatchlist();
return url;
}
@@ -133,7 +135,7 @@ public class SurveyService
GContext.container.Resolve<PlayerItemData>().AddItemByDrop(tableData.Reward, null);
GContext.Publish(new ShowData());
receivedReward.Add(sid);
PlayFabMgr.Instance.UpdateUserDataValue(SurveyData, Newtonsoft.Json.JsonConvert.SerializeObject(receivedReward));
saveStore.Write(SurveyData, Newtonsoft.Json.JsonConvert.SerializeObject(receivedReward)).RequireAccepted();
GetSurveyMatchlist();
}
catch (Exception e)