发表于: 2020-08-07 23:10:58
1 2060
今天完成的事情:
编写后端方案设计:
一.项目架构
1.模块
前台:首页,签到,消息,我的(个人信息),课程列表
后台:角色管理,账户管理,消息管理,用户管理,课程管理,公告管理,banner管理
2.项目结构
academy-running-common 公共包 (pojo类,Util工具类,dao接口)
academy-running-eureka-server Eureka注册中心 端口:8071
academy-running-reception-server 前台总服务 端口:8072
academy-running-admin-server 后台总服务 端口:8073
academy-running-feign-reception-client 前台总服务调用 端口:8074
academy-running-code-admin-client 后台总服务调用 端口:8085
academy-running-zuul-client 服务网关 端口:8086
3.使用框架
SpringBoot,SpringCloud,SpringSecurity,Mybatis,Druid
4.数据库与缓存
MySql,Redis
二.数据表
三.具体方案
前台方案
登录
需求描述:
- 作为一个想要使用求学大作战的用户,我想要通过微信授权,以便省去注册的步骤
验收标准:
- 1.点击允许,授权微信个人资料成功
- 2.点击取消,弹窗消失,用户处于游客模式,只能进行浏览,如点击学习专区,个人中心等模块,弹出授权框
解决方案:
- 1.前台使用回调域名获取Code发送到后端
- 2.后端接收code以及使用设置好的 appid/secret 获取 access_token
- 3.由于access_token只有7200s有效期, 需要调用微信refresh_token接口定时刷新access_token
- 4.通过openid和access_token获取用户信息
- 5.验证opeonid是否存在于数据库中, 若没有则创建新的用户, 存在查询账号状态, 状态正常返回用户id, 不正常提示账号冻结
- 6.验证完成后,返回新用户的id
签到
需求描述
- 作为一名初高中生,我希望可以通过签到增长我的积分。这样便于用户在做某种事情上起到优惠的作用。
- 作为一名初高中生,我希望可以查看我的签到记录,这样便于用户知晓签到的情况。
验收标准
- 进入签到主页面后,显示三部分 1.用户目前积分,2.签到按钮 ,3.用户已签到日历记录
- 点击签到规则,弹窗提示详细签到规则
- 每天签到送5积分,本月连续第7天签到额外送15积分(1个月只可领取一次),本月连续签到至月底。额外送50积分
- 点击签到后,显示部分 1.用户增加后的积分 2.本月已连续签到天数 3.本次签到增加积分数量 4.增加后的用户已签到日历记录
解决方案:
- 前台用户表添加积分字段,每次签到都会根据规则增加此积分字段
- 加分逻辑:用户每次签到积分+5,本月签到天数+1
- 每次签到前,取出用户最近一次签到天数,判断是否为本月,如果不是,修改领取7天奖励状态为0,修改本月签到天数字段为0,再执行后续签到加分逻辑。如果是,判断最近一次签到天数是否为昨天,如果是 执行加分逻辑,如果不是,将本月签到天数改为0,领取7天奖励状态不做修改,再执行加分逻辑。
- B 若本月第1次本月签到次数达到7天,额外奖励15积分,并将此领取7天奖励状态状态设置为1。 本月剩余日期内,用户第2次连续签到天数再次为7,查询此状态,若为1则不再额外奖励15积分。
- C 取出本月天数,若本月签到次数与本月天数相同,额外奖励50积分。(每次执行加分逻辑后,查询本月天数,与本月签到天数做对比,相同即可添加50积分)
消息
需求描述
- 作为一名初高中生,我希望可以通过消息,获取最新的优惠活动及课程。
验收标准
- 可以根据用户的年级去获取对应的消息。
解决方案:
- 通过用户消息关系表,获取属于用户的对应消息。
公告
需求描述
- 登录成功弹出公告,告知用户最新活动及资讯
验收标准
- 用户登录成功进入主页面后即可弹出
解决方案:
- 直接查询公告接口即可
个人中心
我的
课程管理
需求描述:
- 作为一名初高中生用户,我希望有教学课程的内容,以便于我能够购买视频并进行学习。
- 作为一名初高中生用户,我希望教学课程可以按照年级、科目和课程列表展示内容,以便于我能够快速选择符合自己需求的课程。
- 作为一名初高中生用户,我希望可以通过关键字自定义搜索我需要的课程,以便于我了解和购买。
- 作为一名初高中生用户,我希望在课程列表中可以展示课程的标题及封面,购买人数及价格,已便于决定我是否继续了解课程及是否购买课程
验收标准:
1.课程区首页
页面分为年级科目列表、搜索区,banner图和列表页课程。
字段显示:每次进入列表页都默认显示年级和科目。
列表页课程显示有四种情况:
a.在个人中心中设置年级后(如:高三),进入课程首页,列表页课程为高三的全部科目课程。
b.在个人中心中未设置年级,进入课程首页,列表页课程为全部科目课程。由用户自由选择。
c.在个人中心设置年级后(如:高三),进入课程首页,选择科目(如:英语),列表页课程为经过筛选后的课程
d.通过搜索区内输入关键字后查询到的列表页课程,搜索到的内容
(1)年级科目:点击年级和科目后,展示的视频内容同步更新。
(2)banner图:banner图进行轮播显示,最多3张,banner图无内容链接则点击无反应;有内容链接则跳转相应的内容详情进行浏览。
(3)课程列表:列表中可以看到课程图封面,标题,购买人数和课程价格
2.课程详情页:
(1)点击某个课程,进入课程详情页
(2)课程详情页内有标题,视频播放界面,课程发布时间及课程内容介绍
(2)收藏:点击空心收藏图标,双击取消收藏
解决方案:
1.进入课程区首页
a .如果用户参数有年级,无学科
搜索在此年级下,根据科目分组后,每个科目组的第一个课程
b.如果用户参数无年级,无学科
搜索根据科目分组后,每个科目组的第一个课程
c.如果用户参数有年级,有学科
根据年级,学科搜索即可
d.如果用户参数无年级,有学科
根据所有学科搜索即可
banner列表: 查询后台banner里处于上架状态的三张banner图片及跳转url
搜索栏: 根据用户自定义关键字参数,在所有列表课程内进行模糊搜索
2.课程详情页
1.根据传入课程id,查询课程的标题,视频url,发布时间,课程详情介绍,课程价格
2.点击课程价格即可跳转至微信支付跳转页面,进行支付后,点击确认回到课程页面,即可观看。
3.点击收藏按钮,将用户收藏状态改为1,双击为取消收藏,将用户收藏状态改为0
后台管理方案
1.登录
需求描述:
- 作为一个管理人员,我想要通过账户密码,以便于内部人员登录后台管理系统
验收标准:
- 1. 用户名最多为30字符,支持数字和字母
- 2. 密码最多为20字符,支持字母和数字
- 4. 用户名错误和密码错误时出现相应提示,如用户名不存在/密码错误/登陆成功等
解决方案:
- 1.前端提交表单数据到登陆接口, security对表单数据进行登陆效验
- 2.判断用户名是否存在, 不存在返回账号不存在
- 3.判断密码是否正确,不正确返回密码错误
- 4.效验成功将用户信息保存到Redis缓存中, 留给授权时提取使用.
- 5.服务端发一个token ,token放入cookie中发送给客户端
- 6.客户端收到 token 把它存储起来,服务端每次请求都会带上token
- 7.服务端接收到token后,验证token是否正确,正确则登录成功返回显示模块
评论