using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Text.Json; using System.Threading.Tasks; using TEAMModelOS.Models.StudentInfo; using TEAMModelOS.Models.TeacherInfo; using TEAMModelOS.SDK; using TEAMModelOS.SDK.Context.Constant.Common; using TEAMModelOS.SDK.DI; using TEAMModelOS.SDK.Helper.Common.StringHelper; using TEAMModelOS.SDK.Helper.Common.ValidateHelper; namespace TEAMModelOS.Controllers.Learn { /// /// 学习活动 /// [Route("api/[controller]")] [ApiController] public class LearnController: BaseController { private readonly SnowflakeId _snowflakeId; private readonly AzureCosmosFactory _azureCosmos; private readonly AzureServiceBusFactory _serviceBus; public LearnController(AzureCosmosFactory azureCosmos, AzureServiceBusFactory serviceBus, SnowflakeId snowflakeId) { _snowflakeId = snowflakeId; _serviceBus = serviceBus; _azureCosmos = azureCosmos; } /// /// 保存或更新学习任务 /// /// /// [HttpPost("upsertTask")] public async Task UpsertTask(LearnTask request) { ResponseBuilder builder = ResponseBuilder.custom(); if (request.createTime <= 0) { request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds(); } if (request.endTime > 0) { //设定结束时间 string msgEndId = _snowflakeId.NextId()+""; await _serviceBus.GetServiceBusClient().SendLeamMessage(Constants.TopicName, request.id, request.code, request.endTime, 300, msgEndId); } await _azureCosmos.Save(request); return builder.Data(request).build(); } /// /// 查询学习任务 /// /// /// [HttpPost("findTask")] public async Task FindTask(JsonElement request) { ResponseBuilder builder = ResponseBuilder.custom(); if (request.TryGetProperty("id",out _) || request.TryGetProperty("code",out _)) { List tasks = await _azureCosmos.FindByDict(request); return builder.Data(tasks).build(); } else { return builder.Error(ResponseCode.PARAMS_ERROR, "参数异常!").build(); } } /// /// 删除学习任务 /// /// /// [HttpPost("deleteTask")] public async Task DeleteTask(IdPk request) { ResponseBuilder builder = ResponseBuilder.custom(); return builder.Data(await _azureCosmos.DeleteAsync(request)).build(); } /// /// 保存或更新学习单元单元 /// /// /// [HttpPost("upsertUnit")] public async Task UpsertUnit(LearnUnit request) { ResponseBuilder builder = ResponseBuilder.custom(); if (string.IsNullOrEmpty(request.id)) { request.id = _snowflakeId.NextId() + ""; request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds(); await _azureCosmos.Save(request); } else { await _azureCosmos.Update(request); } return builder.Data(request).build(); } /// /// 查询学习单元 /// /// /// [HttpPost("findUnit")] public async Task FindUnit(JsonElement request) { ResponseBuilder builder = ResponseBuilder.custom(); if (StringHelper.getKeyCount(request) > 0) { return builder.Data(await _azureCosmos.FindByDict(request)).build(); } else { return builder.build(); } } /// /// 删除学习单元 /// /// /// [HttpPost("deleteUnit")] public async Task DeleteUnit(IdPk request) { ResponseBuilder builder = ResponseBuilder.custom(); return builder.Data(await _azureCosmos.DeleteAsync(request)).build(); } /// /// 保存或新增编序学习活动 /// /// /// [HttpPost("upsertProcess")] public async Task UpsertProcess(LearnProcess request) { ResponseBuilder builder = ResponseBuilder.custom(); if (string.IsNullOrEmpty(request.id)) { request.id = _snowflakeId.NextId() + ""; request.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds(); await _azureCosmos.Save(request); } else { await _azureCosmos.Update(request); } return builder.Data(request).build(); } /// /// 查询编序学习活动 /// /// /// [HttpPost("findProcess")] public async Task FindProcess(JsonElement request) { ResponseBuilder builder = ResponseBuilder.custom(); if (StringHelper.getKeyCount(request) > 0) { builder.Data(await _azureCosmos.FindByDict(request)); } return builder.build(); } /// /// 删除编序学习活动 /// /// /// [HttpPost("deleteProcess")] public async Task DeleteProcess(IdPk request) { ResponseBuilder builder = ResponseBuilder.custom(); if (request != null) { builder.Data(await _azureCosmos.DeleteAsync(request)); } return builder.build(); } /// /// 保存或新增作答记录 /// /// /// [HttpPost("upsertRecord")] public async Task UpsertRecord(List request) { ResponseBuilder builder = ResponseBuilder.custom(); if (ValidateHelper.IsValid(request)) { request.ForEach(x => { if (string.IsNullOrEmpty(x.id)) { } }); List leanProcesses = await _azureCosmos.SaveOrUpdateAll(request); builder.Data(leanProcesses); } return builder.build(); } /// /// 查询编序作答记录 /// /// /// [HttpPost("findRecord")] public async Task FindRecord(JsonElement request) { ResponseBuilder builder = ResponseBuilder.custom(); if (StringHelper.getKeyCount(request) > 0) { builder.Data(await _azureCosmos.FindByDict(request)); } return builder.build(); } /// /// 删除作答记录 /// /// /// [HttpPost("deleteRecord")] public async Task DeleteRecord(IdPk request) { ResponseBuilder builder = ResponseBuilder.custom(); if (request != null) { builder.Data(await _azureCosmos.DeleteAsync(request)); } return builder.build(); } } }