old_flsystem/类库/Api.Framework/Tools/SNHelper.cs

296 lines
9.1 KiB
C#
Raw Permalink Normal View History

2022-09-20 03:10:29 +00:00
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,})&amp;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>
/// 是否违规,01
/// </summary>
public string violation { get; set; }
/// <summary>
/// 是否返佣01
/// </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
}