示例#1
0
        /// <summary>
        /// 从拼多多同步主题数据到数据库中
        /// </summary>
        /// <returns></returns>
        public bool Sync(out string errMsg)
        {
            errMsg = "";
            DdkAppsModel appInfo = DdkAppProvider.Instance.GetModelByDefault();

            if (appInfo == null)
            {
                errMsg = "未能找到多多客应用配置信息";
                return(false);
            }

            try
            {
                int pageSize                    = 50;
                int page                        = 1;
                int curPageItemNums             = pageSize;
                List <DdkThemeModel> listResult = new List <DdkThemeModel>();
                while (curPageItemNums >= pageSize)
                {
                    ThemeListJsonResult        themeListJsonResult = DdkApi.GetThemeList(appInfo.ClientId, appInfo.ClientSecret, page, pageSize);
                    List <ThemeListItemEntity> themeList           = themeListJsonResult.theme_list_get_response.theme_list;
                    curPageItemNums = themeList.Count;
                    foreach (ThemeListItemEntity entity in themeList)
                    {
                        listResult.Add(new DdkThemeModel()
                        {
                            GoodsNum   = entity.goods_num,
                            ImageUrl   = entity.image_url,
                            Name       = entity.name,
                            ThemeId    = (int)entity.id,
                            UpdateTime = DateTime.Now
                        });
                    }
                    page++;
                }
                dal.TruncateTable();
                foreach (DdkThemeModel model in listResult)
                {
                    this.Add(model);
                }
                return(true);
            }
            catch (Exception ex)
            {
                LogHelper.Write("DdkThemeBLL.Sync发生异常:" + ex.Message);
                return(false);
            }
        }
示例#2
0
        public void GetListByDdkApi(string clientId, string clientSecret, int parentId, List <GoodsCatsModel> goodsCatList)
        {
            GoodsTagCatJsonResult catJsonResult = DdkApi.GetGoodsTagCatList(clientId, clientSecret, parentId);

            foreach (GoodsTagCateEntity cat in catJsonResult.goods_opt_get_response.goods_opt_list)
            {
                goodsCatList.Add(new GoodsCatsModel()
                {
                    Icon     = "",
                    Id       = cat.opt_id,
                    LevelNo  = cat.level,
                    Name     = cat.opt_name,
                    ParentId = cat.parent_opt_id,
                    SortNum  = 0,
                    PlatType = (int)HQEnums.PlatformTypeOptions.拼多多
                });
            }
        }
示例#3
0
 public HotGoodsModel GetGoodsDetail(long goodsId, out string errMsg)
 {
     errMsg = "";
     try
     {
         DdkAppsModel                 appInfo = DdkAppProvider.Instance.GetModelByDefault();
         GoodsDetailJsonResult        goodsDetailJsonResult = DdkApi.GetGoodsDetail(appInfo.ClientId, appInfo.ClientSecret, goodsId);
         List <GoodsDetailItemEntity> goodsList             = goodsDetailJsonResult.goods_detail_response.goods_details;
         if (goodsList.Count > 0)
         {
             return(this.ConvertGoods(goodsList[0]));
         }
         return(null);
     }
     catch (Exception ex)
     {
         errMsg = ex.Message;
         return(null);
     }
 }
示例#4
0
        public async void TestMethod1Async()
        {
            PddCommonApi.ClientId     = "d8172a66ddf14220beac58e8eddca0d9";
            PddCommonApi.ClientSecret = "d5993ce16cc0d1bd35403176f35544962e786645";
            PddCommonApi.RedirectUri  = "RedirectUri";
            PddCommonApi.AccessToken  = "";
            DdkApi ddkApi = new DdkApi();
            var    model  = new DetailDdkGoodsRequestModel()
            {
                Type        = "pdd.ddk.goods.detail",
                GoodsIdList = "[1268788439]"
            };
            var result = await ddkApi.DetailDdkGoodsAsync(model);

            var a = result;

            Assert.IsNotNull(a);

            //var result = ddkApi.SearchDdkGoodsAsync()
        }
