using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using TEAMModelOS.SDK.Context.Exception; using TEAMModelOS.SDK.Extension.SnowFlake; using TEAMModelOS.SDK.Helper.Common.CollectionHelper; using TEAMModelOS.SDK.Module.AzureCosmosDBV3; using TEAMModelOS.Service.Models.Syllabus; using TEAMModelOS.Service.Services.Syllabus.Interface; namespace TEAMModelOS.Service.Services.Syllabus.Implement { public class VolumeService : IVolumeService { private readonly IAzureCosmosDBV3Repository azureCosmosDBRepository; public VolumeService(IAzureCosmosDBV3Repository azureCosmosDBRepository) { this.azureCosmosDBRepository = azureCosmosDBRepository; } public async Task> SaveOrUpdateVolume(SyllabusVolume request) { if (request.editors != null && request.editors.Count > 5) { throw new BizException("共编人数大于5人!"); } if (string.IsNullOrEmpty(request.id)) { if (request.type == 0) { List volumesFind = await azureCosmosDBRepository.FindByDict(new Dictionary() { { "scopeCode",request.scopeCode},{ "periodCode", request.periodCode}, { "subjectCode", request.subjectCode},{ "gradeCode", request.gradeCode}, { "semesterCode",request.semesterCode},{ "volumeName",request.volumeName} , { "status",1} ,{ "type",0} }); if (volumesFind.IsNotEmpty()) { throw new BizException("已存在!", ResponseCode.DATA_EXIST); } ///校本课纲 string key = request.scopeCode + IdWorker.getInstance().NextId(); request.id = key; request.volumeCode = key; } else if (request.type == 1) { List volumesFind = await azureCosmosDBRepository.FindByDict(new Dictionary() { { "schoolCode",request.scopeCode},{ "periodCode", request.periodCode}, { "subjectCode", request.subjectCode},{ "gradeCode", request.gradeCode}, { "semesterCode",request.semesterCode},{ "volumeName",request.volumeName}, { "TEAMModelId",request.TEAMModelId}, { "status",1} ,{ "type",1} }); if (volumesFind.IsNotEmpty()) { throw new BizException("已存在!", ResponseCode.DATA_EXIST); } ///个人课纲 string key = "dynamic" + request.TEAMModelId.Replace("#", "") + IdWorker.getInstance().NextId(); request.id = key; request.volumeCode = key; } else if (request.type == 2) { ///系统课纲 string key = "system" + IdWorker.getInstance().NextId(); request.scopeCode = "system"; request.id = key; request.volumeCode = key; } } else { if (request.type == 0) { List volumesFind = await azureCosmosDBRepository.FindByDict(new Dictionary() { { "schoolCode",request.scopeCode},{ "periodCode", request.periodCode}, { "subjectCode", request.subjectCode},{ "gradeCode", request.gradeCode}, { "semesterCode",request.semesterCode},{ "volumeName",request.volumeName} , { "status",1} ,{ "type",0} }); if (volumesFind.IsNotEmpty()) { if (!volumesFind[0].id.Equals(request.id)) { throw new BizException("已存在!", ResponseCode.DATA_EXIST); } } } else if (request.type == 1) { List volumesFind = await azureCosmosDBRepository.FindByDict(new Dictionary() { { "schoolCode",request.scopeCode},{ "periodCode", request.periodCode}, { "subjectCode", request.subjectCode},{ "gradeCode", request.gradeCode}, { "semesterCode",request.semesterCode},{ "volumeName",request.volumeName}, { "TEAMModelId",request.TEAMModelId}, { "status",1} ,{ "type",1} }); if (volumesFind.IsNotEmpty()) { if (!volumesFind[0].id.Equals(request.id)) { throw new BizException("已存在!", ResponseCode.DATA_EXIST); } } } else if (request.type == 2) { } } List volumes = new List { request }; List volume = await azureCosmosDBRepository.SaveOrUpdateAll(volumes); return volume; } } }