using Common.DbExtends.Extends; using Common.Models.Enums; using Common.Models.UnqTables; using Common.Utils; using Server.MyClass.Views; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Server.Controllers.AccountManagement { public class RobotController : DefaultController { /// /// 分页查询机器人 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult GetRobots() { var Keyword = GetString("Keyword"); var PageIndex = GetInt("PageIndex"); var PageSize = GetInt("PageSize"); 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)); } var DataList = Db.Queryable().Where(exp.ToExpression()).ToPageList(PageIndex, PageSize, ref TotalNumber); foreach (var item in DataList) { var data = Client.SingleClient.OnlineDevices.FirstOrDefault(f => f.Value.RobotId == item.Id).Value; item.IsOnlineRobot = data != null; } return PutData(new PageResult(DataList, TotalNumber, PageSize, PageIndex)); } /// /// 删除机器人 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult DelRobot() { var Data = Db.GetRobot(GetInt("Id", true)); if (Data != null && Db.Delete(Data) > 0) { Client.SendClientMsg(Data.Id, DeviceMessageType.退出机器人, new { RobotId = Data.Id }); return PutSuccess; } else return PutData("删除失败,机器人信息不存在!"); } /// /// 登录机器人 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult LoginRobot() { var Id = GetInt("RobotId", true); var Robot = Db.Queryable().Single(f => f.Id == Id); if (Robot == null) return PutData("找不到该机器人数据!"); var device = Db.Queryable().Where(f => f.RobotId == Robot.Id).OrderBy(f => f.LoginTime, OrderByType.Desc).First(); if (device == null) return PutData("登录失败,未发现该机器人上次登录的设备信息"); var Msg = Client.SendClientMsg(device.Id, DeviceMessageType.登录机器人, new { RobotId = Id }); if (Msg == null) return PutData("登录失败,设备离线请检查软件状态"); var Rst = Client.GetClientMsg(Msg.Msgid).Result; if (Rst == null) return PutData("登录失败,未获取到二维码信息请检查软件状态"); return PutData(new { Type = Robot.UserType, Qrcode = Rst.Content }); } /// /// 退出机器人 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult LogoutRobot() { var Id = GetInt("RobotId",true); var Robot = Db.Queryable().Single(f => f.Id == Id); if (Robot == null) return PutData("找不到该机器人数据!"); Robot.LoginTime = DateTime.MinValue; Db.Updateable(Robot).ExecuteCommand(); Client.SendClientMsg(Robot.Id, DeviceMessageType.退出机器人, new { RobotId = Robot.Id }); return PutSuccess; } /// /// 查询机器人详细信息 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult GetRobot() { var Id = GetInt("RobotId",true); var Robot = Db.Queryable().Single(f => f.Id == Id); if (Robot == null) return PutData("找不到该机器人数据!"); return null; } [System.Web.Http.HttpPost, ErrorFilter] public WebResult GetConfig() { var Id = GetInt("RobotId", true); var Robot = Db.Queryable().Single(f => f.Id == Id); if (Robot == null) return PutData("查询失败,找不到该机器人信息!"); RobotSettingShow config = new RobotSettingShow(); var tbMedia1 = Robot.TbMediaId1 > 0 ? Db.GetTbMedia(Robot.TbMediaId1) : null; var tbMedia2 = Robot.TbMediaId2 > 0 ? Db.GetTbMedia(Robot.TbMediaId2) : null; var tbLianmeng1 = tbMedia1 != null ? Db.GetLianmeng(tbMedia1.LianmengId) : null; var tbLianmeng2 = tbMedia2 != null ? Db.GetLianmeng(tbMedia2.LianmengId) : null; config.TbLianmengId1 = tbLianmeng1 != null ? tbLianmeng1.Id : 0; config.TbLianmengId2 = tbLianmeng2 != null ? tbLianmeng2.Id : 0; config.TbLianmengNick1 = tbLianmeng1 != null ? tbLianmeng1.Showname : String.Empty; config.TbLianmengNick2 = tbLianmeng2 != null ? tbLianmeng2.Showname : String.Empty; config.TbMediaNick1 = tbMedia1 != null ? tbMedia1.AdzoneName : String.Empty; config.TbMediaNick2 = tbMedia2!=null? tbMedia2.AdzoneName :String.Empty; config.TbMediaId1 = tbMedia1!=null ? tbMedia1.Id : 0; config.TbMediaId2 = tbMedia2!=null? tbMedia2.Id : 0; var dyMedia1 = Robot.DyMediaId1 > 0 ? Db.GetDyMedia(Robot.DyMediaId1) : null; var dyMedia2 = Robot.DyMediaId2 > 0 ? Db.GetDyMedia(Robot.DyMediaId2) : null; var dyLianmeng1 = dyMedia1 != null ? Db.GetLianmeng(dyMedia1.LianmengId) : null; var dyLianmeng2 = dyMedia2 != null ? Db.GetLianmeng(dyMedia2.LianmengId) : null; config.DyLianmengId1 = dyLianmeng1 != null ? dyLianmeng1.Id : 0; config.DyLianmengId2 = dyLianmeng2 != null ? dyLianmeng2.Id : 0; config.DyLianmengNick1 = dyLianmeng1 != null ? dyLianmeng1.Showname : String.Empty; config.DyLianmengNick2 = dyLianmeng2 != null ? dyLianmeng2.Showname : String.Empty; config.DyMediaNick1 = dyMedia1 != null ? dyMedia1.AdzoneName : String.Empty; config.DyMediaNick2 = dyMedia2 != null ? dyMedia2.AdzoneName : String.Empty; config.DyMediaId1 = dyMedia1 != null ? dyMedia1.Id : 0; config.DyMediaId2 = dyMedia2 != null ? dyMedia2.Id : 0; var jdMedia1 = Robot.JdMediaId1 > 0 ? Db.GetJdMedia(Robot.JdMediaId1) : null; var jdMedia2 = Robot.JdMediaId2 > 0 ? Db.GetJdMedia(Robot.JdMediaId2) : null; var jdLianmeng1 = jdMedia1 != null ? Db.GetLianmeng(jdMedia1.LianmengId) : null; var jdLianmeng2 = jdMedia2 != null ? Db.GetLianmeng(jdMedia2.LianmengId) : null; config.JdLianmengId1 = jdLianmeng1 != null ? jdLianmeng1.Id : 0; config.JdLianmengId2 = jdLianmeng2 != null ? jdLianmeng1.Id : 0; config.JdLianmengNick1 = jdLianmeng1 != null ? jdLianmeng1.Showname : String.Empty; config.JdLianmengNick2 = jdLianmeng2 != null ? jdLianmeng2.Showname : String.Empty; config.JdMediaNick1 = jdMedia1 != null ? jdMedia1.AdzoneName : String.Empty; config.JdMediaNick2 = jdMedia2 != null ? jdMedia2.AdzoneName : String.Empty; config.JdMediaId1 = jdMedia1 != null ? jdMedia1.Id : 0; config.JdMediaId2 = jdMedia2 != null ? jdMedia2.Id : 0; var wphMedia1 = Robot.WphMediaId1 > 0 ? Db.GetWphMedia(Robot.WphMediaId1) : null; var wphMedia2 = Robot.WphMediaId2 > 0 ? Db.GetWphMedia(Robot.WphMediaId2) : null; var wphLianmeng1 = wphMedia1 != null ? Db.GetLianmeng(wphMedia1.LianmengId) : null; var wphLianmeng2 = wphMedia1 != null ? Db.GetLianmeng(wphMedia2.LianmengId) : null; config.WphLianmengId1 = wphLianmeng1 != null ? wphLianmeng1.Id : 0; config.WphLianmengId2 = wphLianmeng2 != null ? wphLianmeng1.Id : 0; config.WphLianmengNick1 = wphLianmeng1 != null ? wphLianmeng1.Showname : String.Empty; config.WphLianmengNick2 = wphLianmeng2 != null ? wphLianmeng2.Showname : String.Empty; config.WphMediaNick1 = wphMedia1 != null ? wphMedia1.AdzoneName : String.Empty; config.WphMediaNick2 = wphMedia2 != null ? wphMedia2.AdzoneName : String.Empty; config.WphMediaId1 = wphMedia1 != null ? wphMedia1.Id : 0; config.WphMediaId2 = wphMedia2 != null ? wphMedia2.Id : 0; var pddMedia1 = Robot.PddMediaId1 > 0 ? Db.GetPddMedia(Robot.PddMediaId1) : null; var pddMedia2 = Robot.PddMediaId2 > 0 ? Db.GetPddMedia(Robot.PddMediaId2) : null; var pddLianmeng1 = pddMedia1 != null ? Db.GetLianmeng(pddMedia1.LianmengId) : null; var pddLianmeng2 = pddMedia2 != null ? Db.GetLianmeng(pddMedia2.LianmengId) : null; config.PddLianmengId1 = pddLianmeng1 != null ? pddLianmeng1.Id : 0; config.PddLianmengId2 = pddLianmeng2 != null ? pddLianmeng1.Id : 0; config.PddLianmengNick1 = pddLianmeng1 != null ? pddLianmeng1.Showname : String.Empty; config.PddLianmengNick2 = pddLianmeng2 != null ? pddLianmeng2.Showname : String.Empty; config.PddMediaNick1 = pddMedia1 != null ? pddMedia1.AdzoneName : String.Empty; config.PddMediaNick2 = pddMedia2 != null ? pddMedia2.AdzoneName : String.Empty; config.PddMediaId1 = pddMedia1 != null ? pddMedia1.Id : 0; config.PddMediaId2 = pddMedia2 != null ? pddMedia2.Id : 0; var snLianmeng1 = Robot.SnLianmengId1 > 0 ? Db.GetLianmeng(Robot.SnLianmengId1) : null; var snLianmeng2 = Robot.SnLianmengId2 > 0 ? Db.GetLianmeng(Robot.SnLianmengId2) : null; config.SnLianmengId1 = snLianmeng1 != null ? snLianmeng1.Id : 0; config.SnLianmengId2 = snLianmeng2 != null ? snLianmeng1.Id : 0; config.SnLianmengNick1 = snLianmeng1 != null ? snLianmeng1.Showname : String.Empty; config.SnLianmengNick2 = snLianmeng2 != null ? snLianmeng2.Showname : String.Empty; var mtMedia1 = Robot.MtMediaId1 > 0 ? Db.GetMtMedia(Robot.MtMediaId1) : null; var mtMedia2 = Robot.MtMediaId2 > 0 ? Db.GetMtMedia(Robot.MtMediaId2) : null; var mtLianmeng1 = mtMedia1 != null ? Db.GetLianmeng(mtMedia1.LianmengId) : null; var mtLianmeng2 = mtMedia2 != null ? Db.GetLianmeng(mtMedia2.LianmengId) : null; config.MtLianmengId1 = mtLianmeng1 != null ? mtLianmeng1.Id : 0; config.MtLianmengId2 = mtLianmeng2 != null ? mtLianmeng1.Id : 0; config.MtLianmengNick1 = mtLianmeng1 != null ? mtLianmeng1.Showname : String.Empty; config.MtLianmengNick2 = mtLianmeng2 != null ? mtLianmeng2.Showname : String.Empty; config.MtMediaNick1 = mtMedia1 != null ? mtMedia1.AdzoneName : String.Empty; config.MtMediaNick2 = mtMedia2 != null ? mtMedia2.AdzoneName : String.Empty; config.MtMediaId1 = mtMedia1 != null ? mtMedia1.Id : 0; config.MtMediaId2 = mtMedia2 != null ? mtMedia2.Id : 0; config.ConfigRebateName = Robot.ConfigRebateId>0? Db.Queryable().Where(f => f.Id == Robot.ConfigRebateId).Select(f=>f.Name).First():String.Empty; config.ConfigReplyName = Robot.ConfigReplyId > 0 ? Db.Queryable().Where(f => f.Id == Robot.ConfigReplyId).Select(f => f.Name).First() : String.Empty; config.ConfibBaseName = Robot.ConfigBaseId > 0 ? Db.Queryable().Where(f => f.Id == Robot.ConfigBaseId).Select(f => f.Name).First() : String.Empty; config.ConfigBaseId = Robot.ConfigBaseId; config.ConfigRebateId = Robot.ConfigRebateId; config.ConfigReplyId = Robot.ConfigReplyId; return PutData(config); } /// /// 保存配置 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult SetConfig() { var Id = GetInt("RobotId", true); var Robot = Db.Queryable().Single(f => f.Id == Id); if (Robot == null) return PutData("保存失败,找不到该机器人信息!"); Robot.ConfigBaseId = GetInt("ConfigBaseId",true); Robot.ConfigRebateId = GetInt("ConfigRebateId", true); Robot.ConfigReplyId = GetInt("ConfigReplyId", true); Robot.TbMediaId1 = GetInt("TbMediaId1",true); Robot.TbMediaId2 = GetInt("TbMediaId2", true); Robot.DyMediaId1 = GetInt("DyMediaId1", true); Robot.DyMediaId2 = GetInt("DyMediaId2", true); Robot.JdMediaId1 = GetInt("JdMediaId1", true); Robot.JdMediaId1 = GetInt("JdMediaId2", true); Robot.MtMediaId1 = GetInt("MtMediaId1", true); Robot.MtMediaId2 = GetInt("MtMediaId2", true); Robot.WphMediaId1 = GetInt("WphMediaId1", true); Robot.WphMediaId2 = GetInt("WphMediaId2", true); Robot.PddMediaId1 = GetInt("PddMediaId1", true); Robot.PddMediaId2 = GetInt("PddMediaId2", true); Robot.SnLianmengId1 = GetInt("SnLianmengId1", true); Robot.SnLianmengId2 = GetInt("SnLianmengId2", true); Db.Save(Robot); Client.SendClientMsg(Robot.Id, DeviceMessageType.机器人配置更新, new { RobotId = Robot.Id }); return PutSuccess; } /// /// 获取联盟 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult GetLianmengs() { var Keyword = GetString("Keyword"); var LianmengType = GetEnum("LianmengType",true); var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.Nickname.Contains(Keyword) || f.Username.Contains(Keyword)); } exp.And(f=>f.LianmengType == LianmengType); var Lianmengs = Db.Queryable() .Where(exp.ToExpression()) .Select(f => new NameShow { Id = f.Id, Name = f.Nickname }) .Take(20). OrderBy(f => f.Id, OrderByType.Desc) .ToList(); ; return PutData(Lianmengs); } /// /// 获取联盟 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult GetMedias() { var Keyword = GetString("Keyword"); var LianmengId = GetInt("LianmengId",true); var lianmeng = Db.GetLianmeng(LianmengId); if (lianmeng == null) return PutData("查询失败,当前联盟账号不存在!"); switch (lianmeng.LianmengType) { case Common.Models.Enums.LianmengType.淘宝联盟: { var exp = Expressionable.Create(); exp.And(f => f.LianmengId == LianmengId); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.AdzoneName.Contains(Keyword) || f.Pid.Contains(Keyword)); } exp.And(f=>f.IsRemove == false); var Results = Db.Queryable() .Where(exp.ToExpression()) .Select(f => new NameShow { Id = f.Id, Name = f.AdzoneName }) .Take(20) .OrderBy(f => f.Id, OrderByType.Desc) .ToList(); return PutData(Results); } case Common.Models.Enums.LianmengType.京东联盟: { var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.AdzoneName.Contains(Keyword)); } exp.And(f => f.LianmengId == LianmengId); var Results = Db.Queryable() .Where(exp.ToExpression()) .Select(f => new NameShow { Id = f.Id, Name = f.AdzoneName }) .Take(20) .OrderBy(f => f.Id, OrderByType.Desc) .ToList(); return PutData(Results); } case Common.Models.Enums.LianmengType.拼多多联盟: { var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.AdzoneName.Contains(Keyword)); } exp.And(f => f.LianmengId == LianmengId); var Results = Db.Queryable() .Where(exp.ToExpression()) .Select(f => new NameShow { Id = f.Id, Name = f.AdzoneName }) .Take(20) .OrderBy(f => f.Id, OrderByType.Desc) .ToList(); return PutData(Results); } case Common.Models.Enums.LianmengType.唯品会联盟: { var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.AdzoneName.Contains(Keyword)); } exp.And(f => f.LianmengId == LianmengId); var Results = Db.Queryable() .Where(exp.ToExpression()) .Select(f => new NameShow { Id = f.Id, Name = f.AdzoneName }) .Take(20) .OrderBy(f => f.Id, OrderByType.Desc) .ToList(); return PutData(Results); } case Common.Models.Enums.LianmengType.苏宁联盟: return PutData("查询失败,苏宁无需设置推广位!"); case Common.Models.Enums.LianmengType.抖音联盟: { var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.AdzoneName.Contains(Keyword)); } exp.And(f => f.LianmengId == LianmengId); var Results = Db.Queryable() .Where(exp.ToExpression()) .Select(f => new NameShow { Id = f.Id, Name = f.AdzoneName }) .Take(20) .OrderBy(f => f.Id, OrderByType.Desc) .ToList(); return PutData(Results); } case LianmengType.美团联盟: { var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.AdzoneName.Contains(Keyword)); } exp.And(f => f.LianmengId == LianmengId); var Results = Db.Queryable() .Where(exp.ToExpression()) .Select(f => new NameShow { Id = f.Id, Name = f.AdzoneName }) .Take(20) .OrderBy(f => f.Id, OrderByType.Desc) .ToList(); return PutData(Results); } default: break; } return PutError; } /// /// 获取配置表 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult GetConfigNames() { var Keyword = GetString("Keyword"); var ConfigType = GetEnum("ConfigType", true); var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.Name.Contains(Keyword)); } exp.And(f=>f.Type == ConfigType); var result = Db.Queryable() .Where(exp.ToExpression()) .Select(f=>new NameShow{ Id = f.Id,Name = f.Name }) .Take(20) .OrderBy(f=>f.Id, OrderByType.Desc) .ToList(); return PutData(result); } } }