Преглед изворни кода

[更新] 全部review常量

WuXinyu пре 7 година
родитељ
комит
738fab57c2
3 измењених фајлова са 258 додато и 115 уклоњено
  1. 113 38
      mock/modules/review/index.js
  2. 3 3
      mock/serializers/review/ReviewDocResultSerializer.js
  3. 142 74
      src/api/review.js

+ 113 - 38
mock/modules/review/index.js

@@ -4,86 +4,161 @@ const reviewSimpleSerializer = require("../../serializers/review/ReviewSimpleSer
 const reviewDetailSerializer = require("../../serializers/review/ReviewDetailSerializer");
 const checkListItemSerializer = require("../../serializers/review/CheckListItemSerializer");
 const reviewResultSerializer = require("../../serializers/review/ReviewResultSerializer");
+const reviewDocResultSerializer = require("../../serializers/review/ReviewDocResultSerializer");
+const reviewDocDetailSerializer = require("../../serializers/review/ReviewDocDetailSerializer");
 
+const groupSerializer = require("../../serializers/course/GroupSerializer");
+
+// ====================== TEACHER ======================
+
+// 新建互评作业
 router.route("/review").post((req, res) =>
   res.send({
-    data: reviewSimpleSerializer()
+    data: reviewSimpleSerializer({})
   })
 );
 
-router.route("/argue").post((req, res) => res.send({}));
-
+// 老师查看互评作业列表
 router.route("/teacher/course/:courseId/review").get((req, res) =>
   res.send({
-    data: [reviewSimpleSerializer(), reviewSimpleSerializer()]
+    data: [
+      reviewSimpleSerializer({ state: "DEFAULT" }),
+      reviewSimpleSerializer({ state: "REVIEWING" }),
+      reviewSimpleSerializer({ state: "ARGUING" }),
+      reviewSimpleSerializer({ state: "SOLVING" }),
+      reviewSimpleSerializer({ state: "END" })
+    ]
   })
 );
 
-router.route("/teacher/review/:reviewId").get((req, res) =>
+// 老师查看互评作业详情
+router.route("/teacher/review/:reviewId").get((req, res) => {
+  const reviewId = req.params.reviewId;
+  res.send({
+    data: reviewDetailSerializer({ reviewId })
+  });
+});
+
+// 老师查看互评作业汇总结果
+router.route("/sum/:reviewId").get((req, res) =>
   res.send({
-    data: reviewDetailSerializer()
+    data: reviewResultSerializer({ reviewId: req.params.reviewId })
   })
 );
 
-router.route("/student/course/:courseId/review").get((req, res) =>
+// 老师查看某次互评作业所有小组
+router.route("/sum/:reviewId/group").get((req, res) =>
+  res.send({
+    data: [
+      groupSerializer(),
+      groupSerializer(),
+      groupSerializer(),
+      groupSerializer(),
+      groupSerializer()
+    ]
+  })
+);
+
+// 老师查看某次互评作业一个小组的详细结果
+router.route("/sum/:reviewId/group/:groupId").get((req, res) =>
   res.send({
-    data: [reviewSimpleSerializer(), reviewSimpleSerializer()]
+    data: reviewDocResultSerializer()
   })
 );
 
 router
-  .route("/student/review/:reviewId")
+  .route("/sum/:reviewId/argue/:groupId")
+  // 老师开始对某次互评作业一个小组进行评价
   .get((req, res) =>
     res.send({
-      data: reviewDetailSerializer()
+      data: reviewDocDetailSerializer({})
     })
   )
-  .post((req, res) =>
-    res.send({
-      data: [checkListItemSerializer(), checkListItemSerializer()]
-    })
-  );
+  // 老师提交对某次互评作业一个小组的评价结果
+  .post((req, res) => {
+    res.send(req.body);
+  });
 
-router.route("/student/course/:courseId/result").get((req, res) =>
-  res.send({
-    data: [reviewSimpleSerializer(), reviewSimpleSerializer()]
-  })
-);
+// 老师更新作业评分标准
+router.route("/sum/:reviewId/level").post((req, res) => {
+  res.send({});
+});
 
-router.route("/student/review/:reviewId/result").get((req, res) =>
+// ====================== STUDENT ======================
+
+// 学生查看老师发布的互评作业列表
+router.route("/student/course/:courseId/review").get((req, res) =>
   res.send({
-    data: reviewResultSerializer()
+    data: [
+      reviewSimpleSerializer({ state: "DEFAULT" }),
+      reviewSimpleSerializer({ state: "REVIEWING" }),
+      reviewSimpleSerializer({ state: "ARGUING" }),
+      reviewSimpleSerializer({ state: "SOLVING" }),
+      reviewSimpleSerializer({ state: "END" })
+    ]
   })
 );
 
-router.route("/sum/:reviewId").get((req, res) =>
+// 学生查看互评作业详情
+router.route("/student/review/:reviewId").get((req, res) =>
   res.send({
-    detail: reviewDetailSerializer(),
-    finishPercentage: 0.7,
-    studentIdCheckListAcceptNumMap: {
-      1: 1,
-      2: 3
-    }
+    data: reviewDetailSerializer({ reviewId: req.params.reviewId })
   })
 );
 
-router.route("/sum/:reviewId/level").post((req, res) => {
-  res.send({});
-});
+router
+  .route("/student/review/:reviewId/doc-review/:docReviewId")
+  // 学生获取某次互评作业中某个文档
+  .get((req, res) =>
+    res.send({
+      data: reviewDocDetailSerializer(req.params.docReviewId)
+    })
+  )
+  // 学生提交某次互评作业中的某个文档
+  .post((req, res) =>
+    res.send({
+      data: [
+        checkListItemSerializer({}),
+        checkListItemSerializer({}),
+        checkListItemSerializer({}),
+        checkListItemSerializer({}),
+        checkListItemSerializer({})
+      ]
+    })
+  );
 
-router.route("/sum/:reviewId/argue").get((req, res) =>
+// 学生选择查看某次互评作业中自己的文档
+router.route("/student/review/:reviewId/result").get((req, res) =>
   res.send({
-    data: [reviewSimpleSerializer(), reviewSimpleSerializer()]
+    data: reviewDocResultSerializer()
   })
 );
 
+// 学生对某个组的某条checklist提出argue
+router.route("/student/argue").post((req, res) => res.send({}));
+
+// 学生(评审方)判断是否愿意处理argue
 router
-  .route("/sum/:reviewId/argue/:groupId")
+  .route("/student/review/:reviewId/checklist/:checkListId/argue/acceptation")
+  .post((req, res) =>
+    res.send({
+      data: [checkListItemSerializer({})]
+    })
+  );
+
+// 学生(评审方)提交argue [标记为已处理完成]
+router
+  .route("/student/review/:reviewId/checklist/:checkListId/argue/end")
   .get((req, res) =>
     res.send({
-      data: reviewResultSerializer()
+      data: [
+        checkListItemSerializer({}),
+        checkListItemSerializer({}),
+        checkListItemSerializer({}),
+        checkListItemSerializer({}),
+        checkListItemSerializer({})
+      ]
     })
-  )
-  .post((req, res) => res.send({}));
+  );
 
 module.exports = router;

+ 3 - 3
mock/serializers/review/ReviewDocResultSerializer.js

@@ -6,7 +6,7 @@ const reviewDetailSerializer = require("./ReviewDetailSerializer");
 
 /**
  * @description 一次文档评价实例的详情
- * @typedef {Object} ReviewDocDetailSerializerType
+ * @typedef {Object} ReviewDocResultSerializerType
  * @property {number|string} docReviewId 一次文档评价的实例id
  * @property {ReviewDetailSerializerType} review 互评作业详情
  * @property {string} docContent 文档内容
@@ -14,8 +14,8 @@ const reviewDetailSerializer = require("./ReviewDetailSerializer");
  */
 
 /**
- * @description 生成ReviewDocDetailSerializer一次文档评价实例的详情
- * @returns {ReviewDocDetailSerializerType}
+ * @description 生成ReviewDocResultSerializer一次文档评价实例的详情
+ * @returns {ReviewDocResultSerializerType}
  */
 const reviewDocDetailSerializer = (docReviewId = makeId()) => {
   return {

+ 142 - 74
src/api/review.js

@@ -1,40 +1,30 @@
 import request from "@/util/request";
 import { REVIEW_MODULE } from "./_prefix";
 
+// ====================== TEACHER ======================
+
 /**
  * 新建互评作业
- * @param {number} homeworkId 作业id
- * @param {number} beginAt 开始时间
- * @param {number} endAt 截止时间
+ * @param {number} documentHwId 作业id
+ * @param {number} startAt 开始时间
+ * @param {number} reviewDdl 互评结束时间
+ * @param {number} argueDdl argue结束时间
+ * @param {number} endDdl 最后结束时间
  * @param {number} taskNumber 互评任务数
  * @returns {Promise<ReviewSimpleSerializerType>}
  * @throws {StatusException} 输入不合法
  */
-export const createReview = ({ homeworkId, beginAt, endAt, taskNumber }) => {
-  return request(`${REVIEW_MODULE}/review`, {
-    method: "POST",
-    body: { homeworkId, beginAt, endAt, taskNumber }
-  });
-};
-
-/**
- * 学生申请解释互评作业
- * @param homeworkId
- * @param checkListItemId
- * @param judgeItemId
- * @param remark
- * @returns {Promise<{}>}
- * @throws {StatusException} 输入不合法
- */
-export const argueReviewHomework = ({
-  homeworkId,
-  checkListItemId,
-  judgeItemId,
-  remark
+export const createReview = ({
+  documentHwId,
+  startAt,
+  reviewDdl,
+  argueDdl,
+  endDdl,
+  taskNumber
 }) => {
-  return request(`${REVIEW_MODULE}/argue`, {
+  return request(`${REVIEW_MODULE}/review`, {
     method: "POST",
-    body: { homeworkId, checkListItemId, judgeItemId, remark }
+    body: { documentHwId, startAt, reviewDdl, argueDdl, endDdl, taskNumber }
   });
 };
 
@@ -57,103 +47,181 @@ export const getTeacherReviewDetail = reviewId => {
 };
 
 /**
- * 学生查看互评作业列表
- * @param {string|number} courseId
- * @return {Promise<{data:ReviewSimpleSerializerType[]}>}
+ * 老师查看互评作业汇总结果
+ * @param {string|number} reviewId
+ * @return {Promise<{data:ReviewResultSerializerType}>}
  */
-export const getStudentCourseReviewList = courseId => {
-  return request(`${REVIEW_MODULE}/student/course/${courseId}/review`);
+export const getTeacherReviewResult = reviewId => {
+  return request(`${REVIEW_MODULE}/sum/${reviewId}`);
 };
 
 /**
- * 学生查看互评作业详情
+ * 老师查看某次互评作业所有小组
+ * @param reviewId
+ * @return {Promise<{data:GroupSerializerType}>}
+ */
+export const getTeacherReviewAllGroups = reviewId => {
+  return request(`${REVIEW_MODULE}/sum/${reviewId}/group`);
+};
+
+/**
+ * 老师查看某次互评作业一个小组的详细结果
+ * @param reviewId
+ * @param groupId
+ * @return {Promise<{data:ReviewDocResultSerializerType}>}
+ */
+export const getTeacherReviewGroupDetail = (reviewId, groupId) => {
+  return request(`${REVIEW_MODULE}/sum/${reviewId}/group/${groupId}`);
+};
+
+/**
+ * 老师开始对某次互评作业一个小组进行评价
  * @param {string|number} reviewId
- * @return {Promise<{data:ReviewDetailSerializerType}>}
+ * @param {string|number} groupId
+ * @return {Promise<{data:ReviewDocDetailSerializerType}>}
  */
-export const getStudentReviewDetail = reviewId => {
-  return request(`${REVIEW_MODULE}/student/review/${reviewId}`);
+export const getTeacherStartArgue = (reviewId, groupId) => {
+  return request(`${REVIEW_MODULE}/sum/${reviewId}/argue/${groupId}`);
 };
 
 /**
- * 学生做互评作业
+ * 老师提交对某次互评作业一个小组的评价结果
  * @param {string|number} reviewId
- * @param {{data:CheckListItemSerializerType}} checkListBody
- * @return {Promise<{data:CheckListItemSerializerType[]}>}
+ * @param {string|number} groupId
+ * @param {CheckListItemSerializerType[]} checkList
+ * @return {Promise<{checkList:CheckListItemSerializerType[]}>}
+ */
+export const postTeacherArgueResult = (reviewId, groupId, checkList) => {
+  return request(`${REVIEW_MODULE}/sum/${reviewId}/argue/${groupId}`, {
+    method: "POST",
+    body: { checkList }
+  });
+};
+
+/**
+ * 老师更新作业评分标准
+ * @param {string|number} reviewId
+ * @param {*} level
+ * @return {Promise<{}>}
  * @throws {StatusException} 输入不合法
  */
-export const postStudentReviewWork = (reviewId, checkListBody) => {
-  return request(`${REVIEW_MODULE}/student/review/${reviewId}`, {
+export const postReviewSumLevel = (reviewId, level) => {
+  return request(`${REVIEW_MODULE}/sum/${reviewId}/level`, {
     method: "POST",
-    body: checkListBody
+    body: level
   });
 };
 
+// ====================== STUDENT ======================
+
 /**
- * 学生查看互评结果列表
+ * 学生查看老师发布的互评作业列表
  * @param {string|number} courseId
  * @return {Promise<{data:ReviewSimpleSerializerType[]}>}
  */
-export const getStudentReviewResultList = courseId => {
-  return request(`${REVIEW_MODULE}/student/course/${courseId}/result`);
+export const getStudentCourseReviewList = courseId => {
+  return request(`${REVIEW_MODULE}/student/course/${courseId}/review`);
 };
 
 /**
- * 学生查看某次互评结果
+ * 学生查看互评作业详情
  * @param {string|number} reviewId
- * @return {Promise<{data:ReviewResultSerializerType}>}
+ * @return {Promise<{data:ReviewDetailSerializerType}>}
  */
-export const getStudentReviewResultDetail = reviewId => {
-  return request(`${REVIEW_MODULE}/student/review/${reviewId}/result`);
+export const getStudentReviewDetail = reviewId => {
+  return request(`${REVIEW_MODULE}/student/review/${reviewId}`);
 };
 
 /**
- * 老师查看互评作业汇总结果
+ * 学生获取某次互评作业中某个文档
  * @param {string|number} reviewId
- * @return {Promise<{detail:ReviewDetailSerializerType,finishPercentage:number,studentIdCheckListAcceptNumMap:*}>}
+ * @param {string|number} docReviewId
+ * @return {Promise<{data:ReviewDocDetailSerializerType}>}
  */
-export const getReviewSumResult = reviewId => {
-  return request(`${REVIEW_MODULE}/sum/${reviewId}`);
+export const getStudentReviewDocDetail = (reviewId, docReviewId) => {
+  return request(
+    `${REVIEW_MODULE}/student/review/${reviewId}/doc-review/${docReviewId}`
+  );
 };
 
 /**
- * 老师更新作业评分标准
+ * 学生提交某次互评作业中的某个文档
  * @param {string|number} reviewId
- * @param {*} level
- * @return {Promise<{}>}
+ * @param {string|number} docReviewId
+ * @param {{data:CheckListItemSerializerType[]}} checkListBody
+ * @return {Promise<{data:CheckListItemSerializerType[]}>}
  * @throws {StatusException} 输入不合法
  */
-export const postReviewSumLevel = (reviewId, level) => {
-  return request(`${REVIEW_MODULE}/sum/${reviewId}/level`, {
-    method: "POST",
-    body: level
-  });
+export const postStudentReviewWork = (reviewId, docReviewId, checkListBody) => {
+  return request(
+    `${REVIEW_MODULE}/student/review/${reviewId}/doc-review/${docReviewId}`,
+    {
+      method: "POST",
+      body: checkListBody
+    }
+  );
 };
 
 /**
- * 老师获得需要人工复核的文档列表
+ * 学生选择查看某次互评作业中自己的文档
  * @param {string|number} reviewId
- * @return {Promise<ReviewSimpleSerializerType[]>}
+ * @return {Promise<{data:ReviewDocResultSerializerType}>}
  */
-export const getTeacherArgueList = reviewId => {
-  return request(`${REVIEW_MODULE}/sum/${reviewId}/argue`);
+export const getStudentReviewSelfDetail = reviewId => {
+  return request(`${REVIEW_MODULE}/student/review/${reviewId}/result`);
 };
 
 /**
- * 老师获得需要人工复核的文档详情
+ * 学生对某个组的某条checklist提出argue
+ * @param {string|number} reviewId 作业id
+ * @param {string|number} id 某个checkList的id
+ * @param {string|number} groupId 某个小组的id
+ * @param {string} remark 评论
+ * @returns {Promise<{}>}
+ * @throws {StatusException} 输入不合法 | 已评审,不可重复评审
+ */
+export const postStudentArgueReview = ({
+  reviewId,
+  id,
+  groupId,
+  remark = ""
+}) => {
+  return request(`${REVIEW_MODULE}/argue`, {
+    method: "POST",
+    body: { reviewId, id, groupId, remark }
+  });
+};
+
+/**
+ * 学生(评审方)判断是否愿意处理argue
  * @param {string|number} reviewId
- * @param {string|number} groupId
- * @return {Promise<{data:ReviewResultSerializerType}>}
+ * @param {string|number} checkListId
+ * @param {boolean} accept
+ * @return {Promise<{data:CheckListItemSerializerType[]}>}
  */
-export const getTeacherArgueDetail = (reviewId, groupId) => {
-  return request(`${REVIEW_MODULE}/sum/${reviewId}/argue/${groupId}`);
+export const postStudentArgueAcceptation = (reviewId, checkListId, accept) => {
+  return request(
+    `${REVIEW_MODULE}/student/review/${reviewId}/checklist/${checkListId}/argue/acceptation`,
+    {
+      method: "POST",
+      body: { accept }
+    }
+  );
 };
 
 /**
- * 老师提交需要复核文档的结果
+ * 学生(评审方)提交argue [标记为已处理完成]
  * @param {string|number} reviewId
- * @param {string|number} groupId
- * @return {Promise<{}>}
+ * @param {string|number} checkListId
+ * @param {CheckListItemSerializerType[]} checkList
+ * @return {Promise<{data:CheckListItemSerializerType[]}>}
  */
-export const postTeacherArgueResult = (reviewId, groupId) => {
-  return request(`${REVIEW_MODULE}/sum/${reviewId}/argue/${groupId}`);
+export const postStudentArgueEnd = (reviewId, checkListId, checkList) => {
+  return request(
+    `${REVIEW_MODULE}/student/review/${reviewId}/checklist/${checkListId}/argue/acceptation`,
+    {
+      method: "POST",
+      body: { data: checkList }
+    }
+  );
 };