靳炳淑 5 лет назад
Родитель
Сommit
f3877b6aeb
8 измененных файлов с 637 добавлено и 4 удалено
  1. 1 1
      src/api/_prefix.js
  2. 281 0
      src/api/course.js
  3. 145 0
      src/api/courseWare.js
  4. 17 0
      src/api/file.js
  5. 94 0
      src/api/order.js
  6. 97 1
      src/api/user.js
  7. 1 1
      src/layouts/studentLayout.vue
  8. 1 1
      src/layouts/teacherLayout.vue

+ 1 - 1
src/api/_prefix.js

@@ -2,6 +2,6 @@ export const API_VERSION = "/api";
 
 export const COURSE_MODULE = `${API_VERSION}/course`;
 export const ORDER_MODULE = `${API_VERSION}/course_order`;
-export const ORDER_WARE = `${API_VERSION}/course_ware`;
+export const COURSE_WARE = `${API_VERSION}/course_ware`;
 export const FILE_MODULE = `${API_VERSION}/file`;
 export const USER_MODULE = `${API_VERSION}/user`;

+ 281 - 0
src/api/course.js

@@ -1 +1,282 @@
+import axios from "axios";
 import { COURSE_MODULE } from "./_prefix";
+
+/**
+ * 获取一门课程 GET /course/{courseId}?uid={uid} 会包含用户是否购买的信息
+ * @param {*} payload 
+ * @returns 
+ */
+export const getCourseById = payload => {
+  // const { uid, courseId } = payload;
+  // return axios.get(`${COURSE_MODULE}/${courseId}?uid=${uid}`);
+  return Promise.resolve(
+    {
+      "id": 1,
+      "name": "软件工程与计算 I",
+      "type": "中级",
+      "intro": "通过Scheme、Python和Java语言,让你分别体会函数式编程范式、结构化编程范式和面向对象编程范式",
+      "picture": "course1.png",
+      "school": "南京大学",
+      "createTime": "2020-12-20T02:00:00.000+00:00",
+      "cost": 1,
+      "teacherId": 1,
+      "teacherName": "刘钦",
+      "bought": false,
+      "manageable": true
+    }
+  );
+}
+
+/**
+ * 根据关键字 分页获取课程列表 GET /course/all/{page}?uid={uid}&key={key}
+ * @param {*} payload 
+ * @returns 
+ */
+export const getCoursesByKey = payload => {
+  // const { uid, key, page } = payload;
+  // return axios.get(`${COURSE_MODULE}/all/${page}?uid=${uid}&key=${key}`);
+  return Promise.resolve(
+    {
+      "pageNum": 1,
+      "pageSize": 3,
+      "size": 3,
+      "startRow": 1,
+      "endRow": 3,
+      "total": 4,
+      "pages": 2,
+      "list": [
+        {
+          "id": 1,
+          "name": "软件工程与计算 I",
+          "type": "中级",
+          "intro": "通过Scheme、Python和Java语言,让你分别体会函数式编程范式、结构化编程范式和面向对象编程范式",
+          "picture": "course1.png",
+          "school": "南京大学",
+          "createTime": "2020-12-20T02:00:00.000+00:00",
+          "cost": 1,
+          "teacherId": 1,
+          "teacherName": "刘钦",
+          "bought": false,
+          "manageable": false
+        },
+        {
+          "id": 2,
+          "name": "软件工程与计算 II",
+          "type": "中级",
+          "intro": "基于DevOps培养团队开发中小规模软件系统的能力",
+          "picture": "course2.png",
+          "school": "南京大学",
+          "createTime": "2020-12-20T02:00:00.000+00:00",
+          "cost": 1,
+          "teacherId": 1,
+          "teacherName": "刘钦",
+          "bought": false,
+          "manageable": false
+        },
+        {
+          "id": 3,
+          "name": "程序猿与攻城狮",
+          "type": "初级",
+          "intro": "我们将由5位老师从不同的角度来说说他们对软件工程的理解。我们并非试图去覆盖所有软件工程的知识点,我们只是希望去让对软件工程有兴趣的你们了解到\"我要学什么\"\"我应如何学\"\"我今后能做什么\"这样一些基本的问题的部分答案。\r\n\r\n   刘钦老师会介绍软件工程的历史和软件工程建模;丁二玉老师会谈谈软件工程师和软件工程团队;冯桂焕老师会通过案例让大家体验人机交互的魅力;陈振宇老师会从概率统计讲到软件测试;刘嘉老师会娓娓道来他对最热门的移动互联网发展的本质的理解。",
+          "picture": "course3.png",
+          "school": "南京大学",
+          "createTime": "2020-12-20T02:00:00.000+00:00",
+          "cost": 1,
+          "teacherId": 1,
+          "teacherName": "刘钦",
+          "bought": false,
+          "manageable": false
+        }
+      ],
+      "prePage": 0,
+      "nextPage": 2,
+      "isFirstPage": true,
+      "isLastPage": false,
+      "hasPreviousPage": false,
+      "hasNextPage": true,
+      "navigatePages": 8,
+      "navigatepageNums": [
+        1,
+        2
+      ],
+      "navigateFirstPage": 1,
+      "navigateLastPage": 2,
+      "lastPage": 2,
+      "firstPage": 1
+    }
+  );
+}
+
+/**
+ * 根据课程分类 分页获取课程列表 GET course/type/{page}?uid={uid}&type={type}
+ * @param {*} payload 
+ * @returns 
+ */
+export const getCoursesByType = payload => {
+  // const { uid, type, page } = payload;
+  // return axios.get(`${COURSE_MODULE}/type/${page}?uid=${uid}&type=${type}`);
+  return Promise.resolve(
+    {
+      "pageNum": 1,
+      "pageSize": 3,
+      "size": 2,
+      "startRow": 1,
+      "endRow": 2,
+      "total": 2,
+      "pages": 1,
+      "list": [
+        {
+          "id": 3,
+          "name": "程序猿与攻城狮",
+          "type": "初级",
+          "intro": "我们将由5位老师从不同的角度来说说他们对软件工程的理解。我们并非试图去覆盖所有软件工程的知识点,我们只是希望去让对软件工程有兴趣的你们了解到\"我要学什么\"\"我应如何学\"\"我今后能做什么\"这样一些基本的问题的部分答案。\r\n\r\n   刘钦老师会介绍软件工程的历史和软件工程建模;丁二玉老师会谈谈软件工程师和软件工程团队;冯桂焕老师会通过案例让大家体验人机交互的魅力;陈振宇老师会从概率统计讲到软件测试;刘嘉老师会娓娓道来他对最热门的移动互联网发展的本质的理解。",
+          "picture": "course3.png",
+          "school": "南京大学",
+          "createTime": "2020-12-20T02:00:00.000+00:00",
+          "cost": 1,
+          "teacherId": 1,
+          "teacherName": "刘钦",
+          "bought": false,
+          "manageable": false
+        },
+        {
+          "id": 4,
+          "name": "基于Java的面向对象编程范式",
+          "type": "初级",
+          "intro": "本课程完成了编程思维、结构化编程范式、面向对象编程方式的介绍,并且着重强调了面向对象编程中封装、协作和可修改性三个重要概念。通过客观题和6道编程题的训练,进一步加深对面向对象编程范式的理解,初步领略面向对象编程范式的风采。",
+          "picture": "course4.png",
+          "school": "南京大学",
+          "createTime": "2020-12-20T02:00:00.000+00:00",
+          "cost": 1,
+          "teacherId": 1,
+          "teacherName": "刘钦",
+          "bought": false,
+          "manageable": false
+        }
+      ],
+      "prePage": 0,
+      "nextPage": 0,
+      "isFirstPage": true,
+      "isLastPage": true,
+      "hasPreviousPage": false,
+      "hasNextPage": false,
+      "navigatePages": 8,
+      "navigatepageNums": [
+        1
+      ],
+      "navigateFirstPage": 1,
+      "navigateLastPage": 1,
+      "lastPage": 1,
+      "firstPage": 1
+    }
+  );
+}
+
+/**
+ * 获取用户已购买的课程列表 GET course/sid/{sid}
+ * @param {*} uid 
+ * @returns 
+ */
+export const getBoughtCourses = uid => {
+  // return axios.get(`${COURSE_MODULE}/sid/${uid}`);
+  return Promise.resolve(
+    [
+      {
+        "id": 1,
+        "name": "软件工程与计算 I",
+        "type": "中级",
+        "intro": "通过Scheme、Python和Java语言,让你分别体会函数式编程范式、结构化编程范式和面向对象编程范式",
+        "picture": "course1.png",
+        "school": "南京大学",
+        "createTime": "2020-12-20T02:00:00.000+00:00",
+        "cost": 1,
+        "teacherId": 1,
+        "teacherName": "刘钦",
+        "bought": true,
+        "manageable": false
+      },
+      {
+        "id": 2,
+        "name": "软件工程与计算 II",
+        "type": "中级",
+        "intro": "通过Scheme、Python和Java语言,让你分别体会函数式编程范式、结构化编程范式和面向对象编程范式",
+        "picture": "course1.png",
+        "school": "南京大学",
+        "createTime": "2020-12-20T02:00:00.000+00:00",
+        "cost": 1,
+        "teacherId": 1,
+        "teacherName": "刘钦",
+        "bought": true,
+        "manageable": false
+      },
+    ]
+  );
+}
+
+export const getTeacherCourses = uid => {
+  // return axios.get(`${COURSE_MODULE}/tid/${uid}`);
+  return Promise(
+    [
+      {
+        "id": 1,
+        "name": "软件工程与计算 I",
+        "type": "中级",
+        "intro": "通过Scheme、Python和Java语言,让你分别体会函数式编程范式、结构化编程范式和面向对象编程范式",
+        "picture": "course1.png",
+        "school": "南京大学",
+        "createTime": "2020-12-20T02:00:00.000+00:00",
+        "cost": 1,
+        "teacherId": 1,
+        "teacherName": "刘钦",
+        "bought": false,
+        "manageable": true
+      },
+      {
+        "id": 2,
+        "name": "软件工程与计算 II",
+        "type": "中级",
+        "intro": "通过Scheme、Python和Java语言,让你分别体会函数式编程范式、结构化编程范式和面向对象编程范式",
+        "picture": "course1.png",
+        "school": "南京大学",
+        "createTime": "2020-12-20T02:00:00.000+00:00",
+        "cost": 1,
+        "teacherId": 1,
+        "teacherName": "刘钦",
+        "bought": false,
+        "manageable": true
+      },
+    ]
+  );
+}
+
+/**
+ * 创建一门课程 POST course/create
+ * @param {*} payload 
+ * @returns 
+ */
+export const createCourse = payload => {
+  // const { name, type, intro, picture, school, cost, teacherId, teacherName, bought, manageable } = payload;
+  // return axios.post(`${COURSE_MODULE}/create`, {
+  //   name, type, intro, picture, school, cost, teacherId, teacherName, bought, manageable
+  // });
+  return Promise.resolve(
+    {
+      "code": 1,
+      "msg": "课程创建成功。",
+      "data": {
+        "id": 6,
+        "name": "测试课程",
+        "type": "初级",
+        "intro": "介绍",
+        "picture": "1.png",
+        "school": "NJU",
+        "createTime": "2021-03-13T02:23:30.817+00:00",
+        "cost": 10,
+        "teacherId": 1,
+        "teacherName": "刘钦",
+        "bought": false,
+        "manageable": true
+      }
+    }
+  );
+}

