using Common.Models.Enums; using Common.Models.JsonModels; using Common.Models.UnqTables; using Newtonsoft.Json; using Server.MyClass.Views; using SqlSugar; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Web.Http; namespace Server.Controllers.OnlineTools { public class PyqController : DefaultController { /// /// 获取机器人信息 /// /// [HttpPost, ErrorFilter] public WebResult GetRobotInfo() { var PageIndex = GetInt("PageIndex", true); var PageSize = GetInt("PageSize", true); var tNumber = 0; var Keyword = GetString("Keyword"); var exp = Expressionable.Create(); if (!string.IsNullOrEmpty(Keyword)) { exp.And(f => f.Nickname.Contains(Keyword)); } var DataList = Db.Queryable().Where(exp.ToExpression()) .Select(m => new RobotInfo { RobotId = m.Id, RobotName = m.Nickname }) .ToPageList(PageIndex, PageSize, ref tNumber); var res = new PageResult(DataList, tNumber, PageSize, PageIndex); return PutData(res); } /// /// 上传图片 /// /// 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("删除失败,此文件不存在或无法识别路径"); } /// /// 添加到发布朋友圈 /// /// public WebResult AddPyqPublish() { var Name = GetString("Name"); var ResIds = GetIntList("ResIds"); var Copywriting = GetString("Copywriting"); var Comment = GetString("Comment"); var SendTime = GetTime("SendTime"); var RobotIds = GetIntList("RobotIds"); var IsSendAll = GetBoolean("IsSendAll"); if (SendTime == DateTime.MinValue) SendTime = DateTime.Now; if (IsSendAll) { RobotIds.Clear(); RobotIds = Db.Queryable().Select(f => f.Id).ToList(); } else if (RobotIds.Count <= 0) return PutData("添加失败,至少需要选择一个机器人"); if (RobotIds.Count == 0) { return PutData("添加失败,暂未发现有任何可用的机器人"); } foreach (var RobotId in RobotIds) { var publish = new PyqPublish() { Name = Name, SendTime = SendTime, Comment = Comment, Copywriting = Copywriting, ResIds = ResIds.ToArray(), CreateTime = DateTime.Now, RobotId = RobotId }; publish.Id = Db.Insertable(publish).ExecuteReturnIdentity(); Client.SendClientMsg(RobotId, DeviceMessageType.添加定时发送朋友圈, new { Id = publish.Id }); } return PutSuccess; } /// /// 删除朋友圈任务 /// /// public WebResult DelSendRecord() { var Id = GetInt("Id", true); var pyqPublish = Db.Queryable().First(p => p.Id == Id); if (pyqPublish != null) { Client.SendClientMsg(pyqPublish.RobotId, DeviceMessageType.删除定时发送朋友圈, new { Id = Id }); return Db.Deleteable(pyqPublish).ExecuteCommandHasChange() ? PutSuccess : PutError; } return PutError; } /// /// 查询发送记录 /// /// [HttpPost, ErrorFilter] public WebResult GetSendRecord() { var RobotId = GetInt("RobotId"); var Keyword = GetString("Keyword"); var exp = Expressionable.Create(); //var pp = Db.Queryable().First(); if (RobotId > 0) exp.And(f => f.RobotId == RobotId); if (!string.IsNullOrEmpty(Keyword)) exp.And(f => f.Name.Contains(Keyword)); var PageIndex = GetInt("PageIndex", true); var PageSize = GetInt("PageSize", true); var tNumber = 0; var DataList = Db.Queryable() .LeftJoin((f, r) => f.RobotId == r.Id) .Where(exp.ToExpression()) .Select((f, r) => new PyqPublishShow { Id = f.Id, Name = f.Name, RobotId = f.RobotId, RobotNickname = r.Nickname, SendTime = f.SendTime, IsSend = f.IsSend, RobotUserName = r.Username, UserType = r.UserType, ResIds = f.ResIds, Comment = f.Comment, Copywriting = f.Copywriting }) .ToPageList(PageIndex, PageSize, ref tNumber); var res = new PageResult(DataList, tNumber, PageSize, PageIndex); return PutData(res); } } }