发表于: 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
  1. 每次签到前,取出用户最近一次签到天数,判断是否为本月,如果不是,修改领取7天奖励状态为0,修改本月签到天数字段为0,再执行后续签到加分逻辑。如果是,判断最近一次签到天数是否为昨天,如果是 执行加分逻辑,如果不是,将本月签到天数改为0,领取7天奖励状态不做修改,再执行加分逻辑。
  2. B 若本月第1次本月签到次数达到7天,额外奖励15积分,并将此领取7天奖励状态状态设置为1。  本月剩余日期内,用户第2次连续签到天数再次为7,查询此状态,若为1则不再额外奖励15积分。
  3. C 取出本月天数,若本月签到次数与本月天数相同,额外奖励50积分。(每次执行加分逻辑后,查询本月天数,与本月签到天数做对比,相同即可添加50积分)

消息

需求描述

  • 作为一名初高中生,我希望可以通过消息,获取最新的优惠活动及课程。

验收标准

  • 可以根据用户的年级去获取对应的消息。

解决方案:

  • 通过用户消息关系表,获取属于用户的对应消息。


公告

需求描述

  • 登录成功弹出公告,告知用户最新活动及资讯

验收标准

  • 用户登录成功进入主页面后即可弹出

解决方案:

  • 直接查询公告接口即可



个人中心

我的


需求描述:

  • 作为一个有账户的用户,我想要通过个人中心,以便于查看和使用更多的服务

验收标准:

  • 点击头像昵称或箭头进入个人资料页
  • 点击我的收藏进入我的收藏页
  • 点击我的课程,进入我购买的课程页

解决方案:

  • 根据用户id查询用户信息,展示在资料页
  • 根据用户id查询用户收藏关系表,展示在我的收藏页面
  • 根据用户id查询用户课程关系表,展示在我的课程页面


个人资料


需求描述:

  • 作为一个有个性的用户,我想要更改自己的资料,以便向别人展示我自己

验收标准:

  • 点击头像,弹出相册或打开相机,选择后确定
  • 点击昵称,可以修改个人昵称,限制20字符
  • 点击性别,可以修改个人性别
  • 点击年级,可以修改个人年级
  • 点击手机号,可以发送验证码,修改用户手机号

解决方案:

  • 头像:将传入的用户图片上传至第三方云储存,返回图片url。然后根据传入的用户id修改用户photo字段,并返回给前端显示
  • 昵称:根据传入用户id和新昵称修改用户name字段
  • 性别:根据传入用户id和性别修改用户gender字段
  • 年级:根据传入用户id和年级修改用户gid字段
  • 手机号:通过用户手机号发送验证码,将验证码存入redis, 与用户传入验证码作对比,如果符合,即可根据用户id存入手机号

课程管理


需求描述:

  • 作为一名初高中生用户,我希望有教学课程的内容,以便于我能够购买视频并进行学习。
  • 作为一名初高中生用户,我希望教学课程可以按照年级、科目和课程列表展示内容,以便于我能够快速选择符合自己需求的课程。
  • 作为一名初高中生用户,我希望可以通过关键字自定义搜索我需要的课程,以便于我了解和购买。
  • 作为一名初高中生用户,我希望在课程列表中可以展示课程的标题及封面,购买人数及价格,已便于决定我是否继续了解课程及是否购买课程

验收标准:

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是否正确,正确则登录成功返回显示模块



返回列表 返回列表
评论

    分享到