petpetgo项目

petpetgo项目 目 录1. 系统概述本次设计课题为PetPetGo 一站式宠物服务平台采用 B/S 前后端分离架构分为微信小程序用户端与PC 店铺管理后台两大终端配套 MySQL 8.0 数据库存储全部业务数据。平台业务定位面向三类角色养宠用户小程序在线浏览宠物店服务、宠物商品预约美容 / 医疗 / 寄养下单购物、查看订单、查阅宠物养护 AI 百科、收藏门店。宠物店管理员PC 后台管理店铺信息、员工、服务项目、商品库存、预约单、订单、用户评价、数据营收报表。平台超级管理员统一管理全部门店、审核开店申请、查看平台整体经营数据。技术整体架构后端SpringBoot 3.3.3 MyBatis-Plus MySQL8.0小程序前端uni-app Vue2PC 管理端Vue2 ElementUI ECharts数据可视化中间件Redis、MinIO 图片存储、WebSocket 实时消息推送数据库MySQL 8.0统一逻辑删除、事务管控、多维度索引优化。数据库承载业务数据库存储用户、店铺、员工、宠物、服务、商品、预约、订单、退款、评价、新闻、购物车、收藏、排班、库存、报表等 30 余类业务数据支撑增删改查、多条件分页、多维统计、预约冲突校验、库存预警等核心数据操作。2. 需求分析2.1 行业业务痛点传统宠物店无数字化工具电话预约混乱、撞单无法管控员工排班人工记录易出错。商品库存依靠手工登记库存不足无法提前预警缺货影响经营。用户无线上渠道查看服务价格、真实评价门店获客成本高。经营数据手工统计营收、服务销量、客单价核算效率极低。养宠人群缺少专业养护资讯与实时咨询渠道。2.2 功能性需求1用户模块需求用户注册、登录密码 MD 加密存储用户信息新增、修改、拉黑黑名单用户收货地址增删改查用户宠物档案管理品种、疫苗、病史等用户收藏店铺 / 服务 / 商品、浏览足迹记录。2店铺模块需求平台管理员新增 / 编辑 / 查询全部门店店铺基础信息维护名称、地址、营业状态、服务标签开店申请审核管理。3员工管理需求员工信息增删改查、离职 / 复职状态切换员工技能绑定美容 / 医疗等技能、等级划分员工月度排班管理按日期存储可服务时段员工接单量、服务评分数据统计。4服务模块需求服务标签分类管理美容、医疗、寄养门店自定义服务项目增删改查设置价格、时长服务时段配置限制单时段最大接待人数员工与服务绑定预约时筛选可服务人员。5商品与库存需求商品分类、商品上下架管理库存调整增减库存、库存低于阈值自动预警商品销量、评分统计。6预约 订单 退款需求用户提交服务预约后台确认 / 取消 / 标记爽约商品订单创建、支付、取消全流程退款申请提交、商家审核同意 / 拒绝订单多条件筛选时间、状态、支付方式。7评价、资讯模块用户下单后可发表图文评价后台隐藏 / 恢复评价PC 端发布宠物科普新闻小程序展示、点赞新闻评论管理违规评论隐藏删除。8数据统计需求月度店铺营收、服务 / 商品收入占比服务销量排行、商品销量排行店铺评分、用户评价星级分布统计。3. 数据库设计1概念结构设计核心实体及属性用户 pet_user_profileuser_id (主键)、user_type、phone、password、nick_name、real_name、is_black、contact_address店铺 pet_shopshop_id (主键)、shop_name、shop_phone、province、city、shop_status、owner_id员工 pet_employeeemp_id (主键)、shop_id、user_id、position、employee_status、entry_date宠物 pet_infopet_id (主键)、owner_id、pet_name、pet_type、breed、vaccine_expire服务标签 pet_service_tagtag_id (主键)、tag_name、tag_category、status门店服务 pet_shop_serviceservice_id (主键)、shop_id、tag_id、service_name、price、service_status商品 pet_productproduct_id (主键)、shop_id、product_name、price、stock、status服务时段 g_service_scheduleschedule_id、shop_id、service_id、time_slot、max_capacity预约 pet_service_appointmentappointment_id、shop_id、service_id、pet_id、emp_id、appointment_status订单 pet_orderorder_id、order_no、shop_id、user_id、order_status、pay_status订单详情 pet_order_detaildetail_id、order_id、item_type、product_id/service_id、quantity评价 pet_reviewreview_id、order_id、shop_id、rating、content新闻 pet_newsnews_id、title、content、publish_time购物车 g_cartcart_id、user_id、shop_id、product_id/service_id、quantity收藏 g_favoritefavorite_id、user_id、shop_id/service_id/product_id实体间关系用户 (1) — 宠物 (N)一对多一个用户多只宠物店主用户 (1) — 店铺 (N)一对多店铺 (1) — 员工 (N)一对多店铺 (1) — 服务 (N) / 商品 (N)一对多服务标签 (1) — 服务 (N)一对多店铺服务 (1) — 时段 (N)一对多员工 (N) — 服务 (N)多对多中间表 g_service_employee用户 (1) — 购物车 (N) / 收藏 (N)一对多用户 (1) — 订单 (N) / 预约 (N)一对多订单 (1) — 订单详情 (N)一对多订单 (1) — 评价 (1)一对一员工 (N) — 技能标签 (N)多对多中间表 g_employee_skill2逻辑结构设计全部数据表遵循第三范式 3NF消除传递依赖拆分冗余字段通过外键 ID 关联冗余字段仅用于前端展示如 shop_name、user_name减少联表查询。数据表分类用户相关表pet_user_profile、pet_user_address、pet_info、g_favorite、g_cart门店基础表pet_shop、pet_shop_apply员工相关表pet_employee、g_employee_skill、g_employee_schedule服务相关表pet_service_tag、pet_shop_service、g_service_schedule、g_service_employee商品库存表pet_product交易业务表pet_service_appointment、pet_order、pet_order_detail、pet_refund评价资讯表pet_review、pet_news、g_news_comment统计报表中间表g_report_shop_monthly、g_report_income_composition核心表逻辑结构示例(1)用户表 pet_user_profile2店铺表 pet_shop3订单表 pet_order3物理结构设计1. 数据库参数数据库名petku数据库版本MySQL 8.0.27存储引擎InnoDB支持事务、外键、行锁字符集utf8mb4兼容 emoji、中文排序规则utf8mb4_0900_ai_ci2. 通用物理规范所有表增加is_deleted char(1) DEFAULT 0逻辑删除禁止 DELETE 物理删除每张表统一 create_time、update_time、create_by、update_by 审计字段主键统一 bigint 自增业务唯一标识手机号、订单号建立唯一索引高频查询条件shop_id、user_id、status、is_deleted建立普通索引多条件联合查询建立联合索引idx_shop_year_month金额统一 decimal (10,2) 防止浮点精度丢失3. 索引设计示例-- 用户手机号唯一索引UNIQUE INDEX idx_phone(phone)-- 店铺年月联合索引报表统计专用UNIQUE INDEX idx_shop_year_month(shop_id, stat_year, stat_month)-- 分页筛选常用索引INDEX idx_shop_id(shop_id)INDEX idx_status(status)INDEX idx_is_deleted(is_deleted)4. 完整性约束主键约束每张表主键自增唯一标识单条记录唯一约束手机号、订单号、退款单号不重复非空约束业务核心字段手机号、店铺名、价格NOT NULL默认约束状态字段默认 0正常 / 营业外键逻辑约束代码层实现店铺、用户关联校验数据库不强制外键锁提升并发域完整性订单状态、用户类型使用固定字符枚举限制。4. 数据库实施与维护4.1 数据库创建语句4.2 完整性约束实现示例1.非空 默认约束用户表2.唯一索引防止重复手机号注册3.订单号全局唯一4.3 存储过程、游标设计存储过程 1按月统计店铺营收功能输入 shop_id、年份月份自动统计服务收入、商品收入、毛利润插入月度报表表存储过程 2库存预警批量查询输入阈值查询库存低于阈值的商品返回商品列表游标单独示例遍历黑名单用户4.4 数据库备份与维护方案定时备份使用 mysqldump 每日凌晨全量备份 petku 库保留 7 天备份文件日志维护开启 binlog 二进制日志故障可基于时间点恢复定期优化每月执行 OPTIMIZE TABLE 清理碎片数据清理超过 1 年的历史订单、报表归档备份不删除业务主表数据权限管控开发账号仅 DML 权限生产账号禁止 DROP/ALTER 操作。5. 系统实现界面设计(1) 界面设计本项目分为PC 管理后台与微信小程序用户端两套界面采用前后端分离开发页面风格统一简约适配 PC 大屏与手机移动端全部界面依托 MySQL 数据库提供数据支撑。① PC 管理端界面Vue2ElementUI登录 / 注册页面账号密码输入框、验证码模块登录请求携带账号密码 MD5 加密参数调用/user/pclogin接口校验数据库用户表pet_user_profile账号信息验证成功返回 Token。image reference_id4-17 titlesPC管理登录页/ image reference_id4-18 titlesPC注册页面/首页数据报表界面使用 ECharts 图表渲染订单趋势、营收占比、商品 / 服务销量排行所有图表数据从统计存储过程、订单表、商品表聚合查询得来可视化展示数据库统计结果。image reference_id4-16 titles报表数据大屏/用户管理页面宠物主 / 黑名单分页列表展示数据库pet_user_profile数据支持昵称、手机号模糊查询提供拉黑 / 解除拉黑操作操作后更新用户表is_black字段。image reference_id4-19 titles宠物主列表页/员工管理界面读取pet_employee员工表支持新增、编辑、离职状态修改配套员工技能矩阵页面关联g_employee_skill多对多中间表数据。image reference_id4-20 titles员工列表/ image reference_id4-36 titles员工技能矩阵/服务 服务时段管理读取pet_shop_service服务表、g_service_schedule时段表支持新增服务、配置每日预约容量修改时段最大人数同步更新数据库。image reference_id4-22 titles服务列表/ image reference_id4-23 titles服务时段配置/商品 库存管理展示pet_product商品表库存数值库存预警页面筛选库存低于阈值的数据支持批量调整库存直接更新表中stock字段。image reference_id4-24 titles商品列表/ image reference_id4-32 titles库存预警页面/订单、预约管理页面分页查询pet_order订单表、pet_service_appointment预约表支持按时间、订单状态筛选可修改订单流程状态同步写入数据库时间字段。image reference_id4-25 titles订单列表/ image reference_id4-27 titles预约日历弹窗/新闻发布页面后台编辑新闻富文本提交后插入pet_news表通过 WebSocket 推送至小程序端。image reference_id4-30 titles新闻发布页/② 小程序端界面uni-app登录首页用户手机号密码登录校验数据库用户信息。image reference4-4 titles小程序登录页/ 2. 首页服务、商品浏览查询pet_shop_service、pet_product表展示热门数据。 image reference4-5 titles小程序首页/ 3. 宠物百科AI问答前端传递问题调用AI接口知识库数据存储在pet_news。 image reference4-33 titles宠物百科首页/ image reference4-34 titlesAI对话界面/ 4. 购物车、订单、预约页面操作同步修改g_cart、pet_order、预约表数据。 image reference4-12 titles购物车/ image reference4-35 titles预约日历/(2) 系统功能模块实现1用户登录模块数据库交互逻辑前端接收手机号、密码密码进行 MD5 加密后端执行 SQLSELECT * FROM pet_user_profile WHERE phone ? AND is_deleted 0对比数据库存储的加密密码匹配成功生成 JWT Token 返回登录成功更新用户last_login_time字段。核心后端代码MyBatis-Plus6. 结果分析6.1 基础 CRUD 功能测试新增测试测试用户、店铺、商品、员工等实体新增接口传入合法参数后数据库对应表正确插入记录必填字段非空约束生效未传空值字段填充默认值传入缺失必填参数时后端拦截无脏数据入库。修改测试编辑接口仅更新传入字段不修改其他原有数据状态切换商品上下架、员工离职可正常更新对应 status 字段数据修改后数据库实时更新。逻辑删除测试所有删除接口仅更新is_deleted1无物理删除记录查询接口均携带is_deleted0条件删除后列表不再展示数据数据库原始记录完整保留支持数据追溯。简单 / 复杂查询测试单条件分页查询响应速度快多表联查订单详情、员工技能数据关联正确关联表数据匹配无错乱模糊搜索店铺名、昵称可精准匹配结果。6.2 存储过程与游标测试执行proc_stat_shop_month输入店铺 ID、年月游标自动遍历当月全部已支付订单自动汇总服务收入、商品收入并插入月度报表表报表数据与手工逐笔计算金额完全一致统计逻辑无误。执行cur_black_user游标存储过程成功遍历所有拉黑用户并输出用户 ID、昵称批量遍历功能正常适用于批量导出黑名单场景。proc_get_warning_goods输入预警阈值 10正确筛选库存小于等于 10 的上架商品库存预警页面数据与存储查询结果完全匹配。6.3 完整性约束测试非空约束插入数据时不传手机号、店铺名称等 NOT NULL 字段数据库抛出异常后端捕获提示参数错误防止空核心数据入库。唯一索引使用重复手机号注册用户唯一索引idx_phone拦截报错账号已存在避免重复用户。默认约束新增商品不传 status数据库自动填充1上架新增用户is_black默认 0符合业务默认规则。域约束订单状态仅允许 00、01 等规定字符传入非法字符时后端拦截校验保证数据规范。6.4 索引性能对比测试测试环境模拟万条订单数据未创建shop_idcreate_time联合索引按店铺 月份查询耗时约 1100ms创建联合索引后相同查询耗时缩短至 45ms结论针对高频筛选字段建立联合索引可大幅提升查询效率过多单索引会降低插入更新性能本项目仅为常用查询字段创建索引平衡读写性能。6.5 事务并发测试模拟多用户同时下单购买同一件商品并发请求下事务生效库存扣减原子化不会出现库存负数、超卖问题同一服务时段多人预约时事务校验最大容量超出限制无法新增预约并发数据一致性得到保障。6.6 全系统业务连通测试小程序端完成注册、预约、下单操作PC 管理后台实时查询到对应用户、预约、订单数据PC 端发布新闻小程序消息推送弹窗正常两端数据基于同一 MySQL 库实时同步整套系统数据库交互稳定全部业务流程无数据错乱、丢失问题。