From 173a8e6a757e8c7c324d5d00cd1ec90d0f13d281 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 14 八月 2025 18:55:48 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.Web.Entry/Startup.cs                                                |    4 
 FlexJobApi.Core/Jobs/CalcUserAgeByIdCardJob.cs                                 |   34 ++++++
 FlexJobApi.Core/Utils/ScheduleUtils/DbJobPersistence.cs                        |   16 --
 FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserInfoRolesQuery.cs       |    5 +
 FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.csproj |    1 
 FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs                              |    2 
 /dev/null                                                                      |   45 ---------
 FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs     |   29 +++++
 FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml    |   18 ---
 FlexJobApi.Core/FlexJobApi.Core.xml                                            |   45 ++++-----
 FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml        |    8 +
 FlexJobApi.Core/Jobs/CalcTaskSatusByDateJob.cs                                 |   38 +++++++
 FlexJobApi.Core/FlexJobApi.Core.csproj                                         |    1 
 13 files changed, 140 insertions(+), 106 deletions(-)

diff --git a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.csproj b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.csproj
index 75e6e25..2f9d7bb 100644
--- a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.csproj
+++ b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.csproj
@@ -16,6 +16,7 @@
 	</ItemGroup>
 
 	<ItemGroup>
+	  <Folder Include="Schedules\Commands\" />
 	  <Folder Include="Schedules\Queries\" />
 	</ItemGroup>
 
diff --git a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml
index b0f27ae..f4cc7bc 100644
--- a/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml
+++ b/FlexJobApi.CommonServer.Application/FlexJobApi.CommonServer.Application.xml
@@ -141,24 +141,6 @@
             <param name="models"></param>
             <param name="all"></param>
         </member>
-        <member name="T:FlexJobApi.CommonServer.Application.ScheduleJobDetailCommandHandler">
-            <summary>
-            浠诲姟璋冨害-浣滀笟
-            </summary>
-        </member>
-        <member name="M:FlexJobApi.CommonServer.Application.ScheduleJobDetailCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Resource},FlexJobApi.Core.ResourceHttpUtils,Furion.Schedule.ISchedulerFactory)">
-            <summary>
-            浠诲姟璋冨害-浣滀笟
-            </summary>
-        </member>
-        <member name="M:FlexJobApi.CommonServer.Application.ScheduleJobDetailCommandHandler.Handle(FlexJobApi.Core.SaveScheduleJobDetailCommand,System.Threading.CancellationToken)">
-            <summary>
-            淇濆瓨浠诲姟璋冨害-浣滀笟
-            </summary>
-            <param name="request"></param>
-            <param name="cancellationToken"></param>
-            <returns></returns>
-        </member>
         <member name="T:FlexJobApi.UserServer.Application.GetResourceFieldsQueryHandler">
             <summary>
             鑾峰彇璧勬簮瀛楁
diff --git a/FlexJobApi.CommonServer.Application/Schedules/Commands/ScheduleJobDetailCommandHandler.cs b/FlexJobApi.CommonServer.Application/Schedules/Commands/ScheduleJobDetailCommandHandler.cs
deleted file mode 100644
index e258937..0000000
--- a/FlexJobApi.CommonServer.Application/Schedules/Commands/ScheduleJobDetailCommandHandler.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-锘縰sing FlexJobApi.Core;
-using Furion.DatabaseAccessor;
-using Furion.FriendlyException;
-using Furion.Schedule;
-using MediatR;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Metadata.Builders;
-using Microsoft.Extensions.Options;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FlexJobApi.CommonServer.Application
-{
-    /// <summary>
-    /// 浠诲姟璋冨害-浣滀笟
-    /// </summary>
-    public class ScheduleJobDetailCommandHandler(
-            IRepository<Resource> repResource,
-            ResourceHttpUtils resourceHttpUtils,
-            ISchedulerFactory schedulerFactory
-        ) :
-        IRequestHandler<SaveScheduleJobDetailCommand, bool>
-    {
-        private readonly IRepository<Resource> repResource = repResource;
-        private readonly ResourceHttpUtils resourceHttpUtils = resourceHttpUtils;
-        private readonly ISchedulerFactory schedulerFactory = schedulerFactory;
-
-        /// <summary>
-        /// 淇濆瓨浠诲姟璋冨害-浣滀笟
-        /// </summary>
-        /// <param name="request"></param>
-        /// <param name="cancellationToken"></param>
-        /// <returns></returns>
-        public Task<bool> Handle(SaveScheduleJobDetailCommand request, CancellationToken cancellationToken)
-        {
-            // 鍒涘缓 HTTP 浣滀笟娑堟伅
-            var jobBuilder = JobBuilder
-                .Create<ResourceHttpJob>()
-                .AddProperty(nameof(ResourceHttpJob), Schedular.Serialize(request));
-            // 娣诲姞浣滀笟
-            schedulerFactory.AddJob(jobBuilder, Triggers.Cron(request.Cron, Furion.TimeCrontab.CronStringFormat.WithSeconds));
-            return Task.FromResult(true);
-        }
-    }
-}
diff --git a/FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs b/FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs
index 9fb8daf..5eba1fe 100644
--- a/FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs
+++ b/FlexJobApi.Core/Enums/Common/EnumErrorCodeType.cs
@@ -28,7 +28,7 @@
         /// <summary>
         /// 璇0}宸插瓨鍦紝璇风‘璁ゅ悗鍐嶈瘯
         /// </summary>
