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;
}
}
}