From 6396dac27ca99e84a2e3c772fb079bceddf67ff8 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期一, 01 十二月 2025 18:17:45 +0800
Subject: [PATCH] feat:开发
---
ApiTools.Database.Migrations/Migrations/20251201101428_CreateWxmpSubscribMessageLog.Designer.cs | 1054 +++++++++++++++++++++++++++++++++++++++++++++
ApiTools.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs | 56 ++
ApiTools.Web.Entry/Controllers/WxmpController.cs | 2
ApiTools.Core/ApiTools.Core.xml | 65 ++
ApiTools.Database.Migrations/Migrations/20251201101428_CreateWxmpSubscribMessageLog.cs | 48 ++
ApiTools.Database.Migrations/REDEME.MD | 2
ApiTools.Application/WxUtils/Commands/WxmpSubscribMessageCommandHandler.cs | 32 +
ApiTools.Core/Models/WxmpUtils/Commands/WxmpSubscribMessageNotifyCommand.cs | 28 +
ApiTools.Core/Entities/LogRecords/WxmpSubscribMessageLog.cs | 51 ++
9 files changed, 1,329 insertions(+), 9 deletions(-)
diff --git a/ApiTools.Application/WxUtils/Commands/WxmpSubscribMessageCommandHandler.cs b/ApiTools.Application/WxUtils/Commands/WxmpSubscribMessageCommandHandler.cs
index bfdf10c..ee2ea78 100644
--- a/ApiTools.Application/WxUtils/Commands/WxmpSubscribMessageCommandHandler.cs
+++ b/ApiTools.Application/WxUtils/Commands/WxmpSubscribMessageCommandHandler.cs
@@ -1,6 +1,8 @@
锘縰sing Aop.Api.Domain;
using ApiTools.Core;
+using ApiTools.Core.Entities.LogRecords;
using Furion;
+using Furion.DatabaseAccessor;
using Furion.HttpRemote;
using log4net.Core;
using MediatR;
@@ -15,13 +17,15 @@
namespace ApiTools.Application
{
public class WxmpSubscribMessageCommandHandler(
+ IRepository<WxmpSubscribMessageLog> repWxmpSubscribMessageLog,
ILogger<WxmpSubscribMessageCommandHandler> logger,
WxmpUtils utils,
IHttpRemoteService httpRemoteService
) :
IRequestHandler<SendWxmpSubscribMessageCommand, Guid>,
- IRequestHandler<WxmpSubscribMessageNotifyCommand, bool>
+ IRequestHandler<WxmpSubscribMessageNotifyCommand, Guid>
{
+ private readonly IRepository<WxmpSubscribMessageLog> repWxmpSubscribMessageLog = repWxmpSubscribMessageLog;
private readonly ILogger<WxmpSubscribMessageCommandHandler> logger = logger;
private readonly WxmpUtils utils = utils;
private readonly IHttpRemoteService httpRemoteService = httpRemoteService;
@@ -42,7 +46,17 @@
WxmpCode = request.WxmpCode,
Touser = request.Touser,
});
- return Guid.Empty;
+ var log = new WxmpSubscribMessageLog
+ {
+ Code = request.WxmpCode,
+ OpenId = request.Touser,
+ SubscribeStatusString = "send",
+ TemplateId = request.TemplateId,
+ Page = request.Page,
+ Data = request.Data.ToJson()
+ };
+ await repWxmpSubscribMessageLog.InsertNowAsync(log);
+ return log.Id;
}
/// <summary>
@@ -51,7 +65,7 @@
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
- public async Task<bool> Handle(WxmpSubscribMessageNotifyCommand request, CancellationToken cancellationToken)
+ public async Task<Guid> Handle(WxmpSubscribMessageNotifyCommand request, CancellationToken cancellationToken)
{
var env = App.GetConfig<string>("Environment");
if (env == "Product")
@@ -67,7 +81,17 @@
}
}
- return true;
+
+ var log = new WxmpSubscribMessageLog
+ {
+ Code = request.Code,
+ OpenId = request.OpenId,
+ PopupScene = request.Content.PopupScene,
+ SubscribeStatusString = request.Content.SubscribeStatusString,
+ TemplateId = request.Content.TemplateId
+ };
+ await repWxmpSubscribMessageLog.InsertNowAsync(log);
+ return log.Id;
}
}
}
diff --git a/ApiTools.Core/ApiTools.Core.xml b/ApiTools.Core/ApiTools.Core.xml
index 5d582b5..ce92f10 100644
--- a/ApiTools.Core/ApiTools.Core.xml
+++ b/ApiTools.Core/ApiTools.Core.xml
@@ -249,6 +249,46 @@
鑰楁椂姣鏁�
</summary>
</member>
+ <member name="T:ApiTools.Core.Entities.LogRecords.WxmpSubscribMessageLog">
+ <summary>
+ 寰俊璁㈤槄娑堟伅鏃ュ織
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.Entities.LogRecords.WxmpSubscribMessageLog.Code">
+ <summary>
+ 灏忕▼搴忎唬鐮�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.Entities.LogRecords.WxmpSubscribMessageLog.OpenId">
+ <summary>
+ 鐢ㄦ埛寮�鏀綢d
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.Entities.LogRecords.WxmpSubscribMessageLog.PopupScene">
+ <summary>
+ 鍦烘櫙
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.Entities.LogRecords.WxmpSubscribMessageLog.SubscribeStatusString">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.Entities.LogRecords.WxmpSubscribMessageLog.TemplateId">
+ <summary>
+ 妯℃澘Id
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.Entities.LogRecords.WxmpSubscribMessageLog.Page">
+ <summary>
+ 鐐瑰嚮妯℃澘鍗$墖鍚庣殑璺宠浆椤甸潰锛屼粎闄愭湰灏忕▼搴忓唴鐨勯〉闈€�傛敮鎸佸甫鍙傛暟,锛堢ず渚媔ndex?foo=bar锛夈�傝瀛楁涓嶅~鍒欐ā鏉挎棤璺宠浆
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.Entities.LogRecords.WxmpSubscribMessageLog.Data">
+ <summary>
+ 妯℃澘鍐呭锛屾牸寮忓舰濡倇 "phrase3": { "value": "瀹℃牳閫氳繃" }, "name1": { "value": "璁㈤槄" }, "date2": { "value": "2019-12-25 09:42" } }
+ </summary>
+ </member>
<member name="T:ApiTools.Core.ScheduleJobTriggerTimeline">
<summary>
瀹氭椂浠诲姟-浣滀笟瑙﹀彂鍣ㄨ繍琛岃褰�
@@ -3333,6 +3373,16 @@
鐢ㄦ埛寮�鏀綢d
</summary>
</member>
+ <member name="P:ApiTools.Core.WxmpSubscribMessageNotifyCommand.ToUserName">
+ <summary>
+ 鎺ユ敹浜�
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.WxmpSubscribMessageNotifyCommand.FromUserName">
+ <summary>
+ 鍙戦�佷汉
+ </summary>
+ </member>
<member name="P:ApiTools.Core.WxmpSubscribMessageNotifyCommand.CreateTime">
<summary>
鍒涘缓鏃堕棿
@@ -3353,6 +3403,21 @@
鍐呭
</summary>
</member>
+ <member name="P:ApiTools.Core.WxmpSubscribMessageNotifyCommandContent.PopupScene">
+ <summary>
+ 鍦烘櫙
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.WxmpSubscribMessageNotifyCommandContent.SubscribeStatusString">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:ApiTools.Core.WxmpSubscribMessageNotifyCommandContent.TemplateId">
+ <summary>
+ 妯℃澘Id
+ </summary>
+ </member>
<member name="P:ApiTools.Core.WxmpSubscribMessageNotifyRequestQuery.signature">
<summary>
绛惧悕
diff --git a/ApiTools.Core/Entities/LogRecords/WxmpSubscribMessageLog.cs b/ApiTools.Core/Entities/LogRecords/WxmpSubscribMessageLog.cs
new file mode 100644
index 0000000..2bcd14f
--- /dev/null
+++ b/ApiTools.Core/Entities/LogRecords/WxmpSubscribMessageLog.cs
@@ -0,0 +1,51 @@
+锘縰sing Furion.DatabaseAccessor;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ApiTools.Core.Entities.LogRecords
+{
+ /// <summary>
+ /// 寰俊璁㈤槄娑堟伅鏃ュ織
+ /// </summary>
+ public class WxmpSubscribMessageLog : CommonEntity<MasterDbContextLocator>, IDbAuditLogIgnore
+ {
+ /// <summary>
+ /// 灏忕▼搴忎唬鐮�
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鐢ㄦ埛寮�鏀綢d
+ /// </summary>
+ public string OpenId { get; set; }
+
+ /// <summary>
+ /// 鍦烘櫙
+ /// </summary>
+ public string PopupScene { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public string SubscribeStatusString { get; set; }
+
+ /// <summary>
+ /// 妯℃澘Id
+ /// </summary>
+ public string TemplateId { get; set; }
+
+ /// <summary>
+ /// 鐐瑰嚮妯℃澘鍗$墖鍚庣殑璺宠浆椤甸潰锛屼粎闄愭湰灏忕▼搴忓唴鐨勯〉闈€�傛敮鎸佸甫鍙傛暟,锛堢ず渚媔ndex?foo=bar锛夈�傝瀛楁涓嶅~鍒欐ā鏉挎棤璺宠浆
+ /// </summary>
+ public string Page { get; set; }
+
+ /// <summary>
+ /// 妯℃澘鍐呭锛屾牸寮忓舰濡倇 "phrase3": { "value": "瀹℃牳閫氳繃" }, "name1": { "value": "璁㈤槄" }, "date2": { "value": "2019-12-25 09:42" } }
+ /// </summary>
+ public string Data { get; set; }
+ }
+}
diff --git a/ApiTools.Core/Models/WxmpUtils/Commands/WxmpSubscribMessageNotifyCommand.cs b/ApiTools.Core/Models/WxmpUtils/Commands/WxmpSubscribMessageNotifyCommand.cs
index afad571..d662de4 100644
--- a/ApiTools.Core/Models/WxmpUtils/Commands/WxmpSubscribMessageNotifyCommand.cs
+++ b/ApiTools.Core/Models/WxmpUtils/Commands/WxmpSubscribMessageNotifyCommand.cs
@@ -12,7 +12,7 @@
/// 寰俊灏忕▼搴忚闃呮秷鎭�氱煡
/// </summary>
[Resource([EnumResourceController.CommonServerWxmpUtils], AllowAnonymous = true)]
- public class WxmpSubscribMessageNotifyCommand : IRequest<bool>
+ public class WxmpSubscribMessageNotifyCommand : IRequest<Guid>
{
/// <summary>
/// 灏忕▼搴忎唬鐮�
@@ -22,7 +22,13 @@
/// 鐢ㄦ埛寮�鏀綢d
/// </summary>
public string OpenId { get; set; }
+ /// <summary>
+ /// 鎺ユ敹浜�
+ /// </summary>
public string ToUserName { get; set; }
+ /// <summary>
+ /// 鍙戦�佷汉
+ /// </summary>
public string FromUserName { get; set; }
/// <summary>
/// 鍒涘缓鏃堕棿
@@ -39,7 +45,23 @@
/// <summary>
/// 鍐呭
/// </summary>
- [JsonProperty("debug_str")]
- public string Content { get; set; }
+ [JsonProperty("List")]
+ public WxmpSubscribMessageNotifyCommandContent Content { get; set; }
+ }
+
+ public class WxmpSubscribMessageNotifyCommandContent
+ {
+ /// <summary>
+ /// 鍦烘櫙
+ /// </summary>
+ public string PopupScene { get; set; }
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public string SubscribeStatusString { get; set; }
+ /// <summary>
+ /// 妯℃澘Id
+ /// </summary>
+ public string TemplateId { get; set; }
}
}
diff --git a/ApiTools.Database.Migrations/Migrations/20251201101428_CreateWxmpSubscribMessageLog.Designer.cs b/ApiTools.Database.Migrations/Migrations/20251201101428_CreateWxmpSubscribMessageLog.Designer.cs
new file mode 100644
index 0000000..ce3710b
--- /dev/null
+++ b/ApiTools.Database.Migrations/Migrations/20251201101428_CreateWxmpSubscribMessageLog.Designer.cs
@@ -0,0 +1,1054 @@
+锘�// <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("20251201101428_CreateWxmpSubscribMessageLog")]
+ partial class CreateWxmpSubscribMessageLog
+ {
+ /// <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.ChannelWallet", b =>
+ {
+ b.Property<Guid>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<int>("Access")
+ .HasColumnType("int");
+
+ b.Property<decimal>("Balance")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property<string>("Bank")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("BankBranch")
+ .HasColumnType("nvarchar(max)");
+
+ 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<string>("ErrorCode")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("FailReason")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("Identity")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property<string>("Name")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("OutWalletId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("SignStatus")
+ .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.HasKey("Id");
+
+ b.HasIndex("ChannelId");
+
+ b.ToTable("ChannelWallet");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.ChannelWalletTransaction", b =>
+ {
+ b.Property<Guid>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<decimal>("AfterBalance")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property<decimal>("Amount")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property<decimal>("Balance")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property<string>("Code")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ConcurrencyLock")
+ .HasColumnType("nvarchar(450)");
+
+ b.Property<Guid?>("CreatedChannelId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<DateTimeOffset>("CreatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("CreatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<string>("Currency")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("EreceiptDownloadOssUrl")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("EreceiptDownloadUrl")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("EreceiptErrorMessage")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("EreceiptFileId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int?>("EreceiptStatus")
+ .HasColumnType("int");
+
+ b.Property<string>("ErrorCode")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("FailReason")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property<DateTime?>("OperatorTime")
+ .HasColumnType("datetime2");
+
+ b.Property<decimal?>("OrderFee")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property<string>("OutCode")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("OutOperatorId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("OutReceiveId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("PayerAccount")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("PayerBank")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("PayerBankBranch")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("PayerName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("Purpose")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ReceiveAccount")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ReceiveBank")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ReceiveBankBranch")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ReceiveIdentity")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ReceiveName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("Remark")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int");
+
+ b.Property<string>("TraceId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTime?>("TransDate")
+ .HasColumnType("datetime2");
+
+ b.Property<int>("TransactionStatus")
+ .HasColumnType("int");
+
+ b.Property<int>("Type")
+ .HasColumnType("int");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("UpdatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<Guid>("WalletId")
+ .HasColumnType("uniqueidentifier");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ConcurrencyLock")
+ .IsUnique()
+ .HasFilter("[ConcurrencyLock] IS NOT NULL");
+
+ b.HasIndex("WalletId");
+
+ b.ToTable("ChannelWalletTransaction");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.ChannelWalletTransactionPingAnPay", b =>
+ {
+ b.Property<Guid>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<string>("AccountDate")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("BackRem")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<Guid?>("CreatedChannelId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<DateTimeOffset>("CreatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("CreatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<string>("CstInnerFlowNo")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("Fee")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("FreezeNo")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("FrontLogNo")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("HostErrorCode")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("HostFlowNo")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("IsBack")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property<string>("ProxyPayAcc")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ProxyPayBankName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ProxyPayName")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("RemoveStopFailReason")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("RemoveStopStt")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int");
+
+ b.Property<string>("StopFailReason")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("StopStt")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("SubmitTime")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("SysFlag")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ThirdVoucher")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("TraceId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("TransBsn")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<Guid?>("UpdatedUserId")
+ .HasColumnType("uniqueidentifier");
+
+ b.Property<string>("Yhcljg")
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("ChannelWalletTransactionPingAnPay");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.Entities.LogRecords.WxmpSubscribMessageLog", 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<string>("Data")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property<string>("OpenId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("Page")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("PopupScene")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int");
+
+ b.Property<string>("SubscribeStatusString")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("TemplateId")
+ .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.ToTable("WxmpSubscribMessageLog");
+ });
+
+ 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.ChannelWallet", b =>
+ {
+ b.HasOne("ApiTools.Core.Channel", "Channel")
+ .WithMany()
+ .HasForeignKey("ChannelId");
+
+ b.Navigation("Channel");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.ChannelWalletTransaction", b =>
+ {
+ b.HasOne("ApiTools.Core.ChannelWallet", "Wallet")
+ .WithMany()
+ .HasForeignKey("WalletId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Wallet");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.ChannelWalletTransactionPingAnPay", b =>
+ {
+ b.HasOne("ApiTools.Core.ChannelWalletTransaction", "Transaction")
+ .WithOne("PingAnPay")
+ .HasForeignKey("ApiTools.Core.ChannelWalletTransactionPingAnPay", "Id")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Transaction");
+ });
+
+ 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.ChannelWalletTransaction", b =>
+ {
+ b.Navigation("PingAnPay");
+ });
+
+ modelBuilder.Entity("ApiTools.Core.SmsSetting", b =>
+ {
+ b.Navigation("Accesses");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/ApiTools.Database.Migrations/Migrations/20251201101428_CreateWxmpSubscribMessageLog.cs b/ApiTools.Database.Migrations/Migrations/20251201101428_CreateWxmpSubscribMessageLog.cs
new file mode 100644
index 0000000..472bd60
--- /dev/null
+++ b/ApiTools.Database.Migrations/Migrations/20251201101428_CreateWxmpSubscribMessageLog.cs
@@ -0,0 +1,48 @@
+锘縰sing System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace ApiTools.Database.Migrations.Migrations
+{
+ /// <inheritdoc />
+ public partial class CreateWxmpSubscribMessageLog : Migration
+ {
+ /// <inheritdoc />
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "WxmpSubscribMessageLog",
+ columns: table => new
+ {
+ Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
+ Code = table.Column<string>(type: "nvarchar(max)", nullable: true),
+ OpenId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+ PopupScene = table.Column<string>(type: "nvarchar(max)", nullable: true),
+ SubscribeStatusString = table.Column<string>(type: "nvarchar(max)", nullable: true),
+ TemplateId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+ Page = table.Column<string>(type: "nvarchar(max)", nullable: true),
+ Data = table.Column<string>(type: "nvarchar(max)", nullable: true),
+ Sort = table.Column<int>(type: "int", nullable: false),
+ TraceId = table.Column<string>(type: "nvarchar(max)", nullable: true),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: false),
+ CreatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+ CreatedChannelId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
+ UpdatedUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_WxmpSubscribMessageLog", x => x.Id);
+ });
+ }
+
+ /// <inheritdoc />
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "WxmpSubscribMessageLog");
+ }
+ }
+}
diff --git a/ApiTools.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/ApiTools.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
index de7c9c6..2ec4124 100644
--- a/ApiTools.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
+++ b/ApiTools.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
@@ -377,6 +377,62 @@
b.ToTable("ChannelWalletTransactionPingAnPay");
});
+ modelBuilder.Entity("ApiTools.Core.Entities.LogRecords.WxmpSubscribMessageLog", 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<string>("Data")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit");
+
+ b.Property<string>("OpenId")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("Page")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("PopupScene")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int");
+
+ b.Property<string>("SubscribeStatusString")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("TemplateId")
+ .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.ToTable("WxmpSubscribMessageLog");
+ });
+
modelBuilder.Entity("ApiTools.Core.Resource", b =>
{
b.Property<Guid>("Id")
diff --git a/ApiTools.Database.Migrations/REDEME.MD b/ApiTools.Database.Migrations/REDEME.MD
index 1f6848e..3941f54 100644
--- a/ApiTools.Database.Migrations/REDEME.MD
+++ b/ApiTools.Database.Migrations/REDEME.MD
@@ -1,7 +1,7 @@
-------------------------------涓绘暟鎹簱---------------------------------------
鏂板杩佺Щ鏂囦欢
-dotnet ef migrations add UpdateChannelWallet1119 -s "../ApiTools.Web.Entry" -c DefaultDbContext
+dotnet ef migrations add CreateWxmpSubscribMessageLog -s "../ApiTools.Web.Entry" -c DefaultDbContext
鍒犻櫎杩佺Щ鏂囦欢
dotnet ef migrations remove -s "../ApiTools.Web.Entry" -c DefaultDbContext
diff --git a/ApiTools.Web.Entry/Controllers/WxmpController.cs b/ApiTools.Web.Entry/Controllers/WxmpController.cs
index f0d163c..a3711b4 100644
--- a/ApiTools.Web.Entry/Controllers/WxmpController.cs
+++ b/ApiTools.Web.Entry/Controllers/WxmpController.cs
@@ -66,7 +66,7 @@
command.Code = code;
command.OpenId = query.openid;
await mediator.Send(command);
- return Content(query.echostr);
+ return Content("success");
}
}
}
--
Gitblit v1.9.1