垃圾上门回收小程序
这是一个完整的垃圾上门回收服务平台,包含微信小程序端。系统实现了垃圾分类回收预约、订单管理、地址管理、系统配置等核心功能,采用Egg.js后端框架,适合作为微信小程序全栈开发学习项目或计算机设计参考。
项目封面

项目说明
垃圾上门回收小程序
项目简介
这是一个完整的垃圾上门回收服务平台,包含微信小程序端。系统实现了垃圾分类回收预约、订单管理、地址管理、系统配置等核心功能,采用Egg.js后端框架,适合作为微信小程序全栈开发学习项目或计算机设计参考。
技术栈
后端技术
| 技术 | 版本/说明 |
|---|---|
| 运行环境 | Node.js 10.0+ |
| Web框架 | Egg.js 2.15.1 |
| 数据库 | MySQL 5.7+ |
| 数据库插件 | egg-mysql |
| 身份认证 | egg-jwt |
| 跨域处理 | egg-cors |
| 表单验证 | egg-validate |
| 文件处理 | egg-multipart |
| Excel处理 | exceljs / xlsx |
| 邮件发送 | nodemailer |
小程序端技术
| 技术 | 版本/说明 |
|---|---|
| 开发框架 | 微信小程序原生框架 |
| 开发语言 | JavaScript (ES6+) |
| 样式语言 | WXSS |
| 模板语言 | WXML |
| UI组件库 | TDesign Miniprogram |
| 日期处理 | Day.js |
项目特点
- 前后端分离:后端提供RESTful API,小程序独立开发
- 完整业务流程:涵盖预约下单、接单、完成、取消全流程
- 多角色支持:普通用户、管理员角色区分
- 灵活配置:支持营业时间、回收价格等系统配置
- 地址管理:支持多地址管理和默认地址设置
- 微信登录:支持微信授权登录
功能模块
小程序端功能
1. 首页模块 (pages/index)
- 轮播图展示
- 垃圾分类导航
- 回收价格展示
- 营业状态显示
- 快速预约入口
2. 预约下单模块 (pages/form)
- 选择垃圾分类
- 选择上门时间
- 选择收货地址
- 填写预估重量
- 添加备注说明
- 提交预约订单
3. 订单管理模块
- 订单列表 (
pages/orderList) - 订单详情 (
pages/orderDetail) - 订单状态查看
- 取消订单
4. 地址管理模块
- 地址列表 (
pages/addressList) - 新增/编辑地址 (
pages/addressAddUpdate) - 设置默认地址
- 省市区选择
5. 垃圾分类知识 (pages/sortKnowledgeInfo)
- 分类知识介绍
- 回收指南
6. 个人中心模块 (pages/my)
- 用户信息展示
- 我的订单入口
- 地址管理入口
- 问题反馈 (
pages/question) - 关于我们 (
pages/about) - 用户信息编辑 (
pages/userInfo)
7. 管理员功能 (pages/admin)
- 订单管理
- 接单/拒单
- 完成订单
- 用户管理
- 系统配置
8. 授权登录 (pages/auth)
- 微信授权登录
- 手机号获取
项目结构
lajihuishou/
├── egg/ # 后端服务(Egg.js + MySQL)
│ ├── app/
│ │ ├── controller/ # 控制器
│ │ │ ├── address.js # 地址接口
│ │ │ ├── order.js # 订单接口
│ │ │ ├── setting.js # 系统配置接口
│ │ │ └── user.js # 用户接口
│ │ ├── middleware/ # 中间件
│ │ │ └── jwt.js # JWT验证
│ │ ├── public/ # 静态资源
│ │ │ └── images/ # 上传图片存储
│ │ ├── service/ # 业务逻辑层
│ │ │ ├── address.js # 地址服务
│ │ │ ├── order.js # 订单服务
│ │ │ ├── setting.js # 配置服务
│ │ │ └── user.js # 用户服务
│ │ └── router.js # 路由配置
│ ├── config/
│ │ ├── config.default.js # 默认配置
│ │ └── plugin.js # 插件配置
│ ├── logs/ # 日志目录
│ ├── package.json
│ └── README.md
│
├── min/ # 微信小程序
│ ├── components/ # 自定义组件
│ ├── imgs/ # 图片资源
│ │ ├── index/ # 首页图片
│ │ ├── lajiclass/ # 垃圾分类图片
│ │ ├── my/ # 个人中心图片
│ │ └── tabbar/ # TabBar图标
│ ├── miniprogram_npm/ # npm包
│ │ ├── dayjs/ # 日期处理
│ │ └── tdesign-miniprogram/ # TDesign组件库
│ ├── pages/ # 页面目录
│ │ ├── index/ # 首页
│ │ ├── form/ # 预约表单
│ │ ├── orderList/ # 订单列表
│ │ ├── orderDetail/ # 订单详情
│ │ ├── addressList/ # 地址列表
│ │ ├── addressAddUpdate/ # 地址编辑
│ │ ├── sortKnowledgeInfo/ # 分类知识
│ │ ├── my/ # 个人中心
│ │ ├── userInfo/ # 用户信息
│ │ ├── question/ # 问题反馈
│ │ ├── about/ # 关于我们
│ │ ├── admin/ # 管理员页面
│ │ └── auth/ # 授权登录
│ ├── services/
│ │ ├── api.js # API接口封装
│ │ └── request.js # 请求封装
│ ├── style/
│ │ └── wxParse.wxss # 富文本样式
│ ├── utils/
│ │ ├── feedback.js # 反馈工具
│ │ ├── index.js # 工具函数
│ │ └── mock.js # 模拟数据
│ ├── app.js # 小程序入口
│ ├── app.json # 小程序配置
│ ├── app.wxss # 全局样式
│ └── project.config.json # 项目配置
│
├── lajihuishou.sql # 数据库SQL文件
└── 垃圾上门回收小程序.xmind # 项目思维导图
数据模型
用户表 (users)
{
id: int, // 用户ID
nickname: varchar(255), // 昵称
username: varchar(255), // 姓名
avatar: varchar(1000), // 头像
openId: varchar(100), // 微信OpenID
origin: varchar(100), // 来源
phone: varchar(100), // 手机号
is_admin: int, // 是否为管理员 (99 root, 32 二级管理员)
is_user: int, // 是否可以访问用户列表
is_order: int, // 是否可以访问订单列表
is_setting: int, // 是否可以访问系统配置
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
订单表 (orders)
{
id: int, // 订单ID
user_id: int, // 用户ID
cate_title: varchar(100), // 分类标题
address: varchar(1000), // 地址
start_time: varchar(1000), // 上门时间
weight: varchar(1000), // 重量
phone: varchar(100), // 联系电话
username: varchar(100), // 联系人
desc: varchar(1000), // 描述
status: int, // 状态 (0已提交 1已接单 2已完成 3已取消 4已拒绝)
cover_list: varchar(1000), // 记录图
order_no: varchar(100), // 订单编号
reason: varchar(1000), // 拒绝原因
opt_id: int, // 操作人
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
地址表 (address)
{
id: int, // 地址ID
user_id: int, // 用户ID
username: varchar(100), // 收货人
phone: varchar(100), // 联系电话
province: varchar(100), // 省份
city: varchar(100), // 城市
district: varchar(100), // 区县
address: varchar(1000), // 详细地址
address_detail: varchar(100), // 门牌号
is_default: int, // 是否默认 (0否 1是)
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
系统配置表 (setting)
{
id: int, // 配置ID
banner_list: longtext, // 轮播图列表
open_time_start: varchar(100), // 营业开始时间
open_time_end: varchar(100), // 营业结束时间
price_list: longtext, // 价格列表(JSON格式)
is_open: int, // 是否营业
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
Token表 (token)
{
id: int, // Token ID
appId: varchar(50), // 小程序AppID
remark: varchar(2000), // Access Token
exp: bigint, // 过期时间
create_time: timestamp, // 创建时间
update_time: timestamp // 更新时间
}
订单状态说明
| 状态码 | 状态名称 | 说明 |
|---|---|---|
| 0 | 已提交 | 用户提交预约,等待接单 |
| 1 | 已接单 | 管理员已接单,等待上门 |
| 2 | 已完成 | 回收完成 |
| 3 | 已取消 | 用户取消订单 |
| 4 | 已拒绝 | 管理员拒绝订单 |
垃圾分类
| 分类名称 | 回收价格(元/kg) |
|---|---|
| 纸类 | 1 |
| 金属 | 2 |
| 塑料 | 3 |
运行环境要求
后端环境
- Node.js 10.0+
- MySQL 5.7+
- npm 或 yarn
小程序端
- 微信开发者工具(最新稳定版)
- 基础库版本 2.19.0+
- 需要有效的AppID
快速开始
1. 数据库配置
- 创建MySQL数据库
CREATE DATABASE lajihuishou CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- 导入数据库文件
mysql -u root -p lajihuishou < lajihuishou.sql
- 修改数据库配置
编辑
egg/config/config.default.js:
config.mysql = {
client: {
host: 'localhost',
port: '3306',
user: 'root',
password: 'root', // 修改为你的密码
database: 'lajihuishou',
},
};
2. 启动后端服务
# 进入后端目录
cd egg
# 安装依赖
npm install
# 启动服务(开发模式)
npm run dev
后端服务默认运行在 http://localhost:8392
3. 运行小程序
- 打开微信开发者工具
- 选择"导入项目"
- 选择
min目录 - 填入AppID(可使用测试号)
- 点击"导入"
4. 配置小程序API地址
编辑 min/services/request.js,修改API基础地址:
const baseUrl = 'http://localhost:8392'; // 修改为你的后端地址
5. 构建npm
在微信开发者工具中:
- 点击"工具" -> "构建npm"
- 等待构建完成
默认账号
小程序端
- 支持微信授权登录
- 管理员权限需在数据库中设置
is_admin = 99或is_admin = 32
管理员权限说明
| 字段 | 值 | 说明 |
|---|---|---|
| is_admin | 99 | 超级管理员 |
| is_admin | 32 | 二级管理员 |
| is_admin | 0 | 普通用户 |
| is_user | 1 | 可访问用户列表 |
| is_order | 1 | 可访问订单列表 |
| is_setting | 1 | 可访问系统配置 |
界面预览
项目包含思维导图文件:
垃圾上门回收小程序.xmind- 项目功能结构图
扩展建议
如需进一步完善项目,可考虑以下扩展:
- 地图定位:集成地图API,显示回收员位置
- 消息推送:订单状态变更推送通知
- 支付功能:集成微信支付,支持在线结算
- 积分系统:回收积分累计和兑换
- 数据统计:回收数据分析和报表
- 回收员端:开发回收员专用小程序
- 环保知识:添加更多垃圾分类知识
- 预约时段:更精细的时间段选择
注意事项
- 本项目为学习演示项目,部分数据为模拟数据
- 生产环境部署需要配置HTTPS
- 小程序上线需要完成微信认证
- 建议定期备份数据库数据
常见问题
Q: 数据库连接失败?
A: 检查MySQL服务是否启动,数据库配置是否正确
Q: 小程序无法请求后端?
A: 检查request.js中的baseUrl配置,开发时需在微信开发者工具中关闭"不校验合法域名"
Q: 管理员功能无法访问?
A: 确认数据库中users表对应用户的is_admin字段值为99或32
Q: TDesign组件不显示?
A: 确保已执行"构建npm"操作
许可证
本项目仅供学习交流使用,请勿用于商业用途。
技术分类
包含内容
适用人群
学习参考与二次开发
关于 AI源码
AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
相关推荐
查看全部 →
本地生活小程序
本项目是一个基于微信小程序原生开发的本地生活服务平台,提供餐厅推荐、招聘信息、生活服务分类、近期活动展示等功能,是一个典型的O2O本地生活服务类小程序。

电影购票网站
基于原生 HTML、CSS、JavaScript 实现的 PC 端电影在线购票演示网站。数据使用本地 Mock 模拟,订单与座位占用状态通过浏览器 持久化,无需后端服务,直接用浏览器打开 即可运行。

家乡介绍小程序
这是一个家乡文化展示与旅游推荐的微信小程序,采用纯前端实现,使用本地Mock数据模拟后端接口。项目以广东省惠州市惠东县为示例,完整实现了景点浏览、美食推荐、乡镇介绍、历史回顾、收藏管理等核心功能,适合作为微信小程序开发学习项目或计算机设计参考。

乡村振兴三农小程序
这是一个乡村振兴与三农服务的微信小程序,采用纯前端实现,使用本地Mock数据模拟后端接口。项目完整实现了政策解读、农业科技、数字乡村、乡村旅游、农产品展销、乡风文明、人才振兴、基层党建、经验分享等核心功能模块,适合作为微信小程序开发学习项目或计算机设计参考。

图书借阅小程序
这是一个图书借阅管理的微信小程序,采用纯前端实现,使用本地Mock数据模拟后端接口。项目完整实现了图书浏览、分类筛选、搜索查询、收藏管理、借阅下单、订单管理等核心功能,适合作为微信小程序开发学习项目或计算机设计参考。

物业管理系统
这是一个完整的智慧社区物业管理平台,包含H5移动端和PC管理后台。系统实现了通知公告、社区活动、访客管理、报修服务、失物招领、投诉建议、二手市场、分享墙、在线聊天等核心功能,采用前后端分离架构,适合作为Vue全栈开发学习项目或计算机设计参考。