+ 145 - 0
src/api/courseWare.js

@@ -0,0 +1,145 @@
+import axios from "axios";
+import { COURSE_WARE } from "./_prefix";
+
+/**
+ * 获取某课件 GET course_ware/{courseWareId}?uid={uid}
+ * @param {*} payload 
+ * @returns 
+ */
+export const getCourseWare = payload => {
+  // const { courseWareId, uid } = payload;
+  // return axios.get(`${COURSE_WARE}/${courseWareId}?uid=${uid}`);
+  return Promise.resolve(
+    {
+      "id": 2,
+      "courseId": 1,
+      "number": 1,
+      "title": "00 - Overview",
+      "fileName": null,
+      "fileType": null,
+      "fileSize": null,
+      "freeFlag": false,
+      "downloadFlag": true,
+      "availableFlag": false,
+      "uploadTime": "2020-12-18T02:00:00.000+00:00"
+    }
+  );
+}
+
+/**
+ * 获取一门课程的所有课件 GET course_ware/course/{courseId}?uid={uid}
+ * @param {*} payload 
+ * @returns 
+ */
+export const getCourseWareByCourse = payload => {
+  // const { courseId, uid } = payload;
+  // return axios.get(`${COURSE_WARE}/course/${courseId}?uid=${uid}`);
+  return Promise.resolve(
+    [
+      {
+        "id": 2,
+        "courseId": 1,
+        "number": 1,
+        "title": "00 - Overview",
+        "fileName": "33c70532-551f-43a9-b18f-5bdf2d71b77d.png",
+        "fileType": "png",
+        "fileSize": "1.12 MB",
+        "freeFlag": false,
+        "downloadFlag": true,
+        "availableFlag": false,
+        "uploadTime": "2020-12-18T02:00:00.000+00:00"
+      },
+      {
+        "id": 3,
+        "courseId": 1,
+        "number": 1,
+        "title": "01 - LEC1",
+        "fileName": "33c70532-551f-43a9-b18f-5bdf2d71b77d.png",
+        "fileType": "png",
+        "fileSize": "1.12 MB",
+        "freeFlag": false,
+        "downloadFlag": true,
+        "availableFlag": false,
+        "uploadTime": "2020-12-18T02:00:00.000+00:00"
+      },
+    ]
+  );
+}
+
+/**
+ * 创建课件 POST course_ware/create
+ * @param {*} payload 
+ * @returns 
+ */
+export const createCourseWare = payload => {
+  // const { courseId, number, title, fileName, fileType, fileSize, freeFlag, downloadFlag, availableFlag } = payload;
+  // return axios.post(`${COURSE_WARE}/create`, {
+  //   courseId, number, title, fileName, fileType, fileSize, freeFlag, downloadFlag, availableFlag
+  // });
+  return Promise.resolve(
+    {
+      "code": 1,
+      "msg": "课件创建成功",
+      "data": {
+        "id": 198,
+        "courseId": 1,
+        "number": 53,
+        "title": "测试课件",
+        "fileName": "123.pdf",
+        "fileType": "pdf",
+        "fileSize": "11 MB",
+        "freeFlag": false,
+        "downloadFlag": true,
+        "availableFlag": false,
+        "uploadTime": "2021-03-13T03:18:03.730+00:00"
+      }
+    }
+  );
+}
+
+/**
+ * 更新课件 POST course_ware/update
+ * @param {*} payload id: 课件id
+ * @returns 
+ */
+export const updateCourseWare = payload => {
+  // const { id, courseId, number, title, fileName, fileType, fileSize, freeFlag, downloadFlag, availableFlag } = payload;
+  // return axios.post(`${COURSE_WARE}/update`, {
+  //   id, courseId, number, title, fileName, fileType, fileSize, freeFlag, downloadFlag, availableFlag
+  // });
+  return Promise.resolve(
+    {
+      "code": 1,
+      "msg": "课件更新成功",
+      "data": {
+        "id": 198,
+        "courseId": 1,
+        "number": 53,
+        "title": "测试课件abc",
+        "fileName": "123.pdf",
+        "fileType": "pdf",
+        "fileSize": "11 MB",
+        "freeFlag": false,
+        "downloadFlag": true,
+        "availableFlag": false,
+        "uploadTime": "2021-03-13T03:25:59.948+00:00"
+      }
+    }
+  );
+}
+
+/**
+ * 删除课件 POST course_ware/delete/{courseWareId}
+ * @param {*} courseWareId 
+ * @returns 
+ */
+export const deleteCourseWare = courseWareId => {
+  // return axios.post(`${COURSE_WARE}/delete/${courseWareId}`);
+  return Promise.resolve(
+    {
+      "code": 1,
+      "msg": "课件删除成功",
+      "data": null
+    }
+  );
+}

