作业管理-需求分析
1.添加或修改课程计划作业—教师
接口路径:
POST/1231/teaching/work
请求参数
Headers:
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Content-Type | application/json | 是 |
Body:
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
changeDate | string | 非必须 | 修改时间 | format: date-time | |
createDate | string | 非必须 | 创建时间 | format: date-time | |
question | string | 必须 | 内容 | ||
status | integer | 非必须 | 状态:使用态—1,删除态—0 | format: int32 | |
title | string | 必须 | 标题 | ||
username | string | 非必须 | 创建人 | ||
workId | integer | 非必须 | 作业Id值 | format: int64 |
返回数据
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
changeDate | string | 非必须 | 修改时间 | format: date-time | |
createDate | string | 非必须 | 创建时间 | format: date-time | |
question | string | 必须 | 内容 | ||
status | integer | 非必须 | 状态:使用态—1,删除态—0 | format: int32 | |
title | string | 必须 | 标题 | ||
username | string | 非必须 | 创建人 | ||
workId | integer | 非必须 | 作业Id值 | format: int64 |
重点:根据作业ID值判断是新增还是修改业务
2.分页条件查询课程计划作业列表
接口路径:
POST /1231/teaching/work/list
请求参数
Headers:
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Content-Type | application/json | 是 |
Query:
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
order | 否 | ||
pageNo | 是 | ||
pageSize | 否 | ||
sortBy | 否 |
Body:
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
coursePubId | integer | 非必须 | 课程发布标识 | format: int64 | |
status | string | 非必须 | 状态 | ||
teachplanId | integer | 非必须 | 课程计划标识 | format: int64 | |
title | string | 非必须 | 标题 | ||
userId | integer | 非必须 | format: int64 | ||
username | string | 非必须 | 作业提交人 |
返回数据
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
counts | integer | 非必须 | 数据记录总数 | format: int64 | |
first | boolean | 非必须 | |||
items | object [] | 非必须 | 数据列表 | item 类型: object | |
itemsSize | integer | 非必须 | format: int32 | ||
page | integer | 非必须 | 当前页码 | format: int64 | |
pageSize | integer | 非必须 | 一页数据数 | format: int64 | |
pages | integer | 非必须 | 总页数 | format: int64 |
3.教学计划-作业绑定(教学机构使用)
接口路径:
POST/1231/content/teachplan/work/association
请求参数
Headers:
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Content-Type | application/json | 是 |
Body:
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
teachplanId | integer | 必须 | 课程计划标识 | format: int64 | |
workId | integer | 必须 | 作业信息标识 | format: int64 | |
workTitle | string | 必须 | 作业标题 |
返回数据
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
courseId | integer | 必须 | 课程标识 | format: int64 | |
coursePubId | integer | 非必须 | 课程发布标识 | format: int64 | |
teachplanId | integer | 必须 | 课程计划标识 | format: int64 | |
teachplanWorkId | integer | 非必须 | 主键 | format: int64 | |
workId | integer | 必须 | 作业标识 | format: int64 | |
workTitle | string | 必须 | 作业标题 |
4.课程发布(修改),课程发布时增加作业相关的业务处理
修改树形结构第三节数据 判断作业还是媒资信息!
学生提交作业—门户
查询课程计划作业记录(学员作业)
接口路径:
GET/1231/teaching/work-record/{id}
请求参数
路径参数:
参数名称 | 示例 | 备注 |
---|---|---|
id | 课程计划作业记录Id值 |
返回数据
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
answer | string | 非必须 | 完成内容 | ||
correctComment | string | 非必须 | 批改意见 | ||
correctionDate | string | 非必须 | 批改时间 | format: date-time | |
coursePubId | integer | 必须 | 课程发布标识 | format: int64 | |
createDate | string | 非必须 | 创建时间 | format: date-time | |
question | string | 非必须 | 作业内容 | ||
status | string | 非必须 | 状态 | ||
teachplanId | integer | 必须 | 课程计划标识 | format: int64 | |
teachplanName | string | 必须 | 课程计划名称 | ||
type | string | 非必须 | 类型(文字,文件等) | ||
username | string | 非必须 | 作业提交人 | ||
workId | integer | 必须 | 作业标识 | format: int64 | |
workRecordId | integer | 非必须 | 作业记录Id | format: int64 |
提交作业记录
添加或修改作业记录—学员
接口路径:
POST/1231/teaching/work-record
请求参数
Headers:
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Content-Type | application/json | 是 |
Body:
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
answer | string | 非必须 | 完成内容 | ||
correctComment | string | 非必须 | 批改意见 | ||
correctionDate | string | 非必须 | 批改时间 | format: date-time | |
coursePubId | integer | 必须 | 课程发布标识 | format: int64 | |
createDate | string | 非必须 | 创建时间 | format: date-time | |
question | string | 非必须 | 作业内容 | ||
status | string | 非必须 | 状态 | ||
teachplanId | integer | 必须 | 课程计划标识 | format: int64 | |
teachplanName | string | 必须 | 课程计划名称 | ||
type | string | 非必须 | 类型(文字,文件等) | ||
username | string | 非必须 | 作业提交人 | ||
workId | integer | 必须 | 作业标识 | format: int64 | |
workRecordId | integer | 非必须 | 作业记录Id | format: int64 |
返回数据
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
answer | string | 非必须 | 完成内容 | ||
correctComment | string | 非必须 | 批改意见 | ||
correctionDate | string | 非必须 | 批改时间 | format: date-time | |
coursePubId | integer | 必须 | 课程发布标识 | format: int64 | |
createDate | string | 非必须 | 创建时间 | format: date-time | |
question | string | 非必须 | 作业内容 | ||
status | string | 非必须 | 状态 | ||
teachplanId | integer | 必须 | 课程计划标识 | format: int64 | |
teachplanName | string | 必须 | 课程计划名称 | ||
type | string | 非必须 | 类型(文字,文件等) | ||
username | string | 非必须 | 作业提交人 | ||
workId | integer | 必须 | 作业标识 | format: int64 | |
workRecordId | integer | 非必须 | 作业记录Id | format: int64 |
批改作业
作业批阅列表
接口路径:
POST/1231/teaching/work-record/list
请求参数
Headers:
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Content-Type | application/json | 是 |
Query:
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
order | 否 | ||
pageNo | 是 | ||
pageSize | 否 | ||
sortBy | 否 |
Body:
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
courseName | string | 非必须 | 课程名称 |
返回数据
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
counts | integer | 非必须 | 数据记录总数 | format: int64 | |
first | boolean | 非必须 | |||
items | object [] | 非必须 | 数据列表 | item 类型: object | |
itemsSize | integer | 非必须 | format: int32 | ||
page | integer | 非必须 | 当前页码 | format: int64 | |
pageSize | integer | 非必须 | 一页数据数 | format: int64 | |
pages | integer | 非必须 | 总页数 | format: int64 |
课程批阅详情
接口路径:
GET/1231/teaching/work-record/read-over-all/{courseWorkId}
请求参数
路径参数:
参数名称 | 示例 | 备注 |
---|---|---|
courseWorkId | 课程作业提交Id |
返回数据
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
answerNumber | integer | 非必须 | 答题总数[所有提交的作业] | format: int32 | |
commitedTime | string | 非必须 | 最后提交时间 | format: date-time | |
committerNumber | integer | 非必须 | 提交作业总人数 | format: int32 | |
companyId | integer | 非必须 | 机构ID | format: int64 | |
companyName | string | 非必须 | 机构名称 | ||
courseName | string | 非必须 | 课程名称 | ||
coursePubId | integer | 非必须 | 课程发布ID | format: int64 | |
courseWorkId | integer | 非必须 | format: int64 | ||
learnerNumber | integer | 非必须 | 课程学习总人数 | format: int32 | |
recGroupDTOList | object [] | 非必须 | item 类型: object | ||
reviewedTime | string | 非必须 | 最后批阅时间 | format: date-time | |
tobeReviewed | integer | 非必须 | 待批阅数 | format: int32 | |
totalUsers | integer | 非必须 | 答题总人数 | format: int32 | |
workNumber | integer | 非必须 | 作业总数 | format: int32 |
批阅作业
接口名称:
批改作业
接口路径:
PUT/1231/teaching/work-record/correction
请求参数
Headers:
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Content-Type | application/json | 是 |
Body:
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
answer | string | 非必须 | 完成内容 | ||
correctComment | string | 非必须 | 批改意见 | ||
correctionDate | string | 非必须 | 批改时间 | format: date-time | |
coursePubId | integer | 必须 | 课程发布标识 | format: int64 | |
createDate | string | 非必须 | 创建时间 | format: date-time | |
question | string | 非必须 | 作业内容 | ||
status | string | 非必须 | 状态 | ||
teachplanId | integer | 必须 | 课程计划标识 | format: int64 | |
teachplanName | string | 必须 | 课程计划名称 | ||
type | string | 非必须 | 类型(文字,文件等) | ||
username | string | 非必须 | 作业提交人 | ||
workId | integer | 必须 | 作业标识 | format: int64 | |
workRecordId | integer | 非必须 | 作业记录Id | format: int64 |
返回数据
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
answer | string | 非必须 | 完成内容 | ||
correctComment | string | 非必须 | 批改意见 | ||
correctionDate | string | 非必须 | 批改时间 | format: date-time | |
coursePubId | integer | 必须 | 课程发布标识 | format: int64 | |
createDate | string | 非必须 | 创建时间 | format: date-time | |
question | string | 非必须 | 作业内容 | ||
status | string | 非必须 | 状态 | ||
teachplanId | integer | 必须 | 课程计划标识 | format: int64 | |
teachplanName | string | 必须 | 课程计划名称 | ||
type | string | 非必须 | 类型(文字,文件等) | ||
username | string | 非必须 | 作业提交人 | ||
workId | integer | 必须 | 作业标识 | format: int64 | |
workRecordId | integer | 非必须 | 作业记录Id | format: int64 |
批改作业流程时序图:
学成在线 第09章 讲义-评论管理
1. 评论管理概述
1.1 评论管理需求概述
**评论管理**是指学生通过对某课程评论信息的浏览,迅速了解到该课程的教学质量、市场反馈优缺等信息,从而决定自己是否学习该课程。教育机构通过课程评论信息能够了解到自身课程的不足,迅速做出优化调整方案,改善产品质量。因此,**评论管理**针对课程产品是一种问题暴露和优化改善的强有力措施。
1.2 业务介绍
本章,我们需要完成评论管理
的相关功能:
1.学生对该课程进行评论、打分操作
2.教育机构可查询该机构所有课程的评论内容。
3.教育机构可对某评论进行回复操作。
4.学生可浏览某课程的评论及回复内容。
5.学生可浏览该课程的评论统计信息,包括评论总数、平均分,各分级评论数。
本章需要完成的需求列表如下:
1、课程评论,门户端的课程评论、评论列表展示、评论统计
2、评价管理,教育机构的评论列表展示、评论回复
1.3 业务流程
1.3.1 课程评论
课程评论流程如下:
1.用户在课程详情页的右边,可以看到该课程的评论列表。
2.在评论部分的最底部,点击去评价
链接,即可打开课程评价页面
。
3.课程评价页面
展示了评论统计信息①与评论列表② ,并能够对该课程进行评论操作③(评论、打分)。
1.3.2 评价管理(教学机构)
评价管理流程如下:
1.教育机构用户进入教学教务-评价管理
模块,即可展示该机构所有课程的评论信息。
2.点击某评论后的回复
按钮,展示评论操作框,可对该评论进行回复操作。
1.3.3 评价管理(运营平台)
1.4 分析与设计
1.4.1 复用性设计考虑
评论是一个常用的业务功能,我们考虑将其封装为一个独立的评论管理服务 。
这样的好处是:
增加可复用性,评论模块只用开发一次,可以被多个业务所引用,不必为每一块儿业务都实现评论功能。
增加可维护性,若评论服务有问题,只需要更改一处地方。
集中管理,评论业务可集中优化,并且可集中管理所有业务评论。
基于上述,我们课程评论管理业务采用下面结构实现:
由教学管理服务
调用评论管理服务
实现本业务,课程评论管理的业务接口由教学管理服务来暴露。
NOTE:课程评论属于教学管理业务,因此我们将课程评论的实现放在教学管理服务中。
1.4.2 评论管理数据模型
通过上面的分析,我们设计以下数据模型:
评论管理服务中包含comment表用于存储评论信息,comment_reply表用于评论的回复信息。
comment重要列含义如下:
- id:评论ID
target_type
:评论对象类型,如课程、文章、商品target_id
:评论对象ID,如课程id、文章id、商品idtarget_name
:评论对象名称,如xx课程名称、xx文章标题,xx商品名称- user_name:评论者用户名
- nike_name:评论者昵称
- comment_text:评论内容
- comment_date:评论时间
- star_rank:评分
belong_to
:评论归属于 [哪个机构],如XX教育机构come_from
: 评论来源 [即来自于哪个应用] ,如学成在线
comment_reply重要列含义如下:
- id:评论回复id
- comment_id:评论id,说明该回复内容是属于哪个评论的
- user_name:回复者用户名
- nike_name:回复者昵称
- reply_text:回复内容
- reply_date:回复时间
上面中高亮的字段是为了可扩展性及复用性设计考虑的,我们可以这样理解:
此评论信息是属于学成在线2.0(come_from),黑马程序员教育机构(belong_to)下针对id为1(target_id)的课程(target_type)评论,课程名称为struts in action(target_name)。
2. 评论管理服务
2.1 创建评论管理服务
2.1.1 工程创建
组内根据之前的项目特点,构建出评论系统微服务。
2.1.2 数据库初始化
导入资料中的sql文件到数据库中。
2.1.3 nacos配置
新建AppId为xc-comment-service的应用。
并引入项目配置内容(根据项目的需求组内分析需要引入的内容)
2.2 功能实现设计
整个评论服务分成两个模块:
评论管理
评论回复
上面的功能需要在评论微服务系统中来完成此次的功能。
3. 学成在线-课程评论实现
整个功能操作需要在教育管理中心完成操作,教学管理中心需要调用评论系统来获得评论基础数据。
- 课程评论—门户页面(学员)
- 课程评论列表查询—课程管理前端(教学机构)
- 课程评论回复—课程管理前端(教学机构)
- 课程评论列表展示—门户页面(学员)
- 课程评论列表统计—门户页面(学员)
拓展
课程计划作业管理(提供机构使用 学员无权访问)
删除课程计划的作业(拓展)
接口路径:
DELETE/1231/teaching/work/{workId}
请求参数
路径参数:
参数名称 | 示例 | 备注 |
---|---|---|
workId | 课程计划Id值 |
返回数据
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
boolean | 非必须 |
查询课程计划作业(第三小节 绑定作业时根据WordId查询作业)
接口路径:
GET/1231/teaching/work/{workId}
请求参数
路径参数:
参数名称 | 示例 | 备注 |
---|---|---|
workId |
返回数据
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
workId | number | 非必须 | |||
companyId | number | 非必须 | |||
companyName | null | 非必须 | |||
title | string | 非必须 | |||
question | string | 非必须 | |||
userNum | null | 非必须 | |||
bindCourses | null | 非必须 | |||
username | string | 非必须 | |||
status | number | 非必须 | |||
createDate | string | 非必须 | |||
changeDate | string | 非必须 |
作业提交及批改(提供机构使用 学员无权访问)
批改作业
接口路径:
PUT/1231/teaching/work-record/correction
请求参数
Headers:
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Content-Type | application/json | 是 |
Body:
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
answer | string | 非必须 | 完成内容 | ||
correctComment | string | 非必须 | 批改意见 | ||
correctionDate | string | 非必须 | 批改时间 | format: date-time | |
coursePubId | integer | 必须 | 课程发布标识 | format: int64 | |
createDate | string | 非必须 | 创建时间 | format: date-time | |
question | string | 非必须 | 作业内容 | ||
status | string | 非必须 | 状态 | ||
teachplanId | integer | 必须 | 课程计划标识 | format: int64 | |
teachplanName | string | 必须 | 课程计划名称 | ||
type | string | 非必须 | 类型(文字,文件等) | ||
username | string | 非必须 | 作业提交人 | ||
workId | integer | 必须 | 作业标识 | format: int64 | |
workRecordId | integer | 非必须 | 作业记录Id | format: int64 |
返回数据
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
answer | string | 非必须 | 完成内容 | ||
correctComment | string | 非必须 | 批改意见 | ||
correctionDate | string | 非必须 | 批改时间 | format: date-time | |
coursePubId | integer | 必须 | 课程发布标识 | format: int64 | |
createDate | string | 非必须 | 创建时间 | format: date-time | |
question | string | 非必须 | 作业内容 | ||
status | string | 非必须 | 状态 | ||
teachplanId | integer | 必须 | 课程计划标识 | format: int64 | |
teachplanName | string | 必须 | 课程计划名称 | ||
type | string | 非必须 | 类型(文字,文件等) | ||
username | string | 非必须 | 作业提交人 | ||
workId | integer | 必须 | 作业标识 | format: int64 | |
workRecordId | integer | 非必须 | 作业记录Id | format: int64 |