72 lines
2.4 KiB
C#
72 lines
2.4 KiB
C#
|
|
using AutoNotificatPhone.Models;
|
|||
|
|
using Common;
|
|||
|
|
using Microsoft.AspNetCore.Http;
|
|||
|
|
using Microsoft.AspNetCore.Mvc;
|
|||
|
|
using NLog;
|
|||
|
|
using System;
|
|||
|
|
using System.Text.Json;
|
|||
|
|
|
|||
|
|
namespace AutoNotificatPhone.Controllers
|
|||
|
|
{
|
|||
|
|
[Route("api/[controller]/[action]")]
|
|||
|
|
[ApiController]
|
|||
|
|
public class CallAndMsgController : ControllerBase
|
|||
|
|
{
|
|||
|
|
// 日志记录器
|
|||
|
|
public static Logger logger = LogManager.GetCurrentClassLogger();
|
|||
|
|
/// <summary>
|
|||
|
|
///
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="request">类型type: 1电话 2短信</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost]
|
|||
|
|
public ReturnInfo SendToPhone([FromBody] SmsRequest request)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
// 创建一个新的对象来存储转换后的值
|
|||
|
|
var notification = new
|
|||
|
|
{
|
|||
|
|
request.PhoneNumber,
|
|||
|
|
request.CallerName,
|
|||
|
|
request.Content,
|
|||
|
|
request.Type,
|
|||
|
|
// 转换时间值为 ISO 8601 格式字符串
|
|||
|
|
StartingPoint = ConvertTimestampToIso(request.StartingPoint),
|
|||
|
|
DeadLine = ConvertTimestampToIso(request.DeadLine)
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 生成唯一的NoticeID
|
|||
|
|
string noticeId = "MsgAndCall";
|
|||
|
|
|
|||
|
|
// 将转换后的通知内容发布到redis
|
|||
|
|
CSRedisCacheHelper.Publish(noticeId, Newtonsoft.Json.JsonConvert.SerializeObject(notification));
|
|||
|
|
logger.Error($"执行发送任务:" + Newtonsoft.Json.JsonConvert.SerializeObject(request));
|
|||
|
|
return new ReturnInfo
|
|||
|
|
{
|
|||
|
|
isok = true,
|
|||
|
|
message = request.Type == "1" ? "电话已加入拨打队列" : "短信已加入发送队列",
|
|||
|
|
status = 200,
|
|||
|
|
response = "success"
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
return new ReturnInfo
|
|||
|
|
{
|
|||
|
|
isok = false,
|
|||
|
|
message = ex.Message,
|
|||
|
|
status = 500,
|
|||
|
|
response = ""
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 将时间戳转换为 ISO 8601 格式字符串
|
|||
|
|
private long ConvertTimestampToIso(long timestamp)
|
|||
|
|
{
|
|||
|
|
DateTimeOffset dateTime = DateTimeOffset.FromUnixTimeSeconds(timestamp);
|
|||
|
|
return dateTime.ToUnixTimeSeconds();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|