+ 17 - 0
src/api/file.js

@@ -0,0 +1,17 @@
+import axios from "axios";
+import { FILE_MODULE } from "./_prefix";
+
+export const uploadFile = payload => {
+  // return axios.post(`${FILE_MODULE}/upload`, payload);
+  return Promise.resolve(
+    {
+      "code": 1,
+      "msg": "文件上传成功",
+      "data": {
+        "name": "33c70532-551f-43a9-b18f-5bdf2d71b77d.jpg",
+        "type": "jpg",
+        "size": "0.01 MB"
+      }
+    }
+  );
+}

+ 94 - 0
src/api/order.js

@@ -0,0 +1,94 @@
+import axios from "axios";
+import { ORDER_MODULE } from "./_prefix";
+
+/**
+ * 生成课程订单(可用于购买课程或赠送课程) POST course_order/create
+ * @param {*} payload status 1 - 已支付成功; 2 - 待支付(若余额足够则直接付款,并将status转为1); 3 - 已支付等待发货
+ * @returns 
+ */
+export const createOrder = payload => {
+  // const { courseId, courseName, cost, userId, status } = payload;
+  // return axios.post(`${ORDER_MODULE}/create`, {
+  //   courseId, courseName, cost, userId, status
+  // });
+  Promise.resolve(
+    {
+      "code": 0,
+      "msg": "当前用户已经购买过此课程,或者有上一笔未支付的订单",
+      "data": {
+        "id": 1,
+        "cost": 1,
+        "courseId": 1,
+        "courseName": "软件工程与计算 I",
+        "createTime": "2021-03-13T07:50:23.000+00:00",
+        "userId": 2,
+        "status": 1
+      }
+    }
+  );
+}
+
+/**
+ * 更新订单状态 POST course_order/update
+ * @param {*} payload 
+ * @returns 
+ */
+export const updateOrder = payload => {
+  // const { orderId, orderStatus } = payload;
+  // return axios.post(`${ORDER_MODULE}/update?orderId=${orderId}&orderStatus=${orderStatus}`);
+  return Promise.resolve(
+    {
+      "code": 1,
+      "msg": "课程购买成功",
+      "data": {
+        "id": 3,
+        "cost": 1,
+        "courseId": 1,
+        "courseName": "软件工程与计算 I",
+        "createTime": "2021-03-13T08:08:02.000+00:00",
+        "userId": 2,
+        "status": 1
+      }
+    }
+  );
+}
+
+/**
+ * 获取某用户的所有订单 GET course_order/uid/{uid}
+ * @param {*} uid 
+ * @returns 
+ */
+export const getOrdersByUser = uid => {
+  // return axios.get(`${ORDER_MODULE}/uid/${uid}`);
+  return Promise.resolve(
+    [
+      {
+        "id": 3,
+        "cost": 1,
+        "courseId": 1,
+        "courseName": "软件工程与计算 I",
+        "createTime": "2021-03-13T08:08:02.000+00:00",
+        "userId": 2,
+        "status": 1
+      },
+      {
+        "id": 3,
+        "cost": 1,
+        "courseId": 1,
+        "courseName": "软件工程与计算 I",
+        "createTime": "2021-03-13T08:08:02.000+00:00",
+        "userId": 2,
+        "status": 1
+      },
+      {
+        "id": 3,
+        "cost": 1,
+        "courseId": 1,
+        "courseName": "软件工程与计算 I",
+        "createTime": "2021-03-13T08:08:02.000+00:00",
+        "userId": 2,
+        "status": 1
+      }
+    ]
+  );
+}

