Przeglądaj źródła

Merge branch 'develop' into feature/question-zhouweilu

soleil 7 lat temu
rodzic
commit
93251fee37

+ 1 - 1
mock/modules/auth/index.js

@@ -1,6 +1,6 @@
 const express = require("express");
 const router = express.Router();
-const UserSerializer = require("../../serializers/UserSerializer");
+const UserSerializer = require("../../serializers/user/UserSerializer");
 
 router.route("/login").post((req, res) => {
   //登录

+ 1 - 1
mock/modules/course/index.js

@@ -1,6 +1,6 @@
 const express = require("express");
 const router = express.Router();
-const CourseSerializer = require("../../serializers/CourseSerializer");
+const CourseSerializer = require("../../serializers/course/CourseSerializer");
 
 router
   .route("/teacher")

+ 2 - 2
mock/modules/doc/index.js

@@ -2,8 +2,8 @@ const express = require("express");
 const router = express.Router();
 const DocSimpleSerializer = require("../../serializers/DocSimpleSerializer");
 const DocSerializer = require("../../serializers/DocSerializer");
-const DocResultSerializer = require("../../serializers/DocResultSerializer");
-const CheckListItemSerializer = require("../../serializers/CheckListItemSerializer");
+const DocResultSerializer = require("../../serializers/review/ReviewResultSerializer");
+const CheckListItemSerializer = require("../../serializers/review/CheckListItemSerializer");
 
 router.route("").get((req, res) => {
   //获得文档列表

+ 1 - 1
mock/modules/group/index.js

@@ -1,6 +1,6 @@
 const express = require("express");
 const router = express.Router();
-const GroupSerializer = require("../../serializers/GroupSerializer");
+const GroupSerializer = require("../../serializers/course/GroupSerializer");
 
 router
   .route("")

+ 1 - 1
mock/modules/user/index.js

@@ -1,6 +1,6 @@
 const express = require("express");
 const router = express.Router();
-const UserSerializer = require("../../serializers/UserSerializer");
+const UserSerializer = require("../../serializers/user/UserSerializer");
 
 router.route("/:userId").get((req, res) => {
   //获得用户信息

+ 0 - 11
mock/serializers/CheckListItemSerializer.js

@@ -1,11 +0,0 @@
-const makeId = require("../util/makeId");
-
-module.exports = () => {
-  return {
-    fid: makeId(),
-    content: "该项评价的内容, String",
-    comment: "用户的备注, String",
-    //未来会添加
-    explain: "老师的说明,String"
-  };
-};

+ 0 - 21
mock/serializers/DocResultSerializer.js

@@ -1,21 +0,0 @@
-const makeId = require("../util/makeId");
-
-module.exports = pass => {
-  return {
-    fid: makeId(),
-    content: "该项评价的内容, String",
-    pass: pass || false,
-    result: [
-      {
-        rid: 1,
-        level: 0,
-        comment: "我觉得还行"
-      },
-      {
-        rid: 2,
-        level: 1,
-        comment: "我觉得不行"
-      }
-    ]
-  };
-};

+ 1 - 1
mock/serializers/TagSerializer.js

@@ -1,5 +1,5 @@
 const makeId = require("../util/makeId");
-const userSerializer = require("./UserSerializer");
+const userSerializer = require("./user/UserSerializer");
 
 module.exports = (type = "GROUP", name = "TagBaker") => {
   return {

+ 3 - 3
mock/serializers/CourseSerializer.js → mock/serializers/course/CourseSerializer.js

@@ -1,5 +1,5 @@
-const makeId = require("../util/makeId");
-const UserSerializer = require("./UserSerializer");
+const makeId = require("../../util/makeId");
+const userSerializer = require("../user/UserSerializer");
 
 /**
  * @description 课程信息
@@ -19,6 +19,6 @@ module.exports = () => {
     id: makeId(),
     name: "软件工程第二阶段 2018",
     code: "xxxxx",
-    teacher: UserSerializer("TEACHER")
+    teacher: userSerializer("TEACHER")
   };
 };

+ 7 - 7
mock/serializers/GroupSerializer.js → mock/serializers/course/GroupSerializer.js

@@ -1,5 +1,5 @@
-const makeId = require("../util/makeId");
-const UserSerializer = require("./UserSerializer");
+const makeId = require("../../util/makeId");
+const userSerializer = require("../user/UserSerializer");
 
 /**
  * @description 小组信息
@@ -12,7 +12,7 @@ const UserSerializer = require("./UserSerializer");
 
 /**
  * @description 生成课程信息
- * @returns {CourseSerializerType}
+ * @returns {GroupSerializerType}
  */
 module.exports = () => {
   return {
@@ -20,10 +20,10 @@ module.exports = () => {
     name: "tag-maker",
     code: "xxxxx",
     members: [
-      UserSerializer(),
-      UserSerializer(),
-      UserSerializer(),
-      UserSerializer()
+      userSerializer(),
+      userSerializer(),
+      userSerializer(),
+      userSerializer()
     ]
   };
 };

+ 25 - 0
mock/serializers/review/CheckListItemSerializer.js

@@ -0,0 +1,25 @@
+const makeId = require("../../util/makeId");
+
+/**
+ * @description 互评checkListItem详细实体类
+ * @typedef {Object} CheckListItemSerializerType
+ * @property {number|string} fid item id
+ * @property {string} content 评价内容
+ * @property {string} level 用户评级
+ * @property {string} comment 用户备注
+ * @property {string} explain 老师说明
+ */
+
+/**
+ * @description 生成checkListItem
+ * @returns {CheckListItemSerializerType}
+ */
+module.exports = () => {
+  return {
+    fid: makeId(),
+    content: "该项评价的内容, String",
+    level: "用户的备注, String",
+    comment: "用户的评级",
+    explain: "老师的说明,String"
+  };
+};

+ 38 - 0
mock/serializers/review/ReviewDetailSerializer.js

@@ -0,0 +1,38 @@
+const makeLongMarkdown = require("../../util/makeLongMarkdown");
+const makeId = require("../../util/makeId");
+const courseSerializer = require("../course/CourseSerializer");
+const dayjs = require("dayjs");
+const checkListItemSerializer = require("./CheckListItemSerializer");
+const groupSerializer = require("../course/GroupSerializer");
+
+/**
+ * @description 互评checkListItem详细实体类
+ * @typedef {Object} ReviewDetailSerializerType
+ * @property {number|string} id 互评作业id
+ * @property {string} name 对应的文档作业名称
+ * @property {CourseSerializerType} course 所属课程
+ * @property {number} beginAt 开始时间
+ * @property {number} endAt 截止时间
+ * @property {string} docContent 作业内容
+ * @property {CheckListItemSerializerType[]} checkList 评价列表
+ * @property {GroupSerializerType} group 所属小组
+ */
+
+/**
+ * @description 生成ReviewDetailSerializer
+ * @returns ReviewDetailSerializerType
+ */
+const reviewDetailSerializer = () => {
+  return {
+    id: makeId(),
+    name: "该项评价的内容, String",
+    course: courseSerializer(),
+    beginAt: dayjs("2018-10-21").unix(),
+    endAt: dayjs("2018-12-21").unix(),
+    docContent: makeLongMarkdown(),
+    checkList: [checkListItemSerializer(), checkListItemSerializer()],
+    group: groupSerializer()
+  };
+};
+
+module.exports = reviewDetailSerializer;

+ 65 - 0
mock/serializers/review/ReviewResultSerializer.js

@@ -0,0 +1,65 @@
+const makeId = require("../../util/makeId");
+const reviewDetailSerializer = require("./ReviewDetailSerializer");
+const checkListItemSerializer = require("./CheckListItemSerializer");
+
+/**
+ * @description 互评ReviewResultSerializer详细实体类
+ * @typedef {Object} ReviewResultSerializerType
+ * @property {number|string} id ReviewResultSerializer
+ * @property {ReviewDetailSerializerType} detail 文档详情
+ * @property {string} level 文档等级
+ * @property {CheckListResult[]} checkListResult 互评作业的结果
+ */
+
+/**
+ * @description 详细评价结果CheckListResult
+ * @typedef {Object} CheckListResult
+ * @property {string|number} id id
+ * @property {CheckListItemSerializerType} checkListItem
+ * @property {GroupCheckResult[]} results 小组作出的评价
+ */
+
+/**
+ * @description 各个小组的评价 groupCheckResult
+ * @typedef {Object} GroupCheckResult
+ * @property {string|number} judgeItemId id
+ * @property {number} level 小组作出的评价
+ * @property {string} comment 小组作出的备注
+ */
+
+/**
+ * @description 生成DocResultSerializer
+ * @returns {ReviewResultSerializerType}
+ */
+const reviewResultSerializer = () => {
+  /**
+   * @return {GroupCheckResult}
+   */
+  const groupCheckResultItem = (level = 0) => ({
+    judgeItemId: makeId(),
+    level: level,
+    comment: "我是备注我是小组备注"
+  });
+
+  /**
+   * @returns {CheckListResult}
+   */
+  const checkListResultItem = () => ({
+    id: makeId(),
+    checkListItem: checkListItemSerializer(),
+    results: [
+      groupCheckResultItem(),
+      groupCheckResultItem(1),
+      groupCheckResultItem()
+    ]
+  });
+
+  return {
+    id: makeId(),
+    detail: reviewDetailSerializer(),
+    level: "A",
+    checkListResult: [checkListResultItem(), checkListResultItem()]
+  };
+};
+
+module.exports = reviewResultSerializer;

+ 29 - 0
mock/serializers/review/ReviewSimpleSerializer.js

@@ -0,0 +1,29 @@
+const makeId = require("../../util/makeId");
+const courseSerializer = require("../course/CourseSerializer");
+const dayjs = require("dayjs");
+
+/**
+ * @description 互评checkListItem详细实体类
+ * @typedef {Object} ReviewSimpleSerializerType
+ * @property {number|string} id 互评作业id
+ * @property {string} name 对应的文档作业名称
+ * @property {CourseSerializerType} course 所属课程
+ * @property {number} beginAt 开始时间
+ * @property {number} endAt 截止时间
+ */
+
+/**
+ * @description 生成ReviewSimpleSerializerType
+ * @returns ReviewSimpleSerializerType
+ */
+const reviewSimpleSerializer = () => {
+  return {
+    id: makeId(),
+    name: "该项评价的内容, String",
+    course: courseSerializer(),
+    beginAt: dayjs("2018-10-21").unix(),
+    endAt: dayjs("2018-12-21").unix()
+  };
+};
+
+module.exports = reviewSimpleSerializer;

+ 2 - 2
mock/serializers/UserSerializer.js → mock/serializers/user/UserSerializer.js

@@ -1,4 +1,4 @@
-const makeId = require("../util/makeId");
+const makeId = require("../../util/makeId");
 
 /**
  * @description 用户基本信息
@@ -12,7 +12,7 @@ const makeId = require("../util/makeId");
 /**
  * 生成基本用户信息
  * @param role
- * @returns {UserSerializer}
+ * @returns {UserSerializerType}
  */
 module.exports = (role = "STUDENT") => {
   return {

+ 4 - 0
mock/util/makeId.js

@@ -1,3 +1,7 @@
+/**
+ * 随机数
+ * @return {number}
+ */
 module.exports = () => {
   return Math.floor(Math.random() * 10000000);
 };

+ 64 - 0
mock/util/makeLongMarkdown.js

@@ -0,0 +1,64 @@
+/**
+ * 获取长markdown字符串
+ * @return {string}
+ */
+module.exports = () => {
+  return (
+    "# 需求规格说明文档\n\n" +
+    "> 参照语雀API基本要求\n" +
+    "\n" +
+    "## 基本路径\n" +
+    "* `/api/v2/`\n" +
+    "\n" +
+    "## HTTP Verbs\n" +
+    "\n" +
+    "| Verb | Description |\n" +
+    "| :--- | :--- |\n" +
+    "| GET | 用于获取数据 |\n" +
+    "| POST | 用于创建数据 |\n" +
+    "| PUT | 用于修改部分数据,例如一个文档标题,正文 |\n" +
+    "| DELETE | 用于删除数据 |\n" +
+    "\n" +
+    "## 用户认证\n" +
+    "使用 Token 机制来实现用户认证。\n" +
+    "在请求的 HTTP Headers 传入 `Authorization` 带入用户的 Token 信息,用于认证。\n" +
+    "\n" +
+    "文档会在需要用户权限的api中标识 __[需要认证] __\n" +
+    "\n" +
+    "## HTTP 状态码\n" +
+    "* 200 - 成功\n" +
+    "* 400 - 请求的参数不正确,或缺少必要信息,请对比文档\n" +
+    "* 401 - 需要用户认证的接口用户信息不正确,即__Token错__\n" +
+    "* 403 - 缺少对应功能的权限,即__权限不足__\n" +
+    "* 404 - 数据不存在,或未开放\n" +
+    "* 500 - 服务器异常\n" +
+    "\n" +
+    "## 返回数据格式[示例]\n" +
+    "* JSON 格式\n" +
+    "\n" +
+    "```json\n" +
+    "{\n" +
+    '    "data": {\n' +
+    '        "id": 10,\n' +
+    '        "slug": "weekly",\n' +
+    '        "name": "技术周刊",\n' +
+    "     },\n" +
+    '    "abilities": {\n' +
+    '        "update": false,\n' +
+    '        "destroy": false\n' +
+    "    },\n" +
+    '    "meta": {\n' +
+    '        "liked": false,\n' +
+    '        "followed": false,\n' +
+    "    }\n" +
+    "}\n" +
+    "```\n" +
+    "\n" +
+    "* id: 每个数据都会有的,Resource 的唯一编号,后续很多地方你可能需要用它查询\n" +
+    "* abilities: 表述当前登陆者对于此资源的权限\n" +
+    "* meta: 一些附加信息,例如是否赞过,是否关注过\n" +
+    "\n" +
+    "## DateTime 格式\n" +
+    "DateTime 使用 [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) 标准格式,请按照标准方式进行转换。\n"
+  );
+};

+ 1 - 0
package.json

@@ -12,6 +12,7 @@
   },
   "dependencies": {
     "buefy": "^0.7.1",
+    "dayjs": "^1.7.8",
     "register-service-worker": "^1.5.2",
     "vue": "^2.5.17",
     "vue-router": "^3.0.1",

+ 5 - 0
yarn.lock

@@ -3110,6 +3110,11 @@ date-now@^0.1.4:
   resolved "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
   integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
 
+dayjs@^1.7.8:
+  version "1.7.8"
+  resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.7.8.tgz#05d288f8d4b2140110cc1519cfe317d6f1f11a3c"
+  integrity sha512-Gp4Y5KWeSri0QOWGzHQz7VrKDkfEpS92dCLK7P8hYowRFbaym1vj3d6CoHio3apSS4KSi/qb5Edemv26IN5Hfg==
+
 de-indent@^1.0.2:
   version "1.0.2"
   resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"