优化接口

This commit is contained in:
tongfei
2024-03-29 18:15:55 +08:00
parent 9c2982cec0
commit 285c6f31df
7 changed files with 57 additions and 35 deletions

View File

@@ -46,13 +46,15 @@ namespace WMS.Web.Api.Controllers
private readonly IWebHostEnvironment _env; private readonly IWebHostEnvironment _env;
private readonly ILoginService _loginService; private readonly ILoginService _loginService;
private readonly AppOptions _options; private readonly AppOptions _options;
private readonly ISendMessageService _sendMessageService;
public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories, public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories,
IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, IBasicsRepositories basicsRepositories, IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, IBasicsRepositories basicsRepositories,
IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, IOptions<AppOptions> options, ILoginService loginService, IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, IOptions<AppOptions> options, ILoginService loginService, ISendMessageService sendMessageService,
ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories, IOutStockService outStockService, IInStockTaskRepositories inStockTaskRepositories, ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories, IOutStockService outStockService, IInStockTaskRepositories inStockTaskRepositories,
IWebHostEnvironment env) IWebHostEnvironment env)
{ {
_loginService = loginService; _loginService = loginService;
_sendMessageService = sendMessageService;
_inStockTaskRepositories = inStockTaskRepositories; _inStockTaskRepositories = inStockTaskRepositories;
_basicsRepositories = basicsRepositories; _basicsRepositories = basicsRepositories;
_options = options?.Value; _options = options?.Value;
@@ -329,5 +331,15 @@ namespace WMS.Web.Api.Controllers
await _loginService.RefreshTokenNew(oldtoken, retoken); await _loginService.RefreshTokenNew(oldtoken, retoken);
return ""; return "";
} }
/// <summary>
/// 测试发送
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("Send")]
public async Task<Result> Send()
{
return await _sendMessageService.Execute();
}
} }
} }

View File

