using Common.Models.Enums; using Common.Models.SubTables; using Common.Models.UnqTables; using Newtonsoft.Json; using Server.MyClass.Views; using SqlSugar; using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Web.Http; namespace Server.Controllers.OnlineTools { public class QunfaController : DefaultController { /// /// 上传图片 /// /// public WebResult UploadImgUrl() { var Img = GetString("Img", true); var Name = GetString("Name", true); var fileName = Guid.NewGuid().ToString("N") + Path.GetExtension(Name); var path = CsharpHttpHelper.HttpExtend.MapFile(fileName, "网站\\Cache\\Images"); Img = Img.Replace("data:image/jpeg;base64,", ""); byte[] bytes = Convert.FromBase64String(Img); File.WriteAllBytes(path, bytes); return PutData(new { url = $"http://{Client.InternetIP}/Cache/Images/{fileName}" }); } /// /// 删除图片 /// /// [HttpPost, ErrorFilter] public WebResult DeleteImage() { var ImgUrl = GetString("ImgUrl", true); ImgUrl = ImgUrl.Replace('/', '\\'); var reg = Regex.Match(ImgUrl, @"(Cache[\w\W]+)"); if (reg.Success) { var path = CsharpHttpHelper.HttpExtend.MapPath("网站\\") + reg.Groups[1].Value; if (File.Exists(path)) { File.Delete(path); return PutSuccess; } } return PutData("删除失败,此文件不存在或无法识别路径"); } /// /// 查询群发任务 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult GetQunfas() { var Keyword = GetString("Keyword"); var PageIndex = GetInt("PageIndex", true); var PageSize = GetInt("PageSize", true); if (PageSize > 100) PageSize = 100; var TotalNumber = 0; var RobotId = GetInt("RobotId"); var exp = Expressionable.Create(); if (RobotId != 0) { exp.And((q, r) => q.RobotId == RobotId); } if (!string.IsNullOrEmpty(Keyword)) { exp.And((q, r) => q.Name.Contains(Keyword)); } var DataList = Db.Queryable() .LeftJoin((q, r) => q.Id == r.Id) .Where(exp.ToExpression()) .Select((q, r) => new QunfaShow() { Id = q.Id, BuyOrderDay = q.BuyOrderDay, Content = q.Content, CreateTime = q.CreateTime, FinishTime = q.FinishTime, GroupId = q.GroupId, Name = q.Name, NotBuy = q.NotBuy, NotInvitation = q.NotInvitation, RobotId = RobotId, RobotNick = r.Nickname, SendMaxSleepInterval = q.SendMaxSleepInterval, SendMinSleepInterval = q.SendMinSleepInterval, SendNumberInterval = q.SendNumberInterval, StartTime = q.StartTime, Status = q.Status, TodayMaxNumber = q.TodayMaxNumber, Type = q.Type, RobotUserName = r.Username, UserType = r.UserType }) .ToPageList(PageIndex, PageSize, ref TotalNumber); return PutData(new PageResult(DataList, TotalNumber, PageSize, PageIndex)); } /// /// 新增群发 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult AddQunfa() { try { Qunfa qunfa = new Qunfa(); qunfa.Name = GetString("Name", true); qunfa.StartTime = GetTime("StartTime", true); qunfa.SendNumberInterval = GetInt("SendNumberInterval", true); qunfa.SendMinSleepInterval = GetInt("SendMinSleepInterval", true); qunfa.SendMaxSleepInterval = GetInt("SendMaxSleepInterval", true); qunfa.TodayMaxNumber = GetInt("TodayMaxNumber", true); qunfa.Type = GetEnum("Type", true); switch (qunfa.Type) { case QunfaType.全部好友: break; case QunfaType.分组好友: qunfa.GroupId = GetIntList("GroupId", true); break; case QunfaType.长时间未下单: qunfa.BuyOrderDay = GetInt("BuyOrderDay", true); break; case QunfaType.满足指定条件: qunfa.NotBuy = GetBoolean("NotBuy", true); qunfa.NotInvitation = GetBoolean("NotInvitation", true); break; default: break; } qunfa.Content = GetString("Content", true); List RobotIds = null; if (qunfa.Type == QunfaType.全部好友) { RobotIds = Db.Queryable().Select(f => f.Id).ToList(); } else { RobotIds = GetIntList("RobotIds"); } if (RobotIds != null && RobotIds.Count > 0) { foreach (var RobotId in RobotIds) { var qf = qunfa.CopyQunfa(RobotId);//克隆一个自己 if (qf.GroupId == null) { qf.GroupId = new List(); } qf.Id = Db.Insertable(qf).ExecuteReturnIdentity(); Client.SendClientMsg(RobotId, DeviceMessageType.添加群发任务, new { Id = qf.Id }); } } else return PutData("暂未发现,可用的机器人!"); return PutSuccess; } catch (Exception ex) { return PutData(ex.Message); } } /// /// 设置群发任务状态 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult SetQunfaStatus() { var QunfaId = GetInt("QunfaId", true); var Qunfa = Db.Queryable().Single(f => f.Id == QunfaId); if (Qunfa == null) return PutData("对不起,任务不存在!"); if (Qunfa.Status == QunfaStatus.完成) return PutData("该任务已完成,无法修改!"); var Status = GetEnum("QunfaStatus"); Qunfa.Status = Status; if (Qunfa.Status == QunfaStatus.完成) Qunfa.FinishTime = DateTime.Now; Db.Updateable(Qunfa).UpdateColumns(f => new { f.Status, f.FinishTime }).ExecuteCommand(); Client.SendClientMsg(Qunfa.RobotId, DeviceMessageType.修改群发任务状态, new { Id = QunfaId }); return PutSuccess; } /// /// 删除群发任务 /// /// [System.Web.Http.HttpPost, ErrorFilter] public WebResult DelQunfa() { var Id = GetInt("Id", true); var Qunfa = Db.Queryable().Single(f => f.Id == Id); if (Qunfa == null) return PutData("删除失败,未找到数据!"); Client.SendClientMsg(Qunfa.RobotId, DeviceMessageType.删除群发任务, new { Id = Id }); Db.Deleteable().Where(f => f.Id == Id).ExecuteCommand(); var TableName = Db.SplitHelper().GetTableName(Qunfa.CreateTime);//根据时间获取表名; Db.Deleteable().Where(f => f.QunfaId == Qunfa.Id).SplitTable(tas => tas.InTableNames(TableName)).ExecuteCommand(); return PutSuccess; } } }