问答系统
开发流程
首先需求分析,其次接口统计和设计,得到下列表格
综上,与问答系统有关的接口有:
编号 |
接口简述 |
|
---|---|---|
互动问题相关接口 |
1 |
新增互动问题 |
2 |
修改互动问题 |
|
3 |
分页查询问题(用户端) |
|
4 |
根据id查询问题详情(用户端) |
|
5 |
删除我的问题 |
|
6 |
分页查询问题(管理端) |
|
7 |
根据id查询问题详情(管理端) |
|
8 |
隐藏或显示指定问题(管理端) |
|
回答及评论相关接口 |
1 |
新增回答或评论 |
2 |
分页查询回答或评论列表 |
|
4 |
隐藏或显示指定回答或评论(管理端) |
构建数据库
根据需求和接口分析,找到问题字段
基本属性:
-
标题
-
描述
关联信息:
-
用户id:也就是提问的人
-
课程id
-
章id
-
节id
功能字段:
-
是否是匿名
回复评论字段
首先是基本属性:
-
回答的内容
功能字段:
-
是否是匿名
-
点赞数量
然后是关联信息:
-
用户id:也就是回答的人
-
问题id:无论是回答、评论,都属于某个问题
接下来是评论的特有属性:
-
回答id:一个回答下会有很多评论,评论之间也会相互评论,但我们把回答下所有评论作为一层来展示。因此该回答下的所有评论都应记住所属的回答的id
-
目标用户id:评论针对的目标用户,页面显示为
张三评论了李四
-
目标评论id:评论针对的目标评论的id
根据对字段的分析构造两张表格,一张问题表格,一张评论回复表格
构建分支,利用MP生成代码,对状态量引入枚举简化代码
问题相关接口
新增问题
@Override
@Transactional
public void saveQuestion(QuestionFormDTO questionDTO) {
// 1.获取登录用户
Long userId = UserContext.getUser();
// 2.数据转换
InteractionQuestion question = BeanUtils.toBean(questionDTO, InteractionQuestion.class);
// 3.补充数据
question.setUserId(userId);
question.setCreateTime(LocalDateTime.now());
question.setUpdateTime(LocalDateTime.now());
// 4.保存问题
save(question);
}
修改问题(练习)
@Override
public v