基于SpringBoot的宠物管理系统的设计与实现

视频演示

暂无

技术选型

本系统使用的开发语言为Java,采用后端框架SpringBoot,持久层框架MyBatis Plus,以及Vue.js、Uniapp 前端框架技术,使用MySQL数据库和Redis缓存,采用JWT技术实现了用户身份认证和权限授权。

2.1 SpringBoot

Spring随着发展逐渐变得笨重,产生大量的大量繁琐的XML配置和第三方整合配置。SpringBoot是由Pivotal团队提供的全新的Web框架,是当前web开发主流,其设计目的是用来简化Spring应用的初始搭建以及开发过程,让开发者能够更容易上手Web项目的开发,从而实现快速开发。SpringBoot 通过“习惯优于配置”的思想实现 Web 项目的快速搭建,从而避免开发人员定义样板化的配置。[[i]]因此,本系统将会使用SpringBoot框架来负责业务开发。

2.2 MyBatis Plus

MyBatis是一款优秀的用于持久层的、轻量级的框架,它封装了所有JDBC操作以及设置查询参数和获取结果集的操作,支持自定义sql、存储过程和高级映射。可以简化JDBC开发,使系统的设计更清晰,更易维护,更易单元测试。 Mybatis Plu是MyBatis 的增强工具,在MyBatis基础上只做增强不做改变。因此,本系统持久层将会使用Mybatis Plus来负责数据库的交互,达到简化开发的目的,从而提高效率,如基本的单表增删改查直接调用框架提供的方法即可。

2.3 Vue.js

Vue.js是三大前端主流框架之一,该技术是一套用于构建用户界面的渐进式JavaScript结构,是一种快速、简单、灵活的HTML框架,可以实现高效的Web页面开发,并且具有良好的可扩展性和可维护性。此外,Vue.js还可以为用户提供更好的交互体验,让用户能够更加轻松地进行用户管理和操作,从而使系统更具有活力和吸引力。因此,在构建宠物服务管理系统的管理后台的前端页面时,会使用到到Vue.js技术。

2.4 Uniapp

Uniapp 是一款以 Vue.js 为开发基础的多平台适配前端框架,开发者仅需遵循开发规范,便可实现一套代码、多平台运行的需求,极大简化了目标系统多平台适配的工作量。[[ii]]因此,选择Uniapp作为小程序端的前端开发框架,配合HBuilderX来开发 uni-app 类型的项目,运行项目到微信开发者工具。

2.5 MySQL 数据库

MySQL是Oracle旗下产品最流行的关系型数据库管理系统之一。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,由于 MySQL是开放源码软件,可以大大降低总体拥有成本。因此,本系统选择MySQL作为宠物管理系统的数据库。为了方便创建、管理和维护数据库,使用Navicat的用户界面(GUI)来帮助操作数据库,从而简化数据库的管理。

2.6 Redis缓存

Redis是基于key-value格式存储、非关系型(NoSQL)数据库,可以用来做数据库、缓存、消息中间件等场景。由于小程序是面向所有的消费者,当所有的数据查询都是从数据库MySQL中直接查询,可能出现频繁访问数据库,数据库访问压力大,系统性能下降,用户体验较差的问题。因此,本系统通过Redis来做缓存,从而降低数据库的访问压力,提高系统的访问性能,提高数据的读写性能。

2.7 JWT

JSON Web Token简称JWT,用于对应用程序上用户进行身份验证的标记。在基于微服务架构的分布式应用系统中,传统的基于 Session 模式的用户身份认证存在 Session共享的问题,多种解决方案都会增加系统的网络开销;而基于 Token 的分布式系统认证方案可以很好地解决这些问题。[[iii]]使用 JWT 之后不需要保存用户的 cookie 或其他session数据。因此,本系统通过使用JWT完成用户身份认证和权限授权,同时可保证应用程序的安全。

3 系统设计及实现

3.1 系统主要操作

要想使软件产品能够真正的符合使用者的要求,就必须对使用者的需求有一个清晰的认识。在本系统的设计程中,通过实地走访调研本地宠物店以及在网络上收集了大量的相关信息,以供参考,对宠物服务管理系统的业务流程以及用户的操作需求进行了解。通过分析宠物店的主要业务流程可知,系统涉及的人员主要为:后台系统管理员和移动端小程序消费者,他们在系统中的主要操作内容如表 3-1 所示。