+ 97 - 1
src/api/user.js

@@ -1,3 +1,99 @@
+import axios from "axios";
 import { USER_MODULE } from "./_prefix";
 
-export const register = () => {};
+/**
+ * 用户注册 POST /user/register
+ * @param {*} payload 
+ * @returns 
+ */
+export const register = payload => {
+  // const { uname, phone, password, picture, userRole = "STUDENT" } = payload;
+  // return axios.post(`${USER_MODULE}/register`, {
+  //   uname, phone, password, picture, userRole
+  // })
+  return Promise.resolve({
+    "code": 1,
+    "msg": "账号注册成功!",
+    "data": {
+      "id": 3,
+      "uname": "小张同学",
+      "phone": "102123456789",
+      "password": null,
+      "picture": "1.png",
+      "balance": 0,
+      "userRole": "STUDENT",
+      "createTime": "2021-03-13T01:45:48.246+00:00"
+    }
+  });
+};
+
+/**
+ *  用户登录 POST /user/login
+ * @param {*} payload 
+ * @returns 
+ */
+export const login = payload => {
+  // const { phone, password } = payload;
+  // return axios.post(`${USER_MODULE}/login`, { phone, password });
+  return Promise.resolve({
+    "code": 1,
+    "msg": "账号登陆成功!",
+    "data": {
+      "id": 2,
+      "uname": "小明",
+      "phone": "10212345678",
+      "password": null,
+      "picture": null,
+      "balance": 0,
+      "userRole": "STUDENT",
+      "createTime": "2020-12-18T02:00:00.000+00:00"
+    }
+  });
+}
+
+/**
+ * 用户充值 POST /user/recharge
+ * @param {*} payload 
+ * @returns 
+ */
+export const recharge = payload => {
+  // const { userId, value } = payload;
+  // return axios.post(`${USER_MODULE}/recharge`, { userId, value });
+  return Promise.resolve(
+    {
+      "code": 1,
+      "msg": "充值成功",
+      "data": {
+        "id": 1,
+        "uname": "刘钦",
+        "phone": "10112345678",
+        "password": null,
+        "picture": null,
+        "balance": 50,
+        "userRole": "TEACHER",
+        "createTime": "2020-12-18T02:00:00.000+00:00"
+      }
+    }
+  );
+}
+
+/**
+ *  获取用户 GET /user/{uid}
+ * @param {*} uid 
+ * @returns 
+ */
+export const getUser = uid => {
+  // return axios.get(`${USER_MODULE}/${uid}`);
+  return Promise.resolve(
+    {
+      "id": 2,
+      "uname": "小明",
+      "phone": "10212345678",
+      "password": null,
+      "picture": null,
+      "balance": 0,
+      "userRole": "STUDENT",
+      "createTime": "2020-12-18T02:00:00.000+00:00"
+    }
+  );
+}

+ 1 - 1
src/layouts/studentLayout.vue

@@ -4,7 +4,7 @@
       <v-app-bar-nav-icon></v-app-bar-nav-icon>
 
       <v-toolbar-title @click="direct('/student')" class="cursor">
-        Course Learning
+        Course Learning Student
       </v-toolbar-title>
 
       <v-spacer></v-spacer>

+ 1 - 1
src/layouts/teacherLayout.vue

@@ -4,7 +4,7 @@
       <v-app-bar-nav-icon></v-app-bar-nav-icon>
 
       <v-toolbar-title @click="direct('/teacher')" class="cursor"
-        >Course Learning</v-toolbar-title
+        >Course Learning Teacher</v-toolbar-title
       >
 
       <v-spacer></v-spacer>