梁 倩,郑泽严,从胜军,郑大为,夏文杰,郭龙凯
(天津科技大学,天津300457)
目前人们的生活逐渐快节奏化,而生活中的琐事又过于繁多,且处理生活琐事所花费的大多数时间都在路途之中,其中的很多事务并不需要本人亲自前往,以往所存在的困难是我们无法找到事务所在位置里能帮助我们解决问题的人。而定点互助系统便成功解决了这一点,它能利用位置信息为用户精准匹配到相应位置中能帮助其解决此事务的其他用户。将信息进行匹配以达到为用户提供所需要信息的功能。这样,用户便可请其他方便的用户帮助自己完成自己的事务,同时也能利用自身的位置优势帮助其他用户完成任务,以达到互利共赢的终极目的。
在大数据时代,信息的收集与分析是非常必要的,本系统的本质是通过对已发布各个任务的详细信息进行统计与分析,以及对任务接收者需求的分析,将双方信息进行精确匹配。因此本系统的重点是信息匹配的精确性、及时性以及系统运行的流畅性,以保证用户在使用时尽可能少的出现信息错误和信息丢失。与此同时,该系统需要对用户的行为进行一定的规范化管理,避免用户利用系统功能进行一些不利于他人及社会的行为。因此,对系统运行的数据进行统计分析,以及对用户发布任务的筛查管控是解决此问题最为有效的方法。
本系统由安卓客户端、云服务器和后台管理端三部分组成。安卓客户端实现用户任务的发布、任务详细信息的收集、对任务接收者检索到的多个任务的基本信息展示,以及历史记录、个人信息等其他信息的录入和展示。云服务器端用以实现对用户基本信息、用户发布任务的存储,以及对已发布的任务信息和用户想要接收的任务信息进行匹配并返回给用户的功能。服务器端承载对数据的所有处理、分析功能,因此需对服务器端的结构采用分布式微服务架构以用来对不同的信息处理需求分离保护复制,有效避免一个服务出现错误时引发一连串的服务错误。后台管理端用以设置超级管理员,让超级管理员拥有查看用户资料数据、查询并管理所有任务、统计一定时间内用户量、任务量等能力。后台管理端采用网页形式,设置超级管理员对用户及系统进行管理。后台管理端需要网页前端和服务器端两部分,服务器端部分并入云服务器端并单独划分一模块进行开发。这样,由前端网页部分向云服务端的后台管理端发送请求即可完成对系统中用户的管理以及对系统数据的查询与管理。客户端、云服务器端、后台管理端三个部分协同运行保证了系统运行的流畅性与安全性,在解决用户需求的同时提升用户体验。客户端功能结构图如图1所示。
2.1.1 用户注册登录
新用户需要注册后才能使用本系统,用户的注册信息会保存到云服务器端的数据库中。注册部分需收集尽可能多的用户信息,以便有利于后面任务信息更加精确的匹配。
2.1.2 发布任务功能
发布任务功能主要是让用户输入任务的各项信息,其中任务的位置主要调用百度地图的定位功能以及位置检索功能,在用户调用百度地图选定好任务的位置之后,客户端会记录任务位置的经纬度信息并将其传输到服务器端以供后期进行数据匹配。
2.1.3 任务接收功能
任务接收功能只需要用户调用百度地图选择任务的位置并检索,安卓端会将位置的经纬度传给服务器端,由服务器端进行匹配并把相应的任务返回给安卓客户端。同时接收任务可进行条件多选,将多个信息传给服务器进行更加精准的任务筛选。
2.1.4 正在进行的任务显示功能
安卓客户端会一直显示用户正在进行的任务信息,以便查看自己发布的任务是否已被接收或完成,以及查看自己已接收的任务以防止忘记任务信息或是查看任务即时情况,是否被取消等信息。
2.1.5 任务完成确认功能
本系统中任务的完成确认需要经过双方的认同,即在任务接受者确认任务完成之后,再由任务发布者确认任务完成即算作任务完成。在接收者确认完后发布者可看到任务状态转为接受者确认完成,发布者自身确认任务完成无误即可操作确认任务的完成。以此种方式来保证任务的完成质量。
2.1.6 界面设计
界面采用简洁的绿色主题,直线边框设计。使界面看起来更加的整洁,突出任务信息,个人任务列表如图2所示。
图2 个人任务列表
2.2.1 数据库设计
本系统数据库使用mysql,主要设计的表格有用户基本信息表、用户任务表等。用户基本信息表主要用来存储用户的个人信息,账号、密码、用户名等。用户任务表中主要用来存储用户发布的任务、接收的任务等。各表之间不使用外键,使用用户ID贯穿所有表格。对于数据库的操作基本采用对象进行操作,使用以实体类自动生成数据库的方式进行数据库表的创建。利用对象对数据库进行操作,方便了多个数据的修改。
2.2.2 云服务器端的主要功能
(1)将用户发布的任务进行存储和分类。用户发布的任务含有多种标志性的属性,服务器需要根据接收到的这些任务信息在对其进行存储时设置标签信息以便后期检索匹配时方便匹配。
(2)处理任务接受者的任务查询请求。安卓客户端会将任务接收者想要接收任务的经纬度以及其他任务信息传到服务器,服务器根据对应的信息到数据库中查询符合条件的任务并将其根据匹配的程度进行排序返回。在此部分之中,服务器可根据任务的经纬度检索其设定范围之内的任务,服务器根据经纬度距离公式计算满足距离的经纬度范围,并以经纬度范围为条件检索属于经纬度范围内的任务,以此方式来实现检索特定范围之内的所有任务。同时,在以任务位置为首要前提之下,对任务的时间、积分及发布者等进行匹配,以筛选出最符合任务接受者要求的任务,其中主要涉及多表及多条件查询。
(3)对任务的属性进行修改。在任务发布时设定任务为已发布,当任务被接收时设定任务属性为已接收,当任务被完成时设定任务属性为已完成。这样在检索任务时便能根据任务的属性进行分别,以便检索历史任务、未完成任务、未被接收任务等。这里对任务的描述主要采用实体类的方式,将接收的信息转化为对应的实体类,再根据实体类中信息对任务的信息进行更新。
(4)系统信息安全。为防止信息的泄露以及明确各个功能部分所能具有的操作权限,系统通过整合Springsecurity进行各个功能权限的管理。确定每个功能能调用的权限以便每个功能在拥有足够权限运行的同时又能做到权限的分离与保护,使得整个系统的安全性更高,能有效避免恶意行为。
2.2.3 云服务器端的架构设计
本系统主要的功能即为处理各个数据之间的匹配,当用户数量过多,用户请求过于频繁时,单一的服务器无法满足需求,就会出现延迟甚至是宕机情况。所以服务器端的设计主要采用当下最为流行的分布式微服务。将个人信息操作统一为一独立模块,任务发布接收功能统一为一模块。历史任务信息及当前任务为一模块,多模块之间利用NACOS进行服务注册以及相互调用,以及负载均衡等。以此方式来避免请求拥堵以及单一服务器的宕机情况。同时多模块的设计使得系统功能条理更加清晰,有利于后期的维护以及对某个功能模块进行修改或删除的操作。多模块形式可容纳更多不同的技术,有利于功能的扩展。
2.3.1 网页端设计
后台管理端部分的主要用户群体是进行系统管理与维护的超级管理员,因此页面的美化也就无关紧要,对于数据显示的清晰性和可视性是此部分需要关注的重点。本系统中使用vue与echarts结合的方式进行前端页面的开发,一方面vue已是十分稳定流行的前端框架,而另一方面vue整合echarts也十分的方便,这样前端页面的开发便可以大大简化。
网页部分主要设置两大模块,即用户部分和任务部分。用户部分主要是对用户信息的查看以及对用户的管理部分。任务部分主要用以查看用户发布的所有历史任务,同时对每日的任务发布量、接收量、完成量以及当前任务最流行的关键词进行统计分析并以图表形式进行绘制,以便系统维护人员能清晰的看到当前系统运行的大致情况,并对用户量、任务量有一定的了解。此外,对当前任务最流行关键词的分析统计将对系统后期进行特殊模式的开发起到很好的启示作用,有利于系统的功能扩展和用户体验的提升。
2.3.2 云服务端设计
后台管理端中云服务器端的主要功能是能够对网页端提供的对用户、任务等一系列系统数据进行大批量查询、统计、修改和删除的接口。因后台管理端云服务器端的功能实现需要对数据库进行操作,因此将其规划为云服务器中的一个模块,能够在方便的对数据库进行操作的同时与云服务器端共用许多同样的配置,避免了数据库的重复和各种配置及依赖包的导入。与此同时,也有利于后台管理端利用注册中心对云服务器中其他后台模块中接口的调用,有效避免代码的冗余和接口的重复,使得其对系统的维护和修改更方便。
在后台管理端中需要实现的接口主要有如下几个:对一段时间内新注册的用户数量的统计;对一段时间内发布的任务中出现频率最高关键词进行统计排序;对一段时间内未发布任务和接收任务用户的统计;对指定任务的删除;对一段时间内系统中发布任务总量的分析;对近一个月内每日任务发布接收完成量的统计。后台管理端为网页管理端提供接口调用,完成对系统进行管理的功能。
本系统利用安卓客户端与服务器端进行信息交互展示,采用目前最为流行的分布式微服务设计提升服务速度,充分利用用户的位置信息进行信息匹配,实现了一种新的“位置信息共享”,使得人们能发现位置的价值并将其合理利用起来,避免了人们在处理远程事务上浪费时间,使得人们在这个快节奏的时代能拥有更多属于自己的时间,实现更加高效的事务处理。