-        [ErrorCodeItemMetadata("{0}涓嶅瓨鍦�")]
+        [ErrorCodeItemMetadata("璇0}宸插瓨鍦紝璇风‘璁ゅ悗鍐嶈瘯")]
         s405 = 405,
         /// <summary>
         /// 瀛樺湪閲嶅鏁版嵁锛歿0}锛岃纭鍚庡啀璇�
diff --git a/FlexJobApi.Core/FlexJobApi.Core.csproj b/FlexJobApi.Core/FlexJobApi.Core.csproj
index 7b5fbc5..a55ea21 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.csproj
+++ b/FlexJobApi.Core/FlexJobApi.Core.csproj
@@ -38,6 +38,7 @@
 	</ItemGroup>
 
 	<ItemGroup>
+	  <Folder Include="Models\CommonServer\Schedules\Commands\" />
 	  <Folder Include="Models\CommonServer\Schedules\Queries\" />
 	  <Folder Include="Models\FlexJobServer\TaskUsers\Repositories\" />
 	</ItemGroup>
diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml
index 43f703d..ba8b6c1 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.xml
+++ b/FlexJobApi.Core/FlexJobApi.Core.xml
@@ -3203,6 +3203,26 @@
             缂栧彿
             </summary>
         </member>
+        <member name="T:FlexJobApi.Core.CalcTaskSatusByDateJob">
+            <summary>
+            瀹氭椂鎸夋棩鏈熻绠椾换鍔″彂甯冪姸鎬�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.Core.CalcTaskSatusByDateJob.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.TaskInfo})">
+            <summary>
+            瀹氭椂鎸夋棩鏈熻绠椾换鍔″彂甯冪姸鎬�
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.CalcUserAgeByIdCardJob">
+            <summary>
+            瀹氭椂鏍规嵁韬唤璇佽绠楃敤鎴峰勾榫�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.Core.CalcUserAgeByIdCardJob.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.User})">
+            <summary>
+            瀹氭椂鏍规嵁韬唤璇佽绠楃敤鎴峰勾榫�
+            </summary>
+        </member>
         <member name="T:FlexJobApi.Core.DeleteDictionaryCategoryCommand">
             <summary>
             鍒犻櫎鏁版嵁瀛楀吀绫诲埆
@@ -3803,26 +3823,6 @@
             鍝嶅簲绫诲瀷鍏ㄥ悕
             </summary>
         </member>
-        <member name="T:FlexJobApi.Core.SaveScheduleJobDetailCommand">
-            <summary>
-            淇濆瓨浠诲姟璋冨害-浣滀笟
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.SaveScheduleJobDetailCommand.ResourceId">
-            <summary>
-            璧勬簮Id
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.SaveScheduleJobDetailCommand.Body">
-            <summary>
-            璇锋眰鏁版嵁
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.SaveScheduleJobDetailCommand.Cron">
-            <summary>
-            Cron琛ㄨ揪寮�
-            </summary>
-        </member>
         <member name="T:FlexJobApi.Core.CheckReceiveTaskCommand">
             <summary>
             浠诲姟楠屾敹
