HomeWorkService.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. using Grpc.Core;
  2. using Grpc.Extension.Abstract;
  3. using Microsoft.AspNetCore.Authorization;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Threading.Tasks;
  7. using TEAMModelGrpc.Models;
  8. using TEAMModelOS;
  9. using TEAMModelOS.Models;
  10. using TEAMModelOS.SDK.Context.Exception;
  11. using TEAMModelOS.SDK.Helper.Common.CollectionHelper;
  12. using TEAMModelOS.SDK.DI;
  13. using TEAMModelOS.Models.StudentInfo;
  14. using TEAMModelOS.Models.Dto;
  15. using TEAMModelOS.Models.TeacherInfo;
  16. namespace TEAMModelGrpc.Services
  17. {
  18. public class HomeWorkService : IGrpcService
  19. {
  20. private readonly AzureCosmosFactory _azureCosmos;
  21. public HomeWorkService(AzureCosmosFactory azureCosmos)
  22. {
  23. _azureCosmos = azureCosmos;
  24. }
  25. /// <summary>
  26. /// 学生作业打分评论
  27. /// </summary>
  28. /// <param name="homeWorkCommentDto"></param>
  29. /// <param name="context"></param>
  30. /// <returns></returns>
  31. [Authorize]
  32. public async Task<HomeworkRecord> StudentScoring(HomeworkCommentDto homeWorkCommentDto, ServerCallContext context)
  33. {
  34. List<HomeworkRecord> homeWorkStudents = await _azureCosmos.FindByDict<HomeworkRecord>(new Dictionary<string, object> { { "code", homeWorkCommentDto.homeWorkId }, { "id", homeWorkCommentDto.homeWorkId } });
  35. List<Homework> homeWorks = await _azureCosmos.FindByDict<Homework>(new Dictionary<string, object> { { "id", homeWorkCommentDto.homeWorkId } });
  36. HomeworkRecord data = new HomeworkRecord();
  37. if (homeWorks.IsNotEmpty() && homeWorks[0].other.Contains("comment"))
  38. {
  39. if (homeWorkStudents.IsNotEmpty())
  40. {
  41. if (string.IsNullOrEmpty(homeWorkCommentDto.commentid))
  42. {
  43. //评论
  44. StudentComment homeWorkComment = new StudentComment
  45. {
  46. comment = homeWorkCommentDto.comment,
  47. createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds(),
  48. fromId = homeWorkCommentDto.fromId,
  49. score = homeWorkCommentDto.score
  50. };
  51. homeWorkStudents[0].stuCmt.Add(homeWorkComment);
  52. }
  53. else
  54. {
  55. //回复评论
  56. foreach (StudentComment comment in homeWorkStudents[0].stuCmt)
  57. {
  58. if (comment.commentid == homeWorkCommentDto.commentid)
  59. {
  60. Reply reply = new Reply();
  61. reply.fromId = homeWorkCommentDto.fromId;
  62. reply.toId = homeWorkCommentDto.toId;
  63. reply.identity = homeWorkCommentDto.identity;
  64. reply.comment = homeWorkCommentDto.comment;
  65. reply.createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
  66. comment.reply.Add(reply);
  67. }
  68. }
  69. }
  70. //homeWorkStudents[0].comments[request.@params.TEAMModelId] = request.@params.comment;
  71. data = await _azureCosmos.Update(homeWorkStudents[0]);
  72. }
  73. return data;
  74. }
  75. else throw new BizException("未开放互评");
  76. }
  77. /// <summary>
  78. /// 教师作业打分评论
  79. /// </summary>
  80. /// <param name="homeWorkCommentDto"></param>
  81. /// <param name="context"></param>
  82. /// <returns></returns>
  83. public async Task<HomeworkRecord> TeacherScoring(HomeworkScoringDto homeWorkCommentDto, ServerCallContext context)
  84. {
  85. List<HomeworkRecord> homeWorkStudents = await _azureCosmos.FindByDict<HomeworkRecord>(new Dictionary<string, object> { { "code", homeWorkCommentDto.studentId }, { "id", homeWorkCommentDto.homeWorkId } });
  86. HomeworkRecord data = new HomeworkRecord();
  87. if (homeWorkStudents.IsNotEmpty())
  88. {
  89. homeWorkStudents[0].score = homeWorkCommentDto.score ?? homeWorkStudents[0].score;
  90. HomeWorkComment homeWorkComment = new HomeWorkComment
  91. {
  92. comment = homeWorkCommentDto.comments,
  93. createTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds(),
  94. TEAMModelId = homeWorkCommentDto.TEAMModelId
  95. };
  96. homeWorkStudents[0].tchCmt = homeWorkComment;
  97. data = await _azureCosmos.SaveOrUpdate(homeWorkStudents[0]);
  98. }
  99. return data;
  100. }
  101. /// <summary>
  102. /// 查询教师评语罐头
  103. /// </summary>
  104. /// <param name="dict"></param>
  105. /// <param name="responseStream"></param>
  106. /// <param name="context"></param>
  107. /// <returns></returns>
  108. public async System.Threading.Tasks.Task FindTeacherComments(Dict dict, IServerStreamWriter<Comment> responseStream, ServerCallContext context)
  109. {
  110. Dictionary<string, object> keyValuePairs = dict.ToDict();
  111. List<Comment> teacherComments = new List<Comment>();
  112. if (keyValuePairs.IsNotEmpty()) {
  113. teacherComments = await _azureCosmos.FindByDict<Comment>(keyValuePairs);
  114. if (teacherComments.IsNotEmpty()) {
  115. teacherComments.ForEach(x=> {
  116. responseStream.WriteAsync(x);
  117. });
  118. }
  119. }
  120. }
  121. }
  122. }