前后端分离项目-电脑之家_总结

项目总结

1、项目名称

电脑之家

2、项目概述

电脑之家这个项目是为C公司开发的一个o2o模式的项目。它是以电脑为中心,不仅提供了电脑销售,电脑维修基本功能,还提供了电脑上门维修服务,电脑配件购买,电脑系统的修复与优化,电脑相关知识学习等功能的一个综合性平台。它不仅能够销售旗下门店商品和服务,还积极寻求合作共赢,支持各电脑商家的入驻。它主要有组织机构,用户,服务,电脑,订单, 支付等模块。它采用的前后端分离开发模式,前端使用的是vue技术栈,后台使用的是springboot+ssm框架,最后使用docker进行部署上线

3、负责模块

①用户模块

【用户注册】:手机号注册,邮箱注册

表设计:以手机号注册为例,数据库设计一张t_user的用户表,用于存储用户的用户名及密码信息
流程设计:当用户输入手机号并点击发送验证码时,后台会生成一个随机字符串也就是验证码设置一个过期时间存入redis,并设置一分钟的重发时间,当用户在一分钟后过期时间内点击重新发送,会将过期时间重置(验证码不重置)。将这个验证码通过短信的方式发送给用户,当用户输入验证码进行登录时,后台会将这个验证码与存入redis中的随机字符串进行比对,当没有过期并且相同时,注册成功并跳转页面;没有过期并且不相同时,系统提示验证码输入错误
【用户登录】:账号登录(手机号&邮箱),三方登录(微信、QQ)
表设计&流程设计
对于账号登录,用户和管理员登录是同一个接口,通过前端传过来的type判断是用户还是管理员,然后跳转不同的页面。数据库设计了三张表分别为登录表logininfo、用户表user和员工employee(管理员)表,登录表里面是所有用户和管理员的登录账号和密码,因为管理员也可以登录我们的网站享受服务,所以有可能一个手机或邮箱既是用户又是管理员。为了区分这种登录账号到底是要登录到后台还是网站,所以我们登录表里面有一个type字段,区分该账号到底是用户还是管理员。如果登录成功,用uuid生成一个随机数,将该随机数作为key,用户信息作为value存入redis,然后传到前端,前台取名为token会将它放到localStorage里面,并且我们在每次发起请求到后台时,都会在请求头中放入该token,在后台的拦截器中,我们会获取每一个请求的token,如果没有token或者通过该token在redis中没有获取到相应的用户信息,我们都认为它没有登录,然后返回前台,否则就放行该请求。除了登录和注册接口,其他的会被拦截
对于三方登录(微信二维码登录),用户点击微信登录后,向微信官方发送一个请求,微信收到请求后返回一个二维码,用户扫描二维码点击确认以后,跳转到后台,后台根据前台传入的openid查找用户,后台判断是否已经绑定,如果绑定直接免密登录,没有绑定则跳转到绑定界面,再判断用户存不存在,存在就绑定并登录成功跳转,不存在就新建一个和User绑定后再做登录成功跳转
【收藏】:商品收藏,服务收藏,店铺收藏,电脑收藏
【浏览足迹】:保存用户对电脑,服务,商品,店铺的浏览痕迹
【购物车】:用户可将心仪商品或服务添加到购物车中统一进行支付
【用户地址管理】:对同一个用户的多个地址进行管理,可设置默认地址
【银行卡管理】:对用户的银行卡信息进行记录,方便用户在支付订单时可以进行选择

②服务模块

【服务】:对各个店铺所提供的服务进行页面展示
【服务详情】:当用户点击某一个服务时,会弹出页面对此服务的详情进行展示
【服务管理】:后台对服务的crud、后台对服务的审核及上下架处理

③电脑模块

【电脑上新消息】:将商家最新上架的电脑以消息形式推送给用户,以便用户能够及时了解和购买
【电脑列表展示】:将审核通过的商家电脑进行页面展示,供用户购买
【电脑类型】:进行电脑类型的细化分类,方便后台人员对电脑进行管理,以及用户进行分类选择
【电脑详情】:当用户点击某款电脑时,会弹出页面展示出该电脑的详情信息

4、项目人员组成