@@ -1,4 +1,4 @@
{ {
"Logging": { "Logging": {
"LogLevel": { "LogLevel": {
"Default": "Information", "Default": "Information",
@@ -28,7 +28,7 @@
}, },
"SoaOptions": { "SoaOptions": {
"ModuleID": 25, "ModuleID": 25,
"Url_V3": "https://dev.uc.v3.f2b211.com", //<EFBFBD><EFBFBD>ʽhttp://uc.v3.f2b211.com "Url_V3": "https://dev.uc.v3.f2b211.com", //正式http://uc.v3.f2b211.com
"Url": "http://dev.uc.f2b211.com", "Url": "http://dev.uc.f2b211.com",
"AppId": "100528847652388864", "AppId": "100528847652388864",
"AppSecret": "fa950a1fe690fe610338084b49db7db9", "AppSecret": "fa950a1fe690fe610338084b49db7db9",
@@ -49,55 +49,55 @@
"Qiniu": { "Qiniu": {
"AccessKey": "dOsTum4a5qvhPTBbZRPX0pIOU7PZWRX7htKjztms", "AccessKey": "dOsTum4a5qvhPTBbZRPX0pIOU7PZWRX7htKjztms",
"SecretKey": "KFxsGbnErkALFfeGdMa8QWTdodJbamMX0iznLe-q", "SecretKey": "KFxsGbnErkALFfeGdMa8QWTdodJbamMX0iznLe-q",
"Bucket": "orico-wms-test", //<EFBFBD><EFBFBD>ʽ orico-wms "Bucket": "orico-wms-test", //正式 orico-wms
"Url": "https://wmstestfile.f2b211.com/" //<EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://wmstestfile.f2b211.com/ <EFBFBD><EFBFBD>ʽ https://wmsfile.f2b211.com/ "Url": "https://wmstestfile.f2b211.com/" //测试 https://wmstestfile.f2b211.com/ 正式 https://wmsfile.f2b211.com/
}, },
//<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //定时任务配置项
"QuartzJobOptions": { "QuartzJobOptions": {
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD>ֵ //存储类型:键和值
"JobStoreTypeKey": "quartz.jobStore.type", "JobStoreTypeKey": "quartz.jobStore.type",
"JobStoreTypeValue": "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz", "JobStoreTypeValue": "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz",
//<EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mysql:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ //数据库驱动类型-这里是mysql:键和值
"JobStoreDriverDelegateTypeKey": "quartz.jobStore.driverDelegateType", "JobStoreDriverDelegateTypeKey": "quartz.jobStore.driverDelegateType",
"JobStoreDriverDelegateTypeValue": "Quartz.Impl.AdoJobStore.MySQLDelegate, Quartz", "JobStoreDriverDelegateTypeValue": "Quartz.Impl.AdoJobStore.MySQLDelegate, Quartz",
//<EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ׺:<3A><><EFBFBD><EFBFBD>ֵ //数据库表名前缀:键和值
"JobStoreTablePrefixKey": "quartz.jobStore.tablePrefix", "JobStoreTablePrefixKey": "quartz.jobStore.tablePrefix",
"JobStoreTablePrefixValue": "QRTZ_", "JobStoreTablePrefixValue": "QRTZ_",
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD>ֵ //数据源的名称:键和值
"JobStoreDataSourceKey": "quartz.jobStore.dataSource", "JobStoreDataSourceKey": "quartz.jobStore.dataSource",
"JobStoreDataSourceValue": "myDS", "JobStoreDataSourceValue": "myDS",
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD>ֵ //连接字符串:键和值
"JobStoreConnectionStringKey": "quartz.dataSource.myDS.connectionString", "JobStoreConnectionStringKey": "quartz.dataSource.myDS.connectionString",
"JobStoreConnectionStringValue": "Server=192.168.1.253; Database=wms_db;User Id=root;password=bf69f5755f97e943;port=3306;CharSet=gb2312;Connect Timeout=150;", "JobStoreConnectionStringValue": "Server=192.168.1.253; Database=wms_db;User Id=root;password=bf69f5755f97e943;port=3306;CharSet=gb2312;Connect Timeout=150;",
//mysql<EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD>ֵ //mysql提供器:键和值
"JobStoreProviderKey": "quartz.dataSource.myDS.provider", "JobStoreProviderKey": "quartz.dataSource.myDS.provider",
"JobStoreProviderValue": "MySql", "JobStoreProviderValue": "MySql",
//<EFBFBD><EFBFBD><EFBFBD>ʼִ<EFBFBD><EFBFBD> //几点开始执行
"JobStartHour": [ 15, 11, 1, 0, 0, 10 ], "JobStartHour": [ 15, 11, 1, 0, 0, 10 ],
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>ʼִ<EFBFBD><EFBFBD> //几分钟开始执行
"JobStartMinute": [ 30, 39, 30, 20, 5, 5 ], "JobStartMinute": [ 30, 39, 30, 20, 5, 5 ],
//ִ<EFBFBD><EFBFBD>Cron<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǽ<EFBFBD>Сʱor<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>or<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>or<EFBFBD><EFBFBD><EFBFBD><EFBFBD>or<EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> //执行Cron表达式可以是几小时or几分钟or几秒钟or几天or几周
"JobStartExpre": "0 0/30 * * * ?", "JobStartExpre": "0 0/30 * * * ?",
"JobStartExpreAmount": "0 50 23 * * ?", "JobStartExpreAmount": "0 50 23 * * ?",
//a.<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD>Ⱥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ //a.是否启用集群:键和值
"JobStoreClusteredKey": "quartz.jobStore.clustered", "JobStoreClusteredKey": "quartz.jobStore.clustered",
"JobStoreClusteredValue": true, "JobStoreClusteredValue": true,
//b.<EFBFBD><EFBFBD>Ⱥ<EFBFBD>е<EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD>ڵ㶼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ψһ<EFBFBD><EFBFBD> instanceId //b.集群中的每个节点都必须有一个唯一的 instanceId
// ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AUTO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // 通过将“AUTO”设置为该属性的值来完成
//<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>a<EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD> //备注a属性和b属性配套使用如果不开启集群这两个属性去掉
"JobStoreInstanceIdKey": "quartz.scheduler.instanceId", "JobStoreInstanceIdKey": "quartz.scheduler.instanceId",
"JobStoreInstanceIdValue": "AUTO", "JobStoreInstanceIdValue": "AUTO",
//<EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //以下可以自定义配置
"QuartzJobKey": "OpsJob", "QuartzJobKey": "OpsJob",
"QuartzJobValue": "OpsJobGroup", "QuartzJobValue": "OpsJobGroup",
"QuartzJobDescription": "OpsJob", "QuartzJobDescription": "OpsJob",
@@ -107,15 +107,15 @@
"EmailOptions": { "EmailOptions": {
"SmtpServer": "smtp.qiye.aliyun.com", "SmtpServer": "smtp.qiye.aliyun.com",
"SmtpPort": 587, "SmtpPort": 587,
"SenderName": "Ԫ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>", "SenderName": "元创时代",
"SendTitle": "<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>֪ͨ", "SendTitle": "【元创时代】-产品入库通知",
"SenderEmail": "info@f2b211.com", "SenderEmail": "info@f2b211.com",
"SenderEmailPwd": "K4h6GgxZYGMYV1Bb" "SenderEmailPwd": "K4h6GgxZYGMYV1Bb"
}, },
"SmsOptions": { "SmsOptions": {
"AccessKeyId": "LTAI5tBJg6KeDV2V1NiS7Ngi", "AccessKeyId": "LTAI5tBJg6KeDV2V1NiS7Ngi",
"AccessKeySecret": "MAC8bMovSFyCgRQGkfhVcL1jvLJ8cP", "AccessKeySecret": "MAC8bMovSFyCgRQGkfhVcL1jvLJ8cP",
"SignName": "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>", "SignName": "深圳市元创时代",
"TemplateCode": "SMS_465408787" "TemplateCode": "SMS_465408787"
} }
} }

View File

@@ -779,5 +779,11 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:WMS.Web.Api.Controllers.TestController.Send">
<summary>
测试发送
</summary>
<returns></returns>
</member>
</members> </members>
</doc> </doc>

View File

@@ -4164,7 +4164,7 @@
<param name="content"></param> <param name="content"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:WMS.Web.Domain.IService.ISendMessageService.SendEmail(System.Collections.Generic.List{MimeKit.MailboxAddress},System.String)"> <member name="M:WMS.Web.Domain.IService.ISendMessageService.SendEmail(System.Collections.Generic.List{MimeKit.MailboxAddress},System.String,System.String)">
<summary> <summary>
邮箱发送 邮箱发送
</summary> </summary>
@@ -5999,7 +5999,7 @@
<param name="content"></param> <param name="content"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:WMS.Web.Domain.Services.SendMessageService.SendEmail(System.Collections.Generic.List{MimeKit.MailboxAddress},System.String)"> <member name="M:WMS.Web.Domain.Services.SendMessageService.SendEmail(System.Collections.Generic.List{MimeKit.MailboxAddress},System.String,System.String)">
<summary> <summary>
邮箱发送消息 邮箱发送消息
</summary> </summary>

View File

@@ -28,7 +28,7 @@ namespace WMS.Web.Domain.IService
/// <param name="toMailList"></param> /// <param name="toMailList"></param>
/// <param name="textBody"></param> /// <param name="textBody"></param>
/// <returns></returns> /// <returns></returns>
Task<Result> SendEmail(List<MailboxAddress> toMailList, string textBody); Task<Result> SendEmail(List<MailboxAddress> toMailList, string textBody, string coustomerName);
/// <summary> /// <summary>
/// ///

View File

@@ -72,6 +72,7 @@ namespace WMS.Web.Domain.Services
SendSmsRequest request = new SendSmsRequest(); SendSmsRequest request = new SendSmsRequest();
request.PhoneNumbers = phoneNumbers; // 目标手机号 request.PhoneNumbers = phoneNumbers; // 目标手机号
request.SignName = _smsOptions.SignName; // 短信签名 request.SignName = _smsOptions.SignName; // 短信签名
//request.SignName = "深圳市元创时代"; // 短信签名
request.TemplateCode = _smsOptions.TemplateCode; // 短信模板编号 request.TemplateCode = _smsOptions.TemplateCode; // 短信模板编号
request.TemplateParam = "{\"material\":\"" + content+"\"}"; // 模板参数,根据实际情况填写 request.TemplateParam = "{\"material\":\"" + content+"\"}"; // 模板参数,根据实际情况填写
@@ -79,7 +80,7 @@ namespace WMS.Web.Domain.Services
{ {
// 发送短信 // 发送短信
SendSmsResponse response = client.GetAcsResponse(request); SendSmsResponse response = client.GetAcsResponse(request);
_logger.LogInformation("短信发送消息:成功->手机号码:" + phoneNumbers + " 内容:" + content); _logger.LogInformation($"短信发送消息:成功->短信签名:{_smsOptions.SignName}->手机号码:" + phoneNumbers + " 内容:" + content);
return true; return true;
} }
catch (ServerException e) catch (ServerException e)
@@ -101,19 +102,21 @@ namespace WMS.Web.Domain.Services
/// <param name="toMailList"></param> /// <param name="toMailList"></param>
/// <param name="textBody"></param> /// <param name="textBody"></param>
/// <returns></returns> /// <returns></returns>
public async Task<Result> SendEmail(List<MailboxAddress> toMailList,string textBody) public async Task<Result> SendEmail(List<MailboxAddress> toMailList,string textBody,string coustomerName)
{ {
// 创建 MimeMessage 实例 // 创建 MimeMessage 实例
MimeMessage message = new MimeMessage(); MimeMessage message = new MimeMessage();
message.From.Add(new MailboxAddress(_emailOptions.SenderName, _emailOptions.SenderEmail)); // 设置发件人姓名和邮箱地址 //message.From.Add(new MailboxAddress( _emailOptions.SenderName, _emailOptions.SenderEmail)); // 设置发件人姓名和邮箱地址
message.From.Add(new MailboxAddress("元创时代", _emailOptions.SenderEmail)); // 设置发件人姓名和邮箱地址
//message.To.Add(new MailboxAddress("Recipient Name", "244188119@qq.com")); // 设置收件人姓名和邮箱地址 //message.To.Add(new MailboxAddress("Recipient Name", "244188119@qq.com")); // 设置收件人姓名和邮箱地址
message.To.AddRange(toMailList); message.To.AddRange(toMailList);
message.Subject = _emailOptions.SendTitle+$"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"; // 设置邮件主题 //message.Subject = _emailOptions.SendTitle+$"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"; // 设置邮件主题
message.Subject =$"【元创时代】-产品入库通知{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"; // 设置邮件主题
// 创建邮件正文 // 创建邮件正文
BodyBuilder bodyBuilder = new BodyBuilder(); BodyBuilder bodyBuilder = new BodyBuilder();
bodyBuilder.TextBody = textBody; // 设置纯文本内容 //bodyBuilder.TextBody = textBody; // 设置纯文本内容
//bodyBuilder.HtmlBody = "<p>This is a <b>test</b> email sent from <i>.NETCore.MailKit</i>.lst</p>"; // 设置 HTML 内容 bodyBuilder.HtmlBody = $"<p>尊敬的{coustomerName},您好,您的以下产品已入库/可安排发货:\r\n<p><p>{textBody}</p>"; // 设置 HTML 内容
message.Body = bodyBuilder.ToMessageBody(); message.Body = bodyBuilder.ToMessageBody();
try try
@@ -223,14 +226,14 @@ namespace WMS.Web.Domain.Services
foreach (var det in item.Details) foreach (var det in item.Details)
{ {
if (i == item.Details.Count) if (i == item.Details.Count)
content = det.Specifications + " X 数量" + det.Qty; content = det.Specifications + " X 数量" +Convert.ToInt32(det.Qty);
else else
content = det.Specifications + " X 数量" + det.Qty + ""; content = det.Specifications + " X 数量" + Convert.ToInt32(det.Qty) + "";
i = i + 1; i = i + 1;
} }
//邮箱 //邮箱
await this.SendEmail(item.EmailList, content); await this.SendEmail(item.EmailList, content, item.CustomerName);
//短信 //短信
this.SendSms(item.PhoneNumbers, content); this.SendSms(item.PhoneNumbers, content);
} }

View File

@@ -25,6 +25,7 @@
<PackageReference Include="Qiniu" Version="8.0.0" /> <PackageReference Include="Qiniu" Version="8.0.0" />
<PackageReference Include="SkiaSharp" Version="2.80.3" /> <PackageReference Include="SkiaSharp" Version="2.80.3" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="5.5.0" /> <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="5.5.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="8.0.0" />
<PackageReference Include="Wkhtmltopdf.NetCore" Version="3.0.2" /> <PackageReference Include="Wkhtmltopdf.NetCore" Version="3.0.2" />
</ItemGroup> </ItemGroup>