123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- using Grpc.Core;
- using Grpc.Extension.Abstract;
- using Microsoft.AspNetCore.Authorization;
- using System;
- using System.Collections.Generic;
- using System.Threading.Tasks;
- using TEAMModelGrpc.Models;
- using TEAMModelOS;
- using TEAMModelOS.Models;
- using TEAMModelOS.SDK.Context.Exception;
- using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
- using TEAMModelOS.SDK.DI;
- using TEAMModelOS.Models.StudentInfo;
- using TEAMModelOS.Models.Dto;
- using TEAMModelOS.Models.TeacherInfo;
- namespace TEAMModelGrpc.Services
- {
- public class HomeWorkService : IGrpcService
- {
- private readonly AzureCosmosFactory _azureCosmos;
- public HomeWorkService(AzureCosmosFactory azureCosmos)
- {
- _azureCosmos = azureCosmos;
- }
- /// <summary>
- /// 学生作业打分评论
- /// </summary>
- /// <param name="homeWorkCommentDto"></param>
- /// <param name="context"></param>
- /// <returns></returns>
- [Authorize]
- public async Task<HomeworkRecord> StudentScoring(HomeworkCommentDto homeWorkCommentDto, ServerCallContext context)
- {
- List<HomeworkRecord> homeWorkStudents = await _azureCosmos.FindByDict<HomeworkRecord>(new Dictionary<string, object> { { "code", homeWorkCommentDto.homeWorkId }, { "id", homeWorkCommentDto.homeWorkId } });
- List<Homework> homeWorks = await _azureCosmos.FindByDict<Homework>(new Dictionary<string, object> { { "id", homeWorkCommentDto.homeWorkId } });
- HomeworkRecord data = new HomeworkRecord();
- if (homeWorks.IsNotEmpty() && homeWorks[0].other.Contains("comment"))
- {
- if (homeWorkStudents.IsNotEmpty())
- {
- if (string.IsNullOrEmpty(homeWorkCommentDto.commentid))
- {
- //评论
- StudentComment homeWorkComment = new StudentComment
- {
- comment = homeWorkCommentDto.comment,
- createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds(),
- fromId = homeWorkCommentDto.fromId,
- score = homeWorkCommentDto.score
- };
- homeWorkStudents[0].stuCmt.Add(homeWorkComment);
- }
- else
- {
- //回复评论
- foreach (StudentComment comment in homeWorkStudents[0].stuCmt)
- {
- if (comment.commentid == homeWorkCommentDto.commentid)
- {
- Reply reply = new Reply();
- reply.fromId = homeWorkCommentDto.fromId;
- reply.toId = homeWorkCommentDto.toId;
- reply.identity = homeWorkCommentDto.identity;
- reply.comment = homeWorkCommentDto.comment;
- reply.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
- comment.reply.Add(reply);
- }
- }
- }
- //homeWorkStudents[0].comments[request.@params.TEAMModelId] = request.@params.comment;
- data = await _azureCosmos.Update(homeWorkStudents[0]);
- }
- return data;
- }
- else throw new BizException("未开放互评");
- }
- /// <summary>
- /// 教师作业打分评论
- /// </summary>
- /// <param name="homeWorkCommentDto"></param>
- /// <param name="context"></param>
- /// <returns></returns>
- public async Task<HomeworkRecord> TeacherScoring(HomeworkScoringDto homeWorkCommentDto, ServerCallContext context)
- {
- List<HomeworkRecord> homeWorkStudents = await _azureCosmos.FindByDict<HomeworkRecord>(new Dictionary<string, object> { { "code", homeWorkCommentDto.studentId }, { "id", homeWorkCommentDto.homeWorkId } });
- HomeworkRecord data = new HomeworkRecord();
- if (homeWorkStudents.IsNotEmpty())
- {
- homeWorkStudents[0].score = homeWorkCommentDto.score ?? homeWorkStudents[0].score;
- HomeWorkComment homeWorkComment = new HomeWorkComment
- {
- comment = homeWorkCommentDto.comments,
- createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds(),
- TEAMModelId = homeWorkCommentDto.TEAMModelId
- };
- homeWorkStudents[0].tchCmt = homeWorkComment;
- data = await _azureCosmos.SaveOrUpdate(homeWorkStudents[0]);
- }
- return data;
- }
- /// <summary>
- /// 查询教师评语罐头
- /// </summary>
- /// <param name="dict"></param>
- /// <param name="responseStream"></param>
- /// <param name="context"></param>
- /// <returns></returns>
- public async System.Threading.Tasks.Task FindTeacherComments(Dict dict, IServerStreamWriter<Comment> responseStream, ServerCallContext context)
- {
- Dictionary<string, object> keyValuePairs = dict.ToDict();
- List<Comment> teacherComments = new List<Comment>();
- if (keyValuePairs.IsNotEmpty()) {
- teacherComments = await _azureCosmos.FindByDict<Comment>(keyValuePairs);
- if (teacherComments.IsNotEmpty()) {
- teacherComments.ForEach(x=> {
- responseStream.WriteAsync(x);
- });
- }
- }
-
- }
- }
- }
|