From eeb1019e42abc3fc0e4b10b181b46c02b6e58843 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 09 十月 2025 15:16:21 +0800
Subject: [PATCH] feat:开发
---
ApiTools.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs | 14
ApiTools.Web.Entry/appsettings.json | 76 +++
ApiTools.Core/Utils/SmsUtils/ChengLiYe/ChengLiYeSmsOptions.cs | 4
ApiTools.Application/Resources/Queries/CheckHealthQueryHandler.cs | 27 +
ApiTools.Core/Utils/AliyunUtils/AliyunOptions.cs | 5
ApiTools.Core/Utils/SmsUtils/Services/ChengLiYeSmsService.cs | 6
ApiTools.Database.Migrations/REDEME.MD | 2
ApiTools.Core/Utils/SmsUtils/Services/ISmsService.cs | 3
ApiTools.Core/Utils/SmsUtils/SmsUtils.cs | 18
ApiTools.Database.Migrations/Migrations/20251009023927_UpdateSmsSetting1009.Designer.cs | 651 ++++++++++++++++++++++++++++++++++++++
ApiTools.Application/ApiTools.Application.xml | 15
ApiTools.Application/SmsUtils/Commands/SmsChengLiYeNotifyCommandHandler.cs | 21 +
ApiTools.Core/Models/Resources/Queries/CheckHealthQuery.cs | 17 +
ApiTools.Core/ApiTools.Core.xml | 46 +-
ApiTools.Core/Models/SmsUtils/Commands/SaveSmsSettingCommand.cs | 5
ApiTools.Core/Models/SmsUtils/Queries/GetSmsSettingQuery.cs | 5
ApiTools.Database.Migrations/Migrations/20251009023927_UpdateSmsSetting1009.cs | 59 +++
ApiTools.Application/SmsUtils/Commands/SmsAliyunNotifyCommandHandler.cs | 18 +
ApiTools.Core/Entities/SmsUtils/SmsSettingAccess.cs | 14
ApiTools.Core/Utils/SmsUtils/Services/AliyunSmsService.cs | 5
20 files changed, 925 insertions(+), 86 deletions(-)
diff --git a/ApiTools.Application/ApiTools.Application.xml b/ApiTools.Application/ApiTools.Application.xml
index f18a0cb..d083aed 100644
--- a/ApiTools.Application/ApiTools.Application.xml
+++ b/ApiTools.Application/ApiTools.Application.xml
@@ -136,6 +136,19 @@
鏌ヨ娓犻亾鐢ㄦ埛鍒嗛〉鍒楄〃鏁版嵁
</summary>
</member>
+ <member name="T:ApiTools.UserServer.Application.CheckHealthQueryHandler">
+ <summary>
+ 鍋ュ悍鏍¢獙
+ </summary>
+ </member>
+ <member name="M:ApiTools.UserServer.Application.CheckHealthQueryHandler.Handle(ApiTools.Core.CheckHealthQuery,System.Threading.CancellationToken)">
+ <summary>
+ 鍋ュ悍鏍¢獙
+ </summary>
+ <param name="request"></param>
+ <param name="cancellationToken"></param>
+ <returns></returns>
+ </member>
<member name="T:ApiTools.CommonServer.Application.SaveSmsSettingCommandHandler">
<summary>
淇濆瓨鐭俊閰嶇疆
@@ -159,7 +172,7 @@
闃块噷浜戠煭淇″钩鍙板洖浼犻�氱煡
</summary>
</member>
- <member name="M:ApiTools.CommonServer.Application.SmsAliyunNotifyCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{ApiTools.Core.SmsSetting},Furion.DatabaseAccessor.IRepository{ApiTools.Core.SmsLog},ApiTools.Core.SmsUtils)">
+ <member name="M:ApiTools.CommonServer.Application.SmsAliyunNotifyCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{ApiTools.Core.SmsSetting},Furion.DatabaseAccessor.IRepository{ApiTools.Core.SmsLog},ApiTools.Core.SmsUtils,Furion.HttpRemote.IHttpRemoteService)">
<summary>
闃块噷浜戠煭淇″钩鍙板洖浼犻�氱煡
</summary>
diff --git a/ApiTools.Application/Resources/Queries/CheckHealthQueryHandler.cs b/ApiTools.Application/Resources/Queries/CheckHealthQueryHandler.cs
new file mode 100644
index 0000000..d266419
--- /dev/null
+++ b/ApiTools.Application/Resources/Queries/CheckHealthQueryHandler.cs
@@ -0,0 +1,27 @@
+锘縰sing ApiTools.Core;
+using MediatR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.UserServer.Application
+{
+ /// <summary>
+ /// 鍋ュ悍鏍¢獙
+ /// </summary>
+ public class CheckHealthQueryHandler : IRequestHandler<CheckHealthQuery, bool>
+ {
+ /// <summary>
+ /// 鍋ュ悍鏍¢獙
+ /// </summary>
+ /// <param name="request"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public Task<bool> Handle(CheckHealthQuery request, CancellationToken cancellationToken)
+ {
+ return Task.FromResult(true);
+ }
+ }
+}
diff --git a/ApiTools.Application/SmsUtils/Commands/SmsAliyunNotifyCommandHandler.cs b/ApiTools.Application/SmsUtils/Commands/SmsAliyunNotifyCommandHandler.cs
index ab7383e..3329d1d 100644
--- a/ApiTools.Application/SmsUtils/Commands/SmsAliyunNotifyCommandHandler.cs
+++ b/ApiTools.Application/SmsUtils/Commands/SmsAliyunNotifyCommandHandler.cs
@@ -1,5 +1,7 @@
锘縰sing ApiTools.Core;
+using Furion;
using Furion.DatabaseAccessor;
+using Furion.HttpRemote;
using MediatR;
using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore;
@@ -18,13 +20,15 @@
public class SmsAliyunNotifyCommandHandler(
IRepository<SmsSetting> repSmsSetting,
IRepository<SmsLog> repSmsLog,
- ApiTools.Core.SmsUtils smsUtils
+ ApiTools.Core.SmsUtils smsUtils,
+ IHttpRemoteService httpRemoteService
)
: IRequestHandler<SmsAliyunNotifyCommand, SmsAliyunNotifyCommandResult>
{
private readonly IRepository<SmsSetting> repSmsSetting = repSmsSetting;
private readonly IRepository<SmsLog> repSmsLog = repSmsLog;
private readonly Core.SmsUtils smsUtils = smsUtils;
+ private readonly IHttpRemoteService httpRemoteService = httpRemoteService;
/// <summary>
/// 闃块噷浜戠煭淇″钩鍙板洖浼犻�氱煡
@@ -34,6 +38,18 @@
/// <returns></returns>
public async Task<SmsAliyunNotifyCommandResult> Handle(SmsAliyunNotifyCommand request, CancellationToken cancellationToken)
{
+ if (App.GetConfig<string>("Environment") == "Product")
+ {
+ try
+ {
+ await httpRemoteService.PostAsStringAsync("http://118.178.252.28:8780/api/common/sms/smsAliyunNotify",
+ builder => builder.SetJsonContent(request));
+ }
+ catch
+ {
+
+ }
+ }
var templateCodes = await EnumUtils.GetModel<EnumSmsTemplateCode>();
var msgIds = request.DistinctSelect(it => it.BizId.ToString());
var entities = await repSmsLog.AsQueryable()
diff --git a/ApiTools.Application/SmsUtils/Commands/SmsChengLiYeNotifyCommandHandler.cs b/ApiTools.Application/SmsUtils/Commands/SmsChengLiYeNotifyCommandHandler.cs
index ccb1e2f..fa100f2 100644
--- a/ApiTools.Application/SmsUtils/Commands/SmsChengLiYeNotifyCommandHandler.cs
+++ b/ApiTools.Application/SmsUtils/Commands/SmsChengLiYeNotifyCommandHandler.cs
@@ -1,5 +1,6 @@
-锘縰sing Baidu.Aip.BodyAnalysis;
-using ApiTools.Core;
+锘縰sing ApiTools.Core;
+using Baidu.Aip.BodyAnalysis;
+using Furion;
using Furion.DatabaseAccessor;
using Furion.HttpRemote;
using MediatR;
@@ -22,7 +23,8 @@
IHttpContextAccessor httpContextAccessor,
IRepository<SmsSetting> repSmsSetting,
IRepository<SmsLog> repSmsLog,
- ApiTools.Core.SmsUtils smsUtils
+ ApiTools.Core.SmsUtils smsUtils,
+ IHttpRemoteService httpRemoteService
) :
IRequestHandler<SmsChengLiYeNotifyCommand, bool>
{
@@ -30,6 +32,7 @@
private readonly IRepository<SmsSetting> repSmsSetting = repSmsSetting;
private readonly IRepository<SmsLog> repSmsLog = repSmsLog;
private readonly ApiTools.Core.SmsUtils smsUtils = smsUtils;
+ private readonly IHttpRemoteService httpRemoteService = httpRemoteService;
/// <summary>
/// 璇氱珛涓氱煭淇″钩鍙板洖浼犻�氱煡
@@ -39,6 +42,18 @@
/// <returns></returns>
public async Task<bool> Handle(SmsChengLiYeNotifyCommand request, CancellationToken cancellationToken)
{
+ if (App.GetConfig<string>("Environment") == "Product")
+ {
+ try
+ {
+ await httpRemoteService.PostAsStringAsync("http://118.178.252.28:8780/api/common/sms/smsChengLiYeNotify",
+ builder => builder.SetJsonContent(request));
+ }
+ catch
+ {
+
+ }
+ }
if (request.MsgReports.IsNotNull())
{
var templateCodes = await EnumUtils.GetModel<EnumSmsTemplateCode>();
diff --git a/ApiTools.Core/ApiTools.Core.xml b/ApiTools.Core/ApiTools.Core.xml
index 6adf6cf..9faeae3 100644
--- a/ApiTools.Core/ApiTools.Core.xml
+++ b/ApiTools.Core/ApiTools.Core.xml
@@ -764,16 +764,6 @@
鐭俊閫氶亾閰嶇疆
</summary>
</member>
- <member name="P:ApiTools.Core.SmsSettingAccess.ChannelId">
- <summary>
- 娓犻亾Id
- </summary>
- </member>
- <member name="P:ApiTools.Core.SmsSettingAccess.Channel">
- <summary>
- 娓犻亾
- </summary>
- </member>
<member name="P:ApiTools.Core.SmsSettingAccess.SettingId">
<summary>
閰嶇疆Id
@@ -792,6 +782,11 @@
<member name="P:ApiTools.Core.SmsSettingAccess.IsDisabled">
<summary>
鏄惁绂佺敤
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SmsSettingAccess.SignName">
+ <summary>
+ 绛惧悕鍚嶇О
</summary>
</member>
<member name="T:ApiTools.Core.Channel">
@@ -1651,6 +1646,11 @@
鐘舵��
</summary>
</member>
+ <member name="T:ApiTools.Core.CheckHealthQuery">
+ <summary>
+ 鍋ュ悍鏍¢獙
+ </summary>
+ </member>
<member name="T:ApiTools.Core.CheckVerifyCodeSmsCommand">
<summary>
鏍¢獙楠岃瘉鐮�
@@ -1724,6 +1724,11 @@
<member name="P:ApiTools.Core.SaveSmsSettingCommandAccess.Sort">
<summary>
鎺掑簭
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.SaveSmsSettingCommandAccess.SignName">
+ <summary>
+ 绛惧悕鍚嶇О
</summary>
</member>
<member name="T:ApiTools.Core.SendSmsCommand">
@@ -2076,6 +2081,11 @@
鎺掑簭
</summary>
</member>
+ <member name="P:ApiTools.Core.GetSmsSettingQueryResultAccess.SignName">
+ <summary>
+ 绛惧悕鍚嶇О
+ </summary>
+ </member>
<member name="T:ApiTools.Core.AlipayUtils">
<summary>
闃块噷鏀粯宸ュ叿
@@ -2198,11 +2208,6 @@
<member name="P:ApiTools.Core.AliyunSMSOptions.Version">
<summary>
鐗堟湰
- </summary>
- </member>
- <member name="P:ApiTools.Core.AliyunSMSOptions.SignName">
- <summary>
- 绛惧悕鍚嶇О
</summary>
</member>
<member name="P:ApiTools.Core.AliyunSMSOptions.RegionId">
@@ -5699,11 +5704,6 @@
璇氱珛涓氶厤缃�
</summary>
</member>
- <member name="P:ApiTools.Core.ChengLiYeSmsOptions.SignName">
- <summary>
- 绛惧悕鍚嶇О
- </summary>
- </member>
<member name="P:ApiTools.Core.ChengLiYeSmsOptions.UserName">
<summary>
鐢ㄦ埛鍚�
@@ -5878,10 +5878,11 @@
鍥炰紶娑堟伅
</summary>
</member>
- <member name="M:ApiTools.Core.AliyunSmsService.SendAsync(System.String,ApiTools.Core.EnumSmsTemplateCode,System.Object,System.Threading.CancellationToken)">
+ <member name="M:ApiTools.Core.AliyunSmsService.SendAsync(System.String,System.String,ApiTools.Core.EnumSmsTemplateCode,System.Object,System.Threading.CancellationToken)">
<summary>
鍙戦�佺煭淇�
</summary>
+ <param name="signName"></param>
<param name="phoneNumber">鎵嬫満鍙风爜</param>
<param name="templateCode">妯℃澘浠g爜</param>
<param name="templateParam">妯℃澘鍙傛暟</param>
@@ -5904,10 +5905,11 @@
<param name="key"></param>
<returns></returns>
</member>
- <member name="M:ApiTools.Core.ISmsService.SendAsync(System.String,ApiTools.Core.EnumSmsTemplateCode,System.Object,System.Threading.CancellationToken)">
+ <member name="M:ApiTools.Core.ISmsService.SendAsync(System.String,System.String,ApiTools.Core.EnumSmsTemplateCode,System.Object,System.Threading.CancellationToken)">
<summary>
鍙戦�佺煭淇�
</summary>
+ <param name="signName"></param>
<param name="phoneNumber">鎵嬫満鍙风爜</param>
<param name="templateCode">妯℃澘浠g爜</param>
<param name="templateParam">妯℃澘鍙傛暟</param>
diff --git a/ApiTools.Core/Entities/SmsUtils/SmsSettingAccess.cs b/ApiTools.Core/Entities/SmsUtils/SmsSettingAccess.cs
index 28e56ef..2510b56 100644
--- a/ApiTools.Core/Entities/SmsUtils/SmsSettingAccess.cs
+++ b/ApiTools.Core/Entities/SmsUtils/SmsSettingAccess.cs
@@ -13,16 +13,6 @@
public class SmsSettingAccess : CommonEntity<MasterDbContextLocator>
{
/// <summary>
- /// 娓犻亾Id
- /// </summary>
- public Guid? ChannelId { get; set; }
-
- /// <summary>
- /// 娓犻亾
- /// </summary>
- public Channel Channel { get; set; }
-
- /// <summary>
/// 閰嶇疆Id
/// </summary>
public Guid SettingId { get; set; }
@@ -42,5 +32,9 @@
/// </summary>
public bool IsDisabled { get; set; }
+ /// <summary>
+ /// 绛惧悕鍚嶇О
+ /// </summary>
+ public string SignName { get; set; }
}
}
diff --git a/ApiTools.Core/Models/Resources/Queries/CheckHealthQuery.cs b/ApiTools.Core/Models/Resources/Queries/CheckHealthQuery.cs
new file mode 100644
index 0000000..176f403
--- /dev/null
+++ b/ApiTools.Core/Models/Resources/Queries/CheckHealthQuery.cs
@@ -0,0 +1,17 @@
+锘縰sing MediatR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core
+{
+ /// <summary>
+ /// 鍋ュ悍鏍¢獙
+ /// </summary>
+ [Resource([EnumResourceController.UserServerResource], Method = EnumResourceMethod.Get, AllowAnonymous = true)]
+ public class CheckHealthQuery : IRequest<bool>
+ {
+ }
+}
diff --git a/ApiTools.Core/Models/SmsUtils/Commands/SaveSmsSettingCommand.cs b/ApiTools.Core/Models/SmsUtils/Commands/SaveSmsSettingCommand.cs
index 2987e7f..7daa167 100644
--- a/ApiTools.Core/Models/SmsUtils/Commands/SaveSmsSettingCommand.cs
+++ b/ApiTools.Core/Models/SmsUtils/Commands/SaveSmsSettingCommand.cs
@@ -68,5 +68,10 @@
/// 鎺掑簭
/// </summary>
public int Sort { get; set; }
+
+ /// <summary>
+ /// 绛惧悕鍚嶇О
+ /// </summary>
+ public string SignName { get; set; }
}
}
diff --git a/ApiTools.Core/Models/SmsUtils/Queries/GetSmsSettingQuery.cs b/ApiTools.Core/Models/SmsUtils/Queries/GetSmsSettingQuery.cs
index 77e9e39..2416f0a 100644
--- a/ApiTools.Core/Models/SmsUtils/Queries/GetSmsSettingQuery.cs
+++ b/ApiTools.Core/Models/SmsUtils/Queries/GetSmsSettingQuery.cs
@@ -76,5 +76,10 @@
/// 鎺掑簭
/// </summary>
public int Sort { get; set; }
+
+ /// <summary>
+ /// 绛惧悕鍚嶇О
+ /// </summary>
+ public string SignName { get; set; }
}
}
diff --git a/ApiTools.Core/Utils/AliyunUtils/AliyunOptions.cs b/ApiTools.Core/Utils/AliyunUtils/AliyunOptions.cs
index d8952ac..adeb657 100644
--- a/ApiTools.Core/Utils/AliyunUtils/AliyunOptions.cs
+++ b/ApiTools.Core/Utils/AliyunUtils/AliyunOptions.cs
@@ -48,11 +48,6 @@
public string Version { get; set; }
/// <summary>
- /// 绛惧悕鍚嶇О
- /// </summary>
- public string SignName { get; set; }
-
- /// <summary>
/// 鍖哄煙Id
/// </summary>
public string RegionId { get; set; }
diff --git a/ApiTools.Core/Utils/SmsUtils/ChengLiYe/ChengLiYeSmsOptions.cs b/ApiTools.Core/Utils/SmsUtils/ChengLiYe/ChengLiYeSmsOptions.cs
index 0380d51..49da12a 100644
--- a/ApiTools.Core/Utils/SmsUtils/ChengLiYe/ChengLiYeSmsOptions.cs
+++ b/ApiTools.Core/Utils/SmsUtils/ChengLiYe/ChengLiYeSmsOptions.cs
@@ -18,10 +18,6 @@
}
/// <summary>
- /// 绛惧悕鍚嶇О
- /// </summary>
- public string SignName { get; set; }
- /// <summary>
/// 鐢ㄦ埛鍚�
/// </summary>
public string UserName { get; set; }
diff --git a/ApiTools.Core/Utils/SmsUtils/Services/AliyunSmsService.cs b/ApiTools.Core/Utils/SmsUtils/Services/AliyunSmsService.cs
index 790cb2e..80a01fe 100644
--- a/ApiTools.Core/Utils/SmsUtils/Services/AliyunSmsService.cs
+++ b/ApiTools.Core/Utils/SmsUtils/Services/AliyunSmsService.cs
@@ -38,13 +38,14 @@
/// <summary>
/// 鍙戦�佺煭淇�
/// </summary>
+ /// <param name="signName"></param>
/// <param name="phoneNumber">鎵嬫満鍙风爜</param>
/// <param name="templateCode">妯℃澘浠g爜</param>
/// <param name="templateParam">妯℃澘鍙傛暟</param>
/// <param name="cancellationToken">鍙栨秷浠ょ墝</param>
/// <returns></returns>
/// <exception cref="Oops"></exception>
- public async Task<SmsResponse> SendAsync(string phoneNumber, EnumSmsTemplateCode templateCode, object templateParam, CancellationToken cancellationToken)
+ public async Task<SmsResponse> SendAsync(string signName, string phoneNumber, EnumSmsTemplateCode templateCode, object templateParam, CancellationToken cancellationToken)
{
AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
{
@@ -56,7 +57,7 @@
AlibabaCloud.SDK.Dysmsapi20170525.Models.SendSmsRequest sendSmsRequest = new AlibabaCloud.SDK.Dysmsapi20170525.Models.SendSmsRequest
{
PhoneNumbers = phoneNumber,
- SignName = options.Value.SMS.SignName,
+ SignName = signName,
TemplateCode = options.Value.SMS.TemplateCodes[templateCode.ToString()],
TemplateParam = templateParam.ToJson()
};
diff --git a/ApiTools.Core/Utils/SmsUtils/Services/ChengLiYeSmsService.cs b/ApiTools.Core/Utils/SmsUtils/Services/ChengLiYeSmsService.cs
index cd47bbc..d21998e 100644
--- a/ApiTools.Core/Utils/SmsUtils/Services/ChengLiYeSmsService.cs
+++ b/ApiTools.Core/Utils/SmsUtils/Services/ChengLiYeSmsService.cs
@@ -24,7 +24,7 @@
private readonly IOptions<ChengLiYeSmsOptions> options = options;
private readonly IHttpRemoteService httpRemoteService = httpRemoteService;
- public async Task<SmsResponse> SendAsync(string phoneNumber, EnumSmsTemplateCode templateCode, object templateParam, CancellationToken cancellationToken)
+ public async Task<SmsResponse> SendAsync(string signName, string phoneNumber, EnumSmsTemplateCode templateCode, object templateParam, CancellationToken cancellationToken)
{
var content = options.Value.TemplateCodes[templateCode.ToString()];
if (templateParam != null)
@@ -40,9 +40,9 @@
var body = new ChengLiYeSmsSubmitRequest
{
UserName = options.Value.UserName,
- Sign = MD5Encryption.Encrypt($"{options.Value.UserName}{options.Value.Password}{phoneNumber}銆恵options.Value.SignName}銆憑content}"),
+ Sign = MD5Encryption.Encrypt($"{options.Value.UserName}{options.Value.Password}{phoneNumber}銆恵signName}銆憑content}"),
Mobile = phoneNumber,
- Content = $"銆恵options.Value.SignName}銆憑content}",
+ Content = $"銆恵signName}銆憑content}",
};
var log = new ThreeResourceLog
{
diff --git a/ApiTools.Core/Utils/SmsUtils/Services/ISmsService.cs b/ApiTools.Core/Utils/SmsUtils/Services/ISmsService.cs
index b3671bb..6da9da8 100644
--- a/ApiTools.Core/Utils/SmsUtils/Services/ISmsService.cs
+++ b/ApiTools.Core/Utils/SmsUtils/Services/ISmsService.cs
@@ -13,12 +13,13 @@
/// <summary>
/// 鍙戦�佺煭淇�
/// </summary>
+ /// <param name="signName"></param>
/// <param name="phoneNumber">鎵嬫満鍙风爜</param>
/// <param name="templateCode">妯℃澘浠g爜</param>
/// <param name="templateParam">妯℃澘鍙傛暟</param>
/// <param name="cancellationToken">鍙栨秷浠ょ墝</param>
/// <returns></returns>
/// <exception cref="Oops"></exception>
- Task<SmsResponse> SendAsync(string phoneNumber, EnumSmsTemplateCode templateCode, object templateParam, CancellationToken cancellationToken);
+ Task<SmsResponse> SendAsync(string signName, string phoneNumber, EnumSmsTemplateCode templateCode, object templateParam, CancellationToken cancellationToken);
}
}
diff --git a/ApiTools.Core/Utils/SmsUtils/SmsUtils.cs b/ApiTools.Core/Utils/SmsUtils/SmsUtils.cs
index 9c1aece..ead1784 100644
--- a/ApiTools.Core/Utils/SmsUtils/SmsUtils.cs
+++ b/ApiTools.Core/Utils/SmsUtils/SmsUtils.cs
@@ -165,18 +165,17 @@
/// <param name="setting"></param>
/// <param name="fromEntity"></param>
/// <returns></returns>
- private EnumSmsAccess? GetSmsAccess(SmsSetting setting, SmsLog fromEntity)
+ private SmsSettingAccess GetSmsAccess(SmsSetting setting, SmsLog fromEntity)
{
var accesses = setting.Accesses
.OrderBy(it => it.Sort)
.Where(it => !it.IsDisabled)
.ToList();
- EnumSmsAccess? access = null;
+ SmsSettingAccess? access = null;
if (fromEntity == null)
{
access = accesses
- .FirstOrDefault()
- ?.Access;
+ .FirstOrDefault();
}
else
{
@@ -187,8 +186,7 @@
{
access = accesses
.Where(it => it.Sort > sort)
- .FirstOrDefault()
- ?.Access;
+ .FirstOrDefault();
}
}
return access;
@@ -256,14 +254,14 @@
else
{
var access = GetSmsAccess(setting, fromEntity);
- if (access.HasValue)
+ if (access != null)
{
- var smsService = GetSmsService(access.Value);
+ var smsService = GetSmsService(access.Access);
var entity = new SmsLog
{
ChannelId = setting.ChannelId,
ChannelCreatedUserId = model.ChannelCreatedUserId,
- Access = access.Value,
+ Access = access.Access,
PhoneNumber = model.PhoneNumber,
TemplateCode = model.TemplateCode.ToString(),
TemplateParam = templateParam.ToJson(),
@@ -271,7 +269,7 @@
Status = EnumSmsStatus.Wait
};
await rep.InsertNowAsync(entity);
- var response = await smsService.SendAsync(model.PhoneNumber, model.TemplateCode, templateParam, cancellationToken);
+ var response = await smsService.SendAsync(access.SignName, model.PhoneNumber, model.TemplateCode, templateParam, cancellationToken);
if (response != null)
{
entity.Status = response.Status;
diff --git a/ApiTools.Database.Migrations/Migrations/20251009023927_UpdateSmsSetting1009.Designer.cs b/ApiTools.Database.Migrations/Migrations/20251009023927_UpdateSmsSetting1009.Designer.cs
new file mode 100644
index 0000000..4c9113f
--- /dev/null
+++ b/ApiTools.Database.Migrations/Migrations/20251009023927_UpdateSmsSetting1009.Designer.cs
@@ -0,0 +1,651 @@
+锘�// <auto-generated />
+using System;
+using ApiTools.EntityFramework.Core;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace ApiTools.Database.Migrations.Migrations
+{
+ [DbContext(typeof(DefaultDbContext))]
+ [Migration("20251009023927_UpdateSmsSetting1009")]
+ partial class UpdateSmsSetting1009
+ {
+ /// <inheritdoc />
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "9.0.2")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("ApiTools.Core.Channel", b =>
+ {
+ b.Property<Guid>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<string>("Code")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<Guid?>("CreatedChannelId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<DateTimeOffset>("CreatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("CreatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property<bool>("IsDisabled")
+ .HasColumnType("bit");
+
+ b.Property<string>("Name")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int");
+
+ b.Property<string>("TraceId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("UpdatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.ToTable("Channel");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.Resource", b =>
+ {
+ b.Property<Guid>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<string>("ActionName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ActionSummary")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<bool>("AllowAnonymous")
+ .HasColumnType("bit");
+
+ b.Property<string>("ApplicationName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ControllerName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ControllerSummary")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<Guid?>("CreatedChannelId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<DateTimeOffset>("CreatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("CreatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<bool>("CustomResponse")
+ .HasColumnType("bit");
+
+ b.Property<string>("DynamicAssemblyName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<bool>("FileUpload")
+ .HasColumnType("bit");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property<bool>("IsExpired")
+ .HasColumnType("bit");
+
+ b.Property<bool>("IsFromForm")
+ .HasColumnType("bit");
+
+ b.Property<int>("Method")
+ .HasColumnType("int");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("RequestTypeFullName")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("RequestTypeName")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ResponseTypeFullName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ResponseTypeName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("Route")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("RouteArea")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ServiceName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int");
+
+ b.Property<string>("TraceId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("UpdatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.ToTable("Resource");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.ScheduleJobDetail", b =>
+ {
+ b.Property<Guid>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<string>("AssemblyName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<bool>("Concurrent")
+ .HasColumnType("bit");
+
+ b.Property<Guid?>("CreatedChannelId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<DateTimeOffset>("CreatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("CreatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<string>("Description")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("GroupName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<bool>("IncludeAnnotations")
+ .HasColumnType("bit");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property<string>("JobId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("JobType")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("Properties")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int");
+
+ b.Property<string>("TraceId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("UpdatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.ToTable("ScheduleJobDetail");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.ScheduleJobTrigger", b =>
+ {
+ b.Property<Guid>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<string>("Args")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("AssemblyName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<Guid?>("CreatedChannelId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<DateTimeOffset>("CreatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("CreatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<string>("Description")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<long>("ElapsedTime")
+ .HasColumnType("bigint");
+
+ b.Property<DateTime?>("EndTime")
+ .HasColumnType("datetime2");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property<string>("JobId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTime?>("LastRunTime")
+ .HasColumnType("datetime2");
+
+ b.Property<long>("MaxNumberOfErrors")
+ .HasColumnType("bigint");
+
+ b.Property<long>("MaxNumberOfRuns")
+ .HasColumnType("bigint");
+
+ b.Property<DateTime?>("NextRunTime")
+ .HasColumnType("datetime2");
+
+ b.Property<long>("NumRetries")
+ .HasColumnType("bigint");
+
+ b.Property<long>("NumberOfErrors")
+ .HasColumnType("bigint");
+
+ b.Property<long>("NumberOfRuns")
+ .HasColumnType("bigint");
+
+ b.Property<bool>("ResetOnlyOnce")
+ .HasColumnType("bit");
+
+ b.Property<string>("Result")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("RetryTimeout")
+ .HasColumnType("int");
+
+ b.Property<bool>("RunOnStart")
+ .HasColumnType("bit");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int");
+
+ b.Property<bool>("StartNow")
+ .HasColumnType("bit");
+
+ b.Property<DateTime?>("StartTime")
+ .HasColumnType("datetime2");
+
+ b.Property<long>("Status")
+ .HasColumnType("bigint");
+
+ b.Property<string>("TraceId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("TriggerId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("TriggerType")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("UpdatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.ToTable("ScheduleJobTrigger");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.SmsLog", b =>
+ {
+ b.Property<Guid>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<int>("Access")
+ .HasColumnType("int");
+
+ b.Property<Guid?>("ChannelCreatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<Guid?>("ChannelId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<string>("Code")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<Guid?>("CreatedChannelId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<DateTimeOffset>("CreatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("CreatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<DateTime?>("Expiry")
+ .HasColumnType("datetime2");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property<bool>("IsUsed")
+ .HasColumnType("bit");
+
+ b.Property<string>("Message")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("PhoneNumber")
+ .IsRequired()
+ .HasMaxLength(11)
+ .HasColumnType("nvarchar(11)");
+
+ b.Property<string>("RequestId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int");
+
+ b.Property<int>("Status")
+ .HasColumnType("int");
+
+ b.Property<string>("TemplateCode")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("nvarchar(128)");
+
+ b.Property<string>("TemplateParam")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("TraceId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("UpdatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ChannelId");
+
+ b.ToTable("SmsLog");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.SmsSetting", b =>
+ {
+ b.Property<Guid>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<Guid?>("ChannelId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<Guid?>("CreatedChannelId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<DateTimeOffset>("CreatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("CreatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<int>("DailyMaxCount")
+ .HasColumnType("int");
+
+ b.Property<int>("HourlyMaxCount")
+ .HasColumnType("int");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property<bool>("IsDisabled")
+ .HasColumnType("bit");
+
+ b.Property<int>("MinutelyMaxCount")
+ .HasColumnType("int");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int");
+
+ b.Property<string>("TraceId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("UpdatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<bool>("WithoutParams")
+ .HasColumnType("bit");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ChannelId");
+
+ b.ToTable("SmsSetting");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.SmsSettingAccess", b =>
+ {
+ b.Property<Guid>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<int>("Access")
+ .HasColumnType("int");
+
+ b.Property<Guid?>("CreatedChannelId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<DateTimeOffset>("CreatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("CreatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property<bool>("IsDisabled")
+ .HasColumnType("bit");
+
+ b.Property<Guid>("SettingId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<string>("SignName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int");
+
+ b.Property<string>("TraceId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("UpdatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.HasIndex("SettingId");
+
+ b.ToTable("SmsSettingAccess");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.User", b =>
+ {
+ b.Property<Guid>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<string>("Avatar")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<Guid?>("ChannelId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<Guid?>("CreatedChannelId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<DateTimeOffset>("CreatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("CreatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<bool>("IsCheckPhoneNumber")
+ .HasColumnType("bit");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property<int>("Level")
+ .HasColumnType("int");
+
+ b.Property<string>("Name")
+ .HasMaxLength(32)
+ .HasColumnType("nvarchar(32)");
+
+ b.Property<string>("Password")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("PhoneNumber")
+ .HasMaxLength(11)
+ .HasColumnType("nvarchar(11)");
+
+ b.Property<string>("Remark")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int");
+
+ b.Property<int>("Status")
+ .HasColumnType("int");
+
+ b.Property<string>("TraceId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("Type")
+ .HasColumnType("int");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("UpdatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<string>("UserName")
+ .IsRequired()
+ .HasMaxLength(32)
+ .HasColumnType("nvarchar(32)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ChannelId");
+
+ b.ToTable("User");
+
+ b.HasData(
+ new
+ {
+ Id = new Guid("11111111-1111-1111-1111-111111111111"),
+ CreatedTime = new DateTimeOffset(new DateTime(2000, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+ IsCheckPhoneNumber = false,
+ IsDeleted = false,
+ Level = 999,
+ Name = "绠$悊鍛�",
+ Password = "iEYggKrMhQ3ASUGLobra1w==:fn/DsMJUbD9FGpvBvR3moMpMPptdxzZlourPVhU479I=",
+ Sort = 0,
+ Status = 10,
+ Type = 100,
+ UserName = "system"
+ });
+ });
+
+ modelBuilder.Entity("ApiTools.Core.SmsLog", b =>
+ {
+ b.HasOne("ApiTools.Core.Channel", "Channel")
+ .WithMany()
+ .HasForeignKey("ChannelId");
+
+ b.Navigation("Channel");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.SmsSetting", b =>
+ {
+ b.HasOne("ApiTools.Core.Channel", "Channel")
+ .WithMany()
+ .HasForeignKey("ChannelId");
+
+ b.Navigation("Channel");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.SmsSettingAccess", b =>
+ {
+ b.HasOne("ApiTools.Core.SmsSetting", "Setting")
+ .WithMany("Accesses")
+ .HasForeignKey("SettingId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Setting");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.User", b =>
+ {
+ b.HasOne("ApiTools.Core.Channel", "Channel")
+ .WithMany()
+ .HasForeignKey("ChannelId");
+
+ b.Navigation("Channel");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.SmsSetting", b =>
+ {
+ b.Navigation("Accesses");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/ApiTools.Database.Migrations/Migrations/20251009023927_UpdateSmsSetting1009.cs b/ApiTools.Database.Migrations/Migrations/20251009023927_UpdateSmsSetting1009.cs
new file mode 100644
index 0000000..532a20d
--- /dev/null
+++ b/ApiTools.Database.Migrations/Migrations/20251009023927_UpdateSmsSetting1009.cs
@@ -0,0 +1,59 @@
+锘縰sing System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace ApiTools.Database.Migrations.Migrations
+{
+ /// <inheritdoc />
+ public partial class UpdateSmsSetting1009 : Migration
+ {
+ /// <inheritdoc />
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropForeignKey(
+ name: "FK_SmsSettingAccess_Channel_ChannelId",
+ table: "SmsSettingAccess");
+
+ migrationBuilder.DropIndex(
+ name: "IX_SmsSettingAccess_ChannelId",
+ table: "SmsSettingAccess");
+
+ migrationBuilder.DropColumn(
+ name: "ChannelId",
+ table: "SmsSettingAccess");
+
+ migrationBuilder.AddColumn<string>(
+ name: "SignName",
+ table: "SmsSettingAccess",
+ type: "nvarchar(max)",
+ nullable: true);
+ }
+
+ /// <inheritdoc />
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "SignName",
+ table: "SmsSettingAccess");
+
+ migrationBuilder.AddColumn<Guid>(
+ name: "ChannelId",
+ table: "SmsSettingAccess",
+ type: "uniqueidentifier",
+ nullable: true);
+
+ migrationBuilder.CreateIndex(
+ name: "IX_SmsSettingAccess_ChannelId",
+ table: "SmsSettingAccess",
+ column: "ChannelId");
+
+ migrationBuilder.AddForeignKey(
+ name: "FK_SmsSettingAccess_Channel_ChannelId",
+ table: "SmsSettingAccess",
+ column: "ChannelId",
+ principalTable: "Channel",
+ principalColumn: "Id");
+ }
+ }
+}
diff --git a/ApiTools.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/ApiTools.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
index 95c7e64..09924a7 100644
--- a/ApiTools.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
+++ b/ApiTools.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
@@ -470,9 +470,6 @@
b.Property<int>("Access")
.HasColumnType("int");
- b.Property<Guid?>("ChannelId")
- .HasColumnType("uniqueidentifier");
-
b.Property<Guid?>("CreatedChannelId")
.HasColumnType("uniqueidentifier");
@@ -491,6 +488,9 @@
b.Property<Guid>("SettingId")
.HasColumnType("uniqueidentifier");
+ b.Property<string>("SignName")
+ .HasColumnType("nvarchar(max)");
+
b.Property<int>("Sort")
.HasColumnType("int");
@@ -504,8 +504,6 @@
.HasColumnType("uniqueidentifier");
b.HasKey("Id");
-
- b.HasIndex("ChannelId");
b.HasIndex("SettingId");
@@ -622,17 +620,11 @@
modelBuilder.Entity("ApiTools.Core.SmsSettingAccess", b =>
{
- b.HasOne("ApiTools.Core.Channel", "Channel")
- .WithMany()
- .HasForeignKey("ChannelId");
-
b.HasOne("ApiTools.Core.SmsSetting", "Setting")
.WithMany("Accesses")
.HasForeignKey("SettingId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
-
- b.Navigation("Channel");
b.Navigation("Setting");
});
diff --git a/ApiTools.Database.Migrations/REDEME.MD b/ApiTools.Database.Migrations/REDEME.MD
index 6211999..c9a0fa9 100644
--- a/ApiTools.Database.Migrations/REDEME.MD
+++ b/ApiTools.Database.Migrations/REDEME.MD
@@ -1,7 +1,7 @@
-------------------------------涓绘暟鎹簱---------------------------------------
鏂板杩佺Щ鏂囦欢
-dotnet ef migrations add UpdateSmsLog -s "../ApiTools.Web.Entry" -c DefaultDbContext
+dotnet ef migrations add UpdateSmsSetting1009 -s "../ApiTools.Web.Entry" -c DefaultDbContext
鍒犻櫎杩佺Щ鏂囦欢
dotnet ef migrations remove -s "../ApiTools.Web.Entry" -c DefaultDbContext
diff --git a/ApiTools.Web.Entry/appsettings.json b/ApiTools.Web.Entry/appsettings.json
index 46a87d9..7d20f94 100644
--- a/ApiTools.Web.Entry/appsettings.json
+++ b/ApiTools.Web.Entry/appsettings.json
@@ -6,8 +6,8 @@
"ApiTools": "Server=120.26.58.240; Database=Dev_ApiTools; User=bole;Password=Bole1472589;Encrypt=false;",
"ApiToolsLog": "Server=120.26.58.240; Database=Dev_ApiToolsLog; User=bole;Password=Bole1472589;Encrypt=false;"
- //"FlexJobApi": "Server=rm-bp1mt744021h1s6dg4o.sqlserver.rds.aliyuncs.com,2333; Database=Pro_FlexJobApi; User=bole;Password=Blcs20@%27;Encrypt=false;",
- //"FlexJobApiLog": "Server=rm-bp1mt744021h1s6dg4o.sqlserver.rds.aliyuncs.com,2333; Database=Pro_FlexJobApiLog; User=bole;Password=Blcs20@%27;Encrypt=false;",
+ //"ApiTools": "Server=rm-bp1mt744021h1s6dg4o.sqlserver.rds.aliyuncs.com,2333; Database=Pro_ApiTools; User=bole;Password=Blcs20@%27;Encrypt=false;",
+ //"ApiToolsLog": "Server=rm-bp1mt744021h1s6dg4o.sqlserver.rds.aliyuncs.com,2333; Database=Pro_ApiToolsLog; User=bole;Password=Blcs20@%27;Encrypt=false;",
},
"Consul": {
@@ -81,7 +81,6 @@
"MrChCode": "0040107980000NBCS000"
},
"ChengLiYeSms": {
- "SignName": "818浜哄姏鏃犲咖1",
"UserName": "nbcsxx",
"Password": "8af9s7",
"TemplateCodes": {
@@ -94,7 +93,31 @@
//鐢靛瓙绛鹃個绾�
"InviteElectronSign": "${name}璇锋偍鐐瑰嚮绛剧害http://testwww.81812333.com/sg/${code}",
//绛剧害鍦板潃
- "ElectronSignUrl": "${name}璇锋偍鐐瑰嚮绛剧害https://testwww.81812333.com/sgu/${code}"
+ "ElectronSignUrl": "${name}璇锋偍鐐瑰嚮绛剧害https://testwww.81812333.com/sgu/${code}",
+ //818骞冲彴鐭俊楠岃瘉鐮�
+ "VerifyCode": "楠岃瘉鐮侊細${code}锛岃浜�5鍒嗛挓鍐呭~鍐欙紝璇峰嬁娉勯湶锛岃嫢闈炴湰浜烘搷浣滆蹇界暐銆�",
+ //818璐﹀彿寮�閫氾紙绠$悊绔級
+ "CreateOperationAccount": "灏婃暚鐨勭敤鎴锋偍濂斤紝浜哄姏鏃犲咖璐﹀彿宸插紑閫氾紝璐﹀彿锛�${account}锛屽瘑鐮侊細${pwd}锛岃鐧诲綍缃戝潃 https://admin.81812333.com",
+ //818鎵嬫満鍙锋崲缁�
+ "UpdateUserPhoneNumberNotice": "灏婃暚鐨勭敤鎴锋偍濂斤紝818骞冲彴${code}鐨勮处鎴风粦瀹氭墜鏈哄彿鎴愬姛淇敼涓�${account}锛屼綘鍙互浣跨敤璇ユ墜鏈哄彿鐧诲綍锛岀櫥褰曠綉鍧� https://www.81812333.com",
+ //818閲嶇疆瀵嗙爜
+ "ResetUserPhoneNumber": "楠岃瘉鐮�${code}锛屾偍姝e湪杩涜閲嶇疆瀵嗙爜鎿嶄綔锛岃鍕挎硠闇诧紝鑻ラ潪鏈汉鎿嶄綔璇峰拷鐣ャ��",
+ //818骞冲彴瀵嗙爜閲嶇疆锛堥�氱煡锛�
+ "ResetPasswordNotice": "鎮ㄥソ锛屾偍鐨勫瘑鐮佸凡閲嶇疆锛岃处鍙凤細${account}锛屽瘑鐮侊細${password}锛岃濡ュ杽淇濆瓨",
+ //璐﹀彿淇敼
+ "ChangeUserName": "灏婃暚鐨勭敤鎴锋偍濂斤細 鎮ㄧ殑818骞冲彴璐﹀彿鎴愬姛淇敼涓�${account}鎮ㄥ彲浠ヤ娇鐢ㄨ璐﹀彿杩涜鐧诲綍锛岀櫥褰曠綉鍧�锛歨ttps://www.81812333.com",
+ //818璐﹀彿寮�閫�
+ "CreateAccountNotice": "灏婃暚鐨勭敤鎴锋偍濂斤紝鎮ㄧ殑璐﹀彿锛�${account}锛屽垵濮嬪瘑鐮侊細${password}锛岃濡ュ杽淇濆瓨锛屾偍鍙娇鐢ㄨ处鍙峰瘑鐮佺櫥褰曞苟淇敼瀵嗙爜锛岀櫥褰曠綉鍧� https://www.81812333.com",
+ //鎵嬫満鍙疯В缁�
+ "UnbindingUserPhoneNumber": "灏婃暚鐨勭敤鎴锋偍濂斤細818骞冲彴${account}鐨勮处鍙蜂笌${number}宸茶В缁戯紝浣犲彲浠ョ櫥褰曠綉鍧�锛歨ttps://www.81812333.com閲嶆柊缁戝畾鎵嬫満鍙枫��",
+ //瑙g粦閭
+ "UnbindingUserEmail": "灏婃暚鐨勭敤鎴锋偍濂斤細818骞冲彴${account}鐨勮处鍙蜂笌${mail}宸茶В缁戯紝浣犲彲浠ョ櫥褰曠綉鍧�锛歨ttps://www.81812333.com閲嶆柊缁戝畾閭銆�",
+ //818瀹炲悕璁よ瘉
+ "UserCertificationAudit": "楠岃瘉鐮�${code}锛屾偍姝e湪杩涜瀹炲悕璁よ瘉鎿嶄綔锛岃鍕挎硠闇诧紝鑻ラ潪鏈汉鎿嶄綔璇峰拷鐣ャ��",
+ //鐢宠鏁板瓧璇佷功
+ "ApplyUserCertificate": "楠岃瘉鐮�${code}锛岀敤鎴锋偍濂斤紝鎮ㄦ鍦ㄧ敵璇锋暟瀛楄瘉涔︼紝楠岃瘉鐮�10鍒嗛挓鍐呮湁鏁堛��",
+ //鐢靛瓙绛�
+ "UserElectronSign": "${unit_name}璇锋偍鐐瑰嚮绛剧害t.81812333.com/Inter/${code}"
}
},
"Aliyun": {
@@ -128,19 +151,48 @@
"AccessKeyId": "LTAI5tLzz2jnXrUAAiC2kduH",
"AccessSecret": "do1XqrgHJ5gOuFHhO5eku0FyYzZvbQ",
"Version": "2017-05-25",
- "SignName": "818鏁板瓧浜哄姏璧勪骇骞冲彴",
"RegionId": "cn-hangzhou",
"TemplateCodes": {
- //818骞冲彴鐧诲綍/娉ㄥ唽 楠岃瘉鐮�${code}锛岀敤鎴锋偍濂斤紝鎮ㄦ鍦ㄨ繘琛屽钩鍙扮櫥褰�/娉ㄥ唽锛岄獙璇佺爜10鍒嗛挓鍐呮湁鏁堛��
- "LoginOrRegister": "SMS_472170005",
- //818鎵嬫満鍙风爜淇敼 楠岃瘉鐮�${code}锛屾偍姝e湪杩涜淇敼鎵嬫満鍙风爜鎿嶄綔锛岃鍕挎硠闇诧紝鑻ラ潪鏈汉鎿嶄綔璇峰拷鐣ャ��
- "UpdateUserPhoneNumber": "SMS_471100097",
- //818閽卞寘寮�閫� 楠岃瘉鐮�${code}锛岀敤鎴锋偍濂斤紝鎮ㄦ鍦ㄨ繘琛屽钩鍙伴挶鍖呭紑閫氾紝璇ラ獙璇佺爜5鍒嗛挓鍐呮湁鏁堬紝璇峰嬁娉勯湶浜庝粬浜恒��
- "BankWalletAccountOpen": "SMS_473860301",
//鐢靛瓙绛鹃個绾� ${name}璇锋偍鐐瑰嚮绛剧害http://testwww.81812333.com/sg/${code}
"InviteElectronSign": "SMS_493755029",
//绛剧害鍦板潃 ${name}璇锋偍鐐瑰嚮绛剧害https://testwww.81812333.com/sgu/${code}
- "ElectronSignUrl": "SMS_493715033"
+ "ElectronSignUrl": "SMS_493715033",
+
+ //818骞冲彴鐭俊楠岃瘉鐮� 楠岃瘉鐮侊細${code}锛岃浜�5鍒嗛挓鍐呭~鍐欙紝璇峰嬁娉勯湶锛岃嫢闈炴湰浜烘搷浣滆蹇界暐銆�
+ "VerifyCode": "SMS_471100021",
+
+ //818骞冲彴鐧诲綍/娉ㄥ唽 楠岃瘉鐮�${code}锛岀敤鎴锋偍濂斤紝鎮ㄦ鍦ㄨ繘琛屽钩鍙扮櫥褰�/娉ㄥ唽锛岄獙璇佺爜10鍒嗛挓鍐呮湁鏁堛��
+ "LoginOrRegister": "SMS_472170005",
+ //818璐﹀彿寮�閫氾紙绠$悊绔級灏婃暚鐨勭敤鎴锋偍濂斤紝浜哄姏鏃犲咖璐﹀彿宸插紑閫氾紝璐﹀彿锛�${account}锛屽瘑鐮侊細${pwd}锛岃鐧诲綍缃戝潃 https://admin.81812333.com
+ "CreateOperationAccount": "SMS_471970028",
+ //818鎵嬫満鍙风爜淇敼 楠岃瘉鐮�${code}锛屾偍姝e湪杩涜淇敼鎵嬫満鍙风爜鎿嶄綔锛岃鍕挎硠闇诧紝鑻ラ潪鏈汉鎿嶄綔璇峰拷鐣ャ��
+ "UpdateUserPhoneNumber": "SMS_471100097",
+ //818鎵嬫満鍙锋崲缁� 灏婃暚鐨勭敤鎴锋偍濂斤紝818骞冲彴${code}鐨勮处鎴风粦瀹氭墜鏈哄彿鎴愬姛淇敼涓�${account}锛屼綘鍙互浣跨敤璇ユ墜鏈哄彿鐧诲綍锛岀櫥褰曠綉鍧� https://www.81812333.com
+ "UpdateUserPhoneNumberNotice": "SMS_471925037",
+
+ //818閲嶇疆瀵嗙爜 楠岃瘉鐮�${code}锛屾偍姝e湪杩涜閲嶇疆瀵嗙爜鎿嶄綔锛岃鍕挎硠闇诧紝鑻ラ潪鏈汉鎿嶄綔璇峰拷鐣ャ��
+ "ResetUserPhoneNumber": "SMS_471240080",
+ //818骞冲彴瀵嗙爜閲嶇疆锛堥�氱煡锛� 鎮ㄥソ锛屾偍鐨勫瘑鐮佸凡閲嶇疆锛岃处鍙凤細${account}锛屽瘑鐮侊細${password}锛岃濡ュ杽淇濆瓨
+ "ResetPasswordNotice": "SMS_476790229",
+
+ //璐﹀彿淇敼 灏婃暚鐨勭敤鎴锋偍濂斤細 鎮ㄧ殑818骞冲彴璐﹀彿鎴愬姛淇敼涓�${account}鎮ㄥ彲浠ヤ娇鐢ㄨ璐﹀彿杩涜鐧诲綍锛岀櫥褰曠綉鍧�锛歨ttps://www.81812333.com
+ "ChangeUserName": "SMS_475895109",
+ //818璐﹀彿寮�閫� 灏婃暚鐨勭敤鎴锋偍濂斤紝鎮ㄧ殑璐﹀彿锛�${account}锛屽垵濮嬪瘑鐮侊細${password}锛岃濡ュ杽淇濆瓨锛屾偍鍙娇鐢ㄨ处鍙峰瘑鐮佺櫥褰曞苟淇敼瀵嗙爜锛岀櫥褰曠綉鍧� https://www.81812333.com
+ "CreateAccountNotice": "SMS_471980029",
+ //鎵嬫満鍙疯В缁� 灏婃暚鐨勭敤鎴锋偍濂斤細818骞冲彴${account}鐨勮处鍙蜂笌${number}宸茶В缁戯紝浣犲彲浠ョ櫥褰曠綉鍧�锛歨ttps://www.81812333.com閲嶆柊缁戝畾鎵嬫満鍙枫��
+ "UnbindingUserPhoneNumber": "SMS_475840188",
+ //瑙g粦閭 灏婃暚鐨勭敤鎴锋偍濂斤細818骞冲彴${account}鐨勮处鍙蜂笌${mail}宸茶В缁戯紝浣犲彲浠ョ櫥褰曠綉鍧�锛歨ttps://www.81812333.com閲嶆柊缁戝畾閭銆�
+ "UnbindingUserEmail": "SMS_475875117",
+
+ //818瀹炲悕璁よ瘉 楠岃瘉鐮�${code}锛屾偍姝e湪杩涜瀹炲悕璁よ瘉鎿嶄綔锛岃鍕挎硠闇诧紝鑻ラ潪鏈汉鎿嶄綔璇峰拷鐣ャ��
+ "UserCertificationAudit": "SMS_471230080",
+ //鐢宠鏁板瓧璇佷功 楠岃瘉鐮�${code}锛岀敤鎴锋偍濂斤紝鎮ㄦ鍦ㄧ敵璇锋暟瀛楄瘉涔︼紝楠岃瘉鐮�10鍒嗛挓鍐呮湁鏁堛��
+ "ApplyUserCertificate": "SMS_475345383",
+ //鐢靛瓙绛� ${unit_name}璇锋偍鐐瑰嚮绛剧害t.81812333.com/Inter/${code}
+ "UserElectronSign": "SMS_476485061",
+
+ //818閽卞寘寮�閫� 楠岃瘉鐮�${code}锛岀敤鎴锋偍濂斤紝鎮ㄦ鍦ㄨ繘琛屽钩鍙伴挶鍖呭紑閫氾紝璇ラ獙璇佺爜5鍒嗛挓鍐呮湁鏁堬紝璇峰嬁娉勯湶浜庝粬浜恒��
+ "BankWalletAccountOpen": "SMS_473860301"
}
}
},
--
Gitblit v1.9.1