# carClub **Repository Path**: geds/carClub ## Basic Information - **Project Name**: carClub - **Description**: carClub - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-22 - **Last Updated**: 2026-05-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 车友会小程序 > 专业的汽车维修服务平台 - 连接车主与修理厂的桥梁 ## 项目简介 车友会是一个微信小程序平台,为车主和修理厂提供便捷的维修服务对接。项目采用 uni-app 多端框架开发,支持微信小程序、支付宝小程序、H5 等多端部署。 ## 核心功能 ### 车主端 - 🔧 **维修预约** - 查看修理厂列表,在线预约维修服务 - 🤖 **AI 故障诊断** - 智能分析车辆故障,提供专业建议 - 📝 **保养记录** - 记录车辆配件更换和保养历史 - 🎫 **优惠券** - 购买和使用维修优惠券 - 💬 **车友圈** - 分享用车体验,交流汽车知识 - 🚗 **二手车发布** - 发布车辆信息,接收修理厂收购报价 ### 修理厂端 - 🏪 **店铺信息** - 维护店铺基本信息和擅长车型 - 🔧 **维修管理** - 更新维修进度和状态 - ⚙️ **配件记录** - 记录配件更换并上传图片 - 🎫 **优惠券发放** - 创建和发放优惠券 - ⏰ **保养提醒** - 设置和发送保养提醒 - 🚙 **二手车收购** - 浏览车源,发起报价,完成交易 ## 技术栈 ### 前端技术栈 | 技术 | 版本 | 说明 | |------|------|------| | **框架** | uni-app 3.0 | 跨端应用开发框架 | | **核心** | Vue 3.4.21 | 渐进式 JavaScript 框架 | | **状态管理** | Pinia | Vue 3 官方状态管理库 | | **构建工具** | Vite 5.2.8 | 下一代前端构建工具 | | **样式** | SCSS | CSS 预处理器 | | **UI 组件** | uni-ui | uni-app 官方 UI 组件库 | | **多端支持** | 微信小程序、支付宝小程序、H5、App | 一次开发,多端运行 | ### 后端技术栈 | 技术 | 版本 | 说明 | |------|------|------| | **运行环境** | Node.js 18+ | JavaScript 运行时 | | **框架** | Express 4.x | Node.js Web 应用框架 | | **数据库** | SQLite 3.x | 轻量级关系型数据库 | | **ORM** | Sequelize 6.x | Node.js ORM 框架 | | **认证** | JWT (jsonwebtoken) | JSON Web Token 认证 | | **文件上传** | Multer | Node.js 中间件 | | **密码加密** | bcryptjs | 密码哈希库 | ### 开发工具 | 工具 | 用途 | |------|------| | HBuilderX | uni-app 集成开发环境(推荐) | | 微信开发者工具 | 小程序预览、调试和上传 | | VS Code | 代码编辑器 | | pnpm | 包管理器 | | Git | 版本控制 | ### AI 服务 | 服务 | 用途 | |------|------| | 第三方大模型 API | 车辆故障诊断、价格评估 | ## 快速开始 ### 1. 环境要求 - Node.js 18+ (推荐 18.x LTS) - pnpm 8+ - Git - HBuilderX (可选,用于小程序开发) - 微信开发者工具 (必须,用于预览和上传) ### 2. 克隆项目 ```bash git clone https://gitee.com/geds/carClub.git cd carClub ``` ### 3. 安装依赖 ```bash # 安装根目录依赖 pnpm install # 安装前端依赖 pnpm install:app # 安装后端依赖 pnpm install:server # 或一键安装所有依赖 ./build.sh install:all ``` ### 4. 配置小程序 在 `car-app/src/manifest.json` 中配置小程序 AppID: ```json { "mp-weixin": { "appid": "your-appid-here" } } ``` ### 5. 启动服务 **终端 1 - 启动后端服务:** ```bash pnpm server # 或 cd server && pnpm dev ``` 后端服务默认运行在 `http://localhost:3000` **终端 2 - 启动小程序开发:** 方式一:使用 uni-app CLI ```bash pnpm dev # 或 cd car-app && pnpm dev:weixin ``` 方式二:使用 HBuilderX(推荐) 1. 打开 HBuilderX 2. 文件 → 打开目录 → 选择 `car-app` 目录 3. 点击"运行" → "运行到小程序模拟器" → "微信开发者工具" ### 6. 测试 API ```bash node test-api.js ``` ## 项目结构 ``` carClub/ ├── car-app/ # 小程序前端 │ ├── src/ │ │ ├── pages/ # 页面 │ │ │ ├── common/ # 公共页面 (登录、首页) │ │ │ ├── user/ # 用户端页面 │ │ │ └── repair/ # 修理厂端页面 │ │ ├── components/ # 组件 │ │ ├── utils/ # 工具函数 │ │ ├── store/ # 状态管理 │ │ └── static/ # 静态资源 │ ├── manifest.json # 小程序配置 │ ├── pages.json # 页面路由配置 │ ├── App.vue # 应用入口 │ ├── main.js # 入口文件 │ ├── vite.config.js # Vite 配置 │ └── package.json ├── server/ # 后端服务 │ ├── src/ │ │ ├── routes/ # API 路由 │ │ ├── models/ # 数据模型 │ │ └── middleware/ # 中间件 │ ├── database/ # SQLite 数据库 │ ├── uploads/ # 文件上传目录 │ └── package.json ├── openspec/ # 需求文档 │ └── specs/ ├── package.json # 根目录配置 ├── build.sh # 构建脚本 ├── test-api.js # API 测试脚本 ├── DEPLOY.md # 部署手册 └── DEVELOPMENT.md # 开发文档 ``` ## API 接口 ### 认证相关 - `POST /api/auth/code` - 发送验证码 - `POST /api/auth/login` - 登录 - `POST /api/auth/role` - 设置角色 - `GET /api/auth/userinfo` - 获取用户信息 ### 修理厂相关 - `GET /api/shops` - 获取修理厂列表 - `GET /api/shops/:id` - 获取修理厂详情 - `PUT /api/shops/:id` - 更新修理厂信息 ### 预约相关 - `GET /api/reservations` - 获取预约列表 - `POST /api/reservations` - 创建预约 - `PUT /api/reservations/:id` - 更新预约 ### AI 相关 - `POST /api/ai/diagnose` - AI 故障诊断 - `POST /api/ai/price` - AI 车辆估价 ### 优惠券相关 - `GET /api/coupons` - 获取优惠券列表 - `POST /api/coupons/purchase` - 购买优惠券 - `POST /api/coupons/verify` - 核销优惠券 - `GET /api/coupons/my` - 我的优惠券 ### 社区相关 - `GET /api/community` - 获取动态列表 - `POST /api/community` - 发布动态 ### 二手车相关 - `GET /api/used-cars` - 获取二手车列表 - `POST /api/used-cars` - 发布二手车 - `PUT /api/used-cars/:id` - 更新二手车信息 ### 保养记录相关 - `GET /api/maintenance` - 获取保养记录 - `POST /api/maintenance` - 创建保养记录 ### 文件上传 - `POST /api/upload` - 上传图片 ## 数据库 项目使用 SQLite 数据库,数据库文件位于 `server/database/car.db`。 主要数据表: - `users` - 用户表 - `repair_shops` - 修理厂表 - `reservations` - 预约表 - `coupons` - 优惠券表 - `user_coupons` - 用户优惠券表 - `used_cars` - 二手车表 - `maintenance_records` - 保养记录表 - `posts` - 社区动态表 - `reminders` - 保养提醒表 - `used_car_quotes` - 二手车报价表 ## 开发说明 ### 角色切换 小程序支持车主和修理厂两种角色,通过登录账号的 `role` 字段区分不同功能菜单的展示。 ### 统一应用 车主端和修理厂端是**同一个微信小程序**,通过登录账号的 `role` 字段区分不同功能。 ### 文件上传 图片文件存储在 `server/uploads` 目录,通过 `/api/upload` 接口上传。 ## 打包发布 详见 [DEPLOY.md](DEPLOY.md) - 完整的小程序打包发布手册 ```bash # 微信小程序 pnpm build # 支付宝小程序 pnpm --filter car-app build:alipay # H5 pnpm --filter car-app build:h5 # App pnpm --filter car-app build:app ``` ### 上传到微信平台 ```bash # 使用 CLI 上传(需要配置私钥) pnpm upload ``` 或在微信开发者工具中直接上传。 ## 构建脚本 项目提供了便捷的构建脚本 `build.sh`: ```bash # 安装所有依赖 ./build.sh install:all # 启动后端服务 ./build.sh server # 启动小程序开发 ./build.sh dev # 打包微信小程序 ./build.sh weixin ``` ## 常见问题 ### Q: CLI 打包报错 "isInSSRComponentSetup is not exported" A: 这是 uni-app 与 Vue 版本的兼容性问题。推荐使用 HBuilderX 进行打包,或确保 Vue 相关依赖版本一致。 ### Q: 如何在多个环境间切换? A: 在 `manifest.json` 中配置不同的 AppID,或使用环境变量。 ### Q: 上传失败怎么办? A: 检查以下几点: - 是否安装了微信开发者工具 - AppID 是否正确 - 是否登录了微信公众平台 - 网络是否正常 ## 开发团队 如有问题或建议,欢迎提交 Issue。 ## 许可证 MIT License