|
@@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Mvc;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
+using System.Reflection;
|
|
|
using System.Threading.Tasks;
|
|
|
using TEAMModelOS.Models;
|
|
|
using TEAMModelOS.SDK.Context.Exception;
|
|
@@ -13,6 +14,8 @@ using TEAMModelOS.SDK.Module.AzureCosmosDBV3;
|
|
|
using TEAMModelOS.Service.Models.Core;
|
|
|
using TEAMModelOS.Service.Models.Courses;
|
|
|
using TEAMModelOS.Service.Models.Learn;
|
|
|
+using TEAMModelOS.Service.Services.Learn;
|
|
|
+using TEAMModelOS.Service.Services.Learn.Interfaces;
|
|
|
|
|
|
namespace TEAMModelOS.Controllers.Learn
|
|
|
{
|
|
@@ -24,12 +27,15 @@ namespace TEAMModelOS.Controllers.Learn
|
|
|
public class HomeWorkController : ControllerBase
|
|
|
{
|
|
|
private readonly IAzureCosmosDBV3Repository _cosmos;
|
|
|
+ private readonly ITimerWorkService _timerWorkService;
|
|
|
|
|
|
- public HomeWorkController(IAzureCosmosDBV3Repository cosmos)
|
|
|
+ public HomeWorkController(IAzureCosmosDBV3Repository cosmos, ITimerWorkService timerWorkService)
|
|
|
{
|
|
|
_cosmos = cosmos;
|
|
|
+ _timerWorkService = timerWorkService;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 撤消作业
|
|
|
/// </summary>
|
|
@@ -95,6 +101,12 @@ namespace TEAMModelOS.Controllers.Learn
|
|
|
request.@params.homeWork.startTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
|
|
|
request.@params.homeWork.state = 200;
|
|
|
}
|
|
|
+ else if (request.@params.homeWork.publishModel.Equals("1"))
|
|
|
+ {
|
|
|
+ //TimerWork<HomeWork>(request.@params.homeWork.startTime,new Dictionary<string, object> { { "id", request.@params.homeWork.id } });
|
|
|
+ //设定开始时间
|
|
|
+ _timerWorkService.TimerWork<HomeWork>(request.@params.homeWork.startTime,200, new Dictionary<string, object> { { "id", request.@params.homeWork.id } });
|
|
|
+ }
|
|
|
|
|
|
if (request.@params.homeWork.state == 0) {
|
|
|
|
|
@@ -104,7 +116,8 @@ namespace TEAMModelOS.Controllers.Learn
|
|
|
|
|
|
HomeWork homeWork = await _cosmos.SaveOrUpdate<HomeWork>(request.@params.homeWork);
|
|
|
|
|
|
-
|
|
|
+ //设定结束时间
|
|
|
+ _timerWorkService.TimerWork<HomeWork>(request.@params.homeWork.endTime, 300, new Dictionary<string, object> { { "id", request.@params.homeWork.id } });
|
|
|
//清除作业
|
|
|
if (request.@params.reset)
|
|
|
{
|
|
@@ -154,6 +167,30 @@ namespace TEAMModelOS.Controllers.Learn
|
|
|
return builder.Data(homeWork).build();
|
|
|
}
|
|
|
|
|
|
+ private void TimerWork<T>(long startTime,Dictionary<string, object> dict) where T : ID
|
|
|
+ {
|
|
|
+ System.Timers.Timer aTimer = new System.Timers.Timer();
|
|
|
+ // Create a timer with a two second interval.
|
|
|
+
|
|
|
+ long time = Math.Abs(startTime - new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds());
|
|
|
+ aTimer = new System.Timers.Timer(time);
|
|
|
+ // Hook up the Elapsed event for the timer.
|
|
|
+ aTimer.Elapsed += async (sender, e) => await OnTimedEventAsync<T>(_cosmos, dict);
|
|
|
+ aTimer.AutoReset = false;
|
|
|
+ aTimer.Enabled = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ private static async Task OnTimedEventAsync<T>(IAzureCosmosDBV3Repository _cosmos,Dictionary<string, object> dict)where T:ID
|
|
|
+ {
|
|
|
+ List<T> homeWorks = await _cosmos.FindByDict<T>(dict);
|
|
|
+ if (homeWorks.IsNotEmpty()) {
|
|
|
+ PropertyInfo propertyInfo = homeWorks[0].GetType().GetProperty("state");
|
|
|
+ for (int i = 0; i < homeWorks.Count; i++)
|
|
|
+ propertyInfo.SetValue(homeWorks[i], 200);
|
|
|
+ await _cosmos.SaveOrUpdateAll<T>(homeWorks);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 新增或修改学生作业关联表
|
|
@@ -364,7 +401,7 @@ namespace TEAMModelOS.Controllers.Learn
|
|
|
{
|
|
|
commentid = Guid.NewGuid().ToString(),
|
|
|
comment = request.@params.comment,
|
|
|
- createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds(),
|
|
|
+ createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds(),
|
|
|
fromId = request.@params.fromId,
|
|
|
score = request.@params.score
|
|
|
};
|