尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

基于SpringBoot的社区养老服务管理系统的设计与实现

基于SpringBoot的社区养老服务管理系统的设计与实现 一、 项目背景与意义随着我国人口老龄化进程的加速社区养老已成为应对“银发浪潮”的重要模式。传统的养老服务管理多依赖人工记录、电话沟通存在信息不透明、服务响应慢、资源调配效率低、数据难以统计分析等问题。构建一个信息化、智能化的社区养老服务管理系统对于提升养老服务质量、优化资源配置、保障老年人安全、减轻管理人员负担具有重要的现实意义。本系统旨在利用现代Web技术为社区养老服务中心打造一个集老人信息管理、服务需求对接、服务人员调度、健康数据监测、家属远程查看等功能于一体的综合管理平台实现养老服务的标准化、流程化和数字化。二、 技术栈选型系统采用前后端分离的架构模式保证系统的可维护性、可扩展性和高性能。1. 后端技术栈核心框架: Spring Boot 2.7.x安全框架: Spring Security JWT (JSON Web Token)数据持久层: MyBatis-Plus数据库: MySQL 8.0API文档: Swagger2 / Knife4j缓存: Redis (用于会话管理、热点数据缓存)消息队列: RabbitMQ (用于异步处理服务订单、发送通知)文件存储: 本地存储或MinIO (对象存储用于存储老人头像、健康报告等)2. 前端技术栈框架: Vue 3 Element Plus构建工具: Vite状态管理: Pinia路由: Vue RouterHTTP客户端: Axios3. 开发与部署项目管理: Maven版本控制: Git容器化: Docker, Docker Compose持续集成/部署: Jenkins (可选)三、 系统核心功能模块设计系统主要分为后台管理端和家属/老人微信小程序端。1. 后台管理端核心模块权限管理模块: 基于RBAC模型实现用户、角色、菜单的动态配置。老人信息管理: 对社区内老人的基本信息、健康状况、紧急联系人等进行增删改查。服务项目管理: 定义各类养老服务如送餐、保洁、陪同就医、健康监测等及其标准、价格。服务订单管理: 处理老人或家属发起的服务预约、派单给服务人员、跟踪服务状态待接单、进行中、已完成、已评价。服务人员管理: 管理护工、医生、志愿者等信息并关联其技能、排班与绩效。健康数据管理: 记录并图表化展示老人的血压、血糖、心率等健康指标。统计分析报表: 生成服务量、满意度、收入等各类统计报表。2. 小程序端核心功能服务浏览与预约: 查看服务项目详情并在线预约。我的订单: 查看历史订单和当前订单状态。健康数据查看: 查看绑定老人的健康数据趋势图。消息通知: 接收服务提醒、系统公告等。紧急呼叫: 一键触发紧急联系人或社区中心。四、 数据库核心表设计部分-- 老人信息表 CREATE TABLE elderly_info ( id bigint NOT NULL AUTO_INCREMENT COMMENT 主键, name varchar(50) NOT NULL COMMENT 姓名, gender tinyint DEFAULT NULL COMMENT 性别 (0:女, 1:男), id_card varchar(20) DEFAULT NULL COMMENT 身份证号, phone varchar(20) DEFAULT NULL COMMENT 联系电话, address varchar(200) DEFAULT NULL COMMENT 居住地址, health_status varchar(500) DEFAULT NULL COMMENT 健康状况描述, emergency_contact varchar(50) DEFAULT NULL COMMENT 紧急联系人, emergency_phone varchar(20) DEFAULT NULL COMMENT 紧急联系电话, avatar_url varchar(500) DEFAULT NULL COMMENT 头像URL, create_time datetime DEFAULT CURRENT_TIMESTAMP, update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_id_card (id_card) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT老人信息表; -- 服务项目表 CREATE TABLE service_item ( id bigint NOT NULL AUTO_INCREMENT, service_name varchar(100) NOT NULL COMMENT 服务名称, description text COMMENT 服务描述, price decimal(10,2) NOT NULL COMMENT 单价, duration int DEFAULT NULL COMMENT 预计时长(分钟), category_id bigint DEFAULT NULL COMMENT 分类ID, status tinyint DEFAULT 1 COMMENT 状态 (0:下架, 1:上架), PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT服务项目表; -- 服务订单表 (核心业务表) CREATE TABLE service_order ( id varchar(32) NOT NULL COMMENT 订单号, elderly_id bigint NOT NULL COMMENT 老人ID, service_id bigint NOT NULL COMMENT 服务项目ID, order_time datetime NOT NULL COMMENT 预约时间, address varchar(200) NOT NULL COMMENT 服务地址, remark varchar(500) DEFAULT NULL COMMENT 备注, status tinyint NOT NULL DEFAULT 0 COMMENT 状态 (0:待接单, 1:已派单, 2:服务中, 3:已完成, 4:已取消, 5:已评价), worker_id bigint DEFAULT NULL COMMENT 接单/派单服务人员ID, actual_start_time datetime DEFAULT NULL COMMENT 实际开始时间, actual_end_time datetime DEFAULT NULL COMMENT 实际结束时间, customer_rating int DEFAULT NULL COMMENT 客户评分(1-5), customer_comment varchar(500) DEFAULT NULL COMMENT 客户评价, create_time datetime DEFAULT CURRENT_TIMESTAMP, update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY idx_elderly_id (elderly_id), KEY idx_worker_id (worker_id), KEY idx_status (status) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT服务订单表;五、 核心代码示例 (Spring Boot MyBatis-Plus)1. 统一响应封装 (Result.java)import lombok.Data; import java.io.Serializable; Data public class ResultT implements Serializable { private Integer code; private String msg; private T data; public static T ResultT success(T data) { ResultT result new Result(); result.setCode(200); result.setMsg(success); result.setData(data); return result; } public static T ResultT success(String msg, T data) { ResultT result new Result(); result.setCode(200); result.setMsg(msg); result.setData(data); return result; } public static T ResultT error(Integer code, String msg) { ResultT result new Result(); result.setCode(code); result.setMsg(msg); return result; } }2. 服务订单状态枚举 (OrderStatusEnum.java)import lombok.Getter; Getter public enum OrderStatusEnum { PENDING(0, 待接单), ASSIGNED(1, 已派单), IN_PROGRESS(2, 服务中), COMPLETED(3, 已完成), CANCELLED(4, 已取消), EVALUATED(5, 已评价); private final Integer code; private final String desc; OrderStatusEnum(Integer code, String desc) { this.code code; this.desc desc; } public static OrderStatusEnum getByCode(Integer code) { for (OrderStatusEnum status : values()) { if (status.getCode().equals(code)) { return status; } } return null; } }3. 服务订单Controller (ServiceOrderController.java)import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; RestController RequestMapping(/api/order) Api(tags 服务订单管理) RequiredArgsConstructor public class ServiceOrderController { private final ServiceOrderService orderService; PostMapping(/create) ApiOperation(创建服务订单) public ResultString createOrder(RequestBody Valid OrderCreateDTO dto) { String orderId orderService.createOrder(dto); return Result.success(订单创建成功, orderId); } PostMapping(/assign/{orderId}) ApiOperation(派单给服务人员) public ResultVoid assignOrder(PathVariable String orderId, RequestParam Long workerId) { orderService.assignOrder(orderId, workerId); return Result.success(派单成功); } PostMapping(/start/{orderId}) ApiOperation(开始服务) public ResultVoid startOrder(PathVariable String orderId) { orderService.updateOrderStatus(orderId, OrderStatusEnum.IN_PROGRESS); return Result.success(服务已开始); } PostMapping(/complete/{orderId}) ApiOperation(完成服务) public ResultVoid completeOrder(PathVariable String orderId) { orderService.completeOrder(orderId); return Result.success(服务已完成); } GetMapping(/page) ApiOperation(分页查询订单) public ResultPageServiceOrderVO pageOrder(OrderQueryDTO queryDTO, RequestParam(defaultValue 1) Integer pageNum, RequestParam(defaultValue 10) Integer pageSize) { PageServiceOrderVO page orderService.pageOrder(queryDTO, pageNum, pageSize); return Result.success(page); } }4. 服务订单Service核心逻辑 (ServiceOrderServiceImpl.java 片段)import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; Service Slf4j RequiredArgsConstructor public class ServiceOrderServiceImpl extends ServiceImplServiceOrderMapper, ServiceOrder implements ServiceOrderService { private final RabbitTemplate rabbitTemplate; Override Transactional(rollbackFor Exception.class) public String createOrder(OrderCreateDTO dto) { // 1. 参数校验如老人是否存在、服务项目是否上架等 // 2. 生成订单号 (例如SO202508120001) String orderId SO LocalDateTime.now().format(DateTimeFormatter.ofPattern(yyyyMMdd)) String.format(%04d, redisTemplate.opsForValue().increment(order:seq, 1)); // 3. 构建订单实体并保存 ServiceOrder order new ServiceOrder(); order.setId(orderId); order.setElderlyId(dto.getElderlyId()); order.setServiceId(dto.getServiceId()); order.setOrderTime(dto.getOrderTime()); order.setAddress(dto.getAddress()); order.setRemark(dto.getRemark()); order.setStatus(OrderStatusEnum.PENDING.getCode()); this.save(order); // 4. 发送消息到MQ通知有新的待接单订单可用于推送通知给附近服务人员 rabbitTemplate.convertAndSend(order.exchange, order.new, orderId); log.info(创建订单成功订单号: {}, orderId); return orderId; } Override Transactional(rollbackFor Exception.class) public void assignOrder(String orderId, Long workerId) { ServiceOrder order this.getById(orderId); if (order null) { throw new BusinessException(订单不存在); } if (!OrderStatusEnum.PENDING.getCode().equals(order.getStatus())) { throw new BusinessException(当前订单状态不允许派单); } // 更新订单状态和服务人员 order.setStatus(OrderStatusEnum.ASSIGNED.getCode()); order.setWorkerId(workerId); this.updateById(order); // 发送派单成功通知给服务人员小程序 // ... 通知逻辑 } }六、 总结与展望本文介绍了基于SpringBoot的社区养老服务管理系统的技术选型、核心功能设计、数据库表结构以及部分关键代码实现。该系统通过信息化手段能够有效整合社区养老资源提升服务效率与管理水平。未来可考虑引入物联网设备如智能手环自动采集健康数据利用大数据分析进行健康风险预警并集成AI语音助手方便老人操作从而构建更加智慧、便捷、安全的社区养老环境。
返回列表