From 6b24ae48c664c25676672ece72d134474c6af817 Mon Sep 17 00:00:00 2001
From: liaoxujun@qq.com <liaoxujun@qq.com>
Date: 星期二, 12 九月 2023 15:00:23 +0800
Subject: [PATCH] 消息发送
---
DocumentServiceAPI.Job/PermissionJob.cs | 70 ++++++++++++++
DocumentServiceAPI.Web.Entry/DocumentServiceAPI.Web.Entry.csproj.user | 2
.gitignore | 2
DocumentServiceApi.InitQMessage/DocumentServiceApi.InitQMessage.csproj | 1
DocumentServiceApi.InitQMessage/MessageReceive.cs | 23 ++++
DocumentServiceAPI.Web.Core/Startup.cs | 1
DocumentServiceAPI.Job/JobStartup.cs | 27 +++++
DocumentServiceApi.InitQMessage/INITQMessageDefine.cs | 13 ++
DocumentServiceAPI.Job/DocumentServiceAPI.Job.csproj | 18 +++
DocumentServiceAPI.Web.Core/DocumentServiceAPI.Web.Core.csproj | 1
DocumentServiceAPI.sln | 8 +
DocumentServiceApi.InitQMessage/PostMessageServices.cs | 75 +++++++++++++++
12 files changed, 237 insertions(+), 4 deletions(-)
diff --git a/.gitignore b/.gitignore
index 2237dec..28cca3e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,3 +34,5 @@
DocumentServiceAPI.Application/DocumentServiceAPI.Application.xml
DocumentServiceApi.InitQMessage/bin/
DocumentServiceAPI.Web.Entry/Log/DocSericeApistatupLog.txt
+DocumentServiceAPI.Job/bin/
+DocumentServiceAPI.Job/obj/
diff --git a/DocumentServiceAPI.Job/DocumentServiceAPI.Job.csproj b/DocumentServiceAPI.Job/DocumentServiceAPI.Job.csproj
new file mode 100644
index 0000000..5cbb12e
--- /dev/null
+++ b/DocumentServiceAPI.Job/DocumentServiceAPI.Job.csproj
@@ -0,0 +1,18 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\DocumentServiceAPI.Core\DocumentServiceAPI.Core.csproj" />
+ <ProjectReference Include="..\DocumentServiceAPI.Enum\DocumentServiceAPI.Enum.csproj" />
+ <ProjectReference Include="..\DocumentServiceApi.InitQMessage\DocumentServiceApi.InitQMessage.csproj" />
+ <ProjectReference Include="..\DocumentServiceAPI.Model\DocumentServiceAPI.Model.csproj" />
+ <ProjectReference Include="..\DocumentServiceAPI.Services\DocumentServiceAPI.Services.csproj" />
+ <ProjectReference Include="..\DocumentServiceAPI.Utility\DocumentServiceAPI.Utility.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git a/DocumentServiceAPI.Job/JobStartup.cs b/DocumentServiceAPI.Job/JobStartup.cs
new file mode 100644
index 0000000..3ebc6e5
--- /dev/null
+++ b/DocumentServiceAPI.Job/JobStartup.cs
@@ -0,0 +1,27 @@
+锘縰sing Furion;
+using Furion.Schedule;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.DependencyInjection;
+
+
+namespace DocumentServiceAPI.Job
+{
+ public class JobStartup: AppStartup
+ {
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services.AddSchedule((op) =>
+ {
+ //娉ㄥ叆perissionjob
+ op.AddJob<PermissionJob>("鏉冮檺瀹氭椂鏈嶅姟",concurrent:false,triggerBuilders: Triggers.Daily());
+ });
+ }
+
+ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
+ {
+
+
+ }
+ }
+}
diff --git a/DocumentServiceAPI.Job/PermissionJob.cs b/DocumentServiceAPI.Job/PermissionJob.cs
new file mode 100644
index 0000000..495901e
--- /dev/null
+++ b/DocumentServiceAPI.Job/PermissionJob.cs
@@ -0,0 +1,70 @@
+锘縰sing DocumentServiceApi.InitQMessage;
+using DocumentServiceAPI.Model.Permissions;
+using DocumentServiceAPI.Model.UserInfoModel;
+using Furion.Schedule;
+using Microsoft.Extensions.Logging;
+using Npgsql.TypeHandlers;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DocumentServiceAPI.Job
+{
+ public class PermissionJob : IJob
+ {
+ private readonly ILogger<PermissionJob> _logger;
+ private readonly ISqlSugarClient _db;
+ private readonly PostMessageServices _InitQMessagePost;
+ public PermissionJob(ILogger<PermissionJob> logger , ISqlSugarClient db,PostMessageServices postMessageServices)
+ {
+ _logger = logger;
+ _db = db;
+ _InitQMessagePost = postMessageServices;
+ }
+
+ public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
+ {
+
+ _logger.LogInformation("鎵ц浜嗕换鍔xecuteAsync");
+ var TimeOutPList= await _db.Queryable<TenantPermissions>().Where(x => x.IsEn && x.OverTime < DateTime.Now).ToListAsync();
+ foreach (var item in TimeOutPList)
+ {
+ //璁剧疆鏉冮檺涓烘棤鏁�
+ item.IsEn = false;
+
+ }
+ await _db.Updateable(TimeOutPList).UpdateColumns(it => new { it.IsEn }).ExecuteCommandAsync();
+
+ var tPermissions= await _db.Queryable< TenantPermissions >().LeftJoin<TenantInfo>((tx,t)=>tx.TenantId==t.Id).Where((tx,t)=>tx.IsEn==true&&tx.OverTime<DateTime.Now.AddDays(15)).Select((tx,t)=>new {tx,t}).ToListAsync();
+ foreach (var t in tPermissions)
+ {
+ TimeSpan difference = t.tx.OverTime - DateTime.Now;
+ int data= difference.Days;
+ if (data == 15|| data == 10 ||data==3)
+ {
+ //绗�15澶╋紝10澶╋紝3澶╁彂閫佺煭淇�
+ _InitQMessagePost.PostDelayMessage(new MessAgeOption
+ {
+
+ Title="鏍囦功绠$悊绯荤粺娑堟伅",
+ isNeedSMS = true,
+ PhoneCode = t.t.ItCode,
+ UserID = t.t.ZcUserID,
+ MsgContent = $"鎮ㄧ殑 鏍囦功绠$悊绯荤粺灏嗕簬{DateTime.Now.ToString("yyyy MM dd")}鏃ュ埌鏈燂紝璇峰敖蹇笌瀹㈡埛缁忕悊鑱旂郴銆愬洓宸濇斂閲囨嫑鎶曟爣鍜ㄨ鏈夐檺鍏徃銆�",
+ SMSMsgContent = $"鎮ㄧ殑 鏍囦功绠$悊绯荤粺灏嗕簬{DateTime.Now.ToString("yyyy MM dd")}鏃ュ埌鏈燂紝璇峰敖蹇笌瀹㈡埛缁忕悊鑱旂郴銆愬洓宸濇斂閲囨嫑鎶曟爣鍜ㄨ鏈夐檺鍏徃銆�"
+ }, DateTime.Now.AddHours(8));
+ }
+
+ }
+
+ return ;
+
+
+ }
+ }
+
+
+}
diff --git a/DocumentServiceAPI.Web.Core/DocumentServiceAPI.Web.Core.csproj b/DocumentServiceAPI.Web.Core/DocumentServiceAPI.Web.Core.csproj
index ad97204..e5d62ee 100644
--- a/DocumentServiceAPI.Web.Core/DocumentServiceAPI.Web.Core.csproj
+++ b/DocumentServiceAPI.Web.Core/DocumentServiceAPI.Web.Core.csproj
@@ -15,6 +15,7 @@
<ItemGroup>
<ProjectReference Include="..\DocumentServiceAPI.Application\DocumentServiceAPI.Application.csproj" />
+ <ProjectReference Include="..\DocumentServiceAPI.Job\DocumentServiceAPI.Job.csproj" />
<ProjectReference Include="..\DocumentServiceAPI.Model\DocumentServiceAPI.Model.csproj" />
</ItemGroup>
diff --git a/DocumentServiceAPI.Web.Core/Startup.cs b/DocumentServiceAPI.Web.Core/Startup.cs
index f672793..adb37ab 100644
--- a/DocumentServiceAPI.Web.Core/Startup.cs
+++ b/DocumentServiceAPI.Web.Core/Startup.cs
@@ -9,6 +9,7 @@
using System.Text.Json.Serialization;
using System.Text.Unicode;
+
namespace DocumentServiceAPI.Web.Core;
public class Startup : AppStartup
diff --git a/DocumentServiceAPI.Web.Entry/DocumentServiceAPI.Web.Entry.csproj.user b/DocumentServiceAPI.Web.Entry/DocumentServiceAPI.Web.Entry.csproj.user
index 85e333f..d5c942b 100644
--- a/DocumentServiceAPI.Web.Entry/DocumentServiceAPI.Web.Entry.csproj.user
+++ b/DocumentServiceAPI.Web.Entry/DocumentServiceAPI.Web.Entry.csproj.user
@@ -4,7 +4,7 @@
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
</PropertyGroup>
<PropertyGroup>
- <ActiveDebugProfile>IIS Express</ActiveDebugProfile>
+ <ActiveDebugProfile>DocumentServiceAPI.Web.Entry</ActiveDebugProfile>
<NameOfLastUsedPublishProfile>E:\workdir\鏍囦功杞欢\ApiService\DocumentServiceAPI\DocumentServiceAPI.Web.Entry\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
</PropertyGroup>
</Project>
\ No newline at end of file
diff --git a/DocumentServiceAPI.sln b/DocumentServiceAPI.sln
index cf65739..7a12f04 100644
--- a/DocumentServiceAPI.sln
+++ b/DocumentServiceAPI.sln
@@ -23,7 +23,9 @@
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZcPayCore", "ZcPayCore\ZcPayCore.csproj", "{76BFAB65-B7AC-4534-A595-363551111129}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocumentServiceApi.InitQMessage", "DocumentServiceApi.InitQMessage\DocumentServiceApi.InitQMessage.csproj", "{0A75ECEE-91C9-4A87-8573-4298DF0B6CDE}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DocumentServiceApi.InitQMessage", "DocumentServiceApi.InitQMessage\DocumentServiceApi.InitQMessage.csproj", "{0A75ECEE-91C9-4A87-8573-4298DF0B6CDE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocumentServiceAPI.Job", "DocumentServiceAPI.Job\DocumentServiceAPI.Job.csproj", "{8DF63C80-56C7-47B3-9D2B-B1C08601FCDF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -74,6 +76,10 @@
{0A75ECEE-91C9-4A87-8573-4298DF0B6CDE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0A75ECEE-91C9-4A87-8573-4298DF0B6CDE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0A75ECEE-91C9-4A87-8573-4298DF0B6CDE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8DF63C80-56C7-47B3-9D2B-B1C08601FCDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8DF63C80-56C7-47B3-9D2B-B1C08601FCDF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8DF63C80-56C7-47B3-9D2B-B1C08601FCDF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8DF63C80-56C7-47B3-9D2B-B1C08601FCDF}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/DocumentServiceApi.InitQMessage/DocumentServiceApi.InitQMessage.csproj b/DocumentServiceApi.InitQMessage/DocumentServiceApi.InitQMessage.csproj
index cd7176f..40d20a8 100644
--- a/DocumentServiceApi.InitQMessage/DocumentServiceApi.InitQMessage.csproj
+++ b/DocumentServiceApi.InitQMessage/DocumentServiceApi.InitQMessage.csproj
@@ -11,6 +11,7 @@
</ItemGroup>
<ItemGroup>
+ <ProjectReference Include="..\DocumentServiceAPI.Application\DocumentServiceAPI.Application.csproj" />
<ProjectReference Include="..\DocumentServiceAPI.Core\DocumentServiceAPI.Core.csproj" />
<ProjectReference Include="..\DocumentServiceAPI.Model\DocumentServiceAPI.Model.csproj" />
</ItemGroup>
diff --git a/DocumentServiceApi.InitQMessage/INITQMessageDefine.cs b/DocumentServiceApi.InitQMessage/INITQMessageDefine.cs
index a95de16..b19b881 100644
--- a/DocumentServiceApi.InitQMessage/INITQMessageDefine.cs
+++ b/DocumentServiceApi.InitQMessage/INITQMessageDefine.cs
@@ -20,5 +20,18 @@
/// 鎾ゅ崟
/// </summary>
public const string DecTenantOder = "DocumentServiceAPI_DecOderINIT";
+
+ /// <summary>
+ /// 瀹氭椂闃熷垪娑堟伅鍙戝簭鍒楋紝鍦ㄨ繖閲岃浆鍙�
+ /// </summary>
+ public const string DTSendMessageList = "DocumentServiceAPI_MessageList";
+
+ /// <summary>
+ /// 灏嗘秷鎭彂閫佸埌鐢ㄦ埛涓績鎵ц娑堟伅鍙戦�� 璺熺敤鎴蜂腑蹇冨畾涔変竴鑷�
+ /// </summary>
+ public const string DTSendMessage = "MSG_AND_SMSMSG";
+
+
+
}
}
diff --git a/DocumentServiceApi.InitQMessage/MessageReceive.cs b/DocumentServiceApi.InitQMessage/MessageReceive.cs
index c5d8895..272bf15 100644
--- a/DocumentServiceApi.InitQMessage/MessageReceive.cs
+++ b/DocumentServiceApi.InitQMessage/MessageReceive.cs
@@ -8,6 +8,7 @@
using Furion.Schedule;
using InitQ.Abstractions;
using InitQ.Attributes;
+using InitQ.Cache;
using Microsoft.Extensions.Options;
using SqlSugar;
using System;
@@ -23,8 +24,12 @@
/// </summary>
public class MessageReceive: IRedisSubscribe
{
-
-
+ private InitQ.Cache.ICacheService _cacheService;
+ public MessageReceive(InitQ.Cache.ICacheService cacheService)
+ {
+ _cacheService = cacheService;
+ }
+
/// <summary>
/// 鍒濆鍖栬鍗曞鐞�
/// </summary>
@@ -239,5 +244,19 @@
}
+ /// <summary>
+ /// 鍙戦�佹秷鎭粰鐢ㄦ埛涓紝鐢ㄦ埛涓績浼氬搷搴旇繖涓秷鎭�
+ /// </summary>
+ /// <param name="msg"></param>
+ /// <returns></returns>
+ [SubscribeDelay(INITQMessageDefine.DTSendMessage)]
+ private async Task SendMessage(string msg)
+ {
+
+ await _cacheService.ListRightPushAsync(INITQMessageDefine.DTSendMessage, msg);
+ }
+
}
+
+
}
diff --git a/DocumentServiceApi.InitQMessage/PostMessageServices.cs b/DocumentServiceApi.InitQMessage/PostMessageServices.cs
new file mode 100644
index 0000000..ebde4ce
--- /dev/null
+++ b/DocumentServiceApi.InitQMessage/PostMessageServices.cs
@@ -0,0 +1,75 @@
+锘縰sing DocumentServiceAPI.Application.UserAndLogin.Services;
+using Furion.DependencyInjection;
+using InitQ.Cache;
+using Microsoft.AspNetCore.Identity;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DocumentServiceApi.InitQMessage
+{
+ /// <summary>
+ /// 鍙戦�佹秷鎭湇鍔�
+ /// </summary>
+ public class PostMessageServices: IScoped
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ private ICacheService _InitQService;
+ public PostMessageServices( ICacheService initQService)
+ {
+ _InitQService = initQService;
+ }
+ /// <summary>
+ /// 鍙戦�佸欢鏃舵秷鎭�
+ /// </summary>
+ public async void PostDelayMessage(MessAgeOption msg,DateTime time)
+ {
+ await _InitQService.SortedSetAddAsync(INITQMessageDefine.DTSendMessageList, JsonConvert.SerializeObject( msg),time);
+ }
+
+ }
+
+
+ /// <summary>
+ /// 娑堟伅璁剧疆鍜屽唴瀹规帴鍙fā鍨�
+ /// </summary>
+ public class MessAgeOption
+ {
+ /// <summary>
+ /// 鏄惁闇�瑕佸彂閫佹墜鏈虹煭淇�
+ /// </summary>
+ public bool isNeedSMS { get; set; } = false;
+ /// <summary>
+ /// 娑堟伅鍐呭
+ /// </summary>
+ public string MsgContent { get; set; }
+
+ /// <summary>
+ /// 娑堟伅鍐呭 鍙互璇曞缁勭紪鍙�
+ /// </summary>
+ public string PhoneCode { get; set; }
+
+ /// <summary>
+ /// 鏍煎紡鍖栧悗鐨勬墜鏈烘秷鎭唴瀹�
+ /// </summary>
+ public string SMSMsgContent { get; set; }
+
+
+ /// <summary>
+ /// 鏍囬
+ /// </summary>
+ public string Title { get; set; }
+ /// <summary>
+ /// 鐢ㄦ埛ID
+ /// </summary>
+ public Guid? UserID { get; set; }
+
+
+
+ }
+}
--
Gitblit v1.9.1