发表于: 2018-05-20 22:21:30
1 1382
今天完成的事情:
今天完成了大部分需求的方案设计。
具体方案
模块名称 :签到
需求描述: 作为一个用户,我希望可以签到,以便我获得学习星;
解决方案:
方案一:
方案详情:
签到只涉及到学习星的增加,于是考虑只在用户表中添加一个签到字段,用户签到就更新用户的签到时间,然后根据时间判断用户是否签到,返回给前端的只是一个根据时间判断得到的布尔值。同时,用户签到成功的话,就像用户的学习星字段+3.
方案二:
方案详情:
签到单独设计一张表,设计有最高签到,连续签到字段。用户进入页面的时候,就判断登录时间与签到时间是否是同一天,返回给前端对应的值,置灰签到按键。用户点击签到的话,就直接执行更新语句,若用户已签到的日期和签到的日期是同一天,数据不会发生变化,如果用户签到的天数是在第二天,就将用户签到日期更新为当天,连续签到日期增加1,同时判断最高连续签到日期数是否小于连续签到数,是的时候,就更新最高签到数。同时,当用户签到成功,就将用户的学习星字段+3。
相关SQL语句:
UPDATE sign
SET Recent = '2018-05-14',
continuous = CASE recent
WHEN '2018-05-13' THEN continuous
WHEN '2018-05-14' THEN continuous+1
ELSE 1 END,
Maxattendance =CASE
WHEN (Maxattendance<=continuous) THEN continuous
ELSE Maxattendance END
WHERE userid ='1';
方案优劣对比:
方案一在针对该项目的话,是最简单方便的一种设计思路,但是在后期迭代的话,可能就会表现出一些不支持扩展以及增加相应签到功能的弊端。
方案二在公司框架下逻辑可能会复杂一些,但是在后期迭代与相关功能的扩展性上,就显得更方便与灵活。
推荐方案: 方案二。
模块名称:关于我们
需求描述: 作为一个管理者,我希望能展示我们的相关信息,以便于用户了解我们。
方案: 前端直接写死,后端不做相关处理。
模块名称:搜索课程、搜索课时
需求描述:作为一个用户,我希望可以对课程或课时进行搜索,以便于查找到自己想要的课程;
方案:
搜索页:
搜索因为年级等级的缘故,有两种搜索方式。前端把两种页面直接写死(语文数学按照年级,英语按照等级),后端根据前端传递过来的字段类型进行逻辑判断,然后返回前端对应搜索项的集合数据。
模块描述:我的课程
需求描述: 作为一个用户,我希望能看到我最近学习的课程记录,以便于我回顾学习;
相关方案:用户进入首页时,从cookie获取用户的相关ID,以ID向数据库查询用户最近学习的一门课程,并返回给前端对应课程的相关数据。
模块描述:课程记录
需求描述: 作为一个用户,我希望能看到我最近学习的课程记录,以便于我回顾学习;
相关方案:
用户课程记录页面:
用户进入页面,后端返回给前端用户学习过的所有的课程记录的集合数据。
删除记录:前端返回课程记录对应的ID,执行删除并刷新页面数据。
批量删除:前端返回一组课程记录的ID,后端循环删除对应ID的课程记录并刷新数据。
模块描述:课程列表
需求描述:作为一个用户,我希望能够有一个课程列表,以便于根据科目和等级来选择相应的课程。
相关方案:
用户点击课程,进入课程列表页,默认显示所有科目的所有课程。以分页展示。
模块描述:课程管理
需求描述:作为一个管理者,我希望有教学模块的课程管理列表页、详情页,以便我编辑管理教学模块的课程信息;
相关方案:
课程详情页:返回课程的相关记录,分页展示。
上下架课程:前端返回对应的课程ID,修改课程的上下架状态。
删除课程:前端返回课程对应的ID ,对该课程实行假删除。
增加课程(年级): 按照年级增加的课程,其对应的等级就固定了。前端返回增加对应的数据。
增加课程(等级):按照等级添加的课程,七对应的年级也是固定的。
编辑课程: 前端返回课程对应的ID,返回对应课程数据给前端。用户修改好后,将数据返回给后端,后端按照ID更新数据。
模块描述:课程详情页
需求描述:作为一个用户,我希望有一个课程详情,以便于我了解课程信息,查看相应的课时,收藏、分享、购买资料、开始学习;
相关方案:
课程详情页:前端返回课程相应的ID,后端返回给前端对应课程的课程记录以及课程下所有课时、资料,以及用户的相关数据。同时返回用户对与该课程是否解锁,是否学习过的相关数据。
难度说明贴士:通过课程对应的难度等级去查询对应的难度说说明。
模块描述:课时管理
需求描述: 作为一个管理者,我希望有教学模块的课时管理列表页、详情页,以便我编辑管理教学模块的课时信息;
相关方案:
课时管理页:用户进入课时管理页时,后端向前端返回所有课时的集合数据。
查看课时页:用户进入查看课时页时,前端传递对应的课时ID,后端根据ID返回该课时的详细数据。
编辑课时页:用户修改好对应的课时数据后,返回对应课时的数据,后端根据ID更新课时数据。
上下架课时:用户对课时进行上下架操作时,前端返回该课时的ID,后端根据ID修改课时的上下架状态,同时刷新前端数据。
删除课时: 用户对课时进行删除操作,前端传递会该课时的ID,后端根据ID对课时进行假删除。
新增课时:用户进入课时的新增页面时,后端传递回相关的课程以及科目名称,前端传递新增的课时的数据,后端执行课时的新增操作。
模块描述:收藏课程、 收藏课时
需求描述: 作为一个用户,我希望可以收藏我喜欢的课时或者课时,以便于以后查看和学习;
相关方案:
项目在进行课程或者课时信息的展示的时候,前端查询对应的收藏记录,
用户点击收藏按钮的时候,前端返回对应的课程或者课时ID,后端更新对应课程课时的收藏状态。
模块描述:解锁课程、解锁课时
需求描述: 作为一个用户,我希望可以解锁相关的课程课时,以便于我开始学习;
相关方案:根据用户ID查询用户表中用户星星是否大于当前解锁所需的星星数,如果大于则扣除对应的星星数,将用户ID 购买品ID 购买品指定类型插入到用户购买表中.
模块描述:第三方支付
需求描述:作为一个用户,我希望可以进行支付,以便于我购买锁定的课程、课时、资料;
相关方案:使用微信进行第三方支付,支付成功后回调到我们指定的接口,判断是否支付成功,成功后将资料ID用户ID插入到用户购买列表中.
模块描述: 资讯列表、资讯详情
需求描述: 作为一个用户,我希望可以浏览相关的学习资讯,以便于了解一些辅导方面的信息
相关方案:用户点击进入资讯列表页面,返回用户资讯列表的全部信息,横幅资讯与卡片
信息分开成两个数据集返回给前端。卡片信息ID倒序排列。用户点击对应资讯,前端返回对应资讯的ID,以ID查询资讯详情,并返回给前端对应资讯的正文和标题。
模块描述:资讯管理
需求描述: 作为一个管理者,我希望有内容模块的资讯管理列表页、详情页,以便我编辑管理资讯信息;
相关方案:
资讯管理页:从资讯列表查出全部信息,返回给前端,不区分横幅资讯与列表资讯。
查看资讯页:前端返回对应ID,根据ID返回给前端该资讯的全部信息。
资讯上下架:前端返回对应ID,根据ID返回给修改该资讯的上下架状态。
资讯删除:前端返回对应ID,根据ID返回给修改该资讯的删除状态。
资讯编辑:首先后端返回对应ID的资讯有前端修改,然后前端返回修改好的数据,后端根据ID对后端数据进行更新。
模块描述:消息通知
需求描述: 作为一个用户,我希望能收到系统通知,以便于我能接受到最新的相关信息;
相关方案:设计用户消息表,消息表,消息表每新增一个消息,就向用户消息表写入用户对应的消息,以及消息对应状态,以0.1区分用户已读与否。
首页、我的页: 用户进入首页,后端查询用户未读消息数,并返回对应的数字给前端。
消息列表页:返回消息表所有的数据,未读消息的状态为0,已读消息的状态为1.
消息详情页:前端返回消息对应的ID,后端返回消息的标题与正文的对象,同时更改该消息的阅读状态。
相关sql:
SELECT news.*,user.username,usernews.state from `user` left JOIN usernews on `user`.userid=usernews.uid INNER JOIN news on usernews.nid=news.newsid WHERE user.userid=1 ;
明天计划的事情:核对表数据,审核一下方案,做方案设计最后的收尾。
遇到的问题:
暂无
收获:
进度:
任务开始时间:2018.04.10
预计demo时间:2018.06.10
评论