using Api.Framework; using Api.Framework.Cps; using Api.Framework.Enums; using Api.Framework.Model; using Api.Framework.Tools; using CsharpHttpHelper; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Weixin.JDCirclePromotion.Entitys; using static Weixin.JDCirclePromotion.Enums; namespace Weixin.JDCirclePromotion { public class AnalyzeGoods { /// /// 采集数据 /// public void GatherFactory() { var session = ApiClient.GetSession(); try { var api = new JingdongApi(CpsClient.Members.FirstOrDefault(f => f.cpstype == CpsType.京东联盟)); var dic = api.SendJingdong("jd.union.open.goods.jingfen.query", new { goodsReq = new { eliteId = (int)Class1.Config.Category, pageIndex = 1, pageSize = 50, sortName = ((_OrderFieldType)((int)Class1.Config.OrderField)).ToString(), sort = ((int)Class1.Config.Sort == 1 ? "asc" : "desc") } }); if (dic != null && dic.ContainsKey("code") && dic["code"].ToString() == "200") { if (dic.ContainsKey("data")) { var data = dic["data"] as ArrayList; List goodsinfos = new List(); foreach (Dictionary item in data) { var goodsinfo = new fl_plugin_jdcirclepromotion_goodsinfos(); if (item.ContainsKey("commissionInfo")) { var commissionInfo = item["commissionInfo"] as Dictionary; if (commissionInfo.ContainsKey("commission")) goodsinfo.commission = double.Parse(commissionInfo["commission"].ToString());//佣金 if (commissionInfo.ContainsKey("commissionShare")) goodsinfo.commissionShare = double.Parse(commissionInfo["commissionShare"].ToString());//佣金比例 } if (item.ContainsKey("couponInfo")) { var couponInfo = item["couponInfo"] as Dictionary; if (couponInfo != null) { foreach (ArrayList arrays in couponInfo.Values) { foreach (Dictionary coupon in arrays) { if (coupon.ContainsKey("bindType")) { var bindType = int.Parse(coupon["bindType"].ToString());//券种类 (优惠券种类:0 - 全品类,1 - 限品类(自营商品),2 - 限店铺,3 - 店铺限商品券) } if (coupon.ContainsKey("discount")) goodsinfo.discount = double.Parse(coupon["discount"].ToString());//券面额 if (coupon.ContainsKey("link")) goodsinfo.link = coupon["link"].ToString();//券链接 if (coupon.ContainsKey("platformType")) goodsinfo.platformType = int.Parse(coupon["platformType"].ToString());//券使用平台 (平台类型:0 - 全平台券,1 - 限平台券) if (coupon.ContainsKey("quota")) goodsinfo.quota = double.Parse(coupon["quota"].ToString());//券消费限额 if (coupon.ContainsKey("getStartTime")) goodsinfo.getStartTime = long.Parse(coupon["getStartTime"].ToString());//领取开始时间(时间戳,毫秒) if (coupon.ContainsKey("getEndTime")) goodsinfo.getEndTime = long.Parse(coupon["getEndTime"].ToString());//券领取结束时间(时间戳,毫秒) if (coupon.ContainsKey("useStartTime")) goodsinfo.useStartTime = long.Parse(coupon["useStartTime"].ToString());//券有效使用开始时间(时间戳,毫秒) if (coupon.ContainsKey("useEndTime")) goodsinfo.useEndTime = long.Parse(coupon["useEndTime"].ToString());//券有效使用结束时间(时间戳,毫秒) break; } } } } if (item.ContainsKey("imageInfo")) { var imageInfo = item["imageInfo"] as Dictionary; if (imageInfo != null && imageInfo.Count != 0) { if (imageInfo.ContainsKey("imageList")) { var imgs = imageInfo["imageList"] as ArrayList; if (imgs != null && imgs.Count != 0) { var tmp = imgs[0] as Dictionary; if (tmp != null && tmp.ContainsKey("url")) { goodsinfo.imageurl = tmp["url"].ToString(); } } } //foreach (ArrayList arrays in imageInfo.Values) //{ // foreach (Dictionary image in arrays) // { // if (image.ContainsKey("url")) // { // goodsinfo.imageurl = image["url"].ToString();//图片url // break; // } // } //} } } if (item.ContainsKey("inOrderCount30Days")) goodsinfo.inOrderCount30Days = int.Parse(item["inOrderCount30Days"].ToString());//30天引单数量(月销量) if (item.ContainsKey("materialUrl")) goodsinfo.materialUrl = item["materialUrl"].ToString();//商品落地页 if (item.ContainsKey("owner")) goodsinfo.owner = item["owner"].ToString();//g=自营,p=pop if (item.ContainsKey("pinGouInfo"))//拼购信息 { var pinGouInfo = item["pinGouInfo"] as Dictionary; if (pinGouInfo != null && pinGouInfo.Count != 0) { //这里不清楚什么情况,等遇到在分析 if (pinGouInfo.ContainsKey("pingouPrice")) goodsinfo.pingouPrice = double.Parse(pinGouInfo["pingouPrice"].ToString());//拼团价格 if (pinGouInfo.ContainsKey("pingouTmCount")) goodsinfo.pingouTmCount = long.Parse(pinGouInfo["pingouTmCount"].ToString());//拼购成团所需人数 if (pinGouInfo.ContainsKey("pingouUrl")) goodsinfo.pingouUrl = pinGouInfo["pingouUrl"].ToString(); //拼购落地页url } } if (item.ContainsKey("priceInfo")) { var priceInfo = item["priceInfo"] as Dictionary; if (priceInfo.ContainsKey("price")) { goodsinfo.price = double.Parse(priceInfo["price"].ToString());//无线价格 } } if (item.ContainsKey("skuId")) goodsinfo.skuId = long.Parse(item["skuId"].ToString());//商品ID if (item.ContainsKey("skuName")) goodsinfo.skuName = item["skuName"].ToString();//商品名称 goodsinfos.Add(goodsinfo); } try { session.BeginTransaction(); session.Insertable(goodsinfos).ExecuteCommand(); session.Commit(); } catch (Exception) { session.Rollback(); } } } } catch (Exception ex) { EventClient.OnEvent(this, $"京东采集:{ex.Message}{ex.StackTrace}"); } } /// /// 通过商品的id查询返回获取到自己返利商品信息 /// /// /// public string FindGoodsInfoToGoodsId(fl_plugin_jdcirclepromotion_goodsinfos goodsinfo, fl_cps_member member = null, string pid = "") { try { member = (member == null ? CpsClient.Members.FirstOrDefault(f => f.cpstype == CpsType.京东联盟) : member); if (member != null) { var api = CpsClient.CreateJingdongRequest(member); var obj = api.SendJingdong("jd.union.open.goods.query", new { goodsReqDTO = new { skuIds = new string[] { goodsinfo.skuId.ToString() } } }); //解析商品,获取商品的信息 var goodData = obj.ConvertToObj(); if (goodData.data != null) { foreach (Dictionary _goodinfo in goodData.data) { var buyshorturl = string.Empty; //转连后的地址 Dictionary conversionlinkresult = null; //查询到的转换链接对象 var positionId = pid.Substring(pid.LastIndexOf("_") + 1); if (string.IsNullOrWhiteSpace(goodsinfo.link)) { conversionlinkresult = api.SendJingdong("jd.union.open.promotion.byunionid.get", new { promotionCodeReq = new { materialId = $@"https://item.m.jd.com/product/{goodsinfo.skuId}.html", positionId = positionId, unionId = member.usernick } });//宝贝id 和 用户的目标推客的联盟id } else { try { conversionlinkresult = api.SendJingdong("jd.union.open.promotion.byunionid.get", new { promotionCodeReq = new { materialId = $@"https://item.m.jd.com/product/{goodsinfo.skuId}.html", positionId = positionId, unionId = member.usernick, couponUrl = goodsinfo.link } }); } catch (Exception) { conversionlinkresult = api.SendJingdong("jd.union.open.promotion.byunionid.get", new { promotionCodeReq = new { materialId = $@"https://item.m.jd.com/product/{goodsinfo.skuId}.html", positionId = positionId, unionId = member.usernick } });//宝贝id 和 用户的目标推客的联盟id goodsinfo.discount = 0; goodsinfo.link = string.Empty; } } if (conversionlinkresult != null) { if (conversionlinkresult["code"].ToString() != "200") throw new Exception($"京东查询接口调用失败:{conversionlinkresult["message"].ToString()}");//抛出错误信息 if (conversionlinkresult.ContainsKey("data")) { var data = conversionlinkresult["data"] as Dictionary; if (data.ContainsKey("shortURL")) return buyshorturl = data["shortURL"].ToString();//购买短连接 } if (string.IsNullOrWhiteSpace(buyshorturl)) throw new Exception("京东转链失败,请稍后重试"); } } } } } catch (Exception ex) { } return string.Empty; } } }