表设计:用户购买书包多对多,书包和资源多对多,一个资源对应对多文件表,用户文件表多对多记录观看文件,用户已读资源多对多
user:uid
pack:id,name
res:id,name,author
file(导读资源):id,rid,fid,objcetid,type(类型名称)
user - pack(购买):id,uid,pid,createtime,status
pack - res(包含):id,pid,rid
user - file(已读):id uid,rid,fid,createtime
user-res(已完成):id,uid,rid
需求分析:
用户信息统计:用户id,有效阅读量,总有效字数,总阅读时长,阅读等级(接口),能力维度信息(接口),阅读喜好(接口),班级排名,年级排名,获赞数总数,总读后感数,总优秀读后感数,阅读时段;
阅读任务url+userid(接口):任务总量,任务完成率,必读任务完成率,回答正确率
阅读任务完成情况url+userid(接口):必读任务,自选任务
总测评通过率url+userid(接口):通过率,未通过率
图书-用户:书id,用户id,是否有效阅读,
有效阅读字数(接口),在线阅读时间(接口),有效阅读时间(接口)
图书详情url+bookid(通过接口返回):书id,书名,作者,出版社,封面,简介,图书内容url;
课前引导(url+bookid):所属图书,总数(接口:通过bookid获取所有objectid),已观看数(参数:用户id,bookid;通用查寻用户-引导表-》观看数);
用户-引导表:用户id,课前索引id;
用户-测评表:所属图书,所属用户,是否通过(接口),通过条件,通关时长(接口),测评时间,正确率(接口),剩余机会,难度,题目总数(接口),班级排名(根据过关时长和测评时间排序),答案(接口);已完成人数(查询所有已通过,按测评时间排序)
读后感:标题,内容,所属用户,图片,创建日期,有效状态,审核状态(接口),级别(接口),获赞数(接口),所属图书;类别(根据所属用户机构判断同校区,全网);(总篇数:通过bookid统计读后感)
老师评语(接口):作者,日期,内容,有效性,所属读后感;
讨论url+bookid(接口):获取新话题数,总话题数
统计信息接口:
1根据用户id,时间段获取统计信息
Func:
getUserStatisticsByIdAndTime
Param:
userId 用户主键
startTime 开始时间
endTime结束时间
Return:
{
State:0(error), 1 (success),
Data:{
readingRank(阅读排名):{
classRank(班级排名):{
readingVolumeRank(有效阅读量排名):xx(int),
validWordNumberRank(有效字数排名):xx(int)
},
gradeRank(年纪排名):{
readingVolumeRank(有效阅读量排名):xx(int),
validWordNumberRank(有效字数排名):xx(int)
}
},
readingBehavio(阅读行为):{
readingVolume(有效阅读量(单位:本)):xx(int),
validWordNumber(有效字数(单位:万)):xx.xx(double),
afterReading(读后感数(单位:篇)):xx(int),
theDurationOfRead(阅读时长): hh:MM,
bestAfterReading(优秀读后感数(单位:篇)):xx(int),
likesAfterReading(读后感获赞量(单位:个)) : xx(int),
TrendOfReading(阅读趋势):[
date(时间):yyyy-mm-dd(startTime),
duration(时长(h)):xx.xx(double)
},
......
{
date(时间):yyyy-mm-dd(endTime),
duration(时长(h)):xx.xx(double)
}
]
},
readingTask(阅读任务):{
planTaskVolume(计划任务量(项)):xx(int),
taskCompletionRate(任务完成率%):xx.xx(double),
completionRateOfRequiredTask(必读任务完成率%):xx.xx(double),
correctAnswerRate(回答正确率%):xx.xx(double),
CompletionOfReadingTask(阅读任务完成情况):{
requiredReadingTask(必读任务完成):xx(int),
selectionReadingTask(选读任务完成):xx(int)
},
AssessmentRate(测评通过率):{
EvaluationThrough(测评通过):xx(int),
EvaluationNotThrough(测评未通过):xx(int)
}
},
readingAbility(阅读能力):{
degree(等级):xx(int),
myAbilityDimension(我的能力维度):
{
informationExtraction(信息提取):xx.xx(double),
wordMastery(词组掌握):xx.xx(double),
imaginationExpansion(想象拓展):xx.xx(double),
reflectionEvaluation(反思评价):xx.xx(double),
enjoyEmpathy(欣赏共情):xx.xx(double),
inductiveReason(归纳推理):xx.xx(double),
}
classAvgAbilityDimension(班级平均能力维度):
{
informationExtraction(信息提取):xx.xx(double),
wordMastery(词组掌握):xx.xx(double),
imaginationExpansion(想象拓展):xx.xx(double),
reflectionEvaluation(反思评价):xx.xx(double),
enjoyEmpathy(欣赏共情):xx.xx(double),
inductiveReason(归纳推理):xx.xx(double),
}
},
readingHobby(阅读爱好):{
literaryStory(文学故事):xx(int),
scientificWisdom(科学益智):xx(int),
historicalCulture(历史文化):xx(int),
socialEncyclopedia(社会百科):xx(int),
humanitiesArt(人文艺术):xx(int)
}
}
}
2. 提交读后感
Func:
submitAfterReading
Param:
readedId:读后感主键
(为空表示新增,不为空表示修改)
title:标题
context:内容
userId:上传用户
Return:
{
result:0(error),
data:{
reason:{
0:标题未填写,
1:标题过长,
2:内容过少,
99:用户无权限
}
}
}
{
result:1(success)
data:{
mes:”新增成功||修改成功”
}
}
3. 上传图片
Func:
upoadImg
Param:
File
Return:
{
result:1(success)
data:{
img:{
id(主键):xx,
name(名称):xx,
url(路径):xx,
size(大小):xx
}
}
}
{
Result:0(error)
Data:{
Reason:{
0:图片过大
}
}
}
4. 查看读后感详情
Func:
getAfterReadingById
Param:
readedId:读后感主键
Return:
{
result:1(success),
data:{
afterReading(读后感):{
Title(标题):”《xxx》”,
Context(内容):”xxxxxx”,
type(类别):0(普通),1(优秀),
size(字数): xx(int),
Likes(点赞数):xx(int),
createTime:yyyy-MM-dd,
power:0(分享,举报),1(编辑,删除,分享)
},
Author(作者):{
id(主键):xx,
Img(头像):url,
name(姓名):xx,
organzied(学校):xx,
},
teacherCommiting(教师点评):{[
{
id(主键):xxx,
name(姓名):xx,
Img(头像):url,
context(内容):xxx,
createTime(创建时间):time
}
...
]}
}
}
{
result:0(error),
data:{
reason:{
0:查询异常
}
}
}
5. 根据id删除读后感
Func:
deleteAfterReadingById
Param:
readedId:读后感主键
Return:
{
result:1,删除成功
data{}
}
{
result:0,删除失败
data{
reason:{
}
}
}
6. 根据id举报读后感
Func:
reportAfterReadingById
Param:
readedId:读后感主键
Return:
{
result:1,举报成功
data{}
}
{
result:0,举报失败
data{
reason:{
}
}
}
7. 分页查询读后感
Func:
getAfterReadingPage
Param:
bookId(书籍主键),
Type:类型 全网||本校
currentPage:当前页,
pageSize:每页显示数量,
totalPage:总页数
Return:
{
result:1(success),
data:{
currentPage:xx,
pageSize:xx,
totalPageSize:xx,
afterReadings:[{
id(主键):xx,
title(标题):xx,
abstract(摘要):xxxx,
createTime(创建时间):yyyy-MM-dd,
likes(获赞数):xx,
type(类别):0(普通),1(优秀),
author:{
Id(主键):xx,
Name(姓名):xx,
Organised(学校):xx
}
},
...
]
}
}
8. 根据用户id和书籍id获取测评信息
Func:
getEvaluationByUseridAndBookid
Param:
Userid用户主键
Bookid书籍主键
Result:
{
result:1(success),
data:{
title(标题):xx,
Evaluation:{
pass(是否通过):0未通过,1通过,
difficulty(难度):xx(int),
total(题数):xx(int),
time(测评时间):yyyy-MM-dd,
accuracy(正确率):xx.xx(double),
classRank(班级排名):xx(int),
chance(机会):xx(int),
passNum(通过人数):xx(int),
passImg(头像):{
img:url?,
...
}
,
evaluationUrl(测评地址):url,
Answerurl(答案地址):url
}
}
}
{
result:0(error),
data:{
reason:{
99:用户无权限
}
}
}
9. 根据书籍id获取书籍信息
Func:
getBookbyUseridAndBookid
Param:
userid用户主键
bookid书籍主键
Return:
{
result:1(success),
data:{
Book:{
title(题目):xx,
author(作者):xx,
Country(国家):xx,
press(出版社):xx,
abstract(摘要):xx,
img(封面):xx
},
isPurchase(是否购买):0未购,1已购,
Guide(课前引导):{
Pass(通过):xx(int)
Total(总数):xx(int)
}
ReadRank(阅读名次):xx(int)
AfterReading(是否发表读后感):0否,1是
ReadedState(是否完成阅读):0否,1是
Discuss(图书讨论):{
New(新话题):xx(int),
Total(总话题):xx(int),
Url:url?
},
book(图书内容):url?,
AfterReadingAll(全网读后感):url6,
AfterReadingAll(本校读后感):url6
}
}
10. 获取引导信息
Func
getGuideByUserIdAndBookid
Param
Userid 用户主键
Bookid 书籍主键
Return
{
result:1(success),
data:{
Type:{
Type:{[
{
Objectid(主键):xx,
isLook(是否已观看):0 未观看1观看
}
...
]},
...
}
}
}