会议室预约系统(小程序+web端管理系统)2020.11.11-2021.02.11

项目需求

小程序后端主要任务是编写接口,与数据库进行交互,主要是一些CRUD的功能,实现小程序端用户能:用户能通过微信小程序注册登录、按条件查询符合要求的会议室、收藏预定会议室、查看已有的会议、取消修改已有会议等等。
web管理系统则是对公司、会议室、员工、状态的CRUD操作,做到直观的表格展示。

技术框架

小程序后端接口:PHP+MySql+Linux+Nginx+CI框架,开发工具vs、phpstorm、postman、navicat
web端管理系统:Java+Springboot+MySql+Redis+MyBatis plus+layui,开发工具idea、RDM

微信小程序接口开发流程(php)

分析需求,创建mysql数据库

刚开始接到产品的目标设想图,我是没有一点方向的,于是我打算先设计数据库,当时本地电脑还没有php环境和mysql,捣鼓了大半天,直接安装了环境集成软件PHPstudy,在本地mysql、php、nginx环境全都搞定,如果是新手入职,建议直接下载phpstudy这种集成环境的软件,非常的集成、可视化、方便。
解决了本地环境问题后,我下载了php开发工具phpstorm和数据库可视化工具navicat(都是永久破解版)。直到这一步我才开始真正的业务代码编写,耗时大约一天半(还熟悉了下公司的上班流程和规范)。
我最一开始根据需求和三范式原则设计了六张表,经验:字段名为xx_xx;设计时要做好以后扩展的准备;一开始我频繁用一些外键,后来修改表字段的时候觉得外键应该少用,还有主键、唯一键,这些可以按需添加;写SQL对后端来说非常重要,如果写的好,将会极大提高效率,并且写好复杂sql语句也是工作的必须,要多加锻炼多写;此项目中我写事件比较多,相当于到达某条件数据库自动执行相关操作,
很好用。

学习php、ci框架、开始本地写接口

在最开始,对于我这个只写过一点点java代码的人来说,要我用php来开发听起来很难,不过上手后我觉得php很简洁,非常适合新手,我看菜鸟教程了解一些php基本语法,真正开始开发和进步是从使用ci框架开始:MVC模式非常的重要!为我后来的开发打下了基础,这个框架非常简单,controller负责接收请求,做基本逻辑处理,model负责与数据库交互,既可以写原生sql也可以使用框架的sql映射规则,和mybatis挺像,修改配置文件则是与数据库进行连接。当时比较头疼的问题是数据库返回的数据,到底是多维数组还是对象数组还是别的,然后数组的遍历、各种类型的转化、处理数组返回符合要求的数据、各种php自带方法,还有时间的方法,通过百度都能学到,coding能力在这个时候有了从无到有的进步。

确认API的数据返回格式、编写基础API文档

由于是前后端分离,接口文档非常重要,我上网学习了一下前后端数据交互的基本格式,就是code、msg、count、data这种用json格式进行通信,还了解了一下restful,写了大约20个接口和文档,自己也用浏览器地址栏和简单的前端form表格提交进行测试(当时还不太会postman),后端接口也算是写出来了一些。

微信小程序相关的后端内容(获取用户信息、手机号、生成带参跳转二维码)

由于是小程序,必不可少就是调用微信小程序的接口进行开发。
最一开始做的需求是小程序登录,流程如下:用户点进小程序后,前端发给我一个code,我拿着code、appid、appsecret(这两个是该小程序本来就有的)访问微信的接口,返回给我openid(该微信号的唯一标识)、session_key(后续解密获取该用户的信息),我去数据库查看是否存在openid,也就是是否登陆过,经过逻辑处理后判断出是否需要弹表让用户注册,用户填表注册后为了获取他的手机号,我带着未解密数据和session_key再访问微信的接口,解密成功后将得到用户的手机号,插入数据库,至此,登录流程大体完成,里面有许多逻辑判断的细节,这是本项目中较有逻辑难度的一部分。
再就是生成带参数的二维码,我选择的是微信获取二维码接口这个接口。首先,又要拿着appid和secret去向微信要token,拿到之后,带上token、path(小程序路径)、想要添加的参数访问如上接口后,将得到二进制流的文件,将它保存在本地服务器,再上传到浏览器,这里涉及到I/O流的操作,也就是上传/下载的操作,很有实战意义。

部署到linux服务器(配nginx、xshell、xftp、命令行的使用)

