### User 1、 用户注册 POST /user/register ``` /** * @api {POST} /user/register register * @apiVersion 1.0.0 * @apiGroup UserController * @apiName register * body参数 (JSON) * @apiParam (请求体) {String} uname * @apiParam (请求体) {String} phone * @apiParam (请求体) {String} password * @apiParam (请求体) {String} picture * @apiParam (请求体) {String} userRole STUDENT,TEACHER,ADMIN * @apiParamExample 请求体示例 * { "uname":"小张同学", "phone":"102123456789", "password":"123456", "picture":"1.png", "userRole":"STUDENT" } * @apiSuccess (响应结果) {Number} code * @apiSuccess (响应结果) {String} msg * @apiSuccess (响应结果) {Object} data * @apiSuccess (响应结果) {Number} data.id * @apiSuccess (响应结果) {String} data.uname * @apiSuccess (响应结果) {String} data.phone * @apiSuccess (响应结果) {String} data.password * @apiSuccess (响应结果) {String} data.picture * @apiSuccess (响应结果) {Number} data.balance * @apiSuccess (响应结果) {String} data.userRole STUDENT,TEACHER,ADMIN * @apiSuccess (响应结果) {String} data.createTime yyyy-MM-dd HH:mm:ss * @apiSuccessExample 响应结果示例 { "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" } } */ ``` 2、 用户登录 POST /user/login ``` /** * @api {POST} /user/login login * @apiVersion 1.0.0 * @apiGroup UserController * @apiName login * body参数 (JSON) * @apiParam (请求体) {String} phone * @apiParam (请求体) {String} password * @apiParamExample 请求体示例 * {"phone":"10212345678", "password":"123456"} * @apiSuccess (响应结果) {Number} code * @apiSuccess (响应结果) {String} msg * @apiSuccess (响应结果) {Object} data * @apiSuccess (响应结果) {Number} data.id * @apiSuccess (响应结果) {String} data.uname * @apiSuccess (响应结果) {String} data.phone * @apiSuccess (响应结果) {String} data.password * @apiSuccess (响应结果) {String} data.picture * @apiSuccess (响应结果) {Number} data.balance * @apiSuccess (响应结果) {String} data.userRole STUDENT,TEACHER,ADMIN * @apiSuccess (响应结果) {Number} data.createTime yyyy-MM-dd HH:mm:ss * @apiSuccessExample 响应结果示例 { "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" } } */ ``` 3、 用户充值 POST /user/recharge ``` /** * @api {POST} /user/recharge recharge * @apiVersion 1.0.0 * @apiGroup UserController * @apiName recharge * body参数 (JSON) * @apiParam (请求体) {Number} userId * @apiParam (请求体) {Number} value * @apiParamExample 请求体示例 * {"userId":1,"value":10} * @apiSuccess (响应结果) {Number} code * @apiSuccess (响应结果) {String} msg * @apiSuccess (响应结果) {Object} data * @apiSuccess (响应结果) {Number} data.id * @apiSuccess (响应结果) {String} data.uname * @apiSuccess (响应结果) {String} data.phone * @apiSuccess (响应结果) {String} data.password * @apiSuccess (响应结果) {String} data.picture * @apiSuccess (响应结果) {Number} data.balance * @apiSuccess (响应结果) {String} data.userRole STUDENT,TEACHER,ADMIN * @apiSuccess (响应结果) {String} data.createTime * @apiSuccessExample 响应结果示例 { "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" } } */ ``` 4、 获取用户 GET /user/{uid} ``` /** * @api {GET} /user/{uid} getUser * @apiVersion 1.0.0 * @apiGroup UserController * @apiName getUser * @apiParam (请求参数) {Number} uid * @apiParamExample 请求参数示例 * GET /user/2 * @apiSuccess (响应结果) {Number} id * @apiSuccess (响应结果) {String} uname * @apiSuccess (响应结果) {String} phone * @apiSuccess (响应结果) {String} password * @apiSuccess (响应结果) {String} picture * @apiSuccess (响应结果) {Number} balance * @apiSuccess (响应结果) {String} userRole STUDENT,TEACHER,ADMIN * @apiSuccess (响应结果) {String} createTime * @apiSuccessExample 响应结果示例 { "id": 2, "uname": "小明", "phone": "10212345678", "password": null, "picture": null, "balance": 0, "userRole": "STUDENT", "createTime": "2020-12-18T02:00:00.000+00:00" } */ ``` ### Course 1、 获取一门课程 GET /course/{courseId}?uid={uid} ``` /** * @api {GET} /course/{courseId} getCoursesByKey * @apiVersion 1.0.0 * @apiGroup CourseController * @apiName getCoursesByKey * @apiParam (请求参数) {Number} uid * @apiParam (请求参数) {Number} courseId * @apiParamExample 请求参数示例 * GET /course/1?uid=1 * @apiSuccess (响应结果) {Number} id * @apiSuccess (响应结果) {String} name * @apiSuccess (响应结果) {String} type * @apiSuccess (响应结果) {String} intro * @apiSuccess (响应结果) {String} picture * @apiSuccess (响应结果) {String} school * @apiSuccess (响应结果) {String} createTime * @apiSuccess (响应结果) {Number} cost * @apiSuccess (响应结果) {Number} teacherId * @apiSuccess (响应结果) {String} teacherName * @apiSuccess (响应结果) {Number} likes - 课程点赞数 * @apiSuccess (响应结果) {Boolean} bought * @apiSuccess (响应结果) {Boolean} manageable * @apiSuccessExample 响应结果示例 { "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": "刘钦", "likes": 6, "bought": false, "manageable": true } */ ``` 2、 根据关键字 分页获取课程列表 GET /course/all/{page}?uid={uid}&key={key} ``` /** * @api {GET} /course/all/{page} getCoursesByKey * @apiVersion 1.0.0 * @apiGroup CourseController * @apiName getCoursesByKey * @apiParam (可选请求参数) {Number} uid * @apiParam (可选请求参数) {String} key * @apiParam (必选请求参数) {Number} page * @apiParamExample 请求参数示例 * GET /course/all/1?uid=2&key=软件 * @apiSuccess (响应结果) {Number} pageNum * @apiSuccess (响应结果) {Number} pageSize * @apiSuccess (响应结果) {Number} size * @apiSuccess (响应结果) {Number} startRow * @apiSuccess (响应结果) {Number} endRow * @apiSuccess (响应结果) {Number} total * @apiSuccess (响应结果) {Number} pages * @apiSuccess (响应结果) {Array} list * @apiSuccess (响应结果) {Number} list.id * @apiSuccess (响应结果) {String} list.name * @apiSuccess (响应结果) {String} list.type * @apiSuccess (响应结果) {String} list.intro * @apiSuccess (响应结果) {String} list.picture * @apiSuccess (响应结果) {String} list.school * @apiSuccess (响应结果) {String} list.createTime * @apiSuccess (响应结果) {Number} list.cost * @apiSuccess (响应结果) {Number} list.teacherId * @apiSuccess (响应结果) {String} list.teacherName * @apiSuccess (响应结果) {Boolean} list.bought * @apiSuccess (响应结果) {Boolean} list.manageable * @apiSuccess (响应结果) {Number} prePage * @apiSuccess (响应结果) {Number} nextPage * @apiSuccess (响应结果) {Boolean} isFirstPage * @apiSuccess (响应结果) {Boolean} isLastPage * @apiSuccess (响应结果) {Boolean} hasPreviousPage * @apiSuccess (响应结果) {Boolean} hasNextPage * @apiSuccess (响应结果) {Number} navigatePages * @apiSuccess (响应结果) {Array} navigatepageNums * @apiSuccess (响应结果) {Number} navigateFirstPage * @apiSuccess (响应结果) {Number} navigateLastPage * @apiSuccessExample 响应结果示例 { "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 } */ ``` 3、 根据课程分类 分页获取课程列表 GET course/type/{page}?uid={uid}&type={type} ``` /** * @api {GET} /course/type/{page} getCoursesByType * @apiVersion 1.0.0 * @apiGroup CourseController * @apiName getCoursesByType * @apiParam (请求参数) {Number} uid * @apiParam (请求参数) {String} type * @apiParam (请求参数) {Number} page * @apiParamExample 请求参数示例 * GET /course/type/1?uid=2&type=初级 * @apiSuccess (响应结果) {Number} pageNum * @apiSuccess (响应结果) {Number} pageSize * @apiSuccess (响应结果) {Number} size * @apiSuccess (响应结果) {Number} startRow * @apiSuccess (响应结果) {Number} endRow * @apiSuccess (响应结果) {Number} total * @apiSuccess (响应结果) {Number} pages * @apiSuccess (响应结果) {Array} list * @apiSuccess (响应结果) {Number} list.id * @apiSuccess (响应结果) {String} list.name * @apiSuccess (响应结果) {String} list.type * @apiSuccess (响应结果) {String} list.intro * @apiSuccess (响应结果) {String} list.picture * @apiSuccess (响应结果) {String} list.school * @apiSuccess (响应结果) {String} list.createTime * @apiSuccess (响应结果) {Number} list.cost * @apiSuccess (响应结果) {Number} list.teacherId * @apiSuccess (响应结果) {String} list.teacherName * @apiSuccess (响应结果) {Boolean} list.bought * @apiSuccess (响应结果) {Boolean} list.manageable * @apiSuccess (响应结果) {Number} prePage * @apiSuccess (响应结果) {Number} nextPage * @apiSuccess (响应结果) {Boolean} isFirstPage * @apiSuccess (响应结果) {Boolean} isLastPage * @apiSuccess (响应结果) {Boolean} hasPreviousPage * @apiSuccess (响应结果) {Boolean} hasNextPage * @apiSuccess (响应结果) {Number} navigatePages * @apiSuccess (响应结果) {Array} navigatepageNums * @apiSuccess (响应结果) {Number} navigateFirstPage * @apiSuccess (响应结果) {Number} navigateLastPage * @apiSuccessExample 响应结果示例 { "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 } */ ``` 4、 获取用户已购买的课程列表 GET course/sid/{sid} ``` GET course/sid/2 返回结果示例 [ { "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 }, ... ] ``` 5、 获取教师可管理的课程列表 GET course/tid/{tid} ``` GET course/tid/1 返回结果示例 [ { "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 }, ... ] ``` 6、 创建一门课程 POST course/create ``` /** * @api {POST} /course/create createCourse * @apiVersion 1.0.0 * @apiGroup CourseController * @apiName createCourse * @apiParam (请求体) {String} name * @apiParam (请求体) {String} type * @apiParam (请求体) {String} intro * @apiParam (请求体) {String} picture * @apiParam (请求体) {String} school * @apiParam (请求体) {Number} cost * @apiParam (请求体) {Number} teacherId * @apiParam (请求体) {String} teacherName * @apiParam (请求体) {Boolean} bought * @apiParam (请求体) {Boolean} manageable * @apiParamExample 请求体示例 * { "name":"测试课程", "type":"初级", "intro":"介绍", "picture":"1.png", "school":"NJU", "cost":10, "teacherId":1, "teacherName":"刘钦", "bought":false, "manageable":true } * @apiSuccess (响应结果) {Number} code * @apiSuccess (响应结果) {String} msg * @apiSuccess (响应结果) {Object} data * @apiSuccess (响应结果) {Number} data.id * @apiSuccess (响应结果) {String} data.name * @apiSuccess (响应结果) {String} data.type * @apiSuccess (响应结果) {String} data.intro * @apiSuccess (响应结果) {String} data.picture * @apiSuccess (响应结果) {String} data.school * @apiSuccess (响应结果) {String} data.createTime * @apiSuccess (响应结果) {Number} data.cost * @apiSuccess (响应结果) {Number} data.teacherId * @apiSuccess (响应结果) {String} data.teacherName * @apiSuccess (响应结果) {Boolean} data.bought * @apiSuccess (响应结果) {Boolean} data.manageable * @apiSuccessExample 响应结果示例 { "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 } } */ ``` ### CourseWare 1、 获取某课件 GET course_ware/{courseWareId}?uid={uid} ``` /** * @api {GET} /course_ware/{courseWareId} getCourseWare * @apiVersion 1.0.0 * @apiGroup CourseWareController * @apiName getCourseWare * @apiParam (可选请求参数) {Number} uid * @apiParam (请求参数) {Number} courseWareId * @apiParamExample 请求参数示例 * course_ware/2?uid=2 * @apiSuccess (响应结果) {Number} id * @apiSuccess (响应结果) {Number} courseId * @apiSuccess (响应结果) {Number} number * @apiSuccess (响应结果) {String} title * @apiSuccess (响应结果) {String} fileName * @apiSuccess (响应结果) {String} fileType * @apiSuccess (响应结果) {String} fileSize * @apiSuccess (响应结果) {Boolean} freeFlag * @apiSuccess (响应结果) {Boolean} downloadFlag * @apiSuccess (响应结果) {Boolean} availableFlag * @apiSuccess (响应结果) {String} uploadTime * @apiSuccessExample 响应结果示例 { "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" } */ ``` 2、 获取一门课程的所有课件 GET course_ware/course/{courseId}?uid={uid} ``` GET course_ware/course/1 响应结果示例 [ { "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" }, ... ] ``` 3、 创建课件 POST course_ware/create ``` /** * @api {POST} /course_ware/create createCourseWare * @apiVersion 1.0.0 * @apiGroup CourseWareController * @apiName createCourseWare * @apiParam (请求体) {Number} courseId * @apiParam (请求体) {Number} number 课件在本课程内的序号 * @apiParam (请求体) {String} title * @apiParam (请求体) {String} fileName * @apiParam (请求体) {String} fileType * @apiParam (请求体) {String} fileSize * @apiParam (请求体) {Boolean} freeFlag * @apiParam (请求体) {Boolean} downloadFlag * @apiParam (请求体) {String} uploadTime * @apiParamExample 请求体示例 { "courseId": 1, "number": 53, "title": "测试课件", "fileName": "123.pdf", "fileType": "pdf", "fileSize": "11 MB", "freeFlag": false, "downloadFlag": true, "availableFlag": true } * @apiSuccess (响应结果) {Number} code * @apiSuccess (响应结果) {String} msg * @apiSuccess (响应结果) {Object} data * @apiSuccess (响应结果) {Number} data.id 课件Id * @apiSuccess (响应结果) {Number} data.courseId * @apiSuccess (响应结果) {Number} data.number * @apiSuccess (响应结果) {String} data.title * @apiSuccess (响应结果) {String} data.fileName * @apiSuccess (响应结果) {String} data.fileType * @apiSuccess (响应结果) {String} data.fileSize * @apiSuccess (响应结果) {Boolean} data.freeFlag * @apiSuccess (响应结果) {Boolean} data.downloadFlag * @apiSuccess (响应结果) {Boolean} data.availableFlag * @apiSuccess (响应结果) {String} data.uploadTime * @apiSuccessExample 响应结果示例 { "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" } } */ ``` 4、更新课件 POST course_ware/update ``` /** * @api {POST} /course_ware/create createCourseWare * @apiVersion 1.0.0 * @apiGroup CourseWareController * @apiName createCourseWare * @apiParam (请求体) {Number} id 课件id * @apiParam (请求体) {Number} courseId * @apiParam (请求体) {Number} number 课件在本课程内的序号 * @apiParam (请求体) {String} title * @apiParam (请求体) {String} fileName * @apiParam (请求体) {String} fileType * @apiParam (请求体) {String} fileSize * @apiParam (请求体) {Boolean} freeFlag * @apiParam (请求体) {Boolean} downloadFlag * @apiParam (请求体) {String} uploadTime * @apiParamExample 请求体示例 { "id": 198, "courseId": 1, "number": 53, "title": "测试课件", "fileName": "123.pdf", "fileType": "pdf", "fileSize": "11 MB", "freeFlag": false, "downloadFlag": true, "availableFlag": true } * @apiSuccess (响应结果) {Number} code * @apiSuccess (响应结果) {String} msg * @apiSuccess (响应结果) {Object} data * @apiSuccess (响应结果) {Number} data.id * @apiSuccess (响应结果) {Number} data.courseId * @apiSuccess (响应结果) {Number} data.number * @apiSuccess (响应结果) {String} data.title * @apiSuccess (响应结果) {String} data.fileName * @apiSuccess (响应结果) {String} data.fileType * @apiSuccess (响应结果) {String} data.fileSize * @apiSuccess (响应结果) {Boolean} data.freeFlag * @apiSuccess (响应结果) {Boolean} data.downloadFlag * @apiSuccess (响应结果) {Boolean} data.availableFlag * @apiSuccess (响应结果) {String} data.uploadTime * @apiSuccessExample 响应结果示例 { "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" } } */ ``` 5、 删除课件 POST course_ware/delete/{courseWareId} ``` /** * @api {POST} /course_ware/delete/{courseWareId} deleteCourseWare * @apiVersion 1.0.0 * @apiGroup CourseWareController * @apiName deleteCourseWare * @apiParam (请求参数) {Number} courseWareId * @apiParamExample 请求参数示例 * POST course_ware/delete/198 * @apiSuccess (响应结果) {Number} code * @apiSuccess (响应结果) {String} msg * @apiSuccess (响应结果) {String} data * @apiSuccessExample 响应结果示例 { "code": 1, "msg": "课件删除成功", "data": null } */ ``` ### File 1、 上传文件 POST file/upload /** * @api {POST} /file/upload upload * @apiVersion 1.0.0 * @apiGroup FileController * @apiName upload * form-data * @apiParam (请求参数) {File} file key:"file" value:"android.jpg" * @apiSuccess (响应结果) {Number} code * @apiSuccess (响应结果) {String} msg * @apiSuccess (响应结果) {Object} data * @apiSuccess (响应结果) {String} data.name * @apiSuccess (响应结果) {String} data.type * @apiSuccess (响应结果) {String} data.size * @apiSuccessExample 响应结果示例 { "code": 1, "msg": "文件上传成功", "data": { "name": "33c70532-551f-43a9-b18f-5bdf2d71b77d.jpg", "type": "jpg", "size": "0.01 MB" } } */ 2、 下载文件 GET file/download/{originName} ``` /** * @api {GET} /file/download/{originName:.+} download * @apiVersion 1.0.0 * @apiGroup FileController * @apiName download * @apiParam (请求参数) {String} originName * @apiParam (请求参数) {String} newName * @apiParamExample 请求参数示例 * GET /file/download/c6248c34-370f-40b6-91de-b0c3fa540a38.pdf?newName=测试文件.pdf * @apiSuccess (响应结果) {Object} response * @apiSuccessExample 响应结果示例 * null */ ``` ### CourseOrder 1、 生成课程订单(可用于购买课程或赠送课程) POST course_order/create ``` /** * @api {POST} /course_order/create createCourseOrder * @apiVersion 1.0.0 * @apiGroup CourseOrderController * @apiName createCourseOrder * @apiParam (请求体) {Number} cost * @apiParam (请求体) {Number} courseId * @apiParam (请求体) {String} courseName * @apiParam (请求体) {Number} userId * @apiParam (请求体) {Number} status 1 - 已支付成功; 2 - 待支付(若余额足够则直接付款,并将status转为1); 3 - 已支付等待发货 * @apiParamExample 请求体示例 { "courseId": 1, "courseName": "软件工程与计算 I", "cost": 1, "userId": 2, "status": 1 } * @apiSuccess (响应结果) {Number} code * @apiSuccess (响应结果) {String} msg * @apiSuccess (响应结果) {Object} data * @apiSuccess (响应结果) {Number} data.id 订单Id * @apiSuccess (响应结果) {Number} data.cost * @apiSuccess (响应结果) {Number} data.courseId * @apiSuccess (响应结果) {String} data.courseName * @apiSuccess (响应结果) {Number} data.createTime * @apiSuccess (响应结果) {Number} data.userId * @apiSuccess (响应结果) {Number} data.status 1 - 已支付成功; 2 - 待支付(若余额足够则直接付款,并将status转为1); 3 - 已支付等待发货; * @apiSuccessExample 响应结果示例 { "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 } } */ ``` 2、 更新订单状态 POST course_order/update ``` /** * @api {POST} /course_order/update updateCourseOrderStatus * @apiVersion 1.0.0 * @apiGroup CourseOrderController * @apiName updateCourseOrderStatus * @apiParam (请求参数) {Number} orderId * @apiParam (请求参数) {Number} orderStatus 1 - 已支付成功(原本未支付的订单会尝试支付); 3 - 已支付等待发货(原本未支付的订单会尝试支付); 4 - 取消 * @apiParamExample 请求参数示例 * POST course_order/update?orderId=3&orderStatus=1 * @apiSuccess (响应结果) {Number} code * @apiSuccess (响应结果) {String} msg * @apiSuccess (响应结果) {Object} data * @apiSuccess (响应结果) {Number} data.id * @apiSuccess (响应结果) {Number} data.cost * @apiSuccess (响应结果) {Number} data.courseId * @apiSuccess (响应结果) {String} data.courseName * @apiSuccess (响应结果) {Number} data.createTime * @apiSuccess (响应结果) {Number} data.userId * @apiSuccess (响应结果) {Number} data.status * @apiSuccessExample 响应结果示例 { "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 } } */ ``` 3、 获取某用户的所有订单 GET course_order/uid/{uid} ``` /** * @api {GET} /course_order/uid/{uid} getCourseOrders * @apiVersion 1.0.0 * @apiGroup CourseOrderController * @apiName getCourseOrders * @apiParam (请求参数) {Number} uid * @apiParamExample 请求参数示例 * GET course_order/uid/2 * @apiSuccess (响应结果) {Array} response * @apiSuccess (响应结果) {Number} response.id * @apiSuccess (响应结果) {Number} response.cost * @apiSuccess (响应结果) {Number} response.courseId * @apiSuccess (响应结果) {String} response.courseName * @apiSuccess (响应结果) {Number} response.createTime * @apiSuccess (响应结果) {Number} response.userId * @apiSuccess (响应结果) {Number} response.status * @apiSuccessExample 响应结果示例 [ { "id": 3, "cost": 1, "courseId": 1, "courseName": "软件工程与计算 I", "createTime": "2021-03-13T08:08:02.000+00:00", "userId": 2, "status": 1 } ] */ ``` ### 课程点赞功能 1、 用户点赞某课程 ``` /** * @api {POST} /course/like/{courseId} setCourseLike * @apiVersion 1.0.0 * @apiGroup CourseController * @apiName setCourseLike * @apiParam (请求参数) {Number} uid * @apiParam (请求参数) {Number} courseId * @apiParamExample 请求参数示例 * POST course/like/1?uid=1 * @apiSuccess (响应结果) {Number} code * @apiSuccess (响应结果) {String} msg * @apiSuccess (响应结果) {Object} data - 点赞后的课程信息 * @apiSuccess (响应结果) {Number} data.id * @apiSuccess (响应结果) {String} data.name * @apiSuccess (响应结果) {String} data.type * @apiSuccess (响应结果) {String} data.intro * @apiSuccess (响应结果) {String} data.picture * @apiSuccess (响应结果) {String} data.school * @apiSuccess (响应结果) {Number} data.createTime * @apiSuccess (响应结果) {Number} data.cost * @apiSuccess (响应结果) {Number} data.teacherId * @apiSuccess (响应结果) {String} data.teacherName * @apiSuccess (响应结果) {Number} data.likes - 课程点赞数 * @apiSuccess (响应结果) {Boolean} data.bought - 是否为已购买课程 * @apiSuccess (响应结果) {Boolean} data.manageable - 是否为可管理课程(教师权限) * @apiSuccessExample 响应结果示例 示例1: { "code": 1, "msg": "操作成功", "data": { "id": 1, "name": "软件工程与计算 I", "type": "中级", "intro": "通过Scheme、Python和Java语言,让你分别体会函数式编程范式、结构化编程范式和面向对象编程范式", "picture": "course1.png", "school": "南京大学", "createTime": "2020-12-20 10:00:00", "cost": 1, "teacherId": 100, "teacherName": "刘钦", "likes": 7, "bought": false, "manageable": false } } 示例2: { "code": 0, "msg": "您已经为当前课程点赞过,请勿重复操作!", "data": null } */ ``` 2、 用户取消点赞某课程 ``` /** * @api {POST} /course/cancel_like/{courseId} cancelCourseLike * @apiVersion 1.0.0 * @apiGroup CourseController * @apiName setCourseLike * @apiParam (请求参数) {Number} uid * @apiParam (请求参数) {Number} courseId * @apiParamExample 请求参数示例 * POST course/cancel_like/1?uid=1 * @apiSuccess (响应结果) {Number} code * @apiSuccess (响应结果) {String} msg * @apiSuccess (响应结果) {Object} data * @apiSuccess (响应结果) {Number} data.id * @apiSuccess (响应结果) {String} data.name * @apiSuccess (响应结果) {String} data.type * @apiSuccess (响应结果) {String} data.intro * @apiSuccess (响应结果) {String} data.picture * @apiSuccess (响应结果) {String} data.school * @apiSuccess (响应结果) {Number} data.createTime * @apiSuccess (响应结果) {Number} data.cost * @apiSuccess (响应结果) {Number} data.teacherId * @apiSuccess (响应结果) {String} data.teacherName * @apiSuccess (响应结果) {Number} data.likes - 课程点赞数 * @apiSuccess (响应结果) {Boolean} data.bought - 是否为已购买课程 * @apiSuccess (响应结果) {Boolean} data.manageable - 是否为可管理课程(教师权限) * @apiSuccessExample 响应结果示例 { "code": 1, "msg": "操作成功", "data": { "id": 1, "name": "软件工程与计算 I", "type": "中级", "intro": "通过Scheme、Python和Java语言,让你分别体会函数式编程范式、结构化编程范式和面向对象编程范式", "picture": "course1.png", "school": "南京大学", "createTime": "2020-12-20 10:00:00", "cost": 1, "teacherId": 100, "teacherName": "刘钦", "likes": 6, "bought": false, "manageable": false } } */ ``` ### 查看热门课程 用户查看热门课程列表(根据点赞数likes倒序排列) 分页查询返回结果 ``` /** * @api {GET} /course/hot/{page} getHotCourses * @apiVersion 1.0.0 * @apiGroup CourseController * @apiName getHotCourses * @apiParam (请求参数) {Number} page * @apiParamExample 请求参数示例 * course/hot/1 * @apiSuccess (响应结果) {Number} pageNum * @apiSuccess (响应结果) {Number} pageSize * @apiSuccess (响应结果) {Number} size * @apiSuccess (响应结果) {Number} startRow * @apiSuccess (响应结果) {Number} endRow * @apiSuccess (响应结果) {Number} total * @apiSuccess (响应结果) {Number} pages * @apiSuccess (响应结果) {Array} list * @apiSuccess (响应结果) {Number} list.id * @apiSuccess (响应结果) {String} list.name * @apiSuccess (响应结果) {String} list.type * @apiSuccess (响应结果) {String} list.intro * @apiSuccess (响应结果) {String} list.picture * @apiSuccess (响应结果) {String} list.school * @apiSuccess (响应结果) {Number} list.createTime * @apiSuccess (响应结果) {Number} list.cost * @apiSuccess (响应结果) {Number} list.teacherId * @apiSuccess (响应结果) {String} list.teacherName * @apiSuccess (响应结果) {Number} list.likes * @apiSuccess (响应结果) {Boolean} list.bought * @apiSuccess (响应结果) {Boolean} list.manageable * @apiSuccess (响应结果) {Number} prePage * @apiSuccess (响应结果) {Number} nextPage * @apiSuccess (响应结果) {Boolean} isFirstPage * @apiSuccess (响应结果) {Boolean} isLastPage * @apiSuccess (响应结果) {Boolean} hasPreviousPage * @apiSuccess (响应结果) {Boolean} hasNextPage * @apiSuccess (响应结果) {Number} navigatePages * @apiSuccess (响应结果) {Array} navigatepageNums * @apiSuccess (响应结果) {Number} navigateFirstPage * @apiSuccess (响应结果) {Number} navigateLastPage * @apiSuccessExample 响应结果示例 { "pageNum": 1, "pageSize": 3, "size": 3, "startRow": 1, "endRow": 3, "total": 5, "pages": 2, "list": [ { "id": 4, "name": "基于Java的面向对象编程范式", "type": "初级", "intro": "本课程完成了编程思维、结构化编程范式、面向对象编程方式的介绍,并且着重强调了面向对象编程中封装、协作和可修改性三个重要概念。通过客观题和6道编程题的训练,进一步加深对面向对象编程范式的理解,初步领略面向对象编程范式的风采。", "picture": "course4.png", "school": "南京大学", "createTime": "2020-12-20 10:00:00", "cost": 1, "teacherId": 400, "teacherName": "刘钦", "likes": 6, "bought": false, "manageable": false }, { "id": 1, "name": "软件工程与计算 I", "type": "中级", "intro": "通过Scheme、Python和Java语言,让你分别体会函数式编程范式、结构化编程范式和面向对象编程范式", "picture": "course1.png", "school": "南京大学", "createTime": "2020-12-20 10:00:00", "cost": 1, "teacherId": 100, "teacherName": "刘钦", "likes": 5, "bought": false, "manageable": false }, { "id": 2, "name": "软件工程与计算 II", "type": "中级", "intro": "基于DevOps培养团队开发中小规模软件系统的能力", "picture": "course2.png", "school": "南京大学", "createTime": "2020-12-20 10:00:00", "cost": 1, "teacherId": 200, "teacherName": "刘钦", "likes": 3, "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 } */ ```