public async Task UpdateLocalFilesByMaterial(CategoryTextImage Category) { await Task.Run(async() => { UpdateRecord uDao = new UpdateRecord(); Category.ProgressBarIsShow = true; Category.ProgressBarVal = 0; var RequestResult = http.Get(url + string.Format(APIConst.GetMaterialByCategoryID, Category.CategoryID)).DynamicBody; int MaxCount = RequestResult.total; var RequestResult_2 = http.Get(url + string.Format(APIConst.GetMaterialByCategoryID_2, Category.CategoryID, MaxCount)).DynamicBody; List <string> MaterialIdS = new List <string>(); foreach (var item in RequestResult_2.data) { MaterialIdS.Add(item.id); } Category.ProgressBarVal = 5; foreach (var item in MaterialIdS) { List <fileItemObj> fileDics = new List <fileItemObj>(); var v1 = http.Get(url + string.Format(APIConst.GetMaterialObj, item)).DynamicBody; fileItemObj f = new fileItemObj(); f.localUrl = v1.packageName; f.serverUrl = v1.url; f.houzui = "." + v1.url.Split('.')[1]; Category.State = $"准备下载{f.localUrl}的资源包"; fileDics.Add(f); double i = 100d / MaterialIdS.Count; string baseUrl = Environment.CurrentDirectory; //比较是否需要下载(更新) foreach (fileItemObj obj in fileDics) { string serverUrl, localUrl; string newLocal = obj.localUrl.Replace("Game", "Content"); string filePath = (baseUrl + "/AZMJ" + newLocal).Replace("/", "\\"); double oneI = i / fileDics.Count; serverUrl = url + obj.serverUrl; localUrl = filePath; string FileFullName = filePath + obj.houzui; if (File.Exists(FileFullName)) { string md5 = MD5.CalcFile(FileFullName); try { var vvv1 = http.Get(url + string.Format(APIConst.GetMd5IsExist, md5)).DynamicBody; Category.State = $"下载完成{newLocal}文件"; //跳过不需要更新 goto end; } catch (Exception) { //执行下载 Category.State = $"正在下载{newLocal}文件"; await downFile(serverUrl, FileFullName); Category.State = $"下载完成{newLocal}文件"; } } else { Category.State = $"正在下载{newLocal}文件"; await downFile(serverUrl, FileFullName); Category.State = $"下载完成{newLocal}文件"; } end: Category.ProgressBarVal += oneI; } } Category.ProgressBarVal = 100; Category.ProgressBarIsShow = false; Category.ShowOpacity = 1; Category.IsCompleteDown = true; Category.State = "下载完成"; uDao.insert(new UpdateRecoreModel() { CategoryId = Category.CategoryID, Type = eCategoryType.材质, Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }); }); }
public async Task UpdateLocalFiles(CategoryTextImage Category) { await Task.Run(async() => { UpdateRecord uDao = new UpdateRecord(); Category.ProgressBarIsShow = true; Category.ProgressBarVal = 0; //1.GET /products?categoryId=00UGEYYE86PP30V&pageSize=33&page=1&search= HTTP/1.1 根据分页加载所有产品 var RequestResult = http.Get(url + string.Format(APIConst.GetProductByCategoryID, Category.CategoryID)).DynamicBody; int MaxCount = RequestResult.total; var RequestResult_2 = http.Get(url + string.Format(APIConst.GetProductByCategoryID_2, Category.CategoryID, MaxCount)).DynamicBody; //1.2 收集产品ID List <string> productIdS = new List <string>(); foreach (var item in RequestResult_2.data) { productIdS.Add(item.id); } Category.ProgressBarVal = 5; //2.GET /products/Y6UN35PAVZMYPP6 HTTP/1.1 foreach (var item in productIdS) { List <fileItemObj> fileDics = new List <fileItemObj>(); var v1 = http.Get(url + string.Format(APIConst.GetProductObj, item)).DynamicBody; string url_ = v1.specifications[0].staticMeshes[0].url + "," + v1.specifications[0].staticMeshes[0].packageName; string dependencies = v1.specifications[0].staticMeshes[0].dependencies; List <string> arr = dependencies.Split(';').ToList(); arr.Add(url_); foreach (string item_2 in arr) { fileItemObj f = new fileItemObj(); if (string.IsNullOrEmpty(item_2)) { continue; } List <string> a = item_2.Split(',').ToList(); f.localUrl = a[1]; f.serverUrl = a[0]; f.houzui = "." + a[0].Split('.')[1]; f.name = v1.specifications[0].staticMeshes[0].packageName; fileDics.Add(f); } double i = 100 / productIdS.Count; string baseUrl = Environment.CurrentDirectory; //比较是否需要下载(更新) foreach (fileItemObj obj in fileDics) { string serverUrl, localUrl; string newLocal = obj.localUrl.Replace("Game", "Content"); string filePath = (baseUrl + "/AZMJ" + newLocal).Replace("/", "\\"); double oneI = i / fileDics.Count; serverUrl = url + obj.serverUrl; localUrl = filePath; string FileFullName = filePath + obj.houzui; if (File.Exists(FileFullName)) { string md5 = MD5.CalcFile(FileFullName); try { var vvv1 = http.Get(url + string.Format(APIConst.GetMd5IsExist, md5)).DynamicBody; string id = vvv1.id; Category.State = $"下载完成{newLocal}文件"; //跳过不需要更新 continue; } catch (Exception) { Category.State = $"正在下载{newLocal}文件"; //执行下载 await downFile(serverUrl, FileFullName); Category.State = $"下载完成{newLocal}文件"; } } else { Category.State = $"正在下载{newLocal}文件"; await downFile(serverUrl, FileFullName); Category.State = $"下载完成{newLocal}文件"; } Category.ProgressBarVal += Convert.ToDouble(decimal.Round(decimal.Parse(oneI.ToString()), 2)); } } Category.State = "下载完成"; Category.ProgressBarVal = 100; Category.ShowOpacity = 1; Category.ProgressBarIsShow = false; Category.IsCompleteDown = true; uDao.insert(new UpdateRecoreModel() { CategoryId = Category.CategoryID, Type = eCategoryType.产品, Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }); }); }