这一步对基础薄弱的小白非常不友好,这里需要操作系统、部署到web服务器的知识,我用xshell连接公司服务器,xftp传输文件;其实部署这个小程序后端步骤还算简单,目标是部署到服务器的nginx,步骤:改nginx的conf配置,如端口号、对应域名(这里域名需要提前解析)、配置https证书和密钥、设置文件根目录,然后将后端代码文件放在指定路径下即可完成配置,还有一步自动生成日志信息。公司的服务器不仅基础环境都已经配置好,还写了一些shell脚本方便我们部署。
如下就是nginx.conf里面比较重要的一个配置。监听443端口、证书及密钥的位置、域名、根目录、包括了另一个配置文件、log文件位置。

server
{	
    listen 443 ssl;
    ssl_certificate /data/app/conf/web.kunlun.com.crt;
    ssl_certificate_key /data/app/conf/web.kunlun.com.key;
    server_name meeting.web.kunlun.com;
    root /data/app/www/folder;
    include /data/app/conf/nginx.location.conf;
    access_log /data/app/log/nginx-fifo-meeting.log;
}

测试、修改接口中的逻辑bug

到这一步整个小程序接口基本开发完毕,之后做的就是和前端联调以及修改BUG,基于php和ci框架,这个项目也是我的第一个项目,收获颇丰。之后我用java、springboot做了web端的管理系统,我也用到了别的ORM框架和其他新的技术。

web端管理系统开发流程(Java)

前端开发

web端的管理系统前端用的是layui框架,因为它简单好看,登录页面是网上找的layui的模板,按照layui的官网主要完成的是数据表格的构建,怎样引入数据并一一对应,此外我还了解了一点ajax和js的知识。

springboot+mybatis plus搭建后台接口

我之前有过一些java的基础,再加上用了php进行接口开发,对java+spring入手的比较快,springboot也是基于springmvc的,核心也是aop和ioc,具体这俩是什么还需要上网仔细学习一下。用springboot开发,其实也是controller->service->mapper,其实就写接口而言,和ci框架差不多,大家都是mvc模式。
ORM(数据持久层)框架我选的的mybatis-plus,先学了mybatis后再学的plus,个人感觉非常好用,百分之80的sql语句都不用自己写,调方法就行,需要自己写的复杂语句就用注解在mapper自己写一下,简直是太方便。
第一次接触maven,感觉就是一个大容器,想用什么“插件”,直接在pom里面添加依赖就行,里面还能有当前用的springboot的版本号,感叹java(spring)的生态真的是很强大。yml文件里面主要是配置数据库连接的,包括mysql和redis,这和ci框架里的配置也是一个道理,上手非常的简单。

JWT+Redis的登录验证

jwt就是json web token,token的出现减轻了服务器的负担,不同于session存储在服务器,一旦用户登录成功(通过验证),服务端就给生成一个token主要包括三部分1.头部,加解密方式;2.传递的内容;3.签名,用于解密。里面还可以设置生效时间。
token生成后,一方面服务端将其和该用户信息绑定存入redis,另一方面给前端发回去,我这里采用的是装在cookie里,网上大部分还是说装在响应的头部,但=这样前端以后每次发请求都要在请求头部带上这个token。
等到下次前端带着token来访问某些接口时,由于服务端设置了拦截器,拦截器会对这个请求的token进行检查:用密码解密后检查token是否合法以及是否处于生效时间内,如果ok则放行访问并给token延时再发回去,如果不ok则命令跳转到登录页面。

部署

这里长话短说,springboot自带tomcat,所以我没在服务器里下tomcat,只下了jdk。
在本地将程序用maven打包,就是点clean再点package,在target目录下有一个.jar的文件,将它传到服务器里,输入命令行nohup java -jar xxx.jar &这样你的Java程序就可以在服务器后台上持久运行了,并且监听了8080端口,可通过外部访问了。
至于配置https,则需要证书和密钥,在yml里添加这个server: port: 8443 ssl: #证书存放地址,格式需要转换成p12 key-store: classpath:iot.p12 key-store-password: 123456 #keyAlias: tomcat key-store-type: PKCS12
具体可以参考这篇文章springboot配置https
值得注意的是,我的证书文件格式是.crt,要将它转换为p12格式后再做如上操作,具体怎么做也是一行命令的事情,比较简单。
完成上述步骤后,再打成jar包传到服务器执行,此时在外部输入“https://域名:8443/url”就可以成功访问了。

  • 5
    点赞
  • 13
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论

打赏作者

a91_LIN

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值