using Common.DbExtends; using Common.DbExtends.Extends; using Common.Models.Enums; using Common.Models.UnqTables; using Common.Requests.Lianmengs; using CsharpHttpHelper; using Newtonsoft.Json.Linq; using Server.MyClass.Views; using Server.MyClass.Views.medias; using Server.Utils; using Server.Winforms.LoginForms; using SqlSugar; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using System.Web; using System.Web.Http; namespace Server.Controllers.AccountManagement { public partial class LianmengController : DefaultController { private const string VipAppId = "9f7a9b3d"; private const string VipAppSecret = "074B0E1FFB94334FDEC993913884EC7F"; static object lockObj = new object(); /// /// 登录联盟 - 未完成 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult Login() { ///TODO:未完成联盟登录 var type = GetEnum("LianmengType"); var callBack = GetUrl() + "lianmeng/"; string url = ""; var token = Guid.NewGuid().ToString("N"); switch (type) { case LianmengType.淘宝联盟: { var time = DateTime.Now.AddSeconds(30); var login = LianMengWebViewLoginHelper.Instance.GetViewLogin(); if (login == null) { return PutData("服务启动失败,请重试。"); } login.Start(LianmengType.淘宝联盟); while (DateTime.Now < time) { if (!string.IsNullOrEmpty(login.QRCodeUrl)) { CacheHelper.GetIntance().SetCache(login.Msgid, login, 60 * 5); return PutData(new { Msgid = login.Msgid, QRCodeUrl = login.QRCodeUrl }); } Thread.Sleep(100); } login.Dispose(); return PutData("获取二维码失败,请稍后重试!"); } case LianmengType.京东联盟: try { var authId = GetLong("authId", true); var authUser = authId.ToString(); var authKey = GetString("authKey", true).Trim(); var remark = GetString("remark"); var et = GetString("et", true); var exTime = DateTime.ParseExact(et, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture); var jdApi = new JingdongRequest(new Lianmeng() { Username = authId.ToString(), Token = authKey, LianmengType = LianmengType.京东联盟 }); var result = jdApi.SendData("jd.union.open.position.query", new { positionReq = new { unionType = 1, pageSize = 1, pageIndex = 1, unionId = authId, key = authKey } }); JObject res = JObject.Parse(result.ToString()); if ((int)res["code"] == 200) { string auIdStr = authId.ToString(); var tar = Db.Queryable().First(p => p.Username == auIdStr && p.LianmengType == LianmengType.京东联盟); if (tar == null) { tar = new Lianmeng() { LianmengType = LianmengType.京东联盟, ExpirationTime = exTime, Nickname = authUser, Username = authUser, Token = authKey, Cookies = "", Remark = remark }; } else { tar.Username = authUser; tar.Nickname = authUser; tar.Token = authKey; tar.Remark = remark; tar.ExpirationTime = exTime; } Db.Save(tar); if (tar.Id != 0) { GetJdAds(authUser, authKey, jdApi, tar); return PutSuccess; } } return PutError; } catch (Exception ex) { return PutData(ex); } case LianmengType.拼多多联盟: callBack += "Pinduoduo"; url = $"https://jinbao.pinduoduo.com/open.html?client_id=4ca7ddf2678b4ba39ecbc60c9d60b4ed&response_type=code&redirect_uri={HttpUtility.UrlEncode(callBack)}"; break; case LianmengType.唯品会联盟: callBack += "vip"; url = $"https://auth.vip.com/oauth2/authorize?client_id={VipAppId}&response_type=code&redirect_uri={HttpUtility.UrlEncode(callBack)}"; break; case LianmengType.苏宁联盟: { LoginSuningClass login = new LoginSuningClass(); var qrurl = login.GetQRCodeUrl(); if (!string.IsNullOrEmpty(qrurl)) { var guid = Guid.NewGuid().ToString("N"); CacheHelper.GetIntance().SetCache(guid, login, 60 * 5); return PutData(new { Msgid = guid, QRCodeUrl = login.QRCodeUrl }); } return PutData("获取二维码失败,请稍后重试!"); } case LianmengType.抖音联盟: { var time = DateTime.Now.AddSeconds(30); var login = LianMengWebViewLoginHelper.Instance.GetViewLogin(); if (login == null) { return PutData("服务启动失败,请重试。"); } login.Start(LianmengType.抖音联盟); while (DateTime.Now < time) { if (!string.IsNullOrEmpty(login.QRCodeUrl)) { CacheHelper.GetIntance().SetCache(login.Msgid, login, 60 * 5); return PutData(new { Msgid = login.Msgid, QRCodeUrl = login.QRCodeUrl }); } Thread.Sleep(1000); } login.Dispose(); //var login = Client.Form.GetLoginForm(); //Client.Form.Invoke(new Action(delegate () //{ // login.Show(); // login.Hide(); // login.Start(LianmengType.抖音联盟); //})); //while (DateTime.Now < time) //{ // if (!string.IsNullOrEmpty(login.QRCodeUrl)) // { // CacheHelper.GetIntance().SetCache(login.Msgid, login, 60 * 5); // return PutData(new { Msgid = login.Msgid, QRCodeUrl = login.QRCodeUrl }); // } // Thread.Sleep(100); //} //login?.CloseUI(); //if (string.IsNullOrEmpty(login.ErrorMsg)) return PutData(login.ErrorMsg); return PutData("获取二维码失败,请稍后重试!"); } case LianmengType.美团联盟: try { #region 第二版、自动登录 聂红利 var loginType = GetInt("LoginType"); if (loginType == 1) { var telNumber = GetString("TelNumber", true); var mtLoginReq = new LoginMeituanClass(); var errorMsg = mtLoginReq.SendLoginCode(telNumber); if (!string.IsNullOrWhiteSpace(errorMsg)) return PutData(errorMsg); var guid = Guid.NewGuid().ToString("N"); CacheHelper.GetIntance().SetCache(guid, mtLoginReq, 60 * 5); return PutData(new { Msgid = guid, QRCodeUrl = string.Empty }); } else if (loginType == 2) { var Msgid = GetString("Msgid", true); var Code = GetString("Code", true); var req = CacheHelper.GetIntance().GetCache(Msgid); if (req == null) return PutData("登录失败,验证码已过期!"); var mtReq = req as LoginMeituanClass; if (mtReq == null) return PutData("登录失败,验证码已过期!"); var loginResult = mtReq.VerifyLoginCode(Code); if (!string.IsNullOrEmpty(loginResult)) return PutData(loginResult); var tar = Db.Queryable().First(p => p.Username == mtReq.mobile && p.LianmengType == LianmengType.美团联盟); if (tar == null) { tar = new Lianmeng() { LianmengType = LianmengType.美团联盟, Username = mtReq.mobile }; } tar.Nickname = mtReq.nickName; tar.Cookies = mtReq.Cookies; tar.ExpirationTime = DateTime.Now.AddYears(100); tar.Token = mtReq.appkey; tar.ReToken = mtReq.utmSource; Db.Save(tar); Task.Factory.StartNew(() => { var db = Db; try { db.BeginTran(); var medias = mtReq.GetMedias(); foreach (var item in medias) { var media = db.Queryable().Where(f => f.LianmengId == tar.Id && f.AdzoneId == item.promotionId && f.MediaPId == item.mediaId).First(); if (media == null) media = new MtMedia() { LianmengId = tar.Id, AdzoneId = item.promotionId, MediaPId = item.mediaId }; else if (media.UpdateTime == item.updateTime) continue; media.MediaType = (MTMediaType)item.mediaType; media.AdzoneName = item.promotionName; media.MediaName = item.mediaName; media.UpdateTime = item.updateTime; if (media.Id == 0) db.Insertable(media).ExecuteCommand(); else db.Updateable(media).ExecuteCommand(); } db.CommitTran(); } catch (Exception) { db.RollbackTran(); } }); return PutData(tar); } #endregion #region 第一版、人工录入 赵家保 else { var appKey = GetString("appKey", true); var utmSource = GetString("utmSource", true); var username = GetString("username", true); var remark = GetString("remark", false); var item = Db.Queryable().First(p => p.Username == username && p.LianmengType == LianmengType.美团联盟); if (item == null) { item = new Lianmeng() { LianmengType = LianmengType.美团联盟, ExpirationTime = DateTime.Now.AddYears(100), Cookies = "", Username = username, Nickname = "", Remark = remark, ReToken = utmSource, Token = appKey }; } else { item.Username = username; item.Remark = remark; item.ReToken = utmSource; item.Token = appKey; } var res = new MTRequest(item).CPSOrderList(DateTime.Now, DateTime.Now, 1, 50, out _); if (res == null) { return PutData("登录失败,您输入的appKey或utmSource不正确!"); } Db.Save(item); if (item.Id != 0) { return PutSuccess; } return PutError; } #endregion } catch (Exception ex) { return PutData(ex); } default: return PutData("暂不支持该联盟账号登录"); } return PutData(new { Url = url, Token = token }); } /// /// 获取京东的推广位(同步获取) /// /// /// /// /// private void GetJdAds(string authUser, string authKey, JingdongRequest jdApi, Lianmeng lianmeng) { Task.Factory.StartNew(() => { //TODO 使用API获取京东推广位 var req = new JingdongRequest(lianmeng); req.GetPositionListAll(items => { var db = Db; db.BeginTran(); try { foreach (JToken token in items) { var adzoneId = token["id"].Value(); var adzonename = token["spaceName"].Value(); var info = db.Queryable().Where(w => w.LianmengId == lianmeng.Id && w.AdzoneId == adzoneId).First(); if (info == null) { info = new JdMedia(); info.AdzoneId = adzoneId; info.LianmengId = lianmeng.Id; info.AdzoneName = adzonename; info.IsRemove = false; info.Remark = ""; db.Insertable(info).ExecuteCommand(); } else if (info.AdzoneName != adzonename) { info.AdzoneName = adzonename; db.Updateable(info).ExecuteCommand(); } } db.CommitTran(); } catch (Exception e) { Db.OnLog("同步推广位", e); db.RollbackTran(); } return false; }); }); } /// /// 获得登录状态 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult GetLoginStatus() { var msgId = GetString("Msgid", true); var result = CacheHelper.GetIntance().GetCache(msgId); if (result == null) { return PutData(new { Msgid = msgId, QRCodeStatus = LoginQRCodeStatus.操作超时 }); } var login = result as LianmengWebViewLogin; if (login == null) { if (result is LoginSuningClass login2) { return PutData(new { Msgid = msgId, QRCodeStatus = login2.QRCodeStatus, ErrorMsg = login2.ErrorMsg }); } return PutData("二维码获取失败!"); } else { return PutData(new { Msgid = login.Msgid, QRCodeStatus = login.QRCodeStatus, ErrorMsg = login.ErrorMsg }); } } private string GetUrl() { var url = $"http://{Client.InternetIP}:{Client.Config.Port}/"; #if DEBUG url = $"http://127.0.0.1/"; #endif return url; } /// /// 拼多多回调 /// [HttpGet] public IHttpActionResult Pinduoduo() { var url = GetUrl(); try { var Params = HttpUtility.ParseQueryString(Request.RequestUri.Query); var code = Params.Get("code"); var state = Params.Get("state"); string json = HttpHelper.ObjectToJson(new { client_id = "4ca7ddf2678b4ba39ecbc60c9d60b4ed", code = code, grant_type = "authorization_code", client_secret = "c05574e5bbb450bb1ad66e08cdccf05a8a274161" }); HttpHelper http = new HttpHelper(); var item = http.GetItem("http://open-api.pinduoduo.com/oauth/token", "", json); item.ContentType = "application/json"; var html = http.GetHtml(item).Html; Newtonsoft.Json.Linq.JObject target = Newtonsoft.Json.Linq.JObject.Parse(html); var UserId = target["owner_id"].ToString(); var Lianmeng = Db.Queryable().First(f => f.Username == UserId && f.LianmengType == LianmengType.拼多多联盟); if (Lianmeng == null) { Lianmeng = new Lianmeng() { Username = UserId, LianmengType = LianmengType.拼多多联盟 }; } Lianmeng.Nickname = target["owner_name"].ToString(); Lianmeng.Token = target["access_token"].ToString(); Lianmeng.ExpirationTime = DateTime.Now.AddDays(30); Lianmeng.ReToken = target["refresh_token"].ToString(); Db.Save(Lianmeng); //同步推广位 var req = new PinduoRequest(Lianmeng); req.GetPositionList(items => { var db = Db; db.BeginTran(); try { foreach (JToken token in items) { //var adzoneId = token["p_id_list"].First["p_id"].Value(); //var adzonename = token["p_id_list"].First["pid_name"].Value(); var adzoneId = token["p_id"].Value(); var adzonename = token["pid_name"].Value(); var info = db.Queryable().Where(w => w.LianmengId == Lianmeng.Id && w.AdzoneId == adzoneId).First(); if (info == null) { info = new PddMedia(); info.AdzoneId = adzoneId; info.LianmengId = Lianmeng.Id; info.AdzoneName = adzonename; info.IsRemove = false; info.Remark = ""; db.Insertable(info).ExecuteCommand(); } else if (info.AdzoneName != adzonename) { info.AdzoneName = adzonename; db.Updateable(info).ExecuteCommand(); } } db.CommitTran(); } catch (Exception e) { Db.OnLog("同步推广位", e); db.RollbackTran(); } return false; }); return Redirect($"{url}?t={LianmengType.拼多多联盟}&f=true"); } catch { return Redirect($"{url}?t={LianmengType.拼多多联盟}&f=false"); } } /// /// 淘宝回调 /// /// [HttpGet] public WebResult LoginTaobaoCallback() { var url = GetUrl(); try { //http://127.0.0.1:81/lianmeng/logintaobaoresult/?access_token=6100a011713579cffde010fc5c5faa734a72a17bcf96283824166474&token_type=Bearer&expires_in=2592000&refresh_token=6100a01171d612063de010fc5c5faa734a72a17bcf96283824166474&re_expires_in=2592000&r1_expires_in=2592000&r2_expires_in=86400&taobao_open_uid=AAHwsrlwAJVa5gTotY3c-Pas&taobao_user_id=824166474&taobao_user_nick=oreoa&w1_expires_in=2592000&w2_expires_in=300&state=http%3A%2F%2F127.0.0.1%3A81%2Flianmeng%2Flogintaobaoresult&top_sign=37E502E07685C07A0DFB104A30837A6B var Params = HttpUtility.ParseQueryString(Request.RequestUri.Query); var Token = Params.Get("access_token"); var UserId = Params.Get("taobao_user_id"); var UserNick = Params.Get("taobao_user_nick"); var Lianmeng = Db.Queryable().WithCache().First(f => f.Username == UserId && f.LianmengType == LianmengType.淘宝联盟); if (Lianmeng == null) { Lianmeng = new Lianmeng() { Username = UserId, LianmengType = LianmengType.淘宝联盟 }; } Lianmeng.Nickname = UserNick; Lianmeng.Token = Token; Lianmeng.ExpirationTime = DateTime.Now.AddDays(30); Db.Storageable(Lianmeng).ExecuteCommand(); //Db.Save(Lianmeng); return PutSuccess; } catch (Exception) { return PutError; } } /// /// 唯品会回调 /// [HttpGet] public IHttpActionResult Vip() { var url = GetUrl(); try { var Params = HttpUtility.ParseQueryString(Request.RequestUri.Query); var code = Params.Get("code"); var state = Params.Get("state"); var http = new HttpHelper(); var item = new HttpItem() { Method = "post", URL = $"https://auth.vip.com/oauth2/token?client_id={VipAppId}&client_secret={VipAppSecret}&grant_type=authorization_code&redirect_uri={HttpUtility.UrlEncode(url)}&request_client_ip=127.0.0.1&code={code}" }; var html = http.GetHtml(item).Html; Newtonsoft.Json.Linq.JObject target = Newtonsoft.Json.Linq.JObject.Parse(html); var UserId = target["open_id"].ToString(); var Lianmeng = Db.Queryable().First(f => f.Username == UserId && f.LianmengType == LianmengType.唯品会联盟); if (Lianmeng == null) { Lianmeng = new Lianmeng() { Username = UserId, LianmengType = LianmengType.唯品会联盟 }; } Lianmeng.Nickname = ""; Lianmeng.Token = target["access_token"].ToString(); Lianmeng.ExpirationTime = DateTime.Now.AddSeconds((int)target["expires_in"]); Lianmeng.ReToken = target["refresh_token"].ToString(); Db.Save(Lianmeng); GetVipAds(Lianmeng); return Redirect($"{url}?t={LianmengType.唯品会联盟}&f=true"); } catch { return Redirect($"{url}?t={LianmengType.唯品会联盟}&f=false"); } } /// /// 获取唯品会推广位信息 /// private void GetVipAds(Lianmeng Lianmeng) { Task.Factory.StartNew(() => { var req = new WeipinhuiRequest(Lianmeng); req.GetWphTgwAll(items => { var db = Db; db.UseTran(() => { foreach (var token in items) { string adzoneName = token["pidName"].Value(); var item = Db.Queryable().Where(f => f.AdzoneName == adzoneName && f.LianmengId == Lianmeng.Id).First(); if (item != null) { continue; } item = new WphMedia(); item.AdzoneId = token["pid"].Value(); item.AdzoneName = adzoneName; item.LianmengId = Lianmeng.Id; item.Remark = ""; Db.Insertable(item).ExecuteCommand(); } }, (ex) => { db.OnLog("登陆同步唯品会推广位", ex); }); return false; }); }); } /// /// 分页查询联盟 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult GetLianmengs() { var Keyword = GetString("Keyword"); var PageIndex = GetInt("PageIndex"); var PageSize = GetInt("PageSize"); var LmType = GetEnum("Type"); if (PageSize > 100) PageSize = 100; var TotalNumber = 0; var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.Nickname.Contains(Keyword) || f.Username.Contains(Keyword) || f.Remark.Contains(Keyword)); } if (LmType != LianmengType.无) { exp.And(f => f.LianmengType == LmType); } var DataList = Db.Queryable().Where(exp.ToExpression()).ToPageList(PageIndex, PageSize, ref TotalNumber); return PutData(new PageResult(DataList, TotalNumber, PageSize, PageIndex)); } /// /// 更新联盟 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult UpdLianmeng() { //TODO:编辑联盟信息,目前值做了备注修改 var Id = GetInt("Id", true); var Remark = GetString("Remark"); var Lianmeng = Db.GetLianmeng(Id); if (Lianmeng == null) return PutData("联盟账号不存在!"); Lianmeng.Remark = Remark; Db.Save(Lianmeng); return PutSuccess; } /// /// 删除联盟 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult DelLianmeng() { var Id = GetInt("Id", true); var Data = Db.GetLianmeng(Id); if (Data != null && Db.Delete(Data) > 0) return PutSuccess; else return PutData("删除失败,未找到数据!"); } /// /// 新增推广位 /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult AddTaobaoMedia() { try { var LianmengId = GetInt("LianmengId", true); var SiteId = GetString("SiteId", true); var AdzoneId = GetString("AdzoneId", true); var Remark = GetString("Remark"); var AppKey = GetString("AppKey"); var AppSecret = GetString("AppSecret"); var Lianmeng = Db.Queryable().Where(f => f.Id == LianmengId).First(); if (Lianmeng == null) return PutData("新增失败,联盟ID不存在!"); var TbMedia = Db.Queryable().Where(f => f.LianmengId == LianmengId && f.SiteId == SiteId && f.AdzoneId == AdzoneId).First(); if (TbMedia != null) return PutData("新增失败,该推广位已存在!"); TbMedia = new TbMedia() { LianmengId = LianmengId, SiteId = SiteId, AdzoneId = AdzoneId, Remark = Remark, AppKey = AppKey, AppSecret = AppSecret }; Db.Save(TbMedia); return PutData(TbMedia); } catch (Exception ex) { return PutData(ex); } } /// /// 修改推广位 /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult UpdTaobaoMedia() { try { var MediaId = GetInt("MediaId", true); var TbMedia = Db.GetTbMedia(MediaId); if (TbMedia == null) return PutData("修改失败,该推广位不存在!"); var LianmengId = GetInt("LianmengId", true); var SiteId = GetString("SiteId", true); var AdzoneId = GetString("AdzoneId", true); var Remark = GetString("Remark"); var AppKey = GetString("AppKey"); var AppSecret = GetString("AppSecret"); var Lianmeng = Db.Queryable().Where(f => f.Id == LianmengId).First(); if (Lianmeng == null) return PutData("修改失败,联盟ID不存在!"); var DbTbMedia = Db.Queryable().Where(f => f.LianmengId == LianmengId && f.SiteId == SiteId && f.AdzoneId == AdzoneId).First(); if (DbTbMedia != null) { if (DbTbMedia.Id != MediaId) return PutData("修改失败,该推广位已存在!"); } TbMedia.LianmengId = LianmengId; TbMedia.SiteId = SiteId; TbMedia.AdzoneId = AdzoneId; TbMedia.Remark = Remark; TbMedia.AppKey = AppKey; TbMedia.AppSecret = AppSecret; Db.Save(TbMedia); return PutData(TbMedia); } catch (Exception ex) { return PutData(ex); } } /// /// 删除推广位 /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult DelTaobaoMedia() { var MediaId = GetInt("MediaId", true); Db.Updateable() .Where(f => f.Id == MediaId) .SetColumns(f => f.IsRemove == true) .ExecuteCommand(); return PutSuccess; } /// /// 删除推广位 /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult DelTaobaoMedias() { try { var Ids = GetIntList("Ids", true); Db.Updateable() .Where(f => Ids.Contains(f.Id)) .SetColumns(f => f.IsRemove == true) .ExecuteCommand(); return PutSuccess; } catch (Exception ex) { return PutData(ex); } } /// /// 查询推广位列表 /// /// [HttpPost, ErrorFilter] public WebResult GetTaobaoMedias() { try { var pageSize = GetInt("PageSize", true); var index = GetInt("PageIndex", true); var LianmengId = GetInt("LianmengId"); var SiteId = GetString("SiteId"); var AdzoneId = GetString("AdzoneId"); var Remark = GetString("Remark"); var exp = Expressionable.Create(); if (LianmengId > 0) { exp.And(f => f.LianmengId == LianmengId); } if (!string.IsNullOrEmpty(SiteId)) { exp.And(f => f.SiteId == SiteId); } if (!string.IsNullOrEmpty(AdzoneId)) { exp.And(f => f.AdzoneId == AdzoneId); } if (!string.IsNullOrEmpty(Remark)) { exp.And(f => f.Remark.Contains(Remark)); } exp.And(f => f.IsRemove == false); var tNumber = 0; var DataList = Db.Queryable() .LeftJoin((f, r) => f.LianmengId == r.Id) .Where(exp.ToExpression()) .Select((f, r) => new TbMediaShow { Id = f.Id, LianmengId = f.LianmengId, SiteName = f.SiteName, AdzoneId = f.AdzoneId, AdzoneName = f.AdzoneName, AppKey = f.AppKey, AppSecret = f.AppSecret, IsSpecial = f.IsSpecial, IsTlj = !string.IsNullOrEmpty(f.AppKey) && !string.IsNullOrEmpty(f.AppSecret), LmName = r.Nickname, LmAcc = r.Username, Pid = f.Pid, Remark = f.Remark, SiteId = f.SiteId, //UseCnt = Db.Queryable().Where(p => p.TbMediaId1 == f.Id || p.TbMediaId2 == f.Id).Count(), //Db.Queryable().Count(p=>p.TbMediaId1 == f.Id || p.TbMediaId2 == f.Id) }) .ToPageList(index, pageSize, ref tNumber); foreach (var item in DataList) { item.UseCnt = Db.Queryable().Count(p => p.TbMediaId1 == item.Id || p.TbMediaId2 == item.Id); } return PutData(new PageResult(DataList, tNumber, pageSize, index)); } catch (Exception ex) { return PutData(ex); } } /// /// 新增美团推广位 /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult AddMtMedia() { try { var adzoneId = GetString("AdzoneId", true); var lianmengId = GetInt("LianmengId", true); var adzoneName = GetString("AdzoneName", true); var remark = GetString("Remark", false); var mediaType = GetEnum("MediaType", true); var mediaPId = GetString("MediaPId", true); var mediaName = GetString("MediaName", true); var item = Db.Queryable().Where(f => f.AdzoneId == adzoneId && f.LianmengId == lianmengId).First(); if (item != null) { return PutData("新增失败,该推广位已存在!"); } var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First(); if (lianmeng == null) { return PutData("联盟不存在!"); } var req = new MTRequest(lianmeng); var result = req.PromotionLink("吃货天天省", "0AlN4OtEIa", adzoneId, 2, 1, false); if (result.code != 200) { return PutData(result.msg); } item = new MtMedia() { AdzoneId = adzoneId, AdzoneName = adzoneName, LianmengId = lianmengId, MediaName = mediaName, MediaPId = mediaPId, MediaType = mediaType, Remark = remark }; Db.Insertable(item).ExecuteReturnEntityAsync(); return PutData(new MTMediaShow() { Id = item.Id, LianmengId = item.LianmengId, AdzoneId = item.AdzoneId, AdzoneName = item.AdzoneName, Remark = item.Remark, MediaName = item.MediaName, MediaPId = item.MediaPId, MediaType = item.MediaType }); } catch (Exception ex) { return PutData(ex); } } /// /// 编辑美团推广位 /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult UdpMtMedia() { try { var adzoneId = GetString("AdzoneId", true); var lianmengId = GetInt("LianmengId", true); var adzoneName = GetString("AdzoneName", true); var remark = GetString("Remark", false); var mediaType = GetEnum("MediaType", true); var mediaPId = GetString("MediaPId", true); var mediaName = GetString("MediaName", true); var item = Db.Queryable().Where(f => f.AdzoneId == adzoneId && f.LianmengId == lianmengId).First(); if (item == null) { return PutData("编辑失败,该推广位不存在!"); } var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First(); if (lianmeng == null) { return PutData("联盟不存在!"); } var req = new MTRequest(lianmeng); var result = req.PromotionLink("吃货天天省", "0AlN4OtEIa", adzoneId, 2, 1, false); if (result.code != 200) { return PutData(result.msg); } item.AdzoneId = adzoneId; item.AdzoneName = adzoneName; item.LianmengId = lianmengId; item.MediaName = mediaName; item.MediaPId = mediaPId; item.MediaType = mediaType; item.Remark = remark; Db.Insertable(item).ExecuteReturnEntityAsync(); return PutSuccess; } catch (Exception ex) { return PutData(ex); } } /// /// 删除美团推广位 /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult RemoveMtMedia() { try { var adzoneId = GetString("AdzoneId", true); var lianmengId = GetInt("LianmengId", true); var item = Db.Queryable().Where(f => f.AdzoneId == adzoneId && f.LianmengId == lianmengId).First(); if (item == null) { return PutData("推广位不存在"); } else { item.IsDelete = true; Db.Updateable(item).ExecuteCommand(); } return PutSuccess; } catch (Exception ex) { return PutData(ex); } } /// /// 查询美团推广位列表 /// /// [HttpPost, ErrorFilter] public WebResult GetMTMedias() { try { var pageSize = GetInt("PageSize", true); var index = GetInt("PageIndex", true); var lianmengId = GetInt("LianmengId"); var keyword = GetString("Keyword"); var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(keyword)) { exp.And(f => f.AdzoneName.Contains(keyword) || f.Remark.Contains(keyword)); } exp.And(f => f.IsDelete == false); var tNumber = 0; var DataList = Db.Queryable() .Where(f => f.LianmengId == lianmengId) .Where(exp.ToExpression()) .Select(f => new MTMediaShow { Id = f.Id, LianmengId = f.LianmengId, AdzoneId = f.AdzoneId, AdzoneName = f.AdzoneName, Remark = f.Remark, MediaName = f.MediaName, MediaPId = f.MediaPId, MediaType = f.MediaType }) .ToPageList(index, pageSize, ref tNumber); foreach (var item in DataList) { item.UseCnt = Db.Queryable().Count(p => p.MtMediaId1 == item.Id || p.MtMediaId2 == item.Id); } return PutData(new PageResult(DataList, tNumber, pageSize, index)); } catch (Exception ex) { return PutData(ex); } } /// /// 新增京东推广位 /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult AddJDMedia() { try { var lianmengId = GetInt("LianmengId", true); var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First(); if (lianmeng == null) { return PutData("联盟不存在!"); } var adzoneName = GetString("AdzoneName", true); var siteId = GetLong("SiteId"); var remark = GetString("Remark"); var item = Db.Queryable().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First(); if (item != null) { return PutData("新增失败,该推广位名称相同!"); } var req = new JingdongRequest(lianmeng); var jobj = req.CreatePosition(4, 4, new string[] { adzoneName }, siteId); if (jobj["code"].Value() != 200) { return PutData(jobj["message"].Value()); } item = new JdMedia(); var property = jobj["data"]["resultList"][adzoneName] as JValue; item.AdzoneId = property.Value?.ToString(); item.AdzoneName = adzoneName; item.LianmengId = lianmengId; item.Remark = remark; item.PId = jobj["data"]["pid"][adzoneName].Value(); item.IsRemove = false; Db.Insertable(item).ExecuteReturnEntityAsync(); return PutSuccess; } catch (Exception ex) { return PutData(ex); } } /// /// 删除京东推广位 /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult RemoveJDMedia() { var lianmengId = GetInt("LianmengId", true); var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First(); if (lianmeng == null) { return PutData("联盟不存在!"); } var adzoneName = GetString("AdzoneName", true); var item = Db.Queryable().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First(); if (item == null) { return PutData("删除失败,推广位不存在"); } item.IsRemove = true; Db.Updateable(item).ExecuteCommand(); return PutSuccess; } /// /// 查询京东推广位列表 /// /// [HttpPost, ErrorFilter] public WebResult GetJDMedias() { try { var pageSize = GetInt("PageSize", true); var index = GetInt("PageIndex", true); var lianmengId = GetInt("LianmengId"); var keyword = GetString("Keyword"); var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(keyword)) { exp.And(f => f.AdzoneName.Contains(keyword) || f.Remark.Contains(keyword)); } var tNumber = 0; var DataList = Db.Queryable() .Where(f => f.LianmengId == lianmengId && f.IsRemove == false) .Where(exp.ToExpression()) .Select(f => f) .ToPageList(index, pageSize, ref tNumber); return PutData(new PageResult(DataList, tNumber, pageSize, index)); } catch (Exception ex) { return PutData(ex); } } /// /// 新增拼多多推广位 /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult AddPDDMedia() { try { var lianmengId = GetInt("LianmengId", true); var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First(); if (lianmeng == null) { return PutData("联盟不存在!"); } var adzoneName = GetString("AdzoneName", true); var remark = GetString("Remark", false); var item = Db.Queryable().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First(); if (item != null) { return PutData("新增失败,该推广位名称相同!"); } var req = new PinduoRequest(lianmeng); var jobj = req.CreatePosition(adzoneName); if (jobj["sub_code"] != null && jobj["sub_code"]?.Value() != 200) { return PutData(jobj["sub_msg"].Value()); } item = new PddMedia(); item.AdzoneId = jobj["p_id_list"].First["p_id"].Value(); item.AdzoneName = adzoneName; item.LianmengId = lianmengId; item.Remark = remark; item.IsRemove = false; Db.Insertable(item).ExecuteReturnEntityAsync(); return PutSuccess; } catch (Exception ex) { return PutData(ex); } } /// /// 删除拼多多推广位 /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult RemovePDDMedia() { var lianmengId = GetInt("LianmengId", true); var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First(); if (lianmeng == null) { return PutData("联盟不存在!"); } var adzoneName = GetString("AdzoneName", true); var item = Db.Queryable().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First(); if (item == null) { return PutData("删除失败,推广位不存在"); } item.IsRemove = true; Db.Updateable(item).ExecuteCommand(); return PutSuccess; } /// /// 查询拼多多推广位列表 /// /// [HttpPost, ErrorFilter] public WebResult GetPDDMedias() { try { var pageSize = GetInt("PageSize", true); var index = GetInt("PageIndex", true); var lianmengId = GetInt("LianmengId"); var keyword = GetString("Keyword"); var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(keyword)) { exp.And(f => f.AdzoneName.Contains(keyword) || f.Remark.Contains(keyword)); } var tNumber = 0; var DataList = Db.Queryable() .Where(f => f.LianmengId == lianmengId && f.IsRemove == false) .Where(exp.ToExpression()) .Select(f => f) .ToPageList(index, pageSize, ref tNumber); return PutData(new PageResult(DataList, tNumber, pageSize, index)); } catch (Exception ex) { return PutData(ex); } } /// /// 新增唯品会推广位 /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult AddWPHMedia() { try { var lianmengId = GetInt("LianmengId", true); var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First(); if (lianmeng == null) { return PutData("联盟不存在!"); } var adzoneName = GetString("AdzoneName", true); var remark = GetString("Remark", false); var item = Db.Queryable().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First(); if (item != null) { return PutData("新增失败,该推广位名称相同!"); } var req = new WeipinhuiRequest(lianmeng); var jobj = req.CreateWphTgw(new List() { adzoneName }); if (jobj["returnCode"] != null && jobj["returnCode"]?.Value() != 0) { return PutData("创建推广位失败"); } item = new WphMedia(); item.AdzoneId = jobj["result"]["pidInfoList"].First["pid"].Value(); item.AdzoneName = adzoneName; item.LianmengId = lianmengId; item.Remark = remark; Db.Insertable(item).ExecuteCommand(); return PutSuccess; } catch (Exception ex) { return PutData(ex); } } /// /// 删除唯品会推广位 /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult RemoveWPHMedia() { var lianmengId = GetInt("LianmengId", true); var lianmeng = Db.Queryable().Where(w => w.Id == lianmengId).First(); if (lianmeng == null) { return PutData("联盟不存在!"); } var adzoneName = GetString("AdzoneName", true); var item = Db.Queryable().Where(f => f.AdzoneName == adzoneName && f.LianmengId == lianmengId).First(); if (item == null) { return PutData("删除失败,推广位不存在"); } Db.Deleteable(item).ExecuteCommand(); return PutSuccess; } /// /// 查询唯品会推广位列表 /// /// [HttpPost, ErrorFilter] public WebResult GetWPHMedias() { try { var pageSize = GetInt("PageSize", true); var index = GetInt("PageIndex", true); var lianmengId = GetInt("LianmengId"); var keyword = GetString("Keyword"); var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(keyword)) { exp.And(f => f.AdzoneName.Contains(keyword) || f.Remark.Contains(keyword)); } var tNumber = 0; var DataList = Db.Queryable() .Where(f => f.LianmengId == lianmengId) .Where(exp.ToExpression()) .Select(f => new VipMediaShow() { Remark = f.Remark, AdzoneId = f.AdzoneId, AdzoneName = f.AdzoneName, Id = f.Id, LianmengId = f.LianmengId, UseCnt = Db.Queryable().Count(p => p.TbMediaId1 == f.Id || p.TbMediaId2 == f.Id) }) .ToPageList(index, pageSize, ref tNumber); //var result = new List(); //DataList.ForEach(f => //{ // var data = new VipMediaShow() // { // Remark = f.Remark, // AdzoneId = f.AdzoneId, // AdzoneName = f.AdzoneName, // Id = f.Id, // LianmengId = f.LianmengId, // UseCnt = Db.Queryable().Count(p => p.TbMediaId1 == f.Id || p.TbMediaId2 == f.Id) // }; // result.Add(data); //}); return PutData(new PageResult(DataList, tNumber, pageSize, index)); } catch (Exception ex) { return PutData(ex); } } } }