示例#5
0
        public static async Task <string> GetPDDCouponAsync(RequestMessageText responseMessageText)
        {
            PddCommonApi.ClientId     = "d8172a66ddf14220beac58e8eddca0d9";
            PddCommonApi.ClientSecret = "d5993ce16cc0d1bd35403176f35544962e786645";
            PddCommonApi.RedirectUri  = "RedirectUri";
            PddCommonApi.AccessToken  = "";

            string msg     = responseMessageText.Content;
            Match  m_goods = Regex.Match(msg, @"(?<=goods_id=)([0-9]*)");

            string goods_id = m_goods.Value;

            if (string.IsNullOrEmpty(goods_id))
            {
                //LogHelper.WriteLog(typeof(WechatController), "获取拼多多goods id失败" + msg);
                return("");
            }

            DdkApi api = new DdkApi();

            var model = new DetailDdkGoodsRequestModel()
            {
                Type        = "pdd.ddk.goods.detail",
                GoodsIdList = $"[{goods_id}]"
            };
            DetailDdkGoodsResponseModel result = null;

            try
            {
                result = await api.DetailDdkGoodsAsync(model);
            }
            catch (Exception ex)
            {
                //LogHelper.WriteLog(typeof(WechatController), "调用拼多多获取商品详细信息失败" + ex.Message);
                return("");
            }


            var goods = result.GoodsDetailResponse.GoodsDetails.FirstOrDefault();

            if (goods == null) //无优惠券 无佣金
            {
                return("/:rose 亲,这款商品的优惠返利活动结束了~\n请换个商品试试吧。\n========================\n\ue231    <a href='https://mobile.yangkeduo.com/duo_cms_mall.html?pid=2495191_31302208cpsSign=CM2495191_31302208_3a1c1a0431608b9c1eb417183d57c1bdduoduo_type=2'>拼多多优惠券商城</a>\n下单确认收货后就能收到返利佣金啦~");
            }
            else if (goods.HasCoupon) //有优惠券 有佣金
            {
                try
                {
                    var promotionUrlModel = await api.GenerateDdkGoodsPromotionUrlAsync(new GenerateDdkGoodsPromotionUrlRequestModel
                    {
                        Type             = "pdd.ddk.goods.promotion.url.generate",
                        PId              = pdd_pid,
                        GoodsIdList      = $"[{goods_id}]",
                        GenerateShortUrl = true,
                        CustomParameters = responseMessageText.FromUserName
                    });


                    return($"/:rose 亲,商品信息如下~\n========================\n{goods.GoodsName}\n【在售价】{((decimal)goods.MinGroupPrice) / 100}元\n【券后价】{Math.Round(((decimal)(goods.MinGroupPrice - goods.CouponDiscount.Value)) / 100, 2)}元\n\ue231 <a href='{promotionUrlModel.GoodsPromotionUrlGenerateResponse.GoodsPromotionUrlList.FirstOrDefault().Url}'>点击这里下单</a>\n下单确认收货后就能收到返利佣金啦~");

                    //return $"/:rose 亲,商品信息如下~\n========================\n{goods.GoodsName}\n【在售价】{((decimal)goods.MinGroupPrice) / 100}元\n【券后价】{Math.Round(((decimal)(goods.MinGroupPrice - goods.CouponDiscount.Value)) / 100,2)}元\n【约返利】{Math.Round((decimal)((goods.MinNormalPrice - goods.CouponDiscount.Value) * goods.PromotionRate) / 100000,2)}元\n\ue231 <a href='{promotionUrlModel.GoodsPromotionUrlGenerateResponse.GoodsPromotionUrlList.FirstOrDefault().Url}'>点击这里下单</a>\n下单确认收货后就能收到返利佣金啦~";
                }
                catch (Exception ex)
                {
                    //LogHelper.WriteLog(typeof(WechatController), "调用拼多多获取推广链接失败" + ex.Message);
                    return("");
                }
            }
            else //无优惠券 但有佣金
            {
                try
                {
                    var promotionUrlModel = await api.GenerateDdkGoodsPromotionUrlAsync(new GenerateDdkGoodsPromotionUrlRequestModel
                    {
                        Type             = "pdd.ddk.goods.promotion.url.generate",
                        GoodsIdList      = $"[{goods_id}]",
                        PId              = pdd_pid,
                        GenerateShortUrl = true,
                        CustomParameters = responseMessageText.FromUserName
                    });


                    return($"/:rose 亲,商品信息如下~\n========================\n{goods.GoodsName}\n【在售价】{((decimal)goods.MinGroupPrice) / 100}元\n【约返利】{Math.Round((decimal)(goods.MinGroupPrice * goods.PromotionRate) / 100000, 2)}元\n\ue231 <a href='{promotionUrlModel.GoodsPromotionUrlGenerateResponse.GoodsPromotionUrlList.FirstOrDefault().Url}'>点击这里下单</a>\n下单确认收货后就能收到返利佣金啦~\n\n 点击查看  <a href='http://mp.weixin.qq.com/s?__biz=Mzg2NTAxOTEyMA==&mid=100000146&idx=1&sn=62405c8df3db46e74940aefb9ac3737b&chksm=4e61340d7916bd1bf645afbc6d10c1f19561d7fa59847516c01e64c0791e6d544f4f56c4f498#rd'>如何领取返利</a>");
                }
                catch (Exception ex)
                {
                    //LogHelper.WriteLog(typeof(WechatController), "调用拼多多获取推广链接失败" + ex.Message);
                    return("");
                }
            }
        }
