238 lines
14 KiB
C#
238 lines
14 KiB
C#
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
|
||
{
|
||
/// <summary>
|
||
/// 采集数据
|
||
/// </summary>
|
||
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<fl_plugin_jdcirclepromotion_goodsinfos> goodsinfos = new List<fl_plugin_jdcirclepromotion_goodsinfos>();
|
||
foreach (Dictionary<string, object> item in data)
|
||
{
|
||
var goodsinfo = new fl_plugin_jdcirclepromotion_goodsinfos();
|
||
if (item.ContainsKey("commissionInfo"))
|
||
{
|
||
var commissionInfo = item["commissionInfo"] as Dictionary<string, object>;
|
||
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<string, object>;
|
||
if (couponInfo != null)
|
||
{
|
||
foreach (ArrayList arrays in couponInfo.Values)
|
||
{
|
||
foreach (Dictionary<string, object> 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<string, object>;
|
||
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<string,object>;
|
||
if (tmp != null && tmp.ContainsKey("url"))
|
||
{
|
||
goodsinfo.imageurl = tmp["url"].ToString();
|
||
}
|
||
}
|
||
}
|
||
//foreach (ArrayList arrays in imageInfo.Values)
|
||
//{
|
||
// foreach (Dictionary<string, object> 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<string, object>;
|
||
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<string, object>;
|
||
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<fl_plugin_jdcirclepromotion_goodsinfos>(goodsinfos).ExecuteCommand();
|
||
session.Commit();
|
||
}
|
||
catch (Exception)
|
||
{
|
||
session.Rollback();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
EventClient.OnEvent(this, $"京东采集:{ex.Message}{ex.StackTrace}");
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 通过商品的id查询返回获取到自己返利商品信息
|
||
/// </summary>
|
||
/// <param name="goods_id"></param>
|
||
/// <returns></returns>
|
||
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<goodInfo_temp>();
|
||
if (goodData.data != null)
|
||
{
|
||
foreach (Dictionary<string, object> _goodinfo in goodData.data)
|
||
{
|
||
var buyshorturl = string.Empty; //转连后的地址
|
||
Dictionary<string, object> 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<string, object>;
|
||
if (data.ContainsKey("shortURL"))
|
||
return buyshorturl = data["shortURL"].ToString();//购买短连接
|
||
}
|
||
if (string.IsNullOrWhiteSpace(buyshorturl)) throw new Exception("京东转链失败,请稍后重试");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{ }
|
||
return string.Empty;
|
||
}
|
||
|
||
}
|
||
}
|