123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Sers.Core.Module.Counter;
- using Sers.Gover.Base;
- using Vit.Core.Module.Log;
- using Vit.Core.Util.ConfigurationManager;
- using Vit.Extensions;
- namespace Sers.Gover.Persistence
- {
- public class Persistence_Counter
- {
- static readonly string[] filePath = new[] { "Data", "Sers", "Gover", "Counter.json" };
- /*
- Counter.json
- {
- "ApiStations":{
- "_sys_":{ counter}
- },
- "ApiServices":{
- "/_sys/api1":{counter},
- "/_sys/api2":{counter}
- }
- }
-
-
- */
- /// <summary>
- /// 持久化ApiStation所有Counter(demo: /Data/Sers/Gover/Counter.json)
- /// </summary>
- /// <param name="apiStationMng"></param>
- public static void SaveCounterToJsonFile(ApiStationMng apiStationMng)
- {
- try
- {
- #region (x.1)构建文件内容
- var apiStations = apiStationMng.ApiStation_GetAll();
- var counter_ApiStations = apiStations.ToDictionary(m => m.stationName, m => m.counter);
- var counter_ApiServices = apiStations.SelectMany(m => m.apiServices.Values).ToDictionary(m => m.apiDesc?.ServiceKeyGet(), m => m.counter);
- var fileContent = new { ApiStations = counter_ApiStations, ApiServices = counter_ApiServices };
- #endregion
- //(x.2) 保存到文件
- JsonFile.SetToFile(fileContent, filePath);
- }
- catch (System.Exception ex)
- {
- Logger.Error(ex);
- }
- }
- public static void LoadCounterFromJsonFile(ApiStationMng apiStationMng)
- {
- try
- {
- //(x.1)载入文件
- var counterData = JsonFile.GetFromFile<Dictionary<string, Dictionary<string, Counter>>>(filePath);
- //(x.2)加载数据
- if (counterData.TryGetValue("ApiStations", out var counter_ApiStations))
- {
- foreach (var item in counter_ApiStations)
- {
- apiStationMng.ApiStation_GetOrAddByName(item.Key).counter.CopyDataFrom(item.Value);
- }
- }
- if (counterData.TryGetValue("ApiServices", out var counter_ApiServices))
- {
- foreach (var item in counter_ApiServices)
- {
- apiStationMng.ApiStation_GetOrAddByRoute(item.Key)?.ApiService_Get(item.Key)?.counter.CopyDataFrom(item.Value);
- }
- }
- }
- catch (Exception ex)
- {
- Logger.Error(ex);
- }
- }
- }
- }
|