示例#6
0
        public HotPageData <List <HotGoodsModel> > GetGoodsList(HotGoodsSearchCondition condition, out string errMsg)
        {
            errMsg = "";
            try
            {
                //排序转换
                GoodsSortTypeOptions goodsSortType = GoodsSortTypeOptions.综合排序;
                switch (condition.SortField)
                {
                case HotGoodsSortFieldOptions.默认:
                    goodsSortType = GoodsSortTypeOptions.综合排序;
                    break;

                case HotGoodsSortFieldOptions.价格:
                    goodsSortType = condition.SortType == HotGoodsSortTypeOptions.ASC ? GoodsSortTypeOptions.价格升序 : GoodsSortTypeOptions.价格降序;
                    break;

                case HotGoodsSortFieldOptions.优惠券金额:
                    goodsSortType = condition.SortType == HotGoodsSortTypeOptions.ASC ? GoodsSortTypeOptions.优惠券金额排序升序 : GoodsSortTypeOptions.优惠券金额排序降序;
                    break;

                case HotGoodsSortFieldOptions.佣金比例:
                    goodsSortType = condition.SortType == HotGoodsSortTypeOptions.ASC ? GoodsSortTypeOptions.佣金比率升序 : GoodsSortTypeOptions.佣金比例降序;
                    break;

                case HotGoodsSortFieldOptions.佣金金额:
                    goodsSortType = condition.SortType == HotGoodsSortTypeOptions.ASC ? GoodsSortTypeOptions.佣金金额升序排序 : GoodsSortTypeOptions.佣金金额降序排序;
                    break;

                case HotGoodsSortFieldOptions.券后价:
                    goodsSortType = condition.SortType == HotGoodsSortTypeOptions.ASC ? GoodsSortTypeOptions.券后价升序排序 : GoodsSortTypeOptions.券后价降序排序;
                    break;

                case HotGoodsSortFieldOptions.加入时间:
                    goodsSortType = condition.SortType == HotGoodsSortTypeOptions.ASC ? GoodsSortTypeOptions.照加入多多进宝时间升序 : GoodsSortTypeOptions.照加入多多进宝时间降序;
                    break;

                case HotGoodsSortFieldOptions.销量:
                    goodsSortType = condition.SortType == HotGoodsSortTypeOptions.ASC ? GoodsSortTypeOptions.销量升序 : GoodsSortTypeOptions.销量降序;
                    break;
                }

                //接口数据拉取
                DdkAppsModel appInfo = DdkAppProvider.Instance.GetModelByDefault();
                GoodsSearchListJsonResult goodsSearchListJsonResult = DdkApi.GetGoodsList(appInfo.ClientId, appInfo.ClientSecret, new GoodsSearchConditionEntity()
                {
                    cat_id        = condition.CatId,
                    goods_id_list = condition.GoodsIdList,
                    keyword       = condition.Keyword,
                    opt_id        = condition.OptId,
                    page          = condition.Page,
                    page_size     = condition.PageSize,
                    range_list    = null,
                    with_coupon   = condition.WithCoupon,
                    sort_type     = goodsSortType
                });

                //数据加工
                GoodsSearchListEntity searchListEntity       = goodsSearchListJsonResult.goods_search_response;
                HotPageData <List <HotGoodsModel> > pageData = HotPageDataHelper <List <HotGoodsModel>, List <GoodsDetailItemEntity> > .Convert(
                    searchListEntity.goods_list,
                    searchListEntity.total_count,
                    condition.PageSize,
                    condition.Page,
                    dt =>
                {
                    List <HotGoodsModel> list = new List <HotGoodsModel>();
                    foreach (GoodsDetailItemEntity item in dt)
                    {
                        list.Add(this.ConvertGoods(item));
                    }
                    return(list);
                });

                return(pageData);
            }
            catch (Exception ex)
            {
                errMsg = ex.Message;
                return(null);
            }
        }