示例#1
0
        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")
                });
            });
        }
示例#2
0
        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")
                });
            });
        }