315 lines
17 KiB
C#
315 lines
17 KiB
C#
using Common.Models.Enums;
|
|
using Common.Models.UnqTables;
|
|
using Common.Requests.Lianmengs;
|
|
using Common.Utils.CpsTurns;
|
|
using Common.Utils.CpsTurns.Entitys;
|
|
using Server.Timers;
|
|
using SqlSugar;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Server.Controllers.OnlineTools
|
|
{
|
|
///TODO:只兼容了淘宝联盟,其他平台尚未兼容
|
|
public class ArtificialController : DefaultController
|
|
{
|
|
|
|
/// <summary>
|
|
/// 查询推广位
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[System.Web.Http.HttpPost, ErrorFilter]
|
|
public WebResult GetMedias()
|
|
{
|
|
var Keyword = GetString("Keyword");
|
|
var PageIndex = GetInt("PageIndex", true);
|
|
var PageSize = GetInt("PageSize", true);
|
|
if (PageSize > 100) PageSize = 100;
|
|
var TotalNumber = 0;
|
|
|
|
var LianmengType = GetEnum<LianmengType>("LianmengType", true);
|
|
switch (LianmengType)
|
|
{
|
|
case Common.Models.Enums.LianmengType.淘宝联盟:
|
|
{
|
|
var exp = Expressionable.Create<TbMedia>();
|
|
if (!string.IsNullOrEmpty(Keyword))
|
|
{
|
|
exp.And(f => f.Remark.Contains(Keyword));
|
|
}
|
|
var DataList = Db.Queryable<TbMedia>().Where(exp.ToExpression()).OrderBy(f => f.Id, OrderByType.Desc).ToPageList(PageIndex, PageSize, ref TotalNumber);
|
|
return PutData(new PageResult<TbMedia>(DataList, TotalNumber, PageSize, PageIndex));
|
|
}
|
|
case Common.Models.Enums.LianmengType.京东联盟:
|
|
{
|
|
var exp = Expressionable.Create<JdMedia>();
|
|
if (!string.IsNullOrEmpty(Keyword))
|
|
{
|
|
exp.And(f => f.Remark.Contains(Keyword));
|
|
}
|
|
var DataList = Db.Queryable<JdMedia>().Where(exp.ToExpression()).OrderBy(f => f.Id, OrderByType.Desc).ToPageList(PageIndex, PageSize, ref TotalNumber);
|
|
return PutData(new PageResult<JdMedia>(DataList, TotalNumber, PageSize, PageIndex));
|
|
}
|
|
case Common.Models.Enums.LianmengType.拼多多联盟:
|
|
{
|
|
var exp = Expressionable.Create<PddMedia>();
|
|
if (!string.IsNullOrEmpty(Keyword))
|
|
{
|
|
exp.And(f => f.Remark.Contains(Keyword));
|
|
}
|
|
var DataList = Db.Queryable<PddMedia>().Where(exp.ToExpression()).OrderBy(f => f.Id, OrderByType.Desc).ToPageList(PageIndex, PageSize, ref TotalNumber);
|
|
return PutData(new PageResult<PddMedia>(DataList, TotalNumber, PageSize, PageIndex));
|
|
}
|
|
case Common.Models.Enums.LianmengType.唯品会联盟:
|
|
{
|
|
var exp = Expressionable.Create<WphMedia>();
|
|
if (!string.IsNullOrEmpty(Keyword))
|
|
{
|
|
exp.And(f => f.Remark.Contains(Keyword));
|
|
}
|
|
var DataList = Db.Queryable<WphMedia>().Where(exp.ToExpression()).OrderBy(f => f.Id, OrderByType.Desc).ToPageList(PageIndex, PageSize, ref TotalNumber);
|
|
return PutData(new PageResult<WphMedia>(DataList, TotalNumber, PageSize, PageIndex));
|
|
}
|
|
case Common.Models.Enums.LianmengType.苏宁联盟:
|
|
{
|
|
var exp = Expressionable.Create<Lianmeng>();
|
|
if (!string.IsNullOrEmpty(Keyword))
|
|
{
|
|
exp.And(f => f.Remark.Contains(Keyword));
|
|
}
|
|
var DataList = Db.Queryable<Lianmeng>().Where(exp.ToExpression()).OrderBy(f => f.Id, OrderByType.Desc).ToPageList(PageIndex, PageSize, ref TotalNumber);
|
|
return PutData(new PageResult<Lianmeng>(DataList, TotalNumber, PageSize, PageIndex));
|
|
}
|
|
case Common.Models.Enums.LianmengType.抖音联盟:
|
|
{
|
|
var exp = Expressionable.Create<DyMedia>();
|
|
if (!string.IsNullOrEmpty(Keyword))
|
|
{
|
|
exp.And(f => f.Remark.Contains(Keyword));
|
|
}
|
|
var DataList = Db.Queryable<DyMedia>().Where(exp.ToExpression()).OrderBy(f => f.Id, OrderByType.Desc).ToPageList(PageIndex, PageSize, ref TotalNumber);
|
|
return PutData(new PageResult<DyMedia>(DataList, TotalNumber, PageSize, PageIndex));
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
return PutData("暂不支持,该商品类型的推广位查询!");
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 获得字符串中开始和结束字符串中间得值
|
|
/// </summary>
|
|
/// <param name="str">字符串</param>
|
|
/// <param name="s">开始</param>
|
|
/// <param name="e">结束</param>
|
|
/// <returns></returns>
|
|
public static string GetValue(string str, string s, string e)
|
|
{
|
|
Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);
|
|
return rg.Match(str).Value;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 解析宝贝
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[System.Web.Http.HttpPost, ErrorFilter]
|
|
public WebResult AnalysisItem()
|
|
{
|
|
var LianmengType = GetEnum<LianmengType>("LianmengType", true);
|
|
var Content = GetString("Content", true);
|
|
|
|
int DataId = 0;
|
|
|
|
switch (LianmengType)
|
|
{
|
|
case LianmengType.淘宝联盟:
|
|
case LianmengType.京东联盟:
|
|
case LianmengType.拼多多联盟:
|
|
case LianmengType.唯品会联盟:
|
|
case LianmengType.抖音联盟:
|
|
DataId = GetInt("MediaId", true);
|
|
break;
|
|
case LianmengType.苏宁联盟:
|
|
DataId = GetInt("LianmengId", true);
|
|
break;
|
|
case LianmengType.美团联盟:
|
|
break;
|
|
case LianmengType.无:
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
switch (LianmengType)
|
|
{
|
|
case LianmengType.淘宝联盟:
|
|
{
|
|
#region 老妖 xxx
|
|
//var tbMedia = Db.Queryable<TbMedia>().Single(f => f.Id == MediaId);
|
|
//if (tbMedia == null) return PutData("对不起,推广位信息不存在,请先添加!");
|
|
|
|
//var tbLianmeng = Db.Queryable<Lianmeng>().Single(f => f.Id == tbMedia.LianmengId);
|
|
//if (tbLianmeng == null) return PutData("对不起,找不到联盟数据!");
|
|
|
|
//if (tbLianmeng.ExpirationTime < DateTime.Now) return PutData($"对不起,该联盟账号已过期,请重新登录!{tbLianmeng.Nickname}({tbLianmeng.Username})");
|
|
|
|
//TaobaoRequest req = new TaobaoRequest(tbLianmeng, tbMedia);
|
|
//var ItemId = req.AnalysisItemid(Content);
|
|
//if (string.IsNullOrEmpty(ItemId))
|
|
//{
|
|
// ItemId = req.ConvertItemid(Content);
|
|
//}
|
|
|
|
//if (!string.IsNullOrEmpty(ItemId))
|
|
//{
|
|
// var ItemInfo = req.FindItemInfoByItemId(ItemId);
|
|
// if (ItemInfo != null)
|
|
// {
|
|
// var counpInfo = req.CreateExtUrl(ItemId);
|
|
// if (!string.IsNullOrEmpty(counpInfo.coupon_click_url))
|
|
// {
|
|
// var r = GetValue(counpInfo.coupon_info, "减", "元");
|
|
// //var counpAmount = 1;
|
|
// var tkl = req.CreateTkl(counpInfo.coupon_click_url);
|
|
// var rtn = new { itemId = ItemId, title = ItemInfo.n_tbk_item.FirstOrDefault().title, oriPrice = ItemInfo.n_tbk_item.FirstOrDefault().zk_final_price, counpAmount = r, link = counpInfo.coupon_click_url, tkl = tkl.password_simple, imgSrc = ItemInfo.n_tbk_item.FirstOrDefault().pict_url, orderLink = counpInfo.coupon_click_url, middleLink = "" };
|
|
// return PutData(rtn);
|
|
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// return PutData(ItemInfo);
|
|
// }
|
|
|
|
|
|
//}
|
|
|
|
////TODO 疑似 有文案处理
|
|
////TODO 中间页地址
|
|
//else return PutData("对不起,暂时无法识别您的“淘宝”文案信息!");
|
|
#endregion
|
|
|
|
#region 老道
|
|
var media = Db.Queryable<TbMedia>().Single(f => f.Id == DataId);
|
|
if (media == null) return PutData("对不起,推广位信息不存在,请先添加!");
|
|
|
|
var lianmeng = Db.Queryable<Lianmeng>().Single(f => f.Id == media.LianmengId);
|
|
if (lianmeng == null) return PutData("对不起,找不到联盟数据!");
|
|
|
|
if (lianmeng.ExpirationTime < DateTime.Now) return PutData($"对不起,该联盟账号已过期,请重新登录!{lianmeng.Nickname}({lianmeng.Username})");
|
|
|
|
TaobaoRequest req = new TaobaoRequest(lianmeng, media);
|
|
|
|
var itemInfo = new TbTurn().Invoke(req, new TurnParamInfo() { DB = Db, IsComputeCommission = false, IsCreatePromotionImage = true, ItemData = Content });
|
|
if (itemInfo != null)
|
|
return PutData(itemInfo as TbCpsInfo);
|
|
//TODO 疑似 有文案处理??这个不知道指的啥 - 需要问老妖
|
|
else
|
|
return PutData("对不起,暂时无法识别您的“淘宝”文案信息!");
|
|
#endregion
|
|
}
|
|
case LianmengType.京东联盟:
|
|
{
|
|
var media = Db.Queryable<JdMedia>().Single(f => f.Id == DataId);
|
|
if (media == null) return PutData("对不起,推广位信息不存在,请先添加!");
|
|
|
|
var lianmeng = Db.Queryable<Lianmeng>().Single(f => f.Id == media.LianmengId);
|
|
if (lianmeng == null) return PutData("对不起,找不到联盟数据!");
|
|
|
|
if (lianmeng.ExpirationTime < DateTime.Now) return PutData($"对不起,该联盟账号已过期,请重新登录!{lianmeng.Nickname}({lianmeng.Username})");
|
|
|
|
JingdongRequest req = new JingdongRequest(lianmeng, media);
|
|
|
|
var itemInfo = new JdTurn().Invoke(req, new TurnParamInfo() { DB = Db, IsComputeCommission = false, IsCreatePromotionImage = true, ItemData = Content });
|
|
if (itemInfo != null)
|
|
return PutData(itemInfo as JdCpsInfo);
|
|
else
|
|
return PutData("对不起,暂时无法识别您的“京东”文案信息!");
|
|
}
|
|
case LianmengType.拼多多联盟:
|
|
{
|
|
var media = Db.Queryable<PddMedia>().Single(f => f.Id == DataId);
|
|
if (media == null) return PutData("对不起,推广位信息不存在,请先添加!");
|
|
|
|
var lianmeng = Db.Queryable<Lianmeng>().Single(f => f.Id == media.LianmengId);
|
|
if (lianmeng == null) return PutData("对不起,找不到联盟数据!");
|
|
|
|
if (lianmeng.ExpirationTime < DateTime.Now) return PutData($"对不起,该联盟账号已过期,请重新登录!{lianmeng.Nickname}({lianmeng.Username})");
|
|
|
|
PinduoRequest req = new PinduoRequest(lianmeng, media);
|
|
|
|
var itemInfo = new PddTurn().Invoke(req, new TurnParamInfo() { DB = Db, IsComputeCommission = false, IsCreatePromotionImage = true, ItemData = Content });
|
|
if (itemInfo != null)
|
|
return PutData(itemInfo as PddCpsInfo);
|
|
else
|
|
return PutData("对不起,暂时无法识别您的“拼多多”文案信息!");
|
|
}
|
|
case LianmengType.唯品会联盟:
|
|
{
|
|
var media = Db.Queryable<WphMedia>().Single(f => f.Id == DataId);
|
|
if (media == null) return PutData("对不起,推广位信息不存在,请先添加!");
|
|
|
|
var lianmeng = Db.Queryable<Lianmeng>().Single(f => f.Id == media.LianmengId);
|
|
if (lianmeng == null) return PutData("对不起,找不到联盟数据!");
|
|
|
|
if (lianmeng.ExpirationTime < DateTime.Now) return PutData($"对不起,该联盟账号已过期,请重新登录!{lianmeng.Nickname}({lianmeng.Username})");
|
|
|
|
WeipinhuiRequest req = new WeipinhuiRequest(lianmeng, media);
|
|
|
|
var itemInfo = new WphTurn().Invoke(req, new TurnParamInfo() { DB = Db, IsComputeCommission = false, IsCreatePromotionImage = true, ItemData = Content });
|
|
if (itemInfo != null)
|
|
return PutData(itemInfo as WphCpsInfo);
|
|
else
|
|
return PutData("对不起,暂时无法识别您的“唯品会”文案信息!");
|
|
}
|
|
case LianmengType.苏宁联盟:
|
|
{
|
|
//var media = Db.Queryable<SnMedia>().Single(f => f.Id == MediaId);
|
|
//if (media == null) return PutData("对不起,推广位信息不存在,请先添加!");
|
|
|
|
var lianmeng = Db.Queryable<Lianmeng>().Single(f => f.Id == DataId);
|
|
if (lianmeng == null) return PutData("对不起,找不到联盟数据!");
|
|
|
|
if (lianmeng.ExpirationTime < DateTime.Now) return PutData($"对不起,该联盟账号已过期,请重新登录!{lianmeng.Nickname}({lianmeng.Username})");
|
|
|
|
SuningRequest req = new SuningRequest(lianmeng);
|
|
|
|
var itemInfo = new SnTurn().Invoke(req, new TurnParamInfo() { DB = Db, IsComputeCommission = false, IsCreatePromotionImage = true, ItemData = Content });
|
|
if (itemInfo != null)
|
|
return PutData(itemInfo as SnCpsInfo);
|
|
else
|
|
return PutData("对不起,暂时无法识别您的“苏宁”文案信息!");
|
|
}
|
|
case LianmengType.抖音联盟:
|
|
{
|
|
var media = Db.Queryable<DyMedia>().Single(f => f.Id == DataId);
|
|
if (media == null) return PutData("对不起,推广位信息不存在,请先添加!");
|
|
|
|
var lianmeng = Db.Queryable<Lianmeng>().Single(f => f.Id == media.LianmengId);
|
|
if (lianmeng == null) return PutData("对不起,找不到联盟数据!");
|
|
|
|
if (lianmeng.ExpirationTime < DateTime.Now) return PutData($"对不起,该联盟账号已过期,请重新登录!{lianmeng.Nickname}({lianmeng.Username})");
|
|
|
|
DouyinRequest req = new DouyinRequest(lianmeng, media);
|
|
|
|
var itemInfo = new DyTurn().Invoke(req, new TurnParamInfo() { DB = Db, IsComputeCommission = false, IsCreatePromotionImage = true, ItemData = Content });
|
|
if (itemInfo != null)
|
|
return PutData(itemInfo as DyCpsInfo);
|
|
else
|
|
return PutData("对不起,暂时无法识别您的“抖音”文案信息!");
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return PutData("对不起,暂时不支持该联盟操作!");
|
|
}
|
|
}
|
|
}
|