一、目的
做这个项目的初衷是因为我去年在微信卖老家水果,好多朋友下单后都问我快递单号,每天发货后我都要挨个甄别这个人是哪个快递信息,很麻烦一部小心就搞错了。基于这件小事我有了自助快递查询
的这个想法。将发货的快递信息导入到我的系统里,用户访问我的系统,通过输入手机号就可以查看自己的快递物流信息。
项目是去年8月写的,一直搁浅在哪,最近无意间翻看我发的那篇文章自助快递单号查询阅读量竟然都1.8w
了,有图有真相。
这着实让我很震惊,看来自助快递查询这块确实是个热点。今天我就讲一下我手撸的快递查询系统。
二、开发
项目地址:github.com/hellowHuaai…
有兴趣的可以直接下载源码,觉得项目不错的伙伴记得点个star
,谢谢啦!
2.1技术栈
项目涉及到的技术栈有:
- SpringBoot: 一款
Java
微服务框架。Spring boot 是 Spring 家族中的一个新框架,它用来简化 Spring 应用程序的创建和开发。 - Mybitas: 一款
ORM
框架,即对象关系映射。ORM
框架的作用是把持久化对象的保存、修改、删除等操作,转换成对数据库的操作。 - Jquery:一个轻量级的
写的少,做的多
的JavaScript
函数库。 - Bootstrap:Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的。
2.2后端开发
创建entity
创建快递单实体类,属性包括id,用户名(userName),电话(phone),快递单号(kuaidiNo),快递公司(company),数据创建时间(createTime)。代码如下:
1 | 复制代码@Data |
service,mapper是常规的增删查改操作,就是保存快递的基本信息在数据库中,并可以对数据进行简单的维护功能。详细可参考项目源码。接下来看核心代码。
查询快递信息
快递的基本信息存入数据库,然后就是通过这些信息查询快递的详细物流信息。这里我做过很多尝试,想直接调用一些快递公司的快递信息查询接口,但是都发现接口都有session
,当session
失效后就无法查询到数据或者就查询到的数据不正确。最终在网上找到一种付费的方案,使用快递100
接口。www.kuaidi100.com/
查询快递的demo
代码如下:
1 | 复制代码public class SynQueryDemo { |
上面的代码就是通过java
代码调用kuaidi100
的查询接口,这个查询接口会通过快递单号自动识别快递是属于哪个快递公司,然后调用对应快递公司接口获取响应数据。付费购买接口使用权其实就是生成一个授权key和实时查询公司编号customer,在线调用会做身份认证。这样就可以获取快递信息的json
数据了。我已经购买了100块大洋的接口使用权,大家可直接调用快递查询接口。
controller代码
快递信息增删查改的controller
就不在列了,这里主要看下我对查询快递的接口进行了一次包装处理。代码如下:
1 | 复制代码@RestController |
2.3前端开发
前端展示主要包括两个页面,管理员页面和客户页面。管理员页面功能包括快递信息的新增,修改,删除,分页查询,在线快递物流信息接口。客户页面包括快递信息的分页查询和在线快递物流信息接口。所以主要看一下管理员页面。
html页面
html页面引入了jQuery
和Bootstrap
,jQuery已经过时了,但是使用起来还是很方便的。
1 | 复制代码<html> |
admin.js
这里说明一下前端我引入的jQuery
,包括新增,修改,删除,查询的功能,查询事件添加了对电话号码的必填校验。
1 | 复制代码var $testTable = $('#testTable'); |
2.4运行项目
修改配置文件
项目配置文件src/resources/application.properties
,根据实际情况修改对应的数据库连接信息。
1 | 复制代码#MySQL配置 |
创建数据库表
表结构如下:
1 | 复制代码DROP TABLE IF EXISTS `kuaidi`; |
运行
将项目导入Idea
工具,找到com.wangzg.kuaidi.KuaiDiApplication
文件,执行main
方法即可,如下图:
三、部署
3.1 jar
部署
上传安装包
在服务器创建/usr/myworkspace
,执行下面命令可直接创建:
1 | 复制代码mkdir -p /usr/myworkspace |
下载相关文件,上传到服务器/usr/myworkspace
。下载地址:github.com/hellowHuaai…
文件主要包括:
- application.properties 说明:项目配置文件,可能会涉及到修改服务器端口,数据库访问、端口、账号、密码等。
- kuaidi.jar 说明:后端服务的可执行
jar
文件。 - kuaidi.sql 说明:数据库初始化脚本。
- start.sh 说明: 启动服务器
shell
脚本。 - stop.sh 说明: 停止服务器
shell
脚本。
初始化数据库
打开Navicat
工具,选中数据库,右键选择运行SQL文件...
,具体操作,这样数据库就初始化完成。
运行项目
在服务器/usr/myworkspace
目录下,执行如下命令,即可运行项目:
1 | 复制代码chmod +x *.sh #给所有 .sh文件添加执行权限 |
3.2 Docker
部署
Docker
容器化部署项目,需要创建一个 mysql
的容器,创建kuaidi
的容器,再初始化一下数据库。
创建数据库容器
代码如下:
1 | 复制代码docker run -d --name mysql5.7 -e MYSQL_ROOT_PASSWORD=root -it -p 3306:3306 daocloud.io/library/mysql:5.7.7-rc |
导入数据库脚本
数据库脚本kuaidi.sql
内容如下:
1 | 复制代码create DATABASE kuaidi; |
然后执行下面命令,就可以导入kuaidi.sql
脚本:
1 | 复制代码docker exec -i mysql5.7 mysql -uroot -proot mysql < kuaidi.sql |
创建kuaidi
容器
执行下面命令就可以创建容器:
1 | 复制代码docker run -d -p 9082:8082 -v application.properties:/home/conf/application.properties --name kuaidi1 huaairen/kuaidi:latest |
注:application.properties
文件为项目的配置文件,在src/main/resources
目录下;huaairen/kuaidi:latest
是我打包好的镜像,直接下载就可以。
四、最后
项目功能还特别简陋,很多功能需要开发和完善。如果你也遇到类似的问题我们可以一起讨论,合作共赢哦!
不安分的猿人
孜孜不断的技术分享!
本文转载自: 掘金