yz_server/Server/Controllers/OnlineTools/ArtificialController.cs

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("对不起,暂时不支持该联盟操作!");
}
}
}