作业管理-需求分析

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

image.png

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.课程发布(修改),课程发布时增加作业相关的业务处理

修改树形结构第三节数据 判断作业还是媒资信息!
image.png

学生提交作业—门户

查询课程计划作业记录(学员作业)

接口路径:
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

image.png

提交作业记录

添加或修改作业记录—学员
接口路径:
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

image.png

批改作业

作业批阅列表

接口路径:
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

image.png

课程批阅详情

接口路径:
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

批改作业流程时序图:
image.png

学成在线 第09章 讲义-评论管理

1. 评论管理概述

1.1 评论管理需求概述

  1. **评论管理**是指学生通过对某课程评论信息的浏览,迅速了解到该课程的教学质量、市场反馈优缺等信息,从而决定自己是否学习该课程。教育机构通过课程评论信息能够了解到自身课程的不足,迅速做出优化调整方案,改善产品质量。因此,**评论管理**针对课程产品是一种问题暴露和优化改善的强有力措施。

1.2 业务介绍

本章,我们需要完成评论管理的相关功能:

1.学生对该课程进行评论、打分操作

2.教育机构可查询该机构所有课程的评论内容。

3.教育机构可对某评论进行回复操作。

4.学生可浏览某课程的评论及回复内容。

5.学生可浏览该课程的评论统计信息,包括评论总数、平均分,各分级评论数。

image.png

本章需要完成的需求列表如下:

1、课程评论门户端的课程评论、评论列表展示、评论统计

2、评价管理,教育机构的评论列表展示、评论回复

1.3 业务流程

1.3.1 课程评论

课程评论流程如下:

1.用户在课程详情页的右边,可以看到该课程的评论列表。

image.png

2.在评论部分的最底部,点击去评价链接,即可打开课程评价页面

image.png

3.课程评价页面展示了评论统计信息①评论列表② ,并能够对该课程进行评论操作③(评论、打分)。

image.png

1.3.2 评价管理(教学机构)

评价管理流程如下:

1.教育机构用户进入教学教务-评价管理模块,即可展示该机构所有课程的评论信息。

image.png

2.点击某评论后的回复按钮,展示评论操作框,可对该评论进行回复操作。

image.png

1.3.3 评价管理(运营平台)

1.4 分析与设计

1.4.1 复用性设计考虑

评论是一个常用的业务功能,我们考虑将其封装为一个独立的评论管理服务

image.png

这样的好处是:

增加可复用性,评论模块只用开发一次,可以被多个业务所引用,不必为每一块儿业务都实现评论功能。

增加可维护性,若评论服务有问题,只需要更改一处地方。

集中管理,评论业务可集中优化,并且可集中管理所有业务评论。

基于上述,我们课程评论管理业务采用下面结构实现:

image.png

教学管理服务调用评论管理服务实现本业务,课程评论管理的业务接口由教学管理服务来暴露。

NOTE:课程评论属于教学管理业务,因此我们将课程评论的实现放在教学管理服务中。

1.4.2 评论管理数据模型

通过上面的分析,我们设计以下数据模型:

image.png

评论管理服务中包含comment表用于存储评论信息,comment_reply表用于评论的回复信息。

comment重要列含义如下:

  • id:评论ID
  • target_type:评论对象类型,如课程、文章、商品
  • target_id:评论对象ID,如课程id、文章id、商品id
  • target_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 非必须

image.png

查询课程计划作业(第三小节 绑定作业时根据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