表3-1 主要操作内容表

人员操作内容
后台系统管理员对后台的所有功能都有操作权限,如:商品分类、商品上架、寄养处理等功能
移动端消费者登录小程序前端,可以浏览商品信息、添加购物车、设置地址、在线下单等

3.2 系统需求分析

3.2.1 业务需求

该系统主要分为管理端后台和用户端前台。

Web管理端主要实现的功能有:

(1)登录功能。管理员必须登录系统管理后台,才能进行下一步的操作。在登录页面上,输入管理员的用户名和密码,就可以完成登录过程,从而访问系统管理后台。

(2)商品分类功能。管理员将拥有的商品进行分类,可以对其进行归纳整理,主要包括查询、新增、修改、删除功能。查询功能可以快速地定位到当前的商品分类,以便用户更方便地找到所需的商品;新增功能可以快速添加新的商品,为用户提供更多的选择;修改功能可以对商品分类进行调整,使其更加合理;删除功能可以对已有的商品分类进行删除,以确保系统中没有无用的商品。

(3)商品上架功能。可以帮助商家更快地将商品在网上展示出来,让消费者能够更方便地购买到自己想要的商品,同时也可以提升消费者购物体验。该功能的实现可以展示该商品的详细信息,如商品名称、价格等,商家可依据顾客的意见及消费反馈来对商品进行修改。

(4)订单管理需求。管理员可以管理用户的订单,包括查询订单、修改订单、确认订单等功能,实现了对用户订单信息的实时查询和跟踪,有效地提高了系统的效率。

(5)寄养需求。寄养是宠物店为消费者的宠物们提供的一系列,让它们在宠物店也能得到更好地照顾。管理员可以在系统上处理消费者提交的寄养订单。通过系统上的展示可以了解宠物的到店时间、寄养时间等信息。

Web管理端用例图如下图所示:

在这里插入图片描述

图3.1 管理端用例图

小程序用户端主要实现的功能有:

(1)登陆、注册功能。用户可以在手机移动端通过微信号登录或者注册小程序,这将为用户提供更加便捷、高效的服务。

(2)分类展示商品功能。在小程序中,为了方便用户进行购物,可以通过分类展示商品的功能,将商品按照不同类别进行分类,例如按照宠物食品、宠物用品等类别进行分类,这样就能够让用户根据自己的需求,及时了解自己需要的商品信息,从而更加方便快捷地进行购物。

(3)下单和订单查询功能。用户可以在小程序中添加商品到购物车,下单时添加地址、联系方式、收货人等信息,从而完成下单操作;此外,用户还可以通过查询订单信息,了解已购买的商品,以及是否有其他订单。

(4)宠物寄养提交功能。消费者在外出时,如果不方便携带宠物,可以通过小程序的寄养功能,将它们寄养在宠物店里,这样不仅可以让宠物得到妥善照顾,避免宠物独自在家可能出现的问题,让消费者安心。

小程序用户端用例图如下图所示:

在这里插入图片描述

图3.2 用户端用例图

3.2.2 性能需求

(1)实时性。宠物服务的业务数据都是基于用户的实时行为数据,基于此,小程序可以实时地将消费者的选择信息同步到商家,从而提升对用户需求的响应速度。

(2)扩展性。系统可以根据业务发展变化,及时更新数据和功能,以满足不同客户的需求。小程序可以提供信息的更新、商品的展示以及线上交易等多种功能,实现更多的应用。

(3)用户体验。在对该系统的用户体验进行设计的时候,应该将其与产品的特点和应用情景相联系,在功能、界面和交互等上都要按照用户的行为习惯来进行,为用户创造一个良好的操作环境,并让业务数据可以与用户的行为数据进行实时交互。小程序的推出可以有效降低用户的使用门槛,提升用户使用体验。

(4)系统安全。宠物服务管理系统的小程序端采用JWT技术实现了用户身份认证和权限授权,保护用户的隐私不受侵犯

3.3 数据库设计

