296 lines
9.1 KiB
C#
296 lines
9.1 KiB
C#
|
using Api.Framework.Cps;
|
|||
|
using CsharpHttpHelper;
|
|||
|
using CsharpHttpHelper.Enum;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Text.RegularExpressions;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace Api.Framework.Tools
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 苏宁助手
|
|||
|
/// </summary>
|
|||
|
public class SNHelper
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 获取苏宁链接中的商品ID
|
|||
|
/// </summary>
|
|||
|
/// <param name="mess">包含抖音链接的文本</param>
|
|||
|
/// <returns></returns>
|
|||
|
public static SNId GetSNGoodsID(string mess)
|
|||
|
{
|
|||
|
if (string.IsNullOrWhiteSpace(mess) ||
|
|||
|
Regex.IsMatch(mess, @"\[图片=(.+?)\]") ||
|
|||
|
Regex.IsMatch(mess, @"\[视频=(.+?)\]") ||
|
|||
|
Regex.IsMatch(mess, @"\[卡片=(.+?)\]") ||
|
|||
|
Regex.IsMatch(mess, @"\[公告=(.+?)\]") ||
|
|||
|
Regex.IsMatch(mess, @"\[语音=(.+?)\]")
|
|||
|
)
|
|||
|
return null;
|
|||
|
|
|||
|
try
|
|||
|
{
|
|||
|
var reg = Regex.Match(mess, @"(?:(?:midfourth.html\?productId=(?<goodid>\d{10,})&shop=(?<shop>\d+))|(?:suning.com/(?<shop>\d{10})/(?<goodid>\d+))|(?:m.suning.com/product/(?<shop>\d{10})/(?<goodid>\d+))|(?:from=APP&productId=(?<goodid>\d+)&shop=(?<shop>\d+)))|(?:shopId=(?<shop>\d{10})&storeId=(?<goodid>\d+))", RegexOptions.IgnoreCase);
|
|||
|
if (reg.Success)
|
|||
|
{
|
|||
|
return new SNId() { goodid = reg.Groups["goodid"].ToString(), shop = reg.Groups["shop"].ToString() };
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (mess.ToLower().Contains("suning.com"))
|
|||
|
{
|
|||
|
var _url = HttpExtend.RegexMatchUrl(mess);
|
|||
|
if (!string.IsNullOrWhiteSpace(_url))
|
|||
|
{
|
|||
|
var cps = new SuNingApi(new Model.fl_cps_member());
|
|||
|
var snGInfo = cps.QuerySearchCommodity(_url);
|
|||
|
if (snGInfo.sn_responseContent.sn_error != null)
|
|||
|
throw new Exception(snGInfo.sn_responseContent.sn_error.error_msg);//查询没结果
|
|||
|
else if (snGInfo.sn_responseContent.sn_body == null || snGInfo.sn_responseContent.sn_body.querySearchcommodity == null || snGInfo.sn_responseContent.sn_body.querySearchcommodity.Count == 0)
|
|||
|
throw new Exception("查询没结果2");
|
|||
|
else if (snGInfo.sn_responseContent.sn_body != null && snGInfo.sn_responseContent.sn_body.querySearchcommodity != null && snGInfo.sn_responseContent.sn_body.querySearchcommodity.Count != 0)
|
|||
|
{
|
|||
|
return new SNId() { goodid = snGInfo.sn_responseContent.sn_body.querySearchcommodity[0].commodityInfo.commodityCode, shop = snGInfo.sn_responseContent.sn_body.querySearchcommodity[0].commodityInfo.supplierCode };
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
throw new Exception(ex.Message);
|
|||
|
}
|
|||
|
return null;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//private static SNId GetSnid(string mess)
|
|||
|
//{
|
|||
|
|
|||
|
//}
|
|||
|
|
|||
|
#region 内部类
|
|||
|
/// <summary>
|
|||
|
/// 苏宁id,供应商id(自营为十个0)
|
|||
|
/// </summary>
|
|||
|
public class SNId
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 商品id
|
|||
|
/// </summary>
|
|||
|
public string goodid { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 供应商id
|
|||
|
/// </summary>
|
|||
|
public string shop { get; set; }
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
#region 苏宁订单类
|
|||
|
/// <summary>
|
|||
|
/// 响应头
|
|||
|
/// </summary>
|
|||
|
public class Sn_head
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 总数量
|
|||
|
/// </summary>
|
|||
|
public string totalSize { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 总页数
|
|||
|
/// </summary>
|
|||
|
public string pageTotal { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 当前页
|
|||
|
/// </summary>
|
|||
|
public string pageNo { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 返回状态内容
|
|||
|
/// </summary>
|
|||
|
public string returnMessage { get; set; }
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 订单明细
|
|||
|
/// </summary>
|
|||
|
public class OrderDetail
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 支付时间,格式:yyyy-MM-dd HH:mm:ss
|
|||
|
/// </summary>
|
|||
|
public DateTime payTime { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 下单时间,格式:yyyy-MM-dd HH:mm:ss
|
|||
|
/// </summary>
|
|||
|
public DateTime orderSubmitTime { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 订单行项目号
|
|||
|
/// </summary>
|
|||
|
public string orderLineNumber { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 订单行项目状态 - 支付完成
|
|||
|
/// </summary>
|
|||
|
public string orderLineStatusDesc { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 行项目状态更新时间,格式:yyyy-MM-dd HH:mm:ss
|
|||
|
/// </summary>
|
|||
|
public DateTime orderLineStatusChangeTime { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 订单行来源(PC端、无线端)
|
|||
|
/// </summary>
|
|||
|
public string orderLineOrigin { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 商品名称
|
|||
|
/// </summary>
|
|||
|
public string productName { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 商品数量
|
|||
|
/// </summary>
|
|||
|
public string saleNum { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 实付金额
|
|||
|
/// </summary>
|
|||
|
public string payAmount { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 订单行标记
|
|||
|
/// </summary>
|
|||
|
public string orderLineFlag { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 子推广账号ID(对应sub_user)
|
|||
|
/// </summary>
|
|||
|
public string childAccountId { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 商户名称
|
|||
|
/// </summary>
|
|||
|
public string sellName { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 商户编码
|
|||
|
/// </summary>
|
|||
|
public string sellerCode { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 商品编码
|
|||
|
/// </summary>
|
|||
|
public string goodsNum { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 佣金比例
|
|||
|
/// </summary>
|
|||
|
public string commissionRatio { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 预估佣金
|
|||
|
/// </summary>
|
|||
|
public string prePayCommission { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 一级目录
|
|||
|
/// </summary>
|
|||
|
public string productFirstCatalog { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 二级目录
|
|||
|
/// </summary>
|
|||
|
public string productSecondCatalog { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 三级目录
|
|||
|
/// </summary>
|
|||
|
public string productThirdCatalog { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 商品归属 - 自营
|
|||
|
/// </summary>
|
|||
|
public string orderType { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 推广位ID
|
|||
|
/// </summary>
|
|||
|
public string positionId { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 商品组目录编码
|
|||
|
/// </summary>
|
|||
|
public string goodsGroupCatalog { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 推广类型 - 链接推广
|
|||
|
/// </summary>
|
|||
|
public string saleType { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 商品主图
|
|||
|
/// </summary>
|
|||
|
public string pictureUrl { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 1.风控订单
|
|||
|
/// </summary>
|
|||
|
public string promotion { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 是否违规,0:否;1:是
|
|||
|
/// </summary>
|
|||
|
public string violation { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 是否返佣,0:否;1:是
|
|||
|
/// </summary>
|
|||
|
public string returnCommission { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 推广会员编码
|
|||
|
/// </summary>
|
|||
|
public string custNo { get; set; }
|
|||
|
/// <summary>
|
|||
|
///
|
|||
|
/// </summary>
|
|||
|
public string statParam { get; set; }
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 订单类
|
|||
|
/// </summary>
|
|||
|
public class QueryOrder
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 订单号
|
|||
|
/// </summary>
|
|||
|
public string orderCode { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 订单明细集合
|
|||
|
/// </summary>
|
|||
|
public List<OrderDetail> orderDetail { get; set; }
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 响应体
|
|||
|
/// </summary>
|
|||
|
public class Sn_body
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 订单集合
|
|||
|
/// </summary>
|
|||
|
public List<QueryOrder> queryOrder { get; set; }
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 响应结构
|
|||
|
/// </summary>
|
|||
|
public class Sn_responseContent
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 响应头
|
|||
|
/// </summary>
|
|||
|
public Sn_head sn_head { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 响应体
|
|||
|
/// </summary>
|
|||
|
public Sn_body sn_body { get; set; }
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 订单响应结果
|
|||
|
/// </summary>
|
|||
|
public class SNOrderResponseResult
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 响应结构
|
|||
|
/// </summary>
|
|||
|
public Sn_responseContent sn_responseContent { get; set; }
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
}
|