以下是基于SpringBoot的阳光馨园小区废品收购管理系统的技术栈、功能设计、数据库及测试设计的详细方案:
技术栈设计
- 后端框架:SpringBoot 2.7.x + MyBatis-Plus
- 前端框架:Vue 3 + Element Plus(或Thymeleaf模板引擎)
- 数据库:MySQL 8.0
- 安全框架:Spring Security + JWT
- 中间件:Redis(缓存)、RabbitMQ(异步通知)
- 工具链:Lombok、Hutool、Swagger 3(API文档)
功能模块设计
用户端(居民/回收员)
- 废品分类提交:支持图文上传废品信息,自动计算预估价格(基于后台配置的单价表)。
- 预约回收:选择时间段的回收订单生成,状态实时推送(短信/微信模板消息)。
- 积分商城:废品兑换积分,积分兑换生活用品(需对接第三方商品API)。
管理端(物业/管理员)
- 价格动态配置:金属、纸张等废品单价调整,支持历史版本回溯。
- 回收员调度:GIS地图展示回收员实时位置,智能派单算法(基于距离和负载均衡)。
- 数据看板:按日/月统计回收量、收益占比(ECharts可视化)。
数据库设计
核心表结构示例:
-- 废品订单表
CREATE TABLE `recycle_order` (
`id` BIGINT PRIMARY KEY AUTO_INCREMENT,
`user_id` BIGINT COMMENT '居民ID',
`collector_id` BIGINT COMMENT '回收员ID',
`category` ENUM('paper','metal','plastic') NOT NULL,
`weight` DECIMAL(10,2) COMMENT '系统预估重量',
`actual_weight` DECIMAL(10,2) COMMENT '实际称重',
`status` TINYINT DEFAULT 0 COMMENT '0-待接单,1-已完成',
`schedule_time` DATETIME COMMENT '预约时间'
) ENGINE=InnoDB;
-- 价格配置表(支持时间生效范围)
CREATE TABLE `price_config` (
`id` BIGINT PRIMARY KEY,
`category` VARCHAR(20) NOT NULL,
`unit_price` DECIMAL(10,2) COMMENT '元/公斤',
`start_time` DATETIME NOT NULL COMMENT '生效时间'
) ENGINE=InnoDB;
系统测试设计
单元测试
- Service层:Mock数据库操作,验证废品价格计算逻辑(如金属类价格*重量±10%浮动)。
- API测试:使用MockMvc模拟HTTP请求,检查权限拦截是否生效。
集成测试
- 订单流程:从居民提交到回收员完成的完整链路验证,包括状态机转换和消息通知。
- 并发测试:JMeter模拟100用户同时抢单,验证Redis分布式锁有效性。
安全测试
- OWASP ZAP扫描XSS/SQL注入漏洞,特别关注废品描述字段的富文本过滤。
如需完整源码或具体实现细节,可进一步提供模块分解或技术实现要点。