赞
踩
获取座位总体分布信息
Request:https://seat.lib.whu.edu.cn:8443/rest/v2/free/filters&token=CQZE5BWJFM11125527
通过该接口提供的场馆、房间、楼层信息规划页面,让用户进行选择。
token:登录时获取的令牌信息,保存在微信小程序本地。
获取具体每个馆信息
在用户选取场馆后刷新该场馆所有房间的信息,最重要的是可用座位有多少
Request:https://seat.lib.whu.edu.cn:8443/rest/v2/room/stats2/ 1?token=CQZE5BWJFM11125527
参数说明:加黑1代表信息馆,可以更换为2 3 4,token参数不可以少
Response:可以获得其中的所有楼层的所有房间的具体信息。
所有座位信息只代表当前此刻的信息,想根据时间来看必须看 3
使用时间信息进行座位筛选可用座位
要求提供开始时间、结束时间(要求半小时为间隔)
Request:https://seat.lib.whu.edu.cn:8443/rest/v2/searchSeats/ 2019-11-12/570/1320
method:POST,必须使用POST,因此服务器端也必须更改为POST方式不能用get请求
data参数:token=CQZE5BWJFM11125527&t=1&roomId=15&buildingId=1&batch=9999&page=1&t2=2
后面三个数据2019-11-12代表日期,570代表从0点开始到用户输入的开始时间的分钟数(30的倍数)
获取可用开始时间
Request:http://seat.lib.whu.edu.cn/rest/v2/startTimesForSeat/ 2508/2019-11-12?token=J8PM1O4QZN11122226
加黑参数:座位的id ,日期 ,token
选择结束时间(会根据开始时间的不同进行刷新)
Request: http://seat.lib.whu.edu.cn/rest/v2/endTimesForSeat/ 2778/2019-11-12/1200?token=J8PM1O4QZN11122226
参数:座位id,日期,开始时间id(对应分钟数),token
强调返回的数据中,条目换成endTimes了,与开始时间列表不太一样
预约(自由预约)
Request: http://seat.lib.whu.edu.cn/rest/v2/freeBook? token=J8PM1O4QZN11122226&startTime=1110&endTime=1320&seat=2778&date=2019-11-12
参数:token,开始时间、结束时间、日期
返回该预约单的信息。
提交方式POST
以上是依赖于抓包获取的接口信息。
由于后端做了非常不错的转发支持,所以可以发送给自己的服务器的数据和内容跟直接向图书馆服务器差别不大。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PxSB437I-1576854008686)(images\P3\xmz\5.jpg)]
上图为迭代后的小程序截图效果。
主要部件:武大动漫风图片、日期下拉框、场馆、房间、开始事件、结束时间、搜索和预约按钮、备选位置、位置。
上述下拉框还根据功能的不同有不同的设计效果。由于使用的组件的功能不够强大,
还特别进行了自主设计,强化了下拉框的功能。(此部分将在第三部分详细谈)
座位信息细节:提示是否有电源和窗户
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oL2W4xbc-1576854008687)(images\P3\xmz\6.jpg)]
房间信息细节:提示可用座位数和所在楼层
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UlvjX0TM-1576854008688)(images\P3\xmz\3.jpg)]
时间细节:从8点开始的,每半小时为单位
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t67IM0Iz-1576854008689)(images\P3\xmz\4.jpg)]
使用原生微信小程序设计,使用wxml、wss、js
使用Vant-Weapp、IView-Weapp程序组件同一UI开发
使用自有服务器绕开微信小程序防盗链设计
使用抓包获取的数据进行伪装
抓包获取图书馆的所有场馆、房间分布,并动态渲染至小程序界面中。
当用户选择好场馆时,更新房间的具体信息,显示座位可用数目和楼层
当用户选择好开始时间、结束时间并搜索时,回显可用座位的信息。
预约抢座
提供备选项
处理预约和备选之间的关系
根据不同的时间段(晚上10:45图书馆开放第二天的座位预约),处理逻辑
小程序的操作逻辑
在询问了许多同学的实际使用的圆碗,根据他们希望的方式,最终选择了现有方案
先选择日期、场馆、房间、时间
然后根据开始时间和结束时间
返回所有可用的座位和座位信息。
提供备选座位。
通过上述的方案,能够让用户免去像自习助手一般,打开无数绿色座位,却找不到可用座位的问题。
极大的提升了用户搜索座位的效率(可以从应用商店下载·自习助手·实际对比)
由于信息显示的要求,原有的下拉框组件不足以支撑需要
房间需要可用座位数、楼层信息,座位需要电源、窗户信息
原有的各种组件库的显示能力不足,不能够增加多个label来显示信息
最终选择实现方案:改写原有组件库和API,自行设计了下拉框组件
备选项的逻辑处理
备选项加上时间段问题,将整个预约抢座的处理逻辑复杂化,分为许多情况
解决方案:重构函数,不断优化
网络延迟问题和界面布局紧密相关,因为界面信息需要网络请求的渲染,由于微信官方设计的setData方法使
用js进行渲染,效率没有特别好。所以设计者必须根据网络情况合理布局界面和渲染操作。
方案:不断通过手机端实际测试,,改变布局,在不影响用户操作的情况下,优化网络请求,尽量降低渲染的频率
重复提交导致封号问题
用户在网络不佳情况下多次点击抢座,导致被图书馆识别异常行为而封禁
通过增加提交时间间隔,限制住用户的行为,对用户进行提示,避免出现问题。
收获:
不足:
界面UI的美化程度还有进一步改进的程度。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。