123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- using Grpc.Core;
- using Grpc.Extension.Abstract;
- using Microsoft.AspNetCore.Authorization;
- using System.Collections.Generic;
- using System.Threading.Tasks;
- using TEAMModelGrpc.Models;
- using TEAMModelOS.Models.SchoolInfo;
- using TEAMModelOS.Models.StudentInfo;
- using TEAMModelOS.SDK.DI;
- using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
- namespace TEAMModelGrpc.Services
- {
- public class ClassroomService : IGrpcService
- {
- public readonly AzureCosmosFactory _azureCosmos;
- public ClassroomService(AzureCosmosFactory azureCosmos)
- {
- _azureCosmos = azureCosmos;
- }
- /// <summary>
- /// 保存教室
- /// </summary>
- /// <param name="requestStream"></param>
- /// <param name="responseStream"></param>
- /// <param name="context"></param>
- /// <returns></returns>
- [Authorize]
- public async Task SaveOrUpdateVolume(IAsyncStreamReader<Classroom> requestStream, IServerStreamWriter<Classroom> responseStream, ServerCallContext context)
- {
- List<Classroom> classrooms = new List<Classroom>();
- await foreach (Classroom classroom in requestStream.ReadAllAsync())
- {
- if (classroom.id != null)
- {
- classrooms.Add( await _azureCosmos.SaveOrUpdate(classroom));
- }
- else
- {
- ClassStudent students = new ClassStudent();
- students.code = classroom.code;
- //students.id = classroom.classroomCode;
- await _azureCosmos.SaveOrUpdate(students);
- classrooms.Add(await _azureCosmos.SaveOrUpdate(classroom));
- }
- }
- classrooms.ForEach(x => {
- responseStream.WriteAsync(x);
- });
- }
- /// <summary>
- /// 查询教室
- /// </summary>
- /// <param name="request"></param>
- /// <param name="responseStream"></param>
- /// <param name="context"></param>
- /// <returns></returns>
- [Authorize]
- public async Task FindVolume(Dict request, IServerStreamWriter<Classroom> responseStream, ServerCallContext context)
- {
- Dictionary<string, object> dict = request.ToDict();
- List<Classroom> syllabusVolumes = await _azureCosmos.FindByDict<Classroom>(dict);
- syllabusVolumes.ForEach(x => {
- responseStream.WriteAsync(x);
- });
- }
- /// <summary>
- /// 删除教室
- /// </summary>
- /// <param name="listPid"></param>
- /// <param name="context"></param>
- /// <returns></returns>
- [Authorize]
- public async Task<ListPid> Delete(ListPid listPid, ServerCallContext context)
- {
- await _azureCosmos.DeleteAll<Classroom>(listPid.idPks);
- if (listPid.idPks.IsNotEmpty())
- {
- List<ClassStudent> students = new List<ClassStudent>();
- foreach (IdPk classroom in listPid.idPks)
- {
- List<ClassStudent> ClassStudents = await _azureCosmos.FindByDict<ClassStudent>(new Dictionary<string, object> { { "id", classroom.id }, { "code", classroom.pk } });
- students.AddRange(ClassStudents);
- }
- if (students.Count > 0)
- {
- await _azureCosmos.DeleteAll<ClassStudent>(students);
- }
- listPid.idPks = await _azureCosmos.DeleteAll<Classroom>(listPid.idPks);
- }
- return listPid;
- }
- }
- }
|