@@ -4354,11 +4354,6 @@
         <member name="P:FlexJobApi.Core.GetCheckReceiveTaskUserSubmitsQueryResultItem.CheckReceiveTime">
             <summary>
             楠屾敹鏃堕棿
-            </summary>
-        </member>
-        <member name="T:FlexJobApi.Core.AutoTaskStatusByDateCommand">
-            <summary>
-            鎸夋棩鏈熶慨璁换鍔$姸鎬�
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.DeleteTaskInfoCommand">
diff --git a/FlexJobApi.Core/Jobs/CalcTaskSatusByDateJob.cs b/FlexJobApi.Core/Jobs/CalcTaskSatusByDateJob.cs
new file mode 100644
index 0000000..3341804
--- /dev/null
+++ b/FlexJobApi.Core/Jobs/CalcTaskSatusByDateJob.cs
@@ -0,0 +1,38 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Schedule;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 瀹氭椂鎸夋棩鏈熻绠椾换鍔″彂甯冪姸鎬�
+    /// </summary>
+    public class CalcTaskSatusByDateJob(
+            IRepository<TaskInfo> rep
+        ) : IJob
+    {
+        private readonly IRepository<TaskInfo> rep = rep;
+
+        public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
+        {
+            var now = DateTime.Now;
+            var entities = await rep.AsQueryable()
+                .Where(it => it.EndTime < now && it.ReleaseStatus != EnumTaskReleaseStatus.Stopped)
+                .ToListAsync();
+            if (entities.IsNotNull())
+            {
+                foreach (var entity in entities)
+                {
+                    entity.ReleaseStatus = EnumTaskReleaseStatus.Stopped;
+                }
+                await rep.UpdateAsync(entities);
+            }
+        }
+    }
+}
diff --git a/FlexJobApi.Core/Jobs/CalcUserAgeByIdCardJob.cs b/FlexJobApi.Core/Jobs/CalcUserAgeByIdCardJob.cs
new file mode 100644
index 0000000..0f05eae
--- /dev/null
+++ b/FlexJobApi.Core/Jobs/CalcUserAgeByIdCardJob.cs
@@ -0,0 +1,34 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Schedule;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 瀹氭椂鏍规嵁韬唤璇佽绠楃敤鎴峰勾榫�
+    /// </summary>
+    public class CalcUserAgeByIdCardJob(
+            IRepository<User> rep
+        ) : IJob
+    {
+        private readonly IRepository<User> rep = rep;
+
+        public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
+        {
+            var enities = await rep.AsQueryable()
+                .Where(it => it.Type == EnumUserType.Personal && it.Identity != null && it.Identity != "")
+                .ToListAsync(stoppingToken);
+            foreach (var entity in enities)
+            {
+                var age = entity.Identity.GetAge();
+                entity.Age = age;
+            }
+        }
+    }
+}
diff --git a/FlexJobApi.Core/Models/CommonServer/Schedules/Commands/SaveScheduleJobDetailCommand.cs b/FlexJobApi.Core/Models/CommonServer/Schedules/Commands/SaveScheduleJobDetailCommand.cs
deleted file mode 100644
index c03d847..0000000
--- a/FlexJobApi.Core/Models/CommonServer/Schedules/Commands/SaveScheduleJobDetailCommand.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-锘縰sing MediatR;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FlexJobApi.Core
-{
-    /// <summary>
-    /// 淇濆瓨浠诲姟璋冨害-浣滀笟
-    /// </summary>
-    [Resource([EnumResourceController.Resource])]
-    public class SaveScheduleJobDetailCommand : IRequest<bool>
-    {
-        /// <summary>
-        /// 璧勬簮Id
-        /// </summary>
-        public Guid ResourceId { get; set; }
-
-        /// <summary>
-        /// 璇锋眰鏁版嵁
-        /// </summary>
-        public string Body { get; set; }
-
-        /// <summary>
-        /// Cron琛ㄨ揪寮�
-        /// </summary>
-        public string Cron { get; set; }
-    }
-}
diff --git a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/AutoTaskStatusByDateCommand.cs b/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/AutoTaskStatusByDateCommand.cs
deleted file mode 100644
index 0eedf07..0000000
--- a/FlexJobApi.Core/Models/FlexJobServer/Tasks/Commands/AutoTaskStatusByDateCommand.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-锘縰sing MediatR;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FlexJobApi.Core
-{
-    /// <summary>
-    /// 鎸夋棩鏈熶慨璁换鍔$姸鎬�
-    /// </summary>
-    [Resource([EnumResourceController.Task])]
-    public class AutoTaskStatusByDateCommand : IRequest<int>
-    {
-
-    }
-}
diff --git a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserInfoRolesQuery.cs b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserInfoRolesQuery.cs
index 1bc1751..b1b350e 100644
--- a/FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserInfoRolesQuery.cs
+++ b/FlexJobApi.Core/Models/UserServer/Users/Queries/GetUserInfoRolesQuery.cs
@@ -13,6 +13,11 @@
     [Resource([EnumResourceController.User])]
     public class GetUserInfoRolesQuery : IRequest<List<GetUserInfoRolesQueryResultItem>>
     {
+        public GetUserInfoRolesQuery()
+        {
+            ClientType = EnumClientType.PcWeb;
+        }
+
         /// <summary>
         /// 鐢ㄦ埛Id
         /// </summary>
diff --git a/FlexJobApi.Core/Utils/ScheduleUtils/DbJobPersistence.cs b/FlexJobApi.Core/Utils/ScheduleUtils/DbJobPersistence.cs
index c13c0ea..592a3dd 100644
--- a/FlexJobApi.Core/Utils/ScheduleUtils/DbJobPersistence.cs
+++ b/FlexJobApi.Core/Utils/ScheduleUtils/DbJobPersistence.cs
@@ -37,21 +37,9 @@
         /// 浣滀笟璋冨害鏈嶅姟鍚姩鏃�
         /// </summary>
         /// <returns></returns>
-        public async Task<IEnumerable<SchedulerBuilder>> PreloadAsync(CancellationToken stoppingToken)    // Furion 4.9.1.59 涔嬪墠涓� public IEnumerable<SchedulerBuilder> Preload()
+        public Task<IEnumerable<SchedulerBuilder>> PreloadAsync(CancellationToken stoppingToken)
         {
-            var schedulers = new List<SchedulerBuilder>();
-            var jobDetails = await repScheduleJobDetail.AsQueryable().AsNoTracking().ToListAsync();
-            var jobTriggers = await repScheduleJobTrigger.AsQueryable().AsNoTracking().ToListAsync();
-            foreach (var jobDetail in jobDetails)
-            {
-                var triggers = jobTriggers.Where(it => it.JobId == jobDetail.JobId)
-                    .Select(it => TriggerBuilder.From(it.ToJson()))
-                    .ToArray();
-                var jobBuilder = JobBuilder.From(jobDetail.ToJson());
-                var scheduler = SchedulerBuilder.Create(jobBuilder, triggers);
-                schedulers.Add(scheduler);
-            }
-            return schedulers;
+            return Task.FromResult(App.EffectiveTypes.ScanToBuilders().AsEnumerable());
         }
 
         public Task<SchedulerBuilder> OnLoadingAsync(SchedulerBuilder builder, CancellationToken stoppingToken)
diff --git a/FlexJobApi.Core/Utils/ScheduleUtils/ResourceHttpJob.cs b/FlexJobApi.Core/Utils/ScheduleUtils/ResourceHttpJob.cs
deleted file mode 100644
index 898f525..0000000
--- a/FlexJobApi.Core/Utils/ScheduleUtils/ResourceHttpJob.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-锘縰sing Azure.Core;
-using Furion.DatabaseAccessor;
-using Furion.FriendlyException;
-using Furion.Schedule;
-using Microsoft.EntityFrameworkCore;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net.Http;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace FlexJobApi.Core
-{
-    public class ResourceHttpJob(
-            IRepository<Resource> rep,
-            ResourceHttpUtils resourceHttpUtils
-        ) : IJob
-    {
-        private readonly IRepository<Resource> rep = rep;
-        private readonly ResourceHttpUtils resourceHttpUtils = resourceHttpUtils;
-
-        public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
-        {
-            var jobDetail = context.JobDetail;
-
-            // 瑙f瀽 HTTP 璇锋眰鍙傛暟锛岄敭鍚嶇О涓虹被鍚�
-            var command = Schedular.Deserialize<SaveScheduleJobDetailCommand>(jobDetail.GetProperty<string>(nameof(ResourceHttpJob)));
-
-            var resource = await rep
-                .Where(it => it.Id == command.ResourceId)
-                .Select(it => new Resource
-                {
-                    ServiceName = it.ServiceName,
-                    Route = it.Route,
-                    Method = it.Method
-                })
-                .FirstOrDefaultAsync();
-            if (resource == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヨ祫婧�");
-
-            context.Result = await resourceHttpUtils.SendHttpAsync(resource, command.Body, new SystemUserResourceHttpProvider());
-        }
-    }
-}
diff --git a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
index b573c71..28d44df 100644
--- a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
+++ b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
@@ -705,6 +705,14 @@
             <param name="cancellationToken"></param>
             <returns></returns>
         </member>
+        <member name="M:FlexJobApi.UserServer.Application.UserInfos.Commands.UserInfoCommandHandler.Handle(FlexJobApi.Core.SetUserInfoRolesCommand,System.Threading.CancellationToken)">
+            <summary>
+            璁剧疆鐢ㄦ埛淇℃伅瑙掕壊
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
         <member name="T:FlexJobApi.UserServer.Application.GetOperationUserInfosQueryHandler">
             <summary>
             鑾峰彇杩愯惀绔敤鎴峰垎椤靛垪琛�
diff --git a/FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs b/FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs
index b91f501..e489ec1 100644
--- a/FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/Users/Commands/UserInfoCommandHandler.cs
@@ -1,5 +1,6 @@
 锘縰sing FlexJobApi.Core;
 using Furion.DatabaseAccessor;
+using Furion.FriendlyException;
 using MediatR;
 using Microsoft.EntityFrameworkCore;
 using System;
@@ -15,8 +16,9 @@
     /// </summary>
     public class UserInfoCommandHandler(
             IRepository<User> rep
-        ) : 
-        IRequestHandler<SetUserInfoStatusCommand, int>
+        ) :
+        IRequestHandler<SetUserInfoStatusCommand, int>,
+        IRequestHandler<SetUserInfoRolesCommand, int>
     {
         private readonly IRepository<User> rep = rep;
 
@@ -37,5 +39,28 @@
             }
             return entities.Count;
         }
