梁荣鹏++陈世宇++陈正铭++彭玄璋
摘 要:随着Android智能系统的发展,APP应用开发也越来越普及,其开发技术也愈发成熟。本文对基于Android平台的家政应用订单模块的设计与开发进行了梳理。首先对该模块在整个家政应用中的运行路径进行了介绍,并展示其中运用到的开发技术与设计模式;然后详细分析了该应用订单模块的设计思想、开发步骤与基本原理;最后对该模块实现的功能进行了总结。该平台开发的完成能在一定程度上改善目前家政行业服务差、信息不透明等弊端。
关键词:Android;家政;订单;SSM框架;web后端
中图分类号:TP311.1 文献标识码:A
1 引言(Introduction)
改革开放以来,我国的经济快速增长,高新产业也不断发展,互联网与智能移动终端更是成为广大人民寸步不离的必需品[1]。家政O2O(Online To Offlline)系統能在一定程度上改善目前传统家政行业发展缓慢、各方面不成熟、价格乱、服务差、中介坑人、信息不透明等问题。一般家政O2O系统实现的功能主要有:分角色(服务者、雇主)注册登录,查看个人信息,查看附近服务者,查看订单模块等。本文主要针对家政O2O系统中实时订单交互的需求,搭建Android Studio开发环境,采用C/S(Client/Server)的架构,结合MVC设计模式,运用Java语言进行该应用订单模块的设计与开发。
2 家政应用与订单模块流程介绍(Introduction of
the housekeeping application and its order
module)
2.1 雇主端
雇主通过Android手机雇主端APP登录认证[2]后,可在程序主界面上查看附近服务者的信息,选择适合自己的服务者,并执行预约;若无相应的服务者,用户可以点击立即预约按钮,让系统为用户智能分配服务者。当预约服务者成功时,服务者将会在预约时间内到达用户指定的地点,启动服务计时,服务结束时可点击按钮停止计时,并进入服务结算界面。此时用户可以明确地知道本次服务的具体用时与具体计费,当点击立即支付时可调起时下主流支付渠道来完成支付;支付完成还可以选择性地给服务者进行相应的评价,系统将根据用户的评分对服务者进行综合评分。
2.2 服务者端
服务者通过Android手机服务者端APP登录认证后,可以通过下拉刷新操作得到雇主请求预约的订单列表,服务者可以在该列表中选择相应的用户接受预约。当服务者确认接单后,需在预约指定的时间内到达指定的地点;当雇主端启动计时按钮时,在服务者端将会弹出提示框提示是否开始计时,若确认则两端端同步计时,直至服务结束。服务结束,服务者端可以向雇主发起收款,完成收款即完成该订单。
2.3 后台端[3]
超级管理员可通过浏览器登录后台端,以管理相关订单。当用户端发出预约请求时,后台端能接收到用户填写的预约信息,管理员可以在订单管理选项中浏览和管理所有的用户订单,其中包括跟踪订单状态等功能[4]。
家政应用订单模块流程示意图,如图1所示。
3 相关技术(Relative technologies)
本系统采用C/S经典架构,Client端选用Android作为操作系统,并采用MVC设计模式;Server端选用Java语言进行搭建,并采用SSM框架协助开发。
3.1 C/S结构
C/S结构,即客户机和服务器结构,使用它可以完全利用两端硬件环境的优势,将各自的业务逻辑合理分配到Server端和Client端,从而大大减少系统的通讯开销。目前市场上主流应用程序系统使用的都是C/S形式的分层结构。
3.2 Android相关开发技术
3.2.1 Android简介
Android是一种基于Linux?内核的综合操作系统。随着科技的发展,Android的用处越来越广,人们对其的使用也越来越普及。谷歌官方推荐的开发Android应用的软件是Android Studio 2.3。本应用的开发也将使用此开发软件,并使用其相应的开发框架。
3.2.2 OKHTTP框架
OKHTTP是Android网络框架之一,是一个处理网络请求的轻量级框架。该框架的使用允许每个客户端的请求都是连接到同一个主机地址,大大提高请求的效率;拥有共享的Socket,使得对服务器的请求次数减少;建立共享连接池,大大减少请求的延迟;利用缓存响应数据来减少重复的网络请求,在根本上减少对流量的消耗。
3.2.3 极光推送框架[5]
该框架简单易集成,使开发者能够快速部署,从而更专注主营业务。该框架具有便捷的推送接口集成,同时支持在网站上直接推送,也提供送达统计的API使用;另外,该框架还具有强大的技术优势,客户端SDK采用自定义的协议保持长连接,而从根源上大大降低电量与流量的损耗。
3.3 后台端相关开发技术
3.3.1 SSM框架简介
SSM框架[6],是Spring+SpringMVC+MyBatis的缩写,是继SSH之后主流的Java EE企业级框架,对搭建各种企业级应用系统起到异曲同工之妙。SSM框架是标准的MVC设计模式。它将整个系统划分为显示层、Controller层、Service层、DAO层,从而简化后台端的设计与开发。
3.3.2 Ajax技术简介
Ajax技术是一种无须在全局刷新网页的情况下,能够更新局部网页内容的技术。它的工作原理是浏览器通过网络发送一个httpRequest到服务器,服务器解析该httpRequest并创建一个Response和发送浏览器请求的数据给浏览器,浏览器通过JavaScript来解析返回的数据并刷新页面内容,完成一个Ajax刷新[7]。endprint
4 订单模块开发(Developing of order module)
订单模块的设计与实现思路如下:雇主端与服务者端(统称Android端)使用Android studio开发。服务器则利用Tomcat搭建Web容器,用Eclipse作为服务器编程工具,并使用MySql数据库开发环境提供数据层应用。同时使用了Navicat for MySql对数据库进行可视化操作。最终通过两端的协同工作,完成订单模块功能。
4.1 Android端设计
Android端采用了MVC的设计思想[8],即视图层与控制层分开,先分别实现各自的目标,再通过相关操作实现两者的绑定关系,最终得到统一协作的可运行系统。
4.1.1 视图层
在Android的应用开发中,视图设计和代码编写的工作是分离实现的。开发者可以首先完成界面的设计再进行下一步的开发。两个客户端的订单首界面如图2和图3所示。
订单模块的订单首界面主要采用了组件ListView,即以列表的形式对内容进行展示。为了能让App拥有更丰富的功能,在雇主端订单首界面的ListView中添加了列表头header。而由于原生的header和ListView中每个Item的界面均为空白,开发者需根据具体需求分别设计header和两个端对应Item的界面。
4.1.2 订单实体类
在显示数据之前,需要自定义一个类用于保存这些必要数据。因此,以雇主端订单为例,开发者自定义了RecommendBodyValue类用于作为数据存储的基础。其中,这个类继承自BaseModel类,该类实现了将变量进行序列化的操作,以备数据传输。用户端订单实体类代码如下:
public class RecommandBodyValue extends BaseModel{
public int type; //用戶预约的阿姨服务类型
public String auntname;//阿姨姓名
public String auntlogo;//阿姨头像
public String address;//服务地址
public String time;//服务时间
public int price;//服务计费
...
}
4.1.3 数据绑定控制
由于在界面设计的时候使用到ListView[9],而其原生的Adapter的功能相当有限,为了能让对应的数据显示在相应的位置上,开发者自定义了继承自ListAdapter的orderListAdapter,并编写了关于绑定数据的构造方法,其中的参数除了当前Activity的上下文,还有就是类型为订单实体的ArrayList对象,如图4所示。
当程序执行到这个方法的构造函数时,即完成了数据的初始化。除此之外,为了将保存的数据显示在各自的控件上,还在该自定义的orderListAdapter中绑定了要使用到的控件。当要显示时,通过调用setText()来设置控件的内容,从而显示到屏幕上。orderListAdapter()方法构造函数代码如下:
public orderListAdapter(Context context,ArrayList
mContext=context;
mData=data;
mInflate=LayoutInflater.from(mContext);
mImagerLoader=ImageLoaderUtil.getInstance(mContext);
}
4.1.4 界面绑定控制
开发者在编写XML布局文件时,可以为每个组件设置一个唯一标识Id。
(1)当使用者进入订单模块首界面时,即开始了一个Activity。在该Activity的onCreate()方法中,使用new ListView()语句来创建一个ListView对象,并通过findViewById()方法寻找布局文件中唯一的Id以实例化该ListView对象。
(2)通过ListView的setAdapter()与自定义的适配器orderListAdapter进行绑定,用以显示预先设计好的item界面。
(3)通过ListView的addHeaderView()方法与预先设计好的header布局绑定显示。
4.1.5 网络请求控制
基于Okhttp在Android应用上的优势,开发者将其封装成一个工具类CommonOkHttpClient。该类可以实现get/post请求的发送[10],并对Response回来的json数据进行字符串转换。此外,开发者还定义一个请求中心RequestCenter类,并在该类中调用了Okhttp工具类以方便get/post请求的发送。该类的主要作用是管理一切业务请求。
以雇主端界面为例,当用户希望通过下拉刷新其订单列表时,可在RequestCenter类中定义一个静态方法,通过传参调用向服务器发送get请求。如果服务器拦截到该请求,则在后台进行代码处理,返回相应json数据给该方法,并后续地将json数据转化成相应订单实体类保存在实例化的参数中,即完成了一次订单列表的刷新。
4.1.6 消息推送控制
Android端集成了极光推送框架JPush Android SDK。它以Android Service的形式长期运行在手机后台而创建并保持长连接,使设备保持永远在线的能力,以便消息能够及时推送到手机端。其工作原理图如图5所示。
4.2 后台端设计
4.2.1 数据库设计
家政系统采用了MySql作为存储数据的数据库[11]。开发者在开启了数据库服务后,连接数据库,并新建了数据库AuntComing,其中包括了用户信息表、服务者(阿姨)信息表等数据表。对于订单填写时所需的信息,开发者定义了如下字段:订单Id、用户Id、阿姨Id、服务时长、服务地址、服务价格、预约时间。其中主键为订单Id,用户Id与阿姨Id则作为外键。当需要使用用户和阿姨的基本信息时,可通过用户Id与阿姨Id进行多表复合查询。订单信息表的物理模型如图6所示。
4.2.2 SSM框架组合实现
基于SSM框架开发的系统结构分层明显,可简化开发流程。家政平台的后台端采用SSM框架进行搭建。SSM框架的层次结构具体可以分为view层、model层、DAO层、service层、controller层,各层各属其职,又相互协作。
(1)model层为数据库各表的实体类该类的成员变量均为各表的各字段。在本研究对象中,model层则包含了订单信息类。
(2)DAO层则定义了所有数据访问接口,为数据库查询作准备。以本研究对象为例,DAO层包含了selectByPrimaryKey(String id)等接口。
(3)service层则定义了与业务逻辑有关的接口,如查询所有订单信息接口List
(4)controller层则是实现数据处理与反馈的地方,即在该层,开发者可以与view层进行绑定,并把相应的数据更新显示到view层上。
各个处理层是否能够相互协作,关键在于框架中各配置文件是否能够正確编写。其中spring-mvc.xml则实现了指定后缀视图文件的视图解析[12],自动扫描控制器,注解的启动等功能;而myBatis.xml则实现了配置数据源的功能。另外,其还能自动扫描DAO层中所有接口,让其与xxxmapping.xml一一对应起来,即可通过编写数据库操作语句来操作数据库。
5 结论(Conclusion)
以家政平台中的订单模块作为研究对象,先对其执行流程作出了介绍,接着介绍了分各端使用到的关键技术,最后就各端的设计与实现进行了详细的介绍。该模块的实现能基本满足当前家政行业的市场需求,方便了雇主与服务者,结合了“互联网+”与创新创业,为家政行业的发展起到推进作用。
参考文献(References)
[1] Rattanachai R,Sreekaewin P,Sittichailapa T.Development of Thai rice implantation recommend system based on android operating system[J].Procedia-Social and Behavioral Sciences,2015,197:1048-1052.
[2] Dong C,Liu X.Development of android application for language studies[J].IERI Procedia,2013,4:8-16.
[3] Korkmaz I,Metin S K,Gurek A,et al.A cloud based and android supported scalable home automation system[J].Computers & Electrical Engineering,2015,43:112-128.
[4] 宋恒力.基于Android平台与Web服务器的课程管理信息系统[J].电子技术,2014(12):59-63.
[5] 黄河清,陈文.Android平台消息推送服务的实现[J].电脑编程技巧与维护,2014,18:53-55.
[6] 王艳清,陈红.基于SSM框架的智能web系统研发设计[J].北京:北京化工大学,2012,12:33.
[7] 卢晓阳.JSON数据交换语言在Ajax技术中的应用[J].河南科技,2013(20):23.
[8] 于少波,李新明,刘东.基于B/S和MVC模式的武器装备体系评估系统设计[J].太赫兹科学与电子信息学报,2015,13(4):
635-640.
[9] 叶斌,李玉榕,陈建国,等.基于Android系统的KOA运动监测系统研究[J]. 仪器仪表学报,2014(S2):7-11.
[10] 贾文杰,孙志峰.基于Android平台的智能导游系统[J].机电工程,2011,28(10):1257-1259.
[11] 吴琼.基于Android平台下高校师生作业答题系统的设计与实现[J].农业网络信息,2014(04):129-130.
[12] 廖嘉灿,侯超钧.基于SSM和HttpClient的在线选课辅助系统的设计与实现[J].计算机与现代化,2016(10):116-120;126.
作者简介:
梁荣鹏(1996-),男,本科生.研究领域:移动端应用程序研发.
陈世宇(1996-),男,本科生.研究领域:网站开发,微信小程序开发.
陈正铭(1978-),男,硕士,信息系统项目管理师(高级).研究领域:数据结构与计算机应用软件开发.
彭玄璋(1962-),男,本科,讲师.研究领域:计算机系统结构,嵌入式系统开发.