old_flsystem/应用/Weixin.JDCirclePromotion/AnalyzeGoods.cs

238 lines
14 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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