HomeWorkService.cs 5.5 KB

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