123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- using Grpc.Core;
- using Grpc.Extension.Abstract;
- using Microsoft.AspNetCore.Authorization;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using TEAMModelGrpc.Models;
- using TEAMModelOS.SDK.Helper.Common.JsonHelper;
- using TEAMModelOS.SDK.DI;
- using TEAMModelOS.Service.Models;
- using TEAMModelOS.Service.Services.Interface;
- namespace TEAMModelGrpc.Services
- {
- /// <summary>
- /// 课纲业务
- /// </summary>
- public class SyllabusService : IGrpcService
- {
- private ISyllabusService syllabusService;
- private AzureCosmosFactory cosmosDBV3Repository;
- /// <summary>
- /// 构造函数
- /// </summary>
- /// <param name="syllabusService"></param>
- /// <param name="cosmosDBV3Repository"></param>
- public SyllabusService(ISyllabusService syllabusService, AzureCosmosFactory cosmosDBV3Repository)
- {
- this.syllabusService = syllabusService;
- this.cosmosDBV3Repository = cosmosDBV3Repository;
- }
- /// <summary>
- /// 查找课纲
- /// </summary>
- /// <param name="request"></param>
- /// <param name="responseStream"></param>
- /// <param name="context"></param>
- /// <returns></returns>
- [Authorize]
- public async Task FindSyllabusTree(Dict request, IServerStreamWriter<SyllabusTreeDto> responseStream, ServerCallContext context)
- {
- Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
- keyValuePairs = request.ToDict();
- List<SyllabusTree> knowledges = await syllabusService.Find(keyValuePairs);
- List<SyllabusTreeDto> list = knowledges.ToJson().FromJson<List<SyllabusTreeDto>>();
- list.ForEach(x =>
- {
- responseStream.WriteAsync(x);
- });
- }
- /// <summary>
- /// 按节点新增课纲
- /// </summary>
- /// <param name="requestStream"></param>
- /// <param name="context"></param>
- /// <returns></returns>
- public async Task<Response> SaveOrUpdateAsNodes(IAsyncStreamReader<SyllabusNode> requestStream, ServerCallContext context)
- {
- List<SyllabusNode> syllabusNodes = new List<SyllabusNode>();
- await foreach (SyllabusNode syllabusNode in requestStream.ReadAllAsync())
- {
- syllabusNodes.Add(syllabusNode);
- }
- await syllabusService.SaveOrUpdateAsNodes(syllabusNodes);
- Response response = new Response();
- return response.Success();
- }
- /// <summary>
- /// 按树形新增课纲结构
- /// </summary>
- /// <param name="requestStream"></param>
- /// <param name="responseStream"></param>
- /// <param name="context"></param>
- /// <returns></returns>
- public async Task SaveOrUpdateAsTree(IAsyncStreamReader<SyllabusTreeDto> requestStream, IServerStreamWriter<SyllabusTreeDto> responseStream, ServerCallContext context)
- {
- List<SyllabusTree> syllabusTrees = new List<SyllabusTree>();
- List<SyllabusTreeDto> syllabusTreeDtos = new List<SyllabusTreeDto>();
- await foreach (SyllabusTreeDto syllabusNode in requestStream.ReadAllAsync())
- {
- syllabusTreeDtos.Add(syllabusNode);
- SyllabusTree syllabusTree = syllabusNode.ToJson().FromJson<SyllabusTree>();
- syllabusTrees.Add(syllabusTree);
- }
- await syllabusService.SaveOrUpdateAsTree(syllabusTrees);
- syllabusTreeDtos.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 DeleteSyllabus(Dict request, IServerStreamWriter<SyllabusTreeDto> responseStream, ServerCallContext context)
- {
- Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
- keyValuePairs = request.ToDict();
- List<Syllabus> syllabuses = await syllabusService.DeleteSyllabus(keyValuePairs);//await cosmosDBV3Repository.DeleteAll<Knowledge>(listPid.idPks);
- List<SyllabusTreeDto> syllabusTreeDtos = syllabuses.ToJson().FromJson<List<SyllabusTreeDto>>();
- syllabusTreeDtos.ForEach(x => {
- responseStream.WriteAsync(x);
- });
- }
- }
- }
|