using Crm.Core.Entity.MsgTool; using Crm.Core.Entity.MsgTool.ResultView; using Crm.Core.MsgTool.Domain.Dto; using Crm.Core.MsgTool.Domain.Impl; using System.Security.Cryptography; using System.Text; namespace Crm.Core.MsgTool.WebApi.Controllers { public class MsgToolController : BaseController { private readonly IMsgToolDomain _msgToolDomain; public MsgToolController(IMsgToolDomain msgToolDomain) { _msgToolDomain = msgToolDomain; } /// /// 根据计划id创建任务 /// /// /// [HttpPost("TasksByPlan")] public async Task CreateTasksByPlan([FromBody] CreateTasksByPlanDto dto) { await _msgToolDomain.CreateTasksByPlan(dto); } /// /// 根据任务id创建命令 /// /// /// [HttpPost("TaskCmdByTaskId")] public async Task CreateTaskCmdByTaskId([FromBody] CreateTaskCmdByTaskIdDto dto) { await _msgToolDomain.CreateTaskCmdByTaskId(dto); } /// /// 修改任务状态 /// /// /// [HttpPost("ChangeTaskStatus")] public async Task ChangeTaskStatus([FromBody] ChangeTaskStatusDto dto) { await _msgToolDomain.ChangeTaskStatus(dto); return true; } /// /// 获取OSS临时访问凭证 /// /// [HttpPost("GetOSSAccess")] public async Task GetOSSAccess() { OssAccessModel res = new OssAccessModel(); var Credentials= await _msgToolDomain.GetOSSAccess(); res.region = "oss-cn-shanghai"; res.accessKeyId = Credentials.AccessKeyId; res.accessKeySecret = Credentials.AccessKeySecret; res.stsToken = Credentials.SecurityToken; res.bucket = "wxcrmbucket"; return res; } /// /// 创建任务 /// /// [HttpPost("CreateTask")] public async Task CreateTask([FromBody] MsgToolTaskCreateDto dto) { var task=await _msgToolDomain.CreateTask(dto); return task; } /// /// 移动端 获取任务发送记录 /// /// [HttpPost("GetMsgToolSendLog")] public async Task> GetMsgToolSendLog([FromBody] MsgToolTaskSendLogDto dto) { var log = await _msgToolDomain.GetMsgToolTaskSendLog(dto); return log; } /// /// 软件获取任务详情 /// /// /// [HttpPost("GetMsgTaskInfo")] public async Task GetMsgTaskInfo([FromBody] GetTaskCmdDto dto) { var res = new MsgTaskInfo(); res.msgToolTaskCmd = await _msgToolDomain.GetMsgToolTaskCmd(dto); if (res.msgToolTaskCmd != null) { res.msgToolTaskCmdDetails = await _msgToolDomain.GetMsgToolTaskCmdDetail(res.msgToolTaskCmd.PKID); } return res; } /// /// 获取执行频率配置 /// /// [HttpPost("GetTaskTimeConfig")] public async Task> GetTaskTimeConfig() { return await _msgToolDomain.GetMsgConfig(); } /// /// 软件 反馈任务执行情况 /// /// /// [HttpPost("PushMsgTaskRes")] public async Task PushMsgTaskRes([FromBody] PushTaskResDto dto) { await _msgToolDomain.UpdateTaskStatus(dto); return true; } /// /// 根据计划id取消任务 /// /// /// [HttpPost("CancelTasksByPlan")] public async Task CancelTasksByPlan([FromBody] CreateTasksByPlanDto dto) { await _msgToolDomain.CancelTasksByPlan(dto); } /// /// 获取分群列表 /// /// [HttpGet("UserGroupList")] public async Task> GetUserGroupList([FromQuery] decimal eid) { return await _msgToolDomain.GetUserGroupList(eid); } /// /// 获取执行任务列表 /// /// /// [HttpGet("ExecuteTaskPage")] public async Task> SearchExecuteTaskPage([FromQuery] SearchExecuteTaskDto dto) { return await _msgToolDomain.SearchExecuteTaskPage(dto); } /// /// 获取任务列表 /// /// /// [HttpGet("MsgToolTaskPage")] public async Task> SearchMsgToolTaskPage([FromQuery] SearchMsgToolTaskDto dto) { return await _msgToolDomain.SearchMsgToolTaskPage(dto); } /// /// 根据任务id取消任务指令 /// /// /// [HttpPost("CancelTaskCmd")] public async Task CancelTaskCmd([FromBody] CancelTaskCmdByTaskDto dto) { await _msgToolDomain.CancelTaskCmd(dto); } /// /// 查看定时任务 /// /// [HttpGet("TimingTasks")] public async Task> GetTimingTasks() { return await _msgToolDomain.GetTimingTasks(); } /// /// 查看群发人员详情 /// /// [HttpGet("TaskCmdDetail")] public async Task> GetTaskCmdDetail([FromQuery] SearchMsgToolCmdDetailDto queryDto) { return await _msgToolDomain.GetTaskCmdDetail(queryDto); } /// /// 根据任务id取消任务指令 /// /// /// [HttpPost("SetCmdDetailEnable")] public async Task SetCmdDetailEnable([FromBody] SetCmdDetailEnableDto data) { await _msgToolDomain.SetCmdDetailEnable(data); } /// /// 获取命令是否能执行 /// /// /// [HttpGet("GetExecCmdEnable")] public async Task GetExecCmdEnable([FromQuery] SerachCmdEnableDto dto) { await _msgToolDomain.GetExecCmdEnable(dto); } /// /// 获取版本号信息 /// /// /// [HttpGet("GetMsgToolVersion")] public async Task GetMsgToolVersion() { return await _msgToolDomain.GetMsgToolVersion(); } /// /// 获取版本号信息 /// /// /// [HttpPost("SetMsgToolVersion")] public async Task SetMsgToolVersion([FromBody] MsgToolVersionModel model) { return await _msgToolDomain.SetMsgToolVersion(model); } /// /// 获取pc软件最新版本号 /// /// /// [HttpGet("GetPcVersion")] public async Task GetPcVersion() { var dirPath = $"{Directory.GetCurrentDirectory()}/wwwroot/MsgTool/"; var versionList = Directory.GetDirectories(dirPath); var maxVersion = ""; for (int i = 0; i < versionList.Length; i++) { var item = versionList[i]; var version = item.Substring(item.LastIndexOf("/") + 1, item.Length - item.LastIndexOf("/") - 1); if (!version.Contains(".")) continue; if (maxVersion == "") maxVersion = version; for (int j = 0; j < maxVersion.Split(".").Length; j++) { int t = 0, nt = 0; if ((j + 1) > version.Split(".").Length) continue;//长度不一致直接跳过 if (int.TryParse(maxVersion.Split(".")[j], out t) && int.TryParse(version.Split(".")[j], out nt)) { if (nt > t) { maxVersion = version; break; } } else { break; } } } return maxVersion; } /// /// 获取需要更新的文件信息 /// /// 版本号/版本文件夹全名 /// [HttpGet("GetVersionFile")] public async Task> GetVersionFile(string Version) { IList res = new List(); var dirPath = $"{Directory.GetCurrentDirectory()}/wwwroot/MsgTool/{Version}"; if (Directory.Exists(dirPath)) { var files = findFiles(dirPath); foreach (var filepath in files) { VersionFileItem fileitem = new VersionFileItem(); FileStream file = new FileStream(filepath, System.IO.FileMode.Open); fileitem.filename = file.Name.Substring(file.Name.LastIndexOf("\\") + 1, file.Name.Length - file.Name.LastIndexOf("\\") - 1); fileitem.size = file.Length; fileitem.path = filepath.Replace("\\", "/").Replace(dirPath.Replace("\\", "/") + "/", ""); fileitem.downloadUrl = $"wwwroot/MsgTool/{Version}/{fileitem.path}"; #region md5 MD5 md5 = new MD5CryptoServiceProvider(); byte[] retVal = md5.ComputeHash(file); file.Close(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < retVal.Length; i++) { sb.Append(retVal[i].ToString("x2")); } fileitem.md5 = sb.ToString(); #endregion md5 res.Add(fileitem); } } Log.Information($"files.Length:{res.Count}"); return res; } private List findFiles(string dirPath) { List files = new List(); files = Directory.GetFiles(dirPath).ToList(); var directory = Directory.GetDirectories(dirPath); if (directory.Any()) { foreach (var dp in directory) { files.AddRange(findFiles(dp)); } } return files; } #region /// /// 获取客服企微 /// /// /// [HttpGet("GetWxWorkUser")] public async Task> GetWxWorkUser([FromQuery] EidQueryDto dto) { return await _msgToolDomain.GetWxWorkUser(dto); } /// /// 获取客户企微 /// /// /// [HttpGet("GetOutWorkUser")] public async Task GetOutWorkUser([FromQuery] OutExtuserQueryDto dto) { return await _msgToolDomain.GetOutWorkUser(dto); } /// /// todo /// /// [HttpPost("GetUploadInfo")] public async Task GetUploadInfo() { return ""; } #endregion } }