【项目概览】
-
【使用的工具及技术】
- 工具:微信开发者工具、STS(Spring Tool Suite)
- 技术:SpringBoot+redis+MongoDB
-
【实现的功能】
- 调用微信map组件,获取用户当前的地理位置;
- 可以在地图任意位置添加单车,利用GEO_2DSPHERE球面索引,根据地图中心点的地理位置动态显示附近200m的单车;
- 用户首次使用时,点击扫码开锁进入注册流程:手机号+验证码校验(校验数据存在redis+用户注册数据存在MongoDB)->模拟交押金(将押金更新到MongoDB)->模拟实名认证(将姓名和身份证号更新到MongoDB)->完成注册,跳转到首页index
-
【项目github地址】
- https://github.com/RenSLei/SharedBikes
【项目详细信息】

-
获取不同位置附近200米的单车:

-
注册页面:


-
【创建小程序】
-
【逻辑结构】
- 【页面及控件】
- 初始页面index:设置了6个control控件,其中三个实现有效点击设计,两个暂没实现功能,1个单纯为了标识页面位置
- 1、回到当前位置控件
- 2、添加单车控件,移动地图,将当前地图指针的中心位置添加一辆单车,数据库更新当前单车的数据(单车的状态,单车的编号,单车的位置),并显示当前位置的附近200m的单车
- 3、第一次扫码开锁,进入注册页面
- 注册页面,【用户的信息属性有:id(主键,通过注解@Id标识)、押金、phoneNum(建立索引)、注册日期、昵称、真实姓名、身份证号、状态(考虑了用户注册的完成度,并将该信息实时更新)】
- 1、手机号注册:用户输入手机号,点击发送验证码,服务端调用腾讯的短信api,将电话号码和随机4位数存储到redis中,设置5分钟后自动删除,同时将该验证码发送到手机。用户输入验证码,点击确定,服务端根据条件调用redis里的验证码进行校验,如果一致,则校验成功,更新用户的状态、手机号、注册日期,跳转到实名认证页面,如果不一致,则提示重新输入。
- 2、充值押金页面:由于真实的充值需要调用支付接口,所以,这里模拟充值,将押金数据以及用户状态更新到数据库中
- 3、实名认证:由于真实的实名认证需要调用公安部的接口,所以,这里模拟实名认证,将用户的姓名和身份证以及状态数据更新到数据库对应用户的name和IdNum、状态中,跳转到首页。此时status为3,表示完成注册。
- 【查找附近单车的逻辑】
- 在pages外定义一个自定义函数:function findNear(){},此函数根据经纬度以及当前页面,向服务器发送请求,服务器的该请求里响应了一个方法,这个方法根据这个参数去数据库查找所有的单车的信息,并以List的形式返回给回调函数的参数,请求成功以后,服务器返回的是一个根据经纬度查找出的所有单车的List集合,所以res里有很多的bike对象,遍历这些对象,取出每个bike的经纬度,设置iconPath位置以及宽高等,并赋值给bikes,将bikes设置到当前页面的markers中。从而实现了将附近的单车查找并显示在地图上。
- 在首页获取当前位置的时候,调用findNear函数,显示当前附近单车;在添加完一辆单车以后,页调用此函数,显示当前位置附近的单车;在地图视野发生变化的时候,也调用此函数,将当前地理位置的附近的单车信息查找出来,从而实现,随时显示当前地图中心位置附近的单车。
-
【涉及的技术】
- 使用springBoot框架搭建服务,JPA持久化技术,GEO_2DSPHERE球面索引等
-
【需要学习的地方】
- 应继续学习框架背后的基础的知识及原理以及数据库的相关知识
-
【总结】
- 收获挺多,很多知识还停留在表面,要深入学习其背后的原理才能真正举一反三,继续学习吧……