团队共11人,用时半年完成。项目经理(PM)【人员管理、项目管理】1人,架构师(SE)【项目架构+技术选型+疑难问题解决+培训】1人,UI工程师【设计界面】1人,H5前端工程师2人,Java后端工程师4人,测试1人,运维1人

5、技术要点

①项目整体框架技术

Springboot

采用springboot框架的优势:
1.快速启动:SpringBoot内置Web容器,快速启动一个web项目
2.简化配置:Spring Boot提供了一种快速使用Spring的方式,简化xml配置(Mybatis除外),提高开发效率
3.入门容易:SpringBoot继承了原有Spring框架的优秀基因

Vue技术栈

nodejs【简单来说,Node.js就是运行在服务端的 JavaScript】、npm【NodeJS的包管理工具】、webpack【模块打包器】、vuecli【基于vue.js进行快速开发的前端脚手架】、elmentui【一个ui库,常用于和vue配合做前端项目开发】、easymock【数据模拟,用于辅助单元测试】

Linux&docker

在linux系统下,采用docker技术能够快速简便地完成前后端的项目部署工作

②用户模块

Redis
redis的概念

Redis 是一个使用 C 语言开发的key-value形式的高速缓存nosql数据库。它先存到内存中,然后会根据一定的策略持久化到磁盘,即使断电也不会丢失数据。另外它支持较多的数据类型,可以应用到多个场景。比如:记录帖子点赞数、点击数、评论数;缓存近期热帖;缓存文章详情信息;记录用户会话信息等。

Redis存储原理

redis可以将内存中的数据异步写入硬盘中,两种(策略)方式:RDB(默认)和AOF,即使断电也不会造成数据丢失。
RDB持久化原理:通过bgsave命令触发,然后父进程执行fork操作创建子进程,子进程创建RDB文件,根据父进程内存生成临时快照文件,完成后对原有文件进行替换(定时一次性将所有数据进行快照生成一份副本存储在硬盘中)
AOF持久化原理:开启后,Redis每执行一个修改数据的命令,都会把这个命令添加到AOF文件中。

短信消息

在项目中使用短信消息来完成用户的手机号注册功能。
流程设计:用户输入手机号和密码后点击注册–>发送手机验证码(需要做恶意请求拦截)–>判断当前验证码是否有效–>1如果有效则获取当前验证码–>判断是否已过重发时间【如果没有就提醒用户不能频繁发送,如果过了重发时间就使用redis储存验证码信息并重新设置过期时间】2如果未发送或验证码已过期–>生成6位数验证码并使用redis储存验证码信息和设置过期时间==>调用短信发送接口–>记录发送日志(结算依据)

md5加密技术

保存用户密码使用的是MD5加密技术,它是一种不可逆(只可加密,不可解密)的加密技术,因为用户登录只需要做密码的校验,这样能够保证密码的安全性。

微信三方登录

流程设计:用户点击微信登录(发起授权请求)–>跳转到微信扫码界面(导向认证服务器)–>用户扫码通过(用户选择是否授权)–>通过code发起获取accessToken和openId请求–>通过openId在t_wxuser查询userId,获取当前登录用户–>如果用户存在就进行免密登录,跳转主页(登录成功)/–>如果用户不存在跳转到绑定页面–>如果要绑定的用户已存在就新建一个t_wxuser并和存在用户进行绑定;如果要绑定的用户不存在就创建一个t_user和t_wxuser并进行绑定–>跳转主页(登录成功)
注:t_user:数据库用户信息表;t_wxuser:数据库微信用户信息表

③服务模块

FastDFS

fastdfs是一个国产的开源的分布式文件系统。在本项目中用来实现店铺logo上传,电脑详情图片上传等需求。分布式文件系统可以降低服务器压力,而且可以集群使用;实现步骤:1导入jar 配置,2使用工具类,3封装接口并测试,4和前端整合;需要注意在tracker_server中正确配置增加tracker的ip和端口

④电脑模块

百度地图

项目中用到了百度地图的地址逆解析服务,用来根据用户选择的地址获取最近的店铺,以便于用户选择合适的店铺购买服务以及电脑商家给用户提供上门服务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值