+
+        /// <summary>
+        /// 璁剧疆鐢ㄦ埛淇℃伅瑙掕壊
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<int> Handle(SetUserInfoRolesCommand request, CancellationToken cancellationToken)
+        {
+            var entity = await rep.AsQueryable()
+                .Include(it => it.UserRoles)
+                .Where(it => it.Id == request.UserInfoId)
+                .FirstOrDefaultAsync(cancellationToken);
+            if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ョ敤鎴�");
+            entity.UserRoles = request.RoleIds
+                .Select(it => new UserRole
+                {
+                    RoleId = it
+                })
+                .ToList();
+            await rep.UpdateAsync(entity);
+            return entity.UserRoles.Count;
+        }
     }
 }
diff --git a/FlexJobApi.Web.Entry/Startup.cs b/FlexJobApi.Web.Entry/Startup.cs
index 67d050e..e392f7a 100644
--- a/FlexJobApi.Web.Entry/Startup.cs
+++ b/FlexJobApi.Web.Entry/Startup.cs
@@ -55,7 +55,9 @@
             {
                 options.BuildSqlType = SqlTypes.SqlServer;
                 options.JobDetail.LogEnabled = true;
-                options.AddPersistence<DbJobPersistence>();
+                //options.AddPersistence<DbJobPersistence>();
+                options.AddJob<CalcTaskSatusByDateJob>(Triggers.Hourly());
+                options.AddJob<CalcUserAgeByIdCardJob>(Triggers.Daily());
             });
 
             services.AddSpecificationDocuments(options =>

--
Gitblit v1.9.1