feat 增加link发送类型

This commit is contained in:
2025-12-23 16:09:01 +08:00
parent bb10c62fab
commit 47ad57d861
6 changed files with 71 additions and 1 deletions

View File

@@ -14,4 +14,7 @@ public interface IDingTalkApi
[Post("/api/messages/dingtalk/workgrid/workmessage")]
Task SendWorkMessageByWorkGridAsync(JinkoSendWorkMessageRequest request);
[Post("/api/messages/dingtalk/messageurl")]
Task SendMessageUrlAsync(DingTalkMessageUrlRequest request);
}

View File

@@ -0,0 +1,10 @@
namespace Dlhis.Basic.Api.Requests;
public class DingTalkMessageUrlRequest
{
public string UserCode { get; set; }
public string Title { get; set; }
public string Text { get; set; }
public string PicUrl { get; set; }
public string MessageUrl { get; set; }
}

View File

@@ -28,4 +28,10 @@ public class MessagesController : ControllerBase
{
await _jinkoApiService.SendWorkMessageByWorkGridAsync(request);
}
[HttpPost("dingtalk/messageurl")]
public async Task SendMessageUrlAsync(DingTalkMessageUrlRequest request)
{
await _jinkoApiService.SendMessageUrlAsync(request);
}
}

View File

@@ -0,0 +1,10 @@
namespace Dlhis.Basic.Common.Message.Requests;
public class DingTalkMessageUrlRequest
{
public string UserCode { get; set; }
public string Title { get; set; }
public string Text { get; set; }
public string PicUrl { get; set; }
public string MessageUrl { get; set; }
}

View File

@@ -6,4 +6,6 @@ public interface IJinkoApiService : ISingletonDependency
{
Task SendWorkMessageAsync(DingTalkWorkMessageRequest request);
Task SendWorkMessageByWorkGridAsync(DingTalkWorkMessageRequest request);
Task SendMessageUrlAsync(DingTalkMessageUrlRequest request);
}

View File

@@ -114,4 +114,43 @@ public class JinkoApiService : IJinkoApiService
return oaInfo.Result.Data;
}
public async Task SendMessageUrlAsync(DingTalkMessageUrlRequest request)
{
request.Title.IsEmpty().ThrowIfTrue("发送标题不能为空");
request.Text.IsEmpty().ThrowIfTrue("发送内容不能为空");
request.UserCode.IsEmpty().ThrowIfTrue("发送用户不能为空");
request.MessageUrl.IsEmpty().ThrowIfTrue("消息链接不能为空");
request.PicUrl.IsEmpty().ThrowIfTrue("图片链接不能为空");
var token = await GetTokenAsync();
var users = await GetJinkoOaInfoByWorkCodes(new List<string> { request.UserCode });
var userIds = users.Select(x => x.Id).Join(",");
var body = new
{
agent_id = _agentId,
userid_list = userIds,
msg = new
{
msgtype = "link",
link = new
{
messageUrl = request.MessageUrl,
picUrl = request.PicUrl,
title = request.Title,
text = request.Text
}
}
}.ToJson();
var httpClient = _httpClientFactory.CreateClient("jinko.httpclient");
var url = $"/topapi/message/corpconversation/asyncsend_v2?access_token={token}";
var content = new StringContent(body, Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync(url, content);
var jsonResponse = await response.Content.ReadAsStringAsync();
var jObject = JObject.Parse(jsonResponse);
(jObject.Value<string>("errcode") == "0").ThrowIfFalse(jObject.Value<string>("errmsg"));
}
}