O2O模式能够充分的利用网站创立企业在O2O模式中的竞争优势,基于O2O模式的这一特点,本次毕业设计开发了家政服务预约微信小程序。该家政服务预约小程序发挥了网络优势,采用O2O模式营销手段将家政企业推广出去,既保留了家政服务的传统运作模式,又利用了计算机网络方便、快捷、实时性高的特点,开发出一个供家政需求和家政服务人员相互交流的平台。其开发主要包括后台数据库的建立和维护及前台应用程序的开发两个方面。
本次设计小程序端采用Vue.js框架和微信Web开发工具,服务端管理系统是以IDEA为开发平台,采用Java作为编程语言,后台数据库采用MySQL,实现了家政服务项目浏览,家政服务项目发布,网站信息发布,以及网站后台的多种管理功能。用户可方便地进行信息浏览,挑选服务、意见反馈等操作。本网站后台管理员则进行添加、删除、更新相关信息以及根据需求条件实现客户的需求,以更好的服务客户。
整个系统实现了家政服务预约的功能,经测试,系统运行稳定,并且具有良好的实用性和稳定性,能够满足日常的在线家政服务预约的要求。
关键词:家政服务,O2O模式,小程序,Java
随着社会的进步,人们生活节奏的加快,越来越多的人倾向于选择家政服务处理日常起居等家政事务。随之而来的是家政服务需求的不断增加以及家政服务种类的多样化,因此,家政服务采用何种管理方案成了目前绝大多数中介急需解决的问题。
广泛采用的手工统计曾经满足中介和广大客户的需求,但随着业务量的发展,手工统计工作量剧增以及长期的劳动,工作家政服务人员难免会产生各种各样难以发现的错误,采用现代化的管理成为当务之急。而随着信息产业的进步和计算机技术的普及,计算机辅助现代化管理成为目前最行之有效的方案。
发展家政服务线上运营,不仅能满足人民群众日益增长的生活需求,破解家庭小型化、人口老龄化带来的社会问题,而且对于缓解弱势群体就业压力具有重要意义,是服务民生、增加就业、扩大内需、构建和谐社会的重要事业。因此,设计此家政服务预约微信小程序具有一定的实际意义。
本课题主要目标是设计并能够实现一个家政服务预约的微信小程序系统,前台用户使用小程序查找家政人员并预约,后台管理使用基于SpringBoot+Vue.js的B/S架构;通过后台添加资讯、录入家政人员信息、管理家政服务预约订单等。
家政服务一方面可给有家政需求的客户群体提供便捷,无需线下考察、对比各家家政服务公司,手机上无需下载应用只需进入小程序就可轻松选择自己所需的家政服务进行下单;另一反面在家政服务业务急剧增加的情况下,急需大量新的家政服务从业者加入其中,从而为部分人群提供了更多就业机会;除此之外,随着人们对家政服务需求量的增加,人工统计工作量剧增以及长期的劳动,难免会产生各种各样难以发现的错误,采用现代化的管理方便数据管理,避免人工管理出现错误。
本次设计小程序端采用Vue.js框架和微信Web开发工具,服务端管理系统是以IDEA为开发平台,采用Java为编程开发语言,后台数据库采用MySQL,实现了家政服务项目浏览,家政服务项目发布,网站信息发布,以及网站后台的多种管理功能。用户可方便地进行信息浏览,挑选服务、意见反馈等操作。本网站后台管理员则进行添加、删除、更新相关信息以及根据需求条件实现客户的需求,以更好的服务客户。
随着我国生活水平不断提升,对服务行业的要求也逐渐提高。如今,我国老龄化人口增加,家庭空巢化的现象越来越明显,国民在健康方面也有了较大的认识,因此,我国家政行业得到空前关注,发展迅速。在全球许多发达国家,家政产业已成为服务性行业的重要部门。德国、美国、日本等发达国家已经进入到家政产业繁荣发展阶段,发达国家的高级家政企业目前基础采用校企一体化的模式,即企业本身包含教育培训和经营双重功能。除了经营主业以外,企业还可向五星级以上的酒店培养高素质人才
而国内家政市场的需求在近几年同样飞速增长,中国家政服务市场规模从2015年的2776亿元上升至2021年的10149亿元,增长近4倍,并将延续增长趋势,预计到2023年将增至11641亿元。随着产业规模持续扩大,中国家政行业营收占全国GDP比重持续增长,吸纳就业能力日渐强大,2021年从业人员数量已达3760万人。中国家政服务行业作为朝阳产业、民生产业,发展前景可观。
调研数据显示,2022年有93.8%中国消费者使用过家政服务,中国家庭对家政服务的需求强烈,尤其在“养老”“育幼”方面,需求规模还将不断走高。 2018至2021年间,家政服务用户的线上渗透率从47.8%上升至80.2%,家政服务消费预订线上化趋势明显增强,线上需求已成为家政行业重要的需求来源。家政服务行业数字化转型正在快速推进,用户需求线上化趋势极为明显,相关企业将借助互联网家政平台、本地生活平台等线上渠道获客,实现数字化转型。
利用计算机对日常家政服务管理不仅可以节省工作人员大量的时间和精力,而且能保证服务信息记录准确、快速从而提高家政系统的信息管理效率,使得管理更加科学化、规范化;因此家政服务预约微信小程序的开发具有重要意义的。
家政预约小程序的前端基于微信开发者工具,使用JS、WXSS、WXML 语言进行设计,后端基于SpringBoot框架进行实现,采用了Redis作为缓存,提高系统运行效率。
家政服务预约平台的后台采用IDEA进行开发,其主要用于Java以及移动应用的开发。前台采用微信开发工具进行开发,主要用于微信小程序的开发。Navicat是专为简化数据库管理以及降低系统管理成本的软件,它的设计符合数据库管理人员、开发人员的需要,它是以直觉化图形用户界面而建的,可以安全而且简单的方式创建、组织、访问信息。
微信开发者工作是微信官方提供的针对微信小程序的开发工具,集中了开发,调试,预览,上传等功能。微信团队发布了微信小程序开发者工具、微信小程序开发文档和微信小程序设计指南,全新的开发者工具,集成了开发调试、代码编辑及程序发布等功能,帮助开发者简单和高效地开发微信小程序。
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。SpringBoot框架中有两个非常重要的策略:开箱即用和约定优于配置。开箱即用,是指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。约定优于配置,是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。
MySQL是一个开源的关系型数据库,现在属于Oracle公司。随着MySQL功能的不断完善,性能不断提高,又有开源免费的优势,越来越多的企业选择使用MySQL,而放弃商用收费的Oracle。
Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能(NOSOL)的 key-value 数据库,Redis 是一个开源的使用 ANSI C 语言编写、支持网终、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。
Vuejs 是一套用于构建用户界面的渐进式 JavaScript 框架。与其它大型框架不同的是,Vue.js 被设计为可以自底向上逐层应用。Vue.js 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue.js,也完全能够为复杂的单页应用提供驱动。
本系统的开发针对家政服务管理过程的需要,进行各方面信息的输入、查询,以减轻管理家政服务人员工作的负担,以提高信息处理的速度和质量为最终目标。
通过对用户需求进行分析,小程序主要功能需求如下:
(1)家政服务类型信息管理,包括家政服务供求、家政业务分类的管理;
(2)购物车信息管理,将想要下单的家政服务添加到购物车;
(3)个人信息管理,可以查看自己的个人信息,对自己信息进行管理。浏览足迹,商品收藏等的管理与更新;
(4)家政服务项目管理,对家政服务项目的介绍、图片等信息进行管理;
(5)客户信息管理,对使用本系统的客户信息的管理;
(6)服务新闻管理,管理系统推送的新闻信息;
(7)网站公告管理,维护管理网站推送的公告、提示信息。
(8)家政服务下单管理,用户可在下单、并管理服务下单信息及状态。
可行性分析是在决策前对可行性进行分析,对小程序的运行起着关键作用,决定了方案是否可行。
本系统所采用的软件和技术均是免费开放源代码的,可以有效地减少开发费用,因此在经济上也是具有可行性的。当这个小程序发行后,可以通过收取手续费,广告费等形式来获取利润。
该小程序通过微信开发者工具,利用WXML语言、WXSS、JS等技术完成对微信小程序页面的开发。微信开发者工具使用简单功能齐全并且可以通过开发社区寻求帮助。后台管理所采用的是Spring Boot,Spring Boot是Pivotal团队为新Spring程序开发的一个新框架。由于采用了特定的配置方法,因此这个框架不再要求用户自定义模板。这个架构最初是为简化开发而设计,旨在解决复杂的企业应用开发。它的特征是能够迅速地建立工程,并且可以立即使用。开发比Spring更加便捷,已逐渐成为了拥有较多的开发人群,较为稳定、成熟的后台开发框架的选择。在大学中都有所学习,并且在网上有许多相关案例可以借鉴。
本系统以微信小程序为基础实现,因此操作简单、使用方便,无需下载,只需要在微信上即可使用。并且该小程序页面简单明了,便于用户使用,因此,本系统在运行中也是可行的。
家政服务预约小程序是面向广大家政需求客户开发的系统,完成用户在前台页面的信息浏览、注册操作以及管理员在后台的信息匹配工作,本系统的具体系统逻辑结构如图4-1所示。
图4-1系统逻辑结构图
小程序的需求分析为系统的功能设计奠定了基础和提供了参考,通过需求分析对小程序的功能进行了具体设计,以满足用户需求,设计出适应市场的小程序。本小程序主要分为四大模块:首页、服务分类、购物车、个人模块。每个模块都有对应功能,最后实现家政服务功能。
各模块主要功能如下:
(1)首页
① 用户可在首页查看系统的公告信息已经广告的banner图,可以查看公告或者广告的具体消息;
② 家政分类部分,可以直接查看所有的分类信息,点击展示的分类可以进入详细的分类页面,点击跟多会跳转到分类页面;
③ 活动展示,可以查看当前的服务项目活动。
(2)分类模块
将家政服务分类可以通过后台动态管理,目前将家政服务按照服务类型进行分类。
(3)订单模块
购物车模块用于展示,用户添加到购物车的服务,方便用户打开以后查看添加过的服务信息,不需要二次查找,提高用户体验度,可以在购物车进行结算。
(4)个人模块
个人模块是对用户的相关信息进行管理。
① 用户可在个人界面查看个人的头像和积分;通过查询相关订单信息;
② 订单信息,主要展示四个订单状态,已完成、已评价、未付款、已付款;
③ 客户留言,可以对当前系统信息进行浏览;
④ 优惠券可以查看自己领取的优惠券信息;
根据管理需求,后台可以添加和删除服务分类信息,设定价格,管理服务信息,管理服务供应商,对平台用户进行管理,同时可以查询订单信息、对数据进行统计的功能。
(1)用户管理
① 管理员可查看、导出用户信息;
② 管理员可查看用户的上门地址信息;
③ 管理员可查看用户对家政服务的收藏情况,了解用户的喜好;
④ 管理员可查看用户的访问足迹,对家政服务的访问情况;
⑤ 管理员可查看用户的搜索历史,了解用户关注的产品关键信息;
⑥ 管理员可查看、导出用户的意见反馈信息。
(2)业务管理
① 管理员可查看、导出行政区域信息;
② 管理员可操作、管理服务提供商的信息;
③ 管理员可操作、管理商品的分类信息;
④ 管理员可查看用户的下单情况、查看详情并进行发货操作;
⑤ 管理员管理、操作通用问题的信息;
⑥ 管理员可对关键词进行设定,并绑定跳转对应的链接。
(3)服务管理
① 管理员可对家政服务进行添加、查找、编辑、删除及导出管理;
② 管理员可对服务评论进行查找、导出、删除管理;
③ 管理员可操作、管理商品的分类信息;
(4)推广管理
① 管理员可对公告信息进行添加、查找、编辑、删除管理;
② 管理员可对广告信息进行添加、查找、编辑、删除及导出管理;
③ 管理员可对优惠券信息进行添加、查找、编辑、删除及导出管理;
④ 管理员可对宣传专题进行添加、查找、编辑、删除及导出管理;
(5)统计管理
① 管理员可查看用户、订单、服务的图形化统计信息;
系统功能结构图如图4-2所示。
图4-2结构功能设计
本小程序采用MySQL数据库,根据需求分析,用ER图来表示数据库的概念结构设计,实体主要有用户、订单、服务、地址、后台管理员等,ER具体实现如图4-3所示。
图4-3 数据库E-R图
根据E-R图和数据库概念结构设计,建立数据库逻辑结构,设计对应的关系表,本数据库主要设计的关系表有:用户信息表、广告信息表、地址信息表、管理员信息表、服务商信息表、资讯信息表、品牌信息表、购物车信息表、类别信息表、评论信息表、优惠券信息表、优惠券信息表、图片信息表、反馈信息表、足迹信息表、商品信息表、商品属性信息表、商品规格信息表、问题信息表、关键词信息表,订单信息表、权限信息表、退款信息表、区域信息表、角色信息表、搜索历史信息表、存储信息表、系统信息表、主题信息表等。
其中用户基本信息表、订单信息表、商品信息表、后台管理员信息表、地址信息表的具体设计如下文所示。
表4.1 用户基本信息表
字段 |
类型 |
大小 |
是否为null |
备注 |
id |
int |
11 |
True |
ID |
username |
varchar |
63 |
True |
用户名称 |
password |
varchar |
63 |
True |
用户密码 |
gender |
tinyint |
3 |
True |
性别 |
birthday |
date |
0 |
False |
生日 |
last_login_time |
datetime |
0 |
False |
最近登录时间 |
last_login_ip |
varchar |
63 |
True |
最近登录IP地址 |
user_level |
tinyint |
3 |
False |
用户层级 |
nickname |
varchar |
63 |
True |
用户昵称 |
mobile |
varchar |
20 |
True |
用户手机号码 |
avatar |
varchar |
255 |
True |
用户头像图片 |
weixin_openid |
varchar |
63 |
True |
微信登录openid |
status |
tinyint |
3 |
True |
状态 |
add_time |
datetime |
0 |
False |
创建时间 |
update_time |
datetime |
0 |
False |
更新时间 |
deleted |
tinyint |
1 |
False |
是否删除 |
share_user_id |
int |
11 |
False |
分享用户 |
表4.2订单信息表
字段 |
类型 |
大小 |
是否为null |
备注 |
id |
int |
11 |
True |
ID |
user_id |
int |
11 |
True |
用户表的用户ID |
order_sn |
varchar |
63 |
True |
订单编号 |
order_status |
smallint |
6 |
True |
订单状态 |
consignee |
varchar |
63 |
True |
收货人名称 |
mobile |
varchar |
63 |
True |
收货人手机号 |
address |
varchar |
127 |
True |
收货具体地址 |
message |
varchar |
512 |
True |
用户订单留言 |
goods_price |
decimal |
10 |
True |
商品总费用 |
freight_price |
decimal |
10 |
False |
配送费用 |
coupon_price |
decimal |
10 |
True |
优惠券减免 |
integral_price |
decimal |
10 |
True |
用户积分减免 |
groupon_price |
decimal |
10 |
True |
团购优惠价减免 |
order_price |
decimal |
10 |
True |
订单费用 |
actual_price |
decimal |
10 |
True |
实付费用 |
pay_id |
varchar |
63 |
False |
实付费用 |
pay_time |
datetime |
0 |
False |
微信付款时间 |
ship_sn |
varchar |
63 |
False |
发货编号 |
end_time |
datetime |
0 |
False |
结束时间 |
add_time |
datetime |
0 |
False |
调价时间 |
update_time |
datetime |
0 |
False |
更新时间 |
deleted |
tinyint |
1 |
False |
删除状态 |
settlement_money |
decimal |
10 |
False |
结算金额 |
settlement_status |
tinyint |
1 |
True |
结算状态 |
share_user_id |
int |
11 |
False |
推广公户 |
create_user_id |
int |
11 |
False |
创建用户ID |
gift_send_time |
datetime |
0 |
False |
转赠发送时间 |
gift_receive_time |
datetime |
0 |
False |
转赠接收时间 |
表4.3商品信息表
字段 |
类型 |
大小 |
是否为null |
备注 |
id |
int |
11 |
True |
ID |
goods_sn |
varchar |
63 |
True |
商品编号 |
name |
varchar |
127 |
True |
商品名称 |
category_id |
int |
11 |
False |
商品所属类目ID |
gallery |
varchar |
1023 |
False |
商品宣传图片 |
keywords |
varchar |
255 |
False |
商品关键字 |
brief |
varchar |
255 |
False |
商品简介 |
表4.4后台管理员信息表
字段 |
类型 |
大小 |
是否为null |
备注 |
id |
int |
11 |
True |
ID |
username |
varchar |
63 |
True |
用户名 |
password |
varchar |
63 |
True |
密码 |
表4.5地址信息表
字段 |
类型 |
大小 |
是否为null |
备注 |
id |
int |
11 |
True |
ID |
name |
varchar |
63 |
True |
姓名 |
user_id |
int |
11 |
True |
用户 |
province_id |
int |
11 |
True |
省 |
city_id |
int |
11 |
True |
市 |
area_id |
int |
11 |
True |
区 |
address |
varchar |
127 |
True |
详细地址 |
小程序的首页主要是用户展示banner图、服务分类、还有活动信息,首页如图5.1所示。
图5-1 首页
Banner图代码如下:
服务分类如下:
活动代码主要如下:
主要用于展示后台维护好的小程序分类信息具体页面如图5-2所示,点击分类信息之后点击服务类型将会调转到。
图5-2 分类列表页面
服务分类的具体代码如下:
用户登录之后,点击项目即可加入购物车,购物车列表如图5-3所示。
图5-3 购物车列表页面
购物车主要是方便用户统一结算,或者是帮助用户记住服务信息页面如图,购物车结算页面如图5-4所示。
图5-4 购物车结算图
具体代码如下:
用户授权登录成功之后,点击个人中心查看用户信息,用户中心页面如图5-5所示。
图5-5 个人信息页面
部分核心代码如下:
后台首页可以直观得看到所有的关键数据统计,首页如图5-6所示。
图5-6 后台首页
具体代码如下:
@RequiresPermissions("admin:user:list")
@RequiresPermissionsDesc(menu = { "用户管理", "会员管理" }, button = "查询")
@GetMapping("/list")
public Object list(String username, String mobile, @RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer limit,
@Sort @RequestParam(defaultValue = "add_time") String sort,
@Order @RequestParam(defaultValue = "desc") String order) {
logger.info("【请求开始】用户管理->会员管理->查询,请求参数,username:{},code:{},page:{}", username, mobile, page);
List
long total = PageInfo.of(userList).getTotal();
Map
data.put("total", total);
data.put("items", userList);
logger.info("【请求结束】用户管理->会员管理->查询:响应结果:{}", JSONObject.toJSONString(data));
return ResponseUtil.ok(data);
}
后台用户管理页面主要是展示所有的用户信息,对于违规用户进行操作等。具体页面如5-7所示。图5-7 用户管理页面
具体代码如下:
@RequiresPermissions("admin:user:list")
@RequiresPermissionsDesc(menu = { "用户管理", "会员管理" }, button = "查询")
@GetMapping("/list")
public Object list(String username, String mobile, @RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer limit,
@Sort @RequestParam(defaultValue = "add_time") String sort,
@Order @RequestParam(defaultValue = "desc") String order) {
logger.info("【请求开始】用户管理->会员管理->查询,请求参数,username:{},code:{},page:{}", username, mobile, page);
List
long total = PageInfo.of(userList).getTotal();
Map
data.put("total", total);
data.put("items", userList);
logger.info("【请求结束】用户管理->会员管理->查询:响应结果:{}", JSONObject.toJSONString(data));
return ResponseUtil.ok(data);
}
管理平台所有的订单信息,可以为每一个订单留下数据。具体页面如5-8所示。
图5-8 订单列表页面图
具体代码如下:
@RequiresPermissions("admin:order:list")
@RequiresPermissionsDesc(menu = { "商场管理", "订单管理" }, button = "查询")
@GetMapping("/list")
public Object list(Integer userId, String orderSn, @RequestParam(required = false) List
@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer limit,
@Sort @RequestParam(defaultValue = "add_time") String sort,
@Order @RequestParam(defaultValue = "desc") String order) {
logger.info("【请求开始】商场管理->订单管理->查询,请求参数:userId:{},orderSn:{},page:{}", userId, orderSn, page);
return adminOrderService.list(userId, orderSn, orderStatusArray, page, limit, sort, order);
}
服务信息是所有服务管理的页面,也是系统最核心的业务部分。具体页面如图5-9所示。
图5-9 服务信息页面图
具体代码如下:
@RequiresPermissions("admin:goods:list")
@RequiresPermissionsDesc(menu = { "家政服务管理", "家政服务管理" }, button = "查询")
@GetMapping("/list")
public Object list(String goodsSn, String name, @RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer limit,
@Sort @RequestParam(defaultValue = "add_time") String sort,
@Order @RequestParam(defaultValue = "desc") String order) {
logger.info("【请求开始】家政服务管理->家政服务管理->查询,请求参数:goodsSn:{},name:{},page:{}", goodsSn, name, page);
return adminGoodsService.list(goodsSn, name, page, limit, sort, order);
}
统计可以统计当前系统的基本数据,方便管理员做出可以非调整与活动,具体页面如5-10所示。
@RequiresPermissions("admin:stat:user")
@RequiresPermissionsDesc(menu = { "统计管理", "用户统计" }, button = "查询")
@GetMapping("/user")
public Object statUser() {
logger.info("【请求开始】统计管理->用户统计->查询");
List