/// <summary> /// 获取商品 /// </summary> /// <param name="ids"></param> /// <returns></returns> /// <exception cref="Exception"></exception> private async Task ParseGoods(List <string> ids) { try { var strs = ids.ToArray(); var res = await _mainWindow.Api.GetItemsDetail(_mainWindow.Anonymous, strs); if (!res.Ok) { throw new Exception(res.Message); } var data = res.Data as ResData; if (data == null) { throw new Exception(res.Message); } if (data.StatusCode != 1) { throw new Exception(data.Error.Message); } var items = data.Item.GetValue("getItemDetail").ToObject <JObject>().GetValue("detail_list") .ToObject <List <ItemBean> >(); _context.LogText = $"解析到:{items.Count}个商品数据,正在下载商品图片"; //downloadImages foreach (var item in items) { try { var urls = item.picture.ConvertAll((pic) => pic.url).ToArray(); var savePath = Path.Combine("Goods", item.item_id + ""); await DownLoadPics(savePath, urls); //转化成商品后进行存库 //写入到config文件 var configFile = Path.Combine("Goods", item.item_id + "", "config.json"); SaveConfigFile(configFile, JsonConvert.SerializeObject(item)); var goods = JpParse.ParseBeanToGoods(item); _goodses.Add(goods); _context.GoodsCount++; _context.LogText = $"商品详情:{item.item_id} 解析成功"; } catch (Exception ex) { Debug.WriteLine(ex); _context.LogText = $"商品详情:{item.item_id} 解析失败:{ex.Message}"; } } } catch (Exception e) { Console.WriteLine(e); _context.LogText = $"获取goods明细失败:{e.Message} 请重试"; } }
/// <summary> /// 执行任务 /// </summary> /// <returns></returns> private async Task <bool> DoReleaseTask(ReleaseTask task) { if (_users.Count <= 0) { return(false); } _vm.LogText = $"开始执行任务:{task.Username} / 商品:{task.GoodsNo}"; //查找user var user = _users.First(u => u.Username == task.Username); //发布商品 var goods = _goodsList.First(g => g.GoodsNo == task.GoodsNo); if (user == null || goods == null) { _vm.LogText = $"任务执行失败:{task.Username}找不到对应信息"; } if (user == null) { _vm.LogText = $"任务执行失败:{task.Username}找不到对应信息"; } try { //进行发布 //判断是否是切换账号了,如果是就直接勾选上所有商品 if (user.Username != _lastUsername) { foreach (var goodse in _goodsList) { goodse.IsChecked = true; } _lastUsername = user.Username; } var isLogin = await UserLogin(user); //检测是否已经登录 if (!isLogin) { //任务失败 _vm.LogText = $"任务:{task.Username} / 商品:{task.GoodsNo} 执行失败"; return(false); } goods.ReleaseStatus = "正在发布"; var bean = JpParse.ParseGoodsToSaleBean(goods); bean.ItemId = 0; //重置 //判断是否使用图片缓存 var images = await UploadImages(user, goods); //上传图片格式 x,x,x,x if (images.Equals("")) { throw new Exception("图片未上传成功"); } _vm.LogText = $"上传完成:{images}"; bean.ImgList = images; bean.Mode = 2; var ret = await Api.SetItem(user, bean); if (!ret.Ok) { throw new Exception(ret.Message); } var data = ret.Data as ResData; if (data?.StatusCode != 1) { throw new Exception(data?.Error.Message); } //校验 var check = await Api.CheckSetItem(user); if (check.Ok) { } goods.ReleaseStatus = "发布成功"; _vm.LogText = $"{task.Username} / 商品:{goods.GoodsNo} / 发布成功"; } catch (Exception ex) { Debug.WriteLine(ex); _vm.LogText = $" {task.Username} / 商品:{goods.GoodsNo} / 发布失败 / {ex.Message}"; goods.ReleaseStatus = "发布失败"; } //做一个延迟等待 await Task.Delay(TimeSpan.FromSeconds(_vm.Status.ReleaseInterval)); return(true); }