|
|
@@ -3319,7 +3319,7 @@ Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _m
|
|
|
}
|
|
|
|
|
|
// 数据邮件存储在数据库
|
|
|
- StringBuilder msgSb = new StringBuilder();
|
|
|
+ var msgSb = new StringBuilder();
|
|
|
|
|
|
foreach (var client in clientInfoSources)
|
|
|
{
|
|
|
@@ -3341,6 +3341,8 @@ Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _m
|
|
|
invAiInfo.AiCrawledDetails = invAiInfo.AiCrawledDetails.Where(x => !dto.Guids.Contains(x.Guid)).ToList();
|
|
|
// 再添加AI生成的邮件数据
|
|
|
invAiInfo.AiCrawledDetails.AddRange(clientInfoSources);
|
|
|
+ // 排序
|
|
|
+ invAiInfo.AiCrawledDetails = invAiInfo.AiCrawledDetails.OrderBy(x => x.OperatedAt).ToList();
|
|
|
|
|
|
var update = await _sqlSugar.Updateable(invAiInfo).UpdateColumns(x => x.AiCrawledDetails).ExecuteCommandAsync();
|
|
|
if (update < 1)
|
|
|
@@ -3388,15 +3390,16 @@ Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _m
|
|
|
|
|
|
var datas = dataList.Where(x => x.Guid != dto.Guid).ToList();
|
|
|
datas.Add(editInfo);
|
|
|
- invAiInfo.AiCrawledDetails = datas;
|
|
|
+ // 排序
|
|
|
+ invAiInfo.AiCrawledDetails = datas.OrderBy(x => x.OperatedAt).ToList();
|
|
|
|
|
|
var editUpd = await _sqlSugar.Updateable(invAiInfo).UpdateColumns(x => x.AiCrawledDetails).ExecuteCommandAsync();
|
|
|
if (editUpd < 1)
|
|
|
{
|
|
|
- return Ok(JsonView(true, "邮件失败"));
|
|
|
+ return Ok(JsonView(true, "邮件保存失败"));
|
|
|
}
|
|
|
|
|
|
- return Ok(JsonView(true, "邮件成功"));
|
|
|
+ return Ok(JsonView(true, "邮件保存成功"));
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -3429,45 +3432,66 @@ Inner Join Sys_Department as d With(Nolock) On u.DepId=d.Id Where m.Id={0} ", _m
|
|
|
|
|
|
if (string.IsNullOrEmpty(userInfo.Email)) Ok(JsonView(false, "当前账号未配置邮箱,请先配置邮箱!"));
|
|
|
|
|
|
- var seedEmails = new List<EmailInfo>();
|
|
|
+ var msgSb = new StringBuilder();
|
|
|
#region 发送邮件
|
|
|
|
|
|
foreach (var item in seedInvInfos)
|
|
|
{
|
|
|
- int seedStatus = 4;
|
|
|
-
|
|
|
+ int seedStatus = 5;
|
|
|
|
|
|
- try
|
|
|
+ if (!string.IsNullOrEmpty(item.EmailInfo.EmailTitle) && !string.IsNullOrEmpty(item.EmailInfo.EmailContent))
|
|
|
{
|
|
|
- var req = new EmailRequestDto()
|
|
|
+ try
|
|
|
{
|
|
|
- ToEmails = new List<string> { "johnny.yang@pan-american-intl.com" },
|
|
|
- CcEmails = new List<string> { userInfo.Email },
|
|
|
- BccEmails = new List<string> { userInfo.Email },
|
|
|
- Subject = "测试邮件 - 来自企业微信API",
|
|
|
- Body = "这是一封通过企业微信API发送的测试邮件,包含附件。",
|
|
|
- Files = Array.Empty<IFormFile>()
|
|
|
- };
|
|
|
- var response = await _qiYeWeChatApiService.EmailSendAsync(req);
|
|
|
- if (response.errcode == 0)
|
|
|
+ var req = new EmailRequestDto()
|
|
|
+ {
|
|
|
+ ToEmails = new List<string> { item.Email },
|
|
|
+ CcEmails = new List<string> { userInfo.Email },
|
|
|
+ BccEmails = new List<string> { userInfo.Email },
|
|
|
+ Subject = item.EmailInfo.EmailTitle,
|
|
|
+ Body = item.EmailInfo.EmailContent,
|
|
|
+ Files = Array.Empty<IFormFile>()
|
|
|
+ };
|
|
|
+ var response = await _qiYeWeChatApiService.EmailSendAsync(req);
|
|
|
+ if (response.errcode == 0)
|
|
|
+ {
|
|
|
+ seedStatus = 4;
|
|
|
+ item.EmailInfo.Status = seedStatus;
|
|
|
+ item.EmailInfo.Operator = userInfo?.CnName ?? "";
|
|
|
+ item.EmailInfo.OperatedAt = DateTime.Now;
|
|
|
+
|
|
|
+ msgSb.AppendLine($"{item.NameCn}({item.Email}):邮件发送成功!");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ msgSb.AppendLine($"{item.NameCn}({item.Email}):邮件发送失败(msg:{response.errmsg})");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
{
|
|
|
- seedStatus = 3;
|
|
|
+ _logger.LogError(ex, "商邀AI调用企业微信邮件API失败。");
|
|
|
+ msgSb.AppendLine($"{item.NameCn}({item.Email}):邮件发送失败(msg:商邀AI调用企业微信邮件API失败。)");
|
|
|
}
|
|
|
-
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- _logger.LogError(ex, "商邀AI调用企业微信邮件API失败。");
|
|
|
}
|
|
|
-
|
|
|
- seedEmails.Add(new() { EmailContent = "邮件内容", Status = seedStatus, OperatedAt = DateTime.Now, Operator = userInfo.CnName });
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
+ // 先删除原有数据中对应的单位数据
|
|
|
+ invAiInfo.AiCrawledDetails = invAiInfo.AiCrawledDetails.Where(x => !dto.Guids.Contains(x.Guid)).ToList();
|
|
|
+ // 再添加AI生成的邮件数据
|
|
|
+ invAiInfo.AiCrawledDetails.AddRange(seedInvInfos);
|
|
|
+ // 排序
|
|
|
+ invAiInfo.AiCrawledDetails = invAiInfo.AiCrawledDetails.OrderBy(x=> x.OperatedAt).ToList();
|
|
|
|
|
|
+ var update = await _sqlSugar.Updateable(invAiInfo).UpdateColumns(x => x.AiCrawledDetails).ExecuteCommandAsync();
|
|
|
+ if (update < 1)
|
|
|
+ {
|
|
|
+ return Ok(JsonView(false, $"邮件AI发送,数据保存失败!"));
|
|
|
+ }
|
|
|
|
|
|
- return Ok(JsonView(true, "发送成功"));
|
|
|
+ return Ok(JsonView(true, msgSb.ToString()));
|
|
|
}
|
|
|
|
|
|
#endregion
|