소스 검색

定时发布处理

CrazyIter 4 년 전
부모
커밋
4e1a866f4b

+ 1 - 1
TEAMModelOS.Service/Models/SchoolInfo/ExamInfo.cs

@@ -52,7 +52,7 @@ namespace TEAMModelOS.Service.Models
         ///考试类型 段考 stage  联考 union 平常考 normal 其他 other
         /// </summary>
         public string type { get; set; }
-      
+        public long sequenceNumber { get; set; }
        public Condition conditions { get; set; }
     }
     public class Condition

+ 2 - 0
TEAMModelOS.Service/Models/SchoolInfo/Survey.cs

@@ -53,6 +53,8 @@ namespace TEAMModelOS.Service.Models
         public long createTime { get; set; } // 问卷发布时间
         public List<Item> items { get; set; }
 
+        public long sequenceNumber { get; set; }
+
     }
     public class Item {
         public string stem { get; set; }

+ 1 - 0
TEAMModelOS.Service/Models/SchoolInfo/Vote.cs

@@ -104,6 +104,7 @@ namespace TEAMModelOS.Service.Models
 
         public int? ttl { get; set; }
 
+        public long sequenceNumber { get; set; }
         [ProtoContract]
         public class Option
         {

+ 34 - 18
TEAMModelOS.Service/Services/Learn/Implements/ServiceBusReviceService.cs

@@ -12,6 +12,7 @@ using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
 using TEAMModelOS.SDK.Helper.Common.JsonHelper;
 using TEAMModelOS.SDK.Module.AzureCosmosDBV3;
 using TEAMModelOS.SDK.Module.AzureServiceBus;
+using TEAMModelOS.Service.Models;
 using TEAMModelOS.Service.Services.Learn.Interfaces;
 
 namespace TEAMModelOS.Service.Services.Learn.Implements
@@ -62,27 +63,42 @@ namespace TEAMModelOS.Service.Services.Learn.Implements
             await subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
             Dictionary<string, object> dict = Encoding.UTF8.GetString(message.Body).FromApiJson<Dictionary<string, object>>();
             Dictionary<string, object> obj = new Dictionary<string, object>();
-            dict.TryGetValue("info", out object info);
+            dict.TryGetValue("id", out object id);
+            dict.TryGetValue("pk", out object pk);
             dict.TryGetValue("name", out object name);
             dict.TryGetValue("status", out object status);
-            obj.Add("id", info);
-
-            var bus = await _cosmos.FindByDict(name.ToString(), obj);
-            if (bus.IsNotEmpty())
-            {
-                string element = "";
-                List<Dictionary<string, object>> AllInfo = new List<Dictionary<string, object>>();
-                foreach (JsonElement e in bus) {
-                     element = e.ToApiJson();
-                    Dictionary<string, object> keyValues = element.FromJson<Dictionary<string, object>>();
-                    keyValues["status"] = int.Parse(status.ToString());
-                    AllInfo.Add(keyValues);
-                    Console.WriteLine($"-----------------------------------------------------: {keyValues}");
-                    //sta = e.GetProperty("status").GetInt32();                   
-                }                                             
-                await _cosmos.UpdateAll(name.ToString(), bus);
-
+            if (name != null && id!=null && pk!=null && status!=null ) {
+                if (name.ToString() == typeof(Homework).Name) {
+                    Homework data= await   _cosmos.FindByIdPk<Homework>(id.ToString(), pk.ToString());
+                    data.status = int.Parse(status.ToString());
+                    await _cosmos.Update(data);
+                }
+                if (name.ToString() == typeof(Vote).Name)
+                {
+                    Vote data = await _cosmos.FindByIdPk<Vote>(id.ToString(), pk.ToString());
+                    data.status = int.Parse(status.ToString());
+                    await _cosmos.Update(data);
+                }
+                if (name.ToString() == typeof(Survey).Name)
+                {
+                    Survey data= await _cosmos.FindByIdPk<Survey>(id.ToString(), pk.ToString());
+                    data.status = int.Parse(status.ToString());
+                    await _cosmos.Update(data);
+                }
+                if (name.ToString() == typeof(ExamInfo).Name)
+                {
+                    ExamInfo data= await _cosmos.FindByIdPk<ExamInfo>(id.ToString(), pk.ToString());
+                    data.status = int.Parse(status.ToString());
+                    await _cosmos.Update(data);
+                }
+                if (name.ToString() == typeof(LearnTask).Name)
+                {
+                    LearnTask data = await _cosmos.FindByIdPk<LearnTask>(id.ToString(), pk.ToString());
+                    data.status = int.Parse(status.ToString());
+                    await _cosmos.Update(data);
+                }
             }
+           
             //return message;
 
             // Note: Use the cancellationToken passed as necessary to determine if the subscriptionClient has already been closed.

+ 3 - 2
TEAMModelOS.Service/Services/Learn/Implements/ServiceBusService.cs

@@ -23,13 +23,14 @@ namespace TEAMModelOS.Service.Services.Learn.Implements
             _serviceBus = azureServiceBus;
         }        
 
-        public async Task<long> SendMessage<T>(string TopicName, string info, long startTime, int status, string msgId)
+        public async Task<long> SendMessage<T>(string TopicName, string id,string pk, long startTime, int status, string msgId)
         {
             ITopicClient topicClient = _serviceBus.GetTopClient(TopicName).topicClient;
             //设定开始时间
             Dictionary<string, object> dict = new Dictionary<string, object>() {
                     { "name",typeof(T).Name},
-                    { "info",info},
+                    { "id",id},
+                    { "pk",pk},
                     { "status",status}
                 };
             //var msgId = "1";

+ 1 - 1
TEAMModelOS.Service/Services/Learn/Interfaces/IServiceBusService.cs

@@ -8,7 +8,7 @@ namespace TEAMModelOS.Service.Services.Learn.Interfaces
 {
     public interface IServiceBusService : IBusinessService
     {
-        public Task<long> SendMessage<T>(string TopicName, string info, long startTime,int status,string msgId);
+        public Task<long> SendMessage<T>(string TopicName, string id, string pk, long startTime,int status,string msgId);
 
   
 

+ 9 - 5
TEAMModelOS/Controllers/Exam/ExamController.cs

@@ -19,11 +19,12 @@ namespace TEAMModelOS.Controllers
     public class ExamController : BaseController
     {
         private readonly IAzureCosmosDBV3Repository cosmosDBV3Repository;
-        private readonly ITimerWorkService _timerWorkService;
-        public ExamController(IAzureCosmosDBV3Repository _cosmosDBV3Repository, ITimerWorkService timerWorkService)
+        private readonly IServiceBusService _serviceBus;
+        public ExamController(IAzureCosmosDBV3Repository _cosmosDBV3Repository , IServiceBusService serviceBus)
         {
+            _serviceBus = serviceBus;
             cosmosDBV3Repository = _cosmosDBV3Repository;
-            _timerWorkService = timerWorkService;
+          
         }
 
         /// <summary>
@@ -50,7 +51,9 @@ namespace TEAMModelOS.Controllers
             else if (request.@params.publish.Equals("1"))
             {
                 //设定开始时间
-              //  _timerWorkService.TimerWork<ExamInfo>(request.@params.startTime, 200, new Dictionary<string, object> { { "id", request.@params.id } });
+                string msgId = Guid.NewGuid().ToString();
+                long SequenceNumber = await _serviceBus.SendMessage<ExamInfo>(Constants.TopicName, request.@params.id, request.@params.code, request.@params.startTime, 200, msgId);
+                request.@params.sequenceNumber = SequenceNumber;
             }
             if (request.@params.status == 0)
             {
@@ -59,7 +62,8 @@ namespace TEAMModelOS.Controllers
             }
             await cosmosDBV3Repository.SaveOrUpdate(request.@params);
             //设定结束时间
-           // _timerWorkService.TimerWork<ExamInfo>(request.@params.endTime, 300, new Dictionary<string, object> { { "id", request.@params.id } });
+            string msgEndId = Guid.NewGuid().ToString();
+            await _serviceBus.SendMessage<ExamInfo>(Constants.TopicName, request.@params.id, request.@params.code, request.@params.endTime, 300, msgEndId);
             return builder.Data(request.@params).build();
         }
         /// <summary>

+ 5 - 5
TEAMModelOS/Controllers/Task/HomeworkController.cs

@@ -32,16 +32,16 @@ namespace TEAMModelOS.Controllers.Learn
     public class HomeworkController : ControllerBase
     {
         private readonly IAzureCosmosDBV3Repository _cosmos;
-        private readonly ITimerWorkService _timerWorkService;
+       
         private readonly IServiceBusService _serviceBus;
         //private static ITopicClient topicClient;
         readonly string ServiceBusConnectionString = BaseConfigModel.Configuration["HaBookAuth:ServiceBus"];
         private readonly IServiceBusReviceService serviceBusReviceService;
-        public HomeworkController(IAzureCosmosDBV3Repository cosmos, ITimerWorkService timerWorkService, IServiceBusService serviceBus  , IServiceBusReviceService _serviceBusReviceService)
+        public HomeworkController(IAzureCosmosDBV3Repository cosmos , IServiceBusService serviceBus  , IServiceBusReviceService _serviceBusReviceService)
         {
             serviceBusReviceService = _serviceBusReviceService;
                _cosmos = cosmos;
-            _timerWorkService = timerWorkService;
+          
             _serviceBus = serviceBus;
         }
 
@@ -122,7 +122,7 @@ namespace TEAMModelOS.Controllers.Learn
                 //TimerWork<HomeWork>(request.@params.homeWork.startTime,new Dictionary<string, object> { { "id", request.@params.homeWork.id } });
                 //设定开始时间
                 string msgId = Guid.NewGuid().ToString();
-                long SequenceNumber =  await _serviceBus.SendMessage<Homework>(Constants.TopicName, request.@params.homeWork.id, request.@params.homeWork.startTime,200, msgId);
+                long SequenceNumber =  await _serviceBus.SendMessage<Homework>(Constants.TopicName, request.@params.homeWork.id, request.@params.homeWork.code, request.@params.homeWork.startTime,200, msgId);
                 request.@params.homeWork.sequenceNumber = SequenceNumber;
 
                 //serviceBusReviceService.ReciveMessageAsync();
@@ -140,7 +140,7 @@ namespace TEAMModelOS.Controllers.Learn
 
             //设定结束时间
             string msgEndId = Guid.NewGuid().ToString();
-            await _serviceBus.SendMessage<Homework>(Constants.TopicName, request.@params.homeWork.id, request.@params.homeWork.endTime,300, msgEndId);
+            await _serviceBus.SendMessage<Homework>(Constants.TopicName, request.@params.homeWork.id, request.@params.homeWork.code, request.@params.homeWork.endTime,300, msgEndId);
             //_timerWorkService.TimerWork<Homework>(request.@params.homeWork.endTime, 300, new Dictionary<string, object> { { "id", request.@params.homeWork.id } });
             //清除作业
             if (request.@params.reset)

+ 8 - 1
TEAMModelOS/Controllers/Task/LearnController.cs

@@ -10,6 +10,8 @@ using TEAMModelOS.SDK.Helper.Common.DateTimeHelper;
 using TEAMModelOS.SDK.Helper.Common.ValidateHelper;
 using TEAMModelOS.SDK.Module.AzureCosmosDBV3;
 using TEAMModelOS.Service.Models;
+using TEAMModelOS.Models;
+using TEAMModelOS.Service.Services.Learn.Interfaces;
 
 namespace TEAMModelOS.Controllers.Learn
 {
@@ -21,7 +23,8 @@ namespace TEAMModelOS.Controllers.Learn
     public class LearnController: BaseController
     {
         private readonly IAzureCosmosDBV3Repository cosmosDBV3Repository;
-        public LearnController(IAzureCosmosDBV3Repository _cosmosDBV3Repository)
+        private readonly IServiceBusService _serviceBus;
+        public LearnController(IAzureCosmosDBV3Repository _cosmosDBV3Repository, IServiceBusService serviceBus)
         {
             cosmosDBV3Repository = _cosmosDBV3Repository;
         }
@@ -38,6 +41,10 @@ namespace TEAMModelOS.Controllers.Learn
             if (request.@params.createTime <= 0) {
                 request.@params.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
             }
+
+            //设定结束时间
+            string msgEndId = Guid.NewGuid().ToString();
+            await _serviceBus.SendMessage<LearnTask>(Constants.TopicName, request.@params.id, request.@params.code, request.@params.endTime, 300, msgEndId);
             await cosmosDBV3Repository.Save(request.@params);
             return builder.Data(request.@params).build();
         }

+ 11 - 6
TEAMModelOS/Controllers/Task/SurveyController.cs

@@ -22,11 +22,13 @@ namespace TEAMModelOS.Controllers
     public class SurveyController : BaseController
     {
         private readonly IAzureCosmosDBV3Repository azureCosmosDBV3Repository;
-        private readonly ITimerWorkService _timerWorkService;
-        public SurveyController(IAzureCosmosDBV3Repository _azureCosmosDBV3Repository, ITimerWorkService timerWorkService)
+ 
+        private readonly IServiceBusService _serviceBus;
+        public SurveyController(IAzureCosmosDBV3Repository _azureCosmosDBV3Repository,  IServiceBusService serviceBus)
         {
-            _timerWorkService = timerWorkService;
-            azureCosmosDBV3Repository = _azureCosmosDBV3Repository;
+            //  _timerWorkService = timerWorkService;
+            _serviceBus = serviceBus;
+              azureCosmosDBV3Repository = _azureCosmosDBV3Repository;
         }
 
         /// <summary>
@@ -52,7 +54,9 @@ namespace TEAMModelOS.Controllers
             else if (request.@params.survey.publishModel.Equals("1"))
             {
 
-                _timerWorkService.TimerWork<Survey>(request.@params.survey.startTime, 200, new Dictionary<string, object> { { "id", request.@params.survey.id } });
+                string msgId = Guid.NewGuid().ToString();
+                long SequenceNumber = await _serviceBus.SendMessage<Survey>(Constants.TopicName, request.@params.survey.id, request.@params.survey.code, request.@params.survey.startTime, 200, msgId);
+                request.@params.survey.sequenceNumber = SequenceNumber;
 
             }
 
@@ -61,7 +65,8 @@ namespace TEAMModelOS.Controllers
             Survey homeWork = await azureCosmosDBV3Repository.SaveOrUpdate<Survey>(request.@params.survey);
 
             //设定结束时间
-            _timerWorkService.TimerWork<Survey>(request.@params.survey.endTime, 300, new Dictionary<string, object> { { "id", request.@params.survey.id } });
+            string msgEndId = Guid.NewGuid().ToString();
+            await _serviceBus.SendMessage<Survey>(Constants.TopicName, request.@params.survey.id, request.@params.survey.code, request.@params.survey.endTime, 300, msgEndId);
 
             //清除作业
             if (!request.@params.reset)

+ 13 - 9
TEAMModelOS/Controllers/Task/VoteController.cs

@@ -27,12 +27,12 @@ namespace TEAMModelOS.Controllers.Learn
     {
 
         private readonly IAzureCosmosDBV3Repository _cosmos;
-        private readonly ITimerWorkService _timerWorkService;
-
-        public VoteController(IAzureCosmosDBV3Repository cosmos, ITimerWorkService timerWorkService)
+       
+        private readonly IServiceBusService _serviceBus;
+        public VoteController(IAzureCosmosDBV3Repository cosmos, IServiceBusService serviceBus)
         {
             _cosmos = cosmos;
-            _timerWorkService = timerWorkService;
+            _serviceBus = serviceBus;
         }
 
 
@@ -55,10 +55,12 @@ namespace TEAMModelOS.Controllers.Learn
             {
                 request.@params.vote.startTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
                 request.@params.vote.status = 200;
-            } else if (request.@params.vote.publishModel.Equals("1")) { 
-            
-                _timerWorkService.TimerWork<Vote>(request.@params.vote.startTime,200, new Dictionary<string, object> { { "id", request.@params.vote.id } });
+                
+            } else if (request.@params.vote.publishModel.Equals("1")) {
 
+                string msgId = Guid.NewGuid().ToString();
+                long SequenceNumber = await _serviceBus.SendMessage<Vote>(Constants.TopicName, request.@params.vote.id, request.@params.vote.code, request.@params.vote.startTime, 200, msgId);
+                request.@params.vote.sequenceNumber = SequenceNumber;
             }
 
 
@@ -66,8 +68,10 @@ namespace TEAMModelOS.Controllers.Learn
             Vote homeWork = await _cosmos.SaveOrUpdate<Vote>(request.@params.vote);
 
             //设定结束时间
-            _timerWorkService.TimerWork<Vote>(request.@params.vote.endTime, 300, new Dictionary<string, object> { { "id", request.@params.vote.id } });
-
+            //_timerWorkService.TimerWork<Vote>(request.@params.vote.endTime, 300, new Dictionary<string, object> { { "id", request.@params.vote.id } });
+            //设定结束时间
+            string msgEndId = Guid.NewGuid().ToString();
+            await _serviceBus.SendMessage<Vote>(Constants.TopicName, request.@params.vote.id, request.@params.vote.code, request.@params.vote.endTime, 300, msgEndId);
             //清除作业
             if (!request.@params.reset)
             {