Exemple #1
0
        /// <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} 请重试";
            }
        }
Exemple #2
0
        /// <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);
        }