using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using Common.Utils; using Newtonsoft.Json; using Server.MyClass.Class; using Server.Services.DataMigration.Services; using Server.Services.DataMigration.Services.OldMDK; using Server.Utils; namespace Server.Services.DataMigration { /// /// 数据迁移管理服务 /// public class DataMigrationManageSerivce { private DataMigrationManageSerivce() { } private static DataMigrationManageSerivce _dataMigrationManageSerivce; private static object lockobj = new object(); /// /// 实例 /// public static DataMigrationManageSerivce Instance { get { if (_dataMigrationManageSerivce == null) { lock (lockobj) { if (_dataMigrationManageSerivce == null) { _dataMigrationManageSerivce = new DataMigrationManageSerivce(); } } } return _dataMigrationManageSerivce; } } /// /// 检查导入数据包,并且解压 /// /// /// public string Check(string path) { string dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataMigration"); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } //开始解压 if (!ZipHelper.UnZipFile(path, dir, out var err)) { return err; } if (!File.Exists(Path.Combine(dir, "PackInfo.json"))) { return "打包信息不存在。"; } var json = File.ReadAllText(Path.Combine(dir, "PackInfo.json")); if (string.IsNullOrWhiteSpace(json)) { return "打包信息不存在2"; } var packInfo = JsonConvert.DeserializeObject(json); if (packInfo == null) { return "打包信息不存在3"; } return null; } /// /// 开始启动 /// /// public string Start(string path) { string dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataMigration"); if (!Directory.Exists(dir)) { return "请先调用检查数据包"; } if (!File.Exists(Path.Combine(dir, "PackInfo.json"))) { return "打包信息不存在"; } var json = File.ReadAllText(Path.Combine(dir, "PackInfo.json")); if (string.IsNullOrWhiteSpace(json)) { return "打包信息不存在"; } var packInfo = JsonConvert.DeserializeObject(json); if (packInfo == null) { return "打包信息不存在"; } var th = new Thread(() => { //迁移开始 DataMigrationProgressService.Instance.Start(); var state = DataMigrationProgressService.Instance.GetState(); try { var ser = new GeneralHandleMigrationService(); ser.RootDir = dir; ser.Name = packInfo.TypeName; ser.PackInfo = packInfo; ser.Initialize(); ser.Start(state.AddLog); } catch (Exception e) { state.AddLog("出现错误:" + e.ToString()); } finally { DataMigrationProgressService.Instance.Stop(); } }); th.IsBackground = true; th.Start(); return null; } public void Test() { string dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DataMigration"); if (!Directory.Exists(dir)) { Start(@"C:\Code\yz_dataconvert\yz_dataconvert\bin\Debug\transition.zip"); } if (!File.Exists(Path.Combine(dir, "PackInfo.json"))) { return; } var json = File.ReadAllText(Path.Combine(dir, "PackInfo.json")); if (string.IsNullOrWhiteSpace(json)) { return; } var packInfo = JsonConvert.DeserializeObject(json); if (packInfo == null) { return; } var ser = new GeneralHandleMigrationService(); ser.RootDir = dir; ser.Name = packInfo.TypeName; ser.PackInfo = packInfo; ser.Initialize(); ser.Start(Console.WriteLine); } } }