本系统采用MySQL作为数据库,使用Navicat的用户界面(GUI)来帮助操作数据库,建立了名为pet的数据库,在数据库下建立了若干张表。

(1)user表(用户表)

表3.1 用户表

名称类型长度含义备注
user_idint11用户id主键
usernamevarchar20用户名
passwordvarchar16密码
open_idvarchar255微信open_id
avatar_urlvarchar4096头像地址
user_typetinyint1用户类型 (0后台管理员,5小程序用户)
del_flagtinyint1删除标记 (0未删除,1已删除)
create_timedatetime0创建时间
update_timedatetime0更新时间

(2)goods表(商品表)

表3.2 商品表

名称类型长度含义备注
goods_idint11商品id主键
titlevarchar255标题
pic_urlvarchar4096图片
cover_urlvarchar4096封面图
pricedecimal10价格
weightdouble0重量(kg)
goods_desctext0描述
sale_numint11销售数量
store_numint11库存数量
show_statustinyint1上架状态 (0上架,1下架)
del_flagtinyint1删除标记 (0未删除,1已删除)
create_timedatetime0创建时间
update_timedatetime0更新时间

(3)category表(分类表)

表3.3 分类表

名称类型长度含义备注
category_idint11分类id主键
category_namevarchar255分类名称
parent_idint11父id
sortint255排序(升序排序)

(4)category_goods表(分类-商品关联表)

表3.4 分类-商品关联表

名称类型长度含义备注
category_idint11分类id
goods_idint11商品id

(5)user_order表(订单表)

表3.5 订单表

名称类型长度含义备注
order_idint11订单id主键
order_novarchar255订单编号
user_idint11购买用户
usernamevarchar64下单者用户名
avatar_urlvarchar4096下单者头像地址
goods_numint11购买物品数量
price_sumdecimal10购买总价
order_statustinyint1订单状态 (0未支付,1支付成功,2支付失败,3备货中,4运输中,5到达地点,6收到货物,7完成)
receive_ goods_typetinyint1收货类型 (1现场取货,2外卖,3预约取货)
addresstext0收货地址
appointment_timedatetime0预约时间
remarktext0备注
del_flagtinyint1删除标记 (0未删除,1已删除)
create_timedatetime0创建时间
update_timedatetime0更新时间

(6)user_order_item表(订单明细表)

表3.6 订单明细表

名称类型长度含义备注
order_item_idint11订单详情id主键
order_novarchar64订单编号
user_idint11购买者id
goods_idint11物品/商品id
purchase_numint11购买数量
pricedecimal10购买价格
del_flagtinyint1删除标记 (0未删除,1已删除)
create_timedatetime0创建时间
update_timedatetime0更新时间

(7)address表(用户地址表)

表3.7 用户地址表

名称类型长度含义备注
address_idint11地址id主键
user_idint11用户id
namevarchar255收货姓名
phonevarchar11联系方式
detailed_addresstext0详细地址
del_flagtinyint1删除标记 (0未删除,1已删除)
create_timedatetime0创建时间
update_timedatetime0更新时间

(8)pet_care表(宠物寄养记录表表)

表3.8 宠物寄养记录表表

名称类型长度含义备注
pet_care_idint11宠物寄养id主键
user_idint11申请者
usernamevarchar20申请者用户名
avatar_urlvarchar4096申请者头像地址
pet_namevarchar255宠物昵称
pet_desctext0宠物描述
start_timedatetime0开始时间
end_timedatetime0结束时间
phonevarchar11联系号码
budgetdecimal10预算
pay_sumdecimal10支付金额
statustinyint1宠物寄养状态 (0 申请中,1 店家已接受,2 宠物已到店,3寄养中,4完成)
apply_timedatetime0申请时间
accept_timedatetime0店家接受时间
arrive_shop_timedatetime0宠物到店时间
finish_timedatetime0完成时间
del_flagtinyint1删除标记 (0未删除,1已删除)
create_timedatetime0创建时间
update_timedatetime0更新时间

3.4 系统功能设计与实现

3.4.1 登录注册模块

小程序可以通过微信官方提供的登录能力,方便地获取微信提供的用户身份标识,以建立小程序内的用户体系,实现更有效的信息沟通和服务体验。小程序登录注册时序如图3.3所示。

在这里插入图片描述

图3.3 小程序登录注册时序图

(1)用户访问小程序,首先判断缓存中是否存在token令牌,如果没有令牌,则跳转到登录页面。

(2)点击“微信一键登录”按钮,先获取微信授权码code,再发起请求,把code传递到服务端。

(3)服务端接收到code参数之后,组装参数:“openID + appSecret + Code”,请求微信官方接口,返回openID等信息。

(4)先根据openID查看用户表中,用户是否注册;如果未注册,则先自动注册账号,再通过jwt创建 token 令牌,并返回;如果已注册,则直接通过jwt创建token令牌,并返回前端给小程序。

(5)收到后端接口返回的token令牌和用户信息,将其保存到缓存中。

(6)如果用户昵称和用户头像,任意一个没有信息,则跳转到完善信息页面,填写昵称和用户头像,之后跳转到首页。

(7)小程序使用微信用户openID作为账号体系,同一个小程序中,每个用户openID是唯一的,因此可以作为账号体系。

小程序登录界面如图3.4所示。

在这里插入图片描述
在这里插入图片描述

图3.4 小程序登录界面

3.4.2 订单模块

用户通过小程序中下单,系统会根据用户的订单信息,从后台获取订单信息,并进行处理,最后生成订单状态以及相关的订单详情。订单时序图如3.5所示。

在这里插入图片描述

图3.5 小程序订单时序图

(1)用户点击“商店”,添加需要的商品至购物车中,点击“下单”,进入账单结算界面后,设置收货地址。

(2)小程序将订单信息发送到管理后台,管理员可以从“订单管理”栏中查看订单信息(订单编号、用户名、用户头像、总价、备注、地址、预约时间、类型、状态、操作),此时状态显示“未支付”,订单管理页面如图3.6所示。

在这里插入图片描述

图3.6 后台订单管理页面

(3)用户在小程序中点击“支付”按钮之后,会将支付成功结果返回给管理后台,管理员可以看见用户已经支付的状态。

(4)管理员在后台点击“开始备货”按钮后,会将备货状态发送给微信小程序,这时候用户可以在“订单”板块中看见当前订单的状态显示为“正在备货”,如图3.7所示。

在这里插入图片描述
在这里插入图片描述

图3.7 后台订单管理和详情页面

(5)管理员点击“备货完成”后,后台状态更改为“运输中”,小程序端订单将会显示“正赶来”状态。

(6)管理后台:商品送达后,在订单详情页中,点击“运输中”按钮,系统会自动转换为“等待客人收货”状态。用户在小程序“点击收到”确认收货,然后由管理人员在后台“点击完成”,最终完成整个订单。

3.4.3 寄养宠物模块

在用户外出不方便携带宠物时,宠物店便成为了大多数用户选择寄养的场所,因此设计了宠物寄养功能,寄养宠物时序图如图3.8所示。
在这里插入图片描述

图3.8 寄养宠物时序图

(1)用户访问“寄养”界面,在小程序中填写寄养申请工单,包括宠物昵称、手机号、开始时间、结束时间、预算金额和宠物描述的内容。小程序寄养申请界面如图3.9所示。

在这里插入图片描述

图3.9 小程序寄养申请界面

(2)将寄养的信息工单发送给后台,管理员可以通过“寄养订单”栏查看寄养信息,接受宠物寄养申请。后台寄养订单页面如图3.10所示。

在这里插入图片描述

图3.10 后台寄养订单页面

(3)用户进入小程序“寄养中心”界面,查看商家是否同意宠物寄养申请,同意后携带宠物去线下实体店,点击“到达店铺”。后台收到信息后,商家与用户协商最终寄养价格及注意事项,在后端点击“确认寄养”操作。将寄养信息发送给用户。小程序寄养中心界面如图3.11所示。

在这里插入图片描述

图3.11 小程序寄养中心界面

(3)寄养日期到期后,用户前往宠物店接走宠物,后台点击“完成寄养订单”,返回寄养的订单状态到小程序,小程序的寄养状态更新为“已完成”,至此,寄养订单全部完成。

4 截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 26
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值