# alliance-admin **Repository Path**: Hubery-Yong/alliance-admin ## Basic Information - **Project Name**: alliance-admin - **Description**: 微信小程序联盟后台系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-24 - **Last Updated**: 2026-01-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 微信小程序联盟后台系统 基于 NestJS 开发的微信小程序联盟后台系统,支持京东和美团联盟商品展示、业主信息管理、订单记录等功能。 ## 功能特性 1. **微信登录注册** - 使用微信小程序的 `wx.login` 和 `open-type="getPhoneNumber"` 实现登录注册 2. **联盟商品展示** - 拉取京东和美团联盟的商品数据 3. **业主信息管理** - 用户可以录入和管理业主信息(姓名、手机号、房屋信息) 4. **订单记录** - 记录用户下单信息,自动计算积分(每100元对应100积分) 5. **反馈功能** - 用户反馈接口 ## 技术栈 - **框架**: NestJS 10.x - **数据库**: MySQL (使用 TypeORM) - **认证**: JWT - **验证**: class-validator, class-transformer ## 快速开始 ### 1. 安装依赖 ```bash npm install ``` ### 2. 配置环境变量 复制 `.env.example` 为 `.env` 并填写配置: ```bash cp .env.example .env ``` 编辑 `.env` 文件,配置以下信息: ```env # 数据库配置 DB_HOST=localhost DB_PORT=3306 DB_USERNAME=root DB_PASSWORD=your_password DB_DATABASE=alliance_db # JWT配置 JWT_SECRET=your_jwt_secret_key_here JWT_EXPIRES_IN=7d # 微信小程序配置 WECHAT_APPID=your_wechat_appid WECHAT_SECRET=your_wechat_secret # 京东联盟配置(需要申请) JD_APP_KEY=your_jd_app_key JD_APP_SECRET=your_jd_app_secret # 美团联盟配置(需要申请) MEITUAN_APP_KEY=your_meituan_app_key MEITUAN_APP_SECRET=your_meituan_app_secret # 服务器端口 PORT=3000 ``` ### 3. 创建数据库 在 MySQL 中创建数据库: ```sql CREATE DATABASE alliance_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ### 4. 启动应用 开发模式: 启动mysql ```bash brew services start mysql 暂停mysql ```bash brew services start mysql ``` ```bash npm run start:dev ``` 生产模式: ```bash npm run build npm run start:prod ``` 应用将在 `http://localhost:3000` 启动。 ## API 接口文档 所有接口前缀为 `/api` ### 认证接口 #### 1. 微信登录 - **POST** `/api/auth/login` - **公开接口**(无需登录) - **请求体**: ```json { "code": "微信小程序wx.login返回的code" } ``` - **响应**: ```json { "needRegister": false, "token": "JWT token", "user": { "id": 1, "openid": "xxx", "phone": "13800138000", "nickname": "用户昵称", "avatar": "头像URL", "points": 100 } } ``` #### 2. 微信注册 - **POST** `/api/auth/register` - **公开接口**(无需登录) - **请求体**: ```json { "code": "微信小程序wx.login返回的code", "encryptedData": "加密数据", "iv": "初始向量", "nickname": "用户昵称(可选)", "avatar": "头像URL(可选)" } ``` #### 3. 获取用户信息 - **GET** `/api/auth/user` - **需要登录** #### 4. 更新用户信息 - **PUT** `/api/auth/user` - **需要登录** - **请求体**: ```json { "nickname": "新昵称(可选)", "avatar": "新头像URL(可选)" } ``` ### 联盟商品接口 #### 获取商品列表 - **GET** `/api/alliance/products` - **公开接口**(无需登录) - **查询参数**: - `page`: 页码(默认1) - `pageSize`: 每页数量(默认20) - `source`: 来源(可选:`jd` | `meituan`) ### 业主信息接口 所有接口都需要登录认证 #### 1. 创建业主信息 - **POST** `/api/owner` - **请求体**: ```json { "name": "业主姓名", "phone": "手机号", "houseInfo": "房屋信息(可选)" } ``` #### 2. 获取业主信息列表 - **GET** `/api/owner` #### 3. 获取单个业主信息 - **GET** `/api/owner/:id` #### 4. 更新业主信息 - **PATCH** `/api/owner/:id` - **请求体**: ```json { "name": "新姓名(可选)", "phone": "新手机号(可选)", "houseInfo": "新房屋信息(可选)" } ``` #### 5. 删除业主信息 - **DELETE** `/api/owner/:id` ### 订单接口 所有接口都需要登录认证 #### 1. 创建订单记录 - **POST** `/api/order` - **请求体**: ```json { "source": "jd" | "meituan", "orderNo": "订单号", "amount": 100.00, "productName": "商品名称(可选)", "productUrl": "商品链接(可选)", "allianceOrderNo": "联盟订单号(可选)" } ``` #### 2. 获取订单列表 - **GET** `/api/order` - **查询参数**: - `page`: 页码(默认1) - `pageSize`: 每页数量(默认20) #### 3. 获取订单详情 - **GET** `/api/order/:id` #### 4. 获取总积分 - **GET** `/api/order/points` ### 反馈接口 所有接口都需要登录认证 #### 1. 创建反馈 - **POST** `/api/feedback` - **请求体**: ```json { "content": "反馈内容", "contact": "联系方式(可选)" } ``` #### 2. 获取反馈列表 - **GET** `/api/feedback` - **查询参数**: - `page`: 页码(默认1) - `pageSize`: 每页数量(默认20) #### 3. 获取反馈详情 - **GET** `/api/feedback/:id` ## 认证说明 除了以下接口,其他所有接口都需要在请求头中携带 JWT Token: ``` Authorization: Bearer ``` 公开接口(无需登录): - `POST /api/auth/login` - `POST /api/auth/register` - `GET /api/alliance/products` ## 数据库表结构 - **users**: 用户表 - **owners**: 业主信息表 - **orders**: 订单记录表 - **feedbacks**: 反馈表 ## 注意事项 1. **生产环境配置**: - 将 `synchronize` 设为 `false`,使用 TypeORM migrations - 使用强密码作为 `JWT_SECRET` - 配置 HTTPS 2. **联盟API对接**: - 当前代码中联盟商品接口返回的是模拟数据 - 需要根据京东和美团联盟的实际API文档进行对接 - 在 `src/alliance/alliance.service.ts` 中实现真实的API调用 3. **微信小程序配置**: - 需要在微信公众平台配置服务器域名 - 确保小程序已开通获取手机号权限 ## 开发 ```bash # 开发模式 npm run start:dev # 构建 npm run build # 生产模式 npm run start:prod # 测试 npm run test ``` ## License MIT