|
|
|
|
using Furion;
|
|
|
|
|
using Furion.EventBus;
|
|
|
|
|
using Furion.RemoteRequest.Extensions;
|
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
|
using Myshipping.Core.Entity;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace Myshipping.Core
|
|
|
|
|
{
|
|
|
|
|
public class DingTalkSubscriber : IEventSubscriber
|
|
|
|
|
{
|
|
|
|
|
private readonly ILogger<DingTalkSubscriber> _logger;
|
|
|
|
|
public DingTalkSubscriber(ILogger<DingTalkSubscriber> logger)
|
|
|
|
|
{
|
|
|
|
|
_logger = logger;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[EventSubscribe("DingTalkGroup:Send")]
|
|
|
|
|
public async Task SendDingTalkGroup(EventHandlerExecutingContext context)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogInformation($"收到钉钉发送消息订阅消息:{context.Source.Payload.ToJsonString()}");
|
|
|
|
|
|
|
|
|
|
var rep = App.GetService<SqlSugarRepository<DjyDingtalkGroupConfig>>();
|
|
|
|
|
|
|
|
|
|
dynamic obj = context.Source.Payload;
|
|
|
|
|
string code = obj.code;
|
|
|
|
|
var cfg = rep.FirstOrDefault(x => x.Code == code);
|
|
|
|
|
var postdata = new
|
|
|
|
|
{
|
|
|
|
|
text =
|
|
|
|
|
new
|
|
|
|
|
{
|
|
|
|
|
content = $"【{ obj.title}】\r\n{obj.content}\r\n----{cfg.Keyword}"
|
|
|
|
|
},
|
|
|
|
|
msgtype = "text"
|
|
|
|
|
};
|
|
|
|
|
_logger.LogInformation($"准备发送钉钉消息:{postdata.ToJsonString()}");
|
|
|
|
|
var rtn = await cfg.Url.SetBody(postdata).PostAsStringAsync();
|
|
|
|
|
_logger.LogInformation($"发送钉钉消息返回:{rtn}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[EventSubscribe("DingTalkGroup:SendAt")]
|
|
|
|
|
public async Task SendDingTalkGroupAt(EventHandlerExecutingContext context)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogInformation($"收到钉钉发送消息订阅消息:{context.Source.Payload.ToJsonString()}");
|
|
|
|
|
|
|
|
|
|
var rep = App.GetService<SqlSugarRepository<DjyDingtalkGroupConfig>>();
|
|
|
|
|
|
|
|
|
|
dynamic obj = context.Source.Payload;
|
|
|
|
|
string code = obj.code;
|
|
|
|
|
var cfg = rep.FirstOrDefault(x => x.Code == code);
|
|
|
|
|
var postdata = new
|
|
|
|
|
{
|
|
|
|
|
text =
|
|
|
|
|
new
|
|
|
|
|
{
|
|
|
|
|
content = $"【{ obj.title}】\r\n{obj.content}\r\n----{cfg.Keyword}"
|
|
|
|
|
},
|
|
|
|
|
msgtype = "text",
|
|
|
|
|
at = new
|
|
|
|
|
{
|
|
|
|
|
isAtAll = obj.atAll,
|
|
|
|
|
atMobiles = obj.atMobiles,
|
|
|
|
|
atUserIds = obj.atUserIds
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
_logger.LogInformation($"准备发送钉钉消息:{postdata.ToJsonString()}");
|
|
|
|
|
var rtn = await cfg.Url.SetBody(postdata).PostAsStringAsync();
|
|
|
|
|
_logger.LogInformation($"发送钉钉消息返回:{rtn}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|