crm.core/code/Crm.Core.MsgTool.WebApi/Controllers/MsgToolController.cs

376 lines
13 KiB
C#

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;
}
/// <summary>
/// 根据计划id创建任务
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("TasksByPlan")]
public async Task CreateTasksByPlan([FromBody] CreateTasksByPlanDto dto)
{
await _msgToolDomain.CreateTasksByPlan(dto);
}
/// <summary>
/// 根据任务id创建命令
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("TaskCmdByTaskId")]
public async Task CreateTaskCmdByTaskId([FromBody] CreateTaskCmdByTaskIdDto dto)
{
await _msgToolDomain.CreateTaskCmdByTaskId(dto);
}
/// <summary>
/// 修改任务状态
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("ChangeTaskStatus")]
public async Task<bool> ChangeTaskStatus([FromBody] ChangeTaskStatusDto dto)
{
await _msgToolDomain.ChangeTaskStatus(dto);
return true;
}
/// <summary>
/// 获取OSS临时访问凭证
/// </summary>
/// <returns></returns>
[HttpPost("GetOSSAccess")]
public async Task<OssAccessModel> 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;
}
/// <summary>
/// 创建任务
/// </summary>
/// <returns></returns>
[HttpPost("CreateTask")]
public async Task<MsgToolTask> CreateTask([FromBody] MsgToolTaskCreateDto dto) {
var task=await _msgToolDomain.CreateTask(dto);
return task;
}
/// <summary>
/// 移动端 获取任务发送记录
/// </summary>
/// <returns></returns>
[HttpPost("GetMsgToolSendLog")]
public async Task<List<MsgToolSendLog>> GetMsgToolSendLog([FromBody] MsgToolTaskSendLogDto dto) {
var log = await _msgToolDomain.GetMsgToolTaskSendLog(dto);
return log;
}
/// <summary>
/// 软件获取任务详情
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("GetMsgTaskInfo")]
public async Task<MsgTaskInfo> 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;
}
/// <summary>
/// 获取执行频率配置
/// </summary>
/// <returns></returns>
[HttpPost("GetTaskTimeConfig")]
public async Task<IList<ConfigItem>> GetTaskTimeConfig()
{
return await _msgToolDomain.GetMsgConfig();
}
/// <summary>
/// 软件 反馈任务执行情况
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("PushMsgTaskRes")]
public async Task<bool> PushMsgTaskRes([FromBody] PushTaskResDto dto)
{
await _msgToolDomain.UpdateTaskStatus(dto);
return true;
}
/// <summary>
/// 根据计划id取消任务
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("CancelTasksByPlan")]
public async Task CancelTasksByPlan([FromBody] CreateTasksByPlanDto dto)
{
await _msgToolDomain.CancelTasksByPlan(dto);
}
/// <summary>
/// 获取分群列表
/// </summary>
/// <returns></returns>
[HttpGet("UserGroupList")]
public async Task<List<UserGroupDto>> GetUserGroupList([FromQuery] decimal eid)
{
return await _msgToolDomain.GetUserGroupList(eid);
}
/// <summary>
/// 获取执行任务列表
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpGet("ExecuteTaskPage")]
public async Task<PageResult<MsgToolExecuteDto>> SearchExecuteTaskPage([FromQuery] SearchExecuteTaskDto dto)
{
return await _msgToolDomain.SearchExecuteTaskPage(dto);
}
/// <summary>
/// 获取任务列表
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpGet("MsgToolTaskPage")]
public async Task<PageResult<MsgToolTaskDto>> SearchMsgToolTaskPage([FromQuery] SearchMsgToolTaskDto dto)
{
return await _msgToolDomain.SearchMsgToolTaskPage(dto);
}
/// <summary>
/// 根据任务id取消任务指令
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("CancelTaskCmd")]
public async Task CancelTaskCmd([FromBody] CancelTaskCmdByTaskDto dto)
{
await _msgToolDomain.CancelTaskCmd(dto);
}
/// <summary>
/// 查看定时任务
/// </summary>
/// <returns></returns>
[HttpGet("TimingTasks")]
public async Task<List<MsgToolTaskEventDto>> GetTimingTasks()
{
return await _msgToolDomain.GetTimingTasks();
}
/// <summary>
/// 查看群发人员详情
/// </summary>
/// <returns></returns>
[HttpGet("TaskCmdDetail")]
public async Task<PageResult<CmdDetailDto>> GetTaskCmdDetail([FromQuery] SearchMsgToolCmdDetailDto queryDto)
{
return await _msgToolDomain.GetTaskCmdDetail(queryDto);
}
/// <summary>
/// 根据任务id取消任务指令
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("SetCmdDetailEnable")]
public async Task SetCmdDetailEnable([FromBody] SetCmdDetailEnableDto data)
{
await _msgToolDomain.SetCmdDetailEnable(data);
}
/// <summary>
/// 获取命令是否能执行
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpGet("GetExecCmdEnable")]
public async Task GetExecCmdEnable([FromQuery] SerachCmdEnableDto dto)
{
await _msgToolDomain.GetExecCmdEnable(dto);
}
/// <summary>
/// 获取版本号信息
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpGet("GetMsgToolVersion")]
public async Task<MsgToolVersionModel> GetMsgToolVersion()
{
return await _msgToolDomain.GetMsgToolVersion();
}
/// <summary>
/// 获取版本号信息
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("SetMsgToolVersion")]
public async Task<bool> SetMsgToolVersion([FromBody] MsgToolVersionModel model)
{
return await _msgToolDomain.SetMsgToolVersion(model);
}
/// <summary>
/// 获取pc软件最新版本号
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpGet("GetPcVersion")]
public async Task<string> 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;
}
/// <summary>
/// 获取需要更新的文件信息
/// </summary>
/// <param name="Version">版本号/版本文件夹全名</param>
/// <returns></returns>
[HttpGet("GetVersionFile")]
public async Task<IList<VersionFileItem>> GetVersionFile(string Version)
{
IList<VersionFileItem> res = new List<VersionFileItem>();
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<string> findFiles(string dirPath)
{
List<string> files = new List<string>();
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
/// <summary>
/// 获取客服企微
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpGet("GetWxWorkUser")]
public async Task<List<WxWorkModel>> GetWxWorkUser([FromQuery] EidQueryDto dto)
{
return await _msgToolDomain.GetWxWorkUser(dto);
}
/// <summary>
/// 获取客户企微
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpGet("GetOutWorkUser")]
public async Task<wwExtuserModel> GetOutWorkUser([FromQuery] OutExtuserQueryDto dto)
{
return await _msgToolDomain.GetOutWorkUser(dto);
}
/// <summary>
/// todo
/// </summary>
/// <returns></returns>
[HttpPost("GetUploadInfo")]
public async Task<string> GetUploadInfo()
{
return "";
}
#endregion
}
}