价值观、发展历程和团队信息

- 新增 merchant/apply.html 页面,提供商家入驻申请表单
- 添加 .idea 目录下的配置文件,用于项目管理和开发环境设置
This commit is contained in:
ylweng
2025-08-21 02:41:28 +08:00
commit 1f5f8cc32b
20 changed files with 5112 additions and 0 deletions

475
docs/architecture.md Normal file
View File

@@ -0,0 +1,475 @@
# 结伴客系统架构文档
## 1. 架构图
```
+------------------+ +------------+ +------------------+
| 微信小程序 | | | | |
| (uni-app) | --> | API网关 | --> | 后端服务 |
+------------------+ | | | (Node.js+Express)|
+------------+ | |
+------------------+
|
+-------+-------+
| |
+-------v-----+ +-----v-------+
| MySQL数据库 | | Redis缓存 |
+-------------+ +-------------+
|
+-------v-------+
| RabbitMQ消息队列 |
+-----------------+
+------------------+
| 后台管理系统 |
| (Vue.js 3) |
+------------------+
+------------------+
| 官网系统 |
| (HTML5+Bootstrap) |
+------------------+
```
## 2. 项目结构
```
结伴客项目 (根目录)
├── mini-program // 微信小程序 (uni-app)
│ ├── pages
│ │ ├── user // 用户相关页面
│ │ │ ├── login // 登录页面
│ │ │ ├── register // 注册页面
│ │ │ ├── profile // 个人主页
│ │ │ └── settings // 设置页面
│ │ ├── merchant // 商家相关页面
│ │ │ ├── register // 商家注册
│ │ │ ├── profile // 商家主页
│ │ │ └── dashboard // 商家控制台
│ │ ├── travel // 旅行结伴页面
│ │ │ ├── plan // 旅行计划
│ │ │ ├── search // 搜索结伴
│ │ │ └── activities // 其他活动
│ │ ├── animal // 动物认领页面
│ │ │ ├── list // 动物列表
│ │ │ ├── detail // 动物详情
│ │ │ └── claim // 认领流程
│ │ ├── social // 社交互动页面
│ │ │ ├── messages // 消息聊天
│ │ │ └── feed // 动态分享
│ │ ├── flower // 送花服务页面
│ │ │ ├── products // 鲜花产品
│ │ │ └── orders // 订单管理
│ │ └── promotion // 推广奖励页面
│ │ ├── invite // 邀请推广
│ │ └── rewards // 奖励中心
│ ├── components // 可复用组件
│ │ ├── common // 通用组件
│ │ ├── user // 用户相关组件
│ │ ├── travel // 旅行相关组件
│ │ ├── animal // 动物相关组件
│ │ ├── social // 社交相关组件
│ │ ├── merchant // 商家相关组件
│ │ └── flower // 鲜花相关组件
│ ├── utils // 工具函数
│ │ ├── request // 网络请求封装
│ │ ├── auth // 认证相关工具
│ │ ├── storage // 存储相关工具
│ │ └── helpers // 辅助函数
│ ├── static // 静态资源
│ │ ├── images // 图片资源
│ │ └── styles // 样式文件
│ └── store // 状态管理
│ ├── modules // 模块化状态
│ │ ├── user // 用户状态
│ │ ├── travel // 旅行状态
│ │ ├── animal // 动物状态
│ │ ├── social // 社交状态
│ │ ├── merchant // 商家状态
│ │ ├── flower // 鲜花状态
│ │ └── promotion // 推广状态
│ └── index.js // 状态管理入口
├── admin-system // 后台管理系统 (Vue.js 3 + TypeScript + Ant Design Vue + Pinia)
│ ├── public // 静态资源
│ ├── src
│ │ ├── api // API接口
│ │ │ ├── user // 用户相关接口
│ │ │ ├── merchant // 商家相关接口
│ │ │ ├── travel // 旅行相关接口
│ │ │ ├── animal // 动物相关接口
│ │ │ ├── order // 订单相关接口
│ │ │ ├── promotion // 推广相关接口
│ │ │ └── system // 系统管理接口
│ │ ├── assets // 静态资源
│ │ ├── components // 公共组件
│ │ │ ├── layout // 布局组件
│ │ │ ├── common // 通用组件
│ │ │ ├── user // 用户相关组件
│ │ │ ├── merchant // 商家相关组件
│ │ │ ├── travel // 旅行相关组件
│ │ │ ├── animal // 动物相关组件
│ │ │ ├── order // 订单相关组件
│ │ │ ├── promotion // 推广相关组件
│ │ │ └── dashboard // 仪表板组件
│ │ ├── composables // 组合式函数
│ │ ├── directives // 自定义指令
│ │ ├── layouts // 页面布局
│ │ │ ├── default.vue // 默认布局
│ │ │ ├── auth.vue // 认证布局
│ │ │ └── empty.vue // 空白布局
│ │ ├── locales // 国际化资源
│ │ │ ├── zh-CN.json // 中文语言包
│ │ │ └── en-US.json // 英文语言包
│ │ ├── pages // 页面视图
│ │ │ ├── dashboard // 仪表板页面
│ │ │ ├── user // 用户管理页面
│ │ │ ├── merchant // 商家管理页面
│ │ │ ├── travel // 旅行管理页面
│ │ │ ├── animal // 动物管理页面
│ │ │ ├── order // 订单管理页面
│ │ │ ├── promotion // 推广管理页面
│ │ │ ├── system // 系统管理页面
│ │ │ ├── login.vue // 登录页面
│ │ │ └── register.vue // 注册页面
│ │ ├── plugins // 插件
│ │ ├── router // 路由配置
│ │ │ ├── modules // 模块路由
│ │ │ │ ├── user.ts // 用户路由
│ │ │ │ ├── merchant.ts // 商家路由
│ │ │ │ ├── travel.ts // 旅行路由
│ │ │ │ ├── animal.ts // 动物路由
│ │ │ │ ├── order.ts // 订单路由
│ │ │ │ ├── promotion.ts // 推广路由
│ │ │ │ └── system.ts // 系统路由
│ │ │ └── index.ts // 路由入口
│ │ ├── stores // 状态管理
│ │ │ ├── modules // 模块状态
│ │ │ │ ├── user.ts // 用户状态
│ │ │ │ ├── merchant.ts // 商家状态
│ │ │ │ ├── travel.ts // 旅行状态
│ │ │ │ ├── animal.ts // 动物状态
│ │ │ │ ├── order.ts // 订单状态
│ │ │ │ ├── promotion.ts // 推广状态
│ │ │ │ └── system.ts // 系统状态
│ │ │ └── index.ts // 状态管理入口
│ │ ├── styles // 样式文件
│ │ ├── types // TypeScript类型定义
│ │ ├── utils // 工具函数
│ │ │ ├── request.ts // 请求封装
│ │ │ ├── auth.ts // 认证工具
│ │ │ ├── storage.ts // 存储工具
│ │ │ ├── format.ts // 格式化工具
│ │ │ └── validate.ts // 验证工具
│ │ └── App.vue // 根组件
│ │ └── main.ts // 入口文件
│ ├── tests // 测试目录
│ ├── .env // 环境配置
│ ├── .env.development // 开发环境配置
│ ├── .env.production // 生产环境配置
│ ├── index.html // HTML模板
│ ├── tsconfig.json // TypeScript配置
│ ├── vite.config.ts // 构建配置
│ └── package.json // 依赖配置
├── website // 官网系统 (HTML5 + Bootstrap)
│ ├── index.html // 首页
│ ├── about.html // 关于我们
│ ├── contact.html // 联系我们
│ ├── merchant // 商家合作页面
│ │ ├── index.html // 商家合作首页
│ │ ├── policy.html // 合作政策
│ │ └── apply.html // 入驻申请
│ ├── case.html // 案例展示
│ ├── css // 样式文件
│ │ ├── bootstrap.min.css // Bootstrap样式
│ │ └── custom.css // 自定义样式
│ ├── js // JavaScript文件
│ │ ├── bootstrap.min.js // Bootstrap脚本
│ │ └── custom.js // 自定义脚本
│ ├── images // 图片资源
│ └── vendor // 第三方库
├── backend // 后端接口服务 (Node.js + Express)
│ ├── src
│ │ ├── controllers // 控制器层
│ │ │ ├── user // 用户控制器
│ │ │ ├── merchant // 商家控制器
│ │ │ ├── travel // 旅行控制器
│ │ │ ├── animal // 动物控制器
│ │ │ ├── social // 社交控制器
│ │ │ ├── flower // 鲜花控制器
│ │ │ ├── promotion // 推广控制器
│ │ │ └── auth // 认证控制器
│ │ ├── services // 业务逻辑层
│ │ │ ├── user // 用户服务
│ │ │ ├── merchant // 商家服务
│ │ │ ├── travel // 旅行服务
│ │ │ ├── animal // 动物服务
│ │ │ ├── social // 社交服务
│ │ │ ├── flower // 鲜花服务
│ │ │ ├── promotion // 推广服务
│ │ │ └── auth // 认证服务
│ │ ├── models // 数据模型层
│ │ │ ├── user.js // 用户模型
│ │ │ ├── merchant.js // 商家模型
│ │ │ ├── travelPlan.js // 旅行计划模型
│ │ │ ├── animal.js // 动物模型
│ │ │ ├── claim.js // 认领模型
│ │ │ ├── message.js // 消息模型
│ │ │ ├── activity.js // 活动模型
│ │ │ ├── product.js // 商品模型
│ │ │ ├── order.js // 订单模型
│ │ │ ├── review.js // 评价模型
│ │ │ └── reward.js // 奖励模型
│ │ ├── routes // 路由定义
│ │ │ ├── api // API路由
│ │ │ │ ├── v1 // v1版本API
│ │ │ │ │ ├── user.js // 用户相关API
│ │ │ │ │ ├── merchant.js // 商家相关API
│ │ │ │ │ ├── travel.js // 旅行相关API
│ │ │ │ │ ├── animal.js // 动物相关API
│ │ │ │ │ ├── social.js // 社交相关API
│ │ │ │ │ ├── flower.js // 鲜花相关API
│ │ │ │ │ └── promotion.js // 推广相关API
│ │ │ │ └── index.js // API路由入口
│ │ │ └── web // Web路由(管理后台)
│ │ ├── middleware // 中间件
│ │ │ ├── auth // 认证中间件
│ │ │ ├── validation // 验证中间件
│ │ │ ├── rateLimit // 限流中间件
│ │ │ └── error // 错误处理中间件
│ │ ├── utils // 工具函数
│ │ │ ├── database // 数据库工具
│ │ │ ├── logger // 日志工具
│ │ │ ├── helpers // 辅助函数
│ │ │ └── constants // 常量定义
│ │ ├── config // 配置文件
│ │ │ ├── database.js // 数据库配置
│ │ │ ├── redis.js // Redis配置
│ │ │ ├── rabbitmq.js // RabbitMQ配置
│ │ │ └── app.js // 应用配置
│ │ └── app.js // 应用入口
│ ├── tests // 测试目录
│ │ ├── unit // 单元测试
│ │ └── integration // 集成测试
│ ├── docs // 文档目录
│ └── package.json // 依赖配置
└── docs // 项目文档
├── requirements.md // 需求文档
├── architecture.md // 架构文档
├── detailed_design.md // 详细设计文档
└── development_plan.md // 开发计划文档
```
## 2. 技术栈选型
### 2.1 后端技术栈
- 编程语言Node.js (TypeScript)
- 框架Express.js
- API规范RESTful API
- 容器化Docker
- 容器编排Kubernetes
- API网关Kong
- 监控Prometheus + Grafana
- 日志ELK Stack (Elasticsearch, Logstash, Kibana)
### 2.2 前端技术栈
- 小程序框架uni-app
- 开发语言JavaScript/TypeScript
- UI框架WeUI
- 状态管理Redux
- 构建工具Webpack
- 包管理npm/yarn
### 2.3 官网技术栈
- 核心技术HTML5 + Bootstrap
- 开发语言JavaScript
- 构建工具Webpack
- 包管理npm/yarn
### 2.3 数据库选型
- 主数据库MySQL 8.0
### 2.4 缓存选型
- 分布式缓存Redis Cluster
- 本地缓存Node.js内置缓存
### 2.5 消息队列选型
- 消息中间件RabbitMQ
- 实时消息推送WebSocket
### 2.6 选型理由与对比分析
#### 后端技术栈选型理由
**Node.js (TypeScript) + Express.js**
- **优势**
- 高性能Node.js基于事件驱动和非阻塞I/O模型适合高并发场景
- 生态丰富npm生态系统庞大可快速集成各种第三方库
- 全栈统一前后端均可使用JavaScript/TypeScript降低开发成本
- 轻量级Express.js是一个轻量级的Web框架灵活性高
- **劣势**
- CPU密集型任务处理能力较弱
- 回调地狱问题TypeScript可有效缓解
#### 前端技术栈选型理由
**uni-app**
- **优势**
- 一套代码多端运行可同时发布到iOS、Android、H5、以及各种小程序平台
- 开发生态基于Vue.js学习成本低社区活跃
- 性能优化:接近原生应用的性能体验
- **劣势**
- 平台限制:某些平台特定功能需要特殊处理
- 复杂度:多端兼容可能带来额外的复杂性
#### 官网技术栈选型理由
**HTML5 + Bootstrap**
- **优势**
- 简单易用:技术门槛低,开发效率高
- 兼容性好Bootstrap提供了良好的浏览器兼容性
- 响应式设计Bootstrap内置响应式布局适配各种设备
- 社区活跃Bootstrap拥有庞大的社区和丰富的组件
- **劣势**
- 定制性相对较弱:需要额外工作来实现独特的设计效果
- 文件体积Bootstrap框架本身会增加页面加载体积
#### 数据库选型理由
**MySQL 8.0**
- **优势**
- 成熟稳定:关系型数据库,事务支持完善
- 生态丰富:社区活跃,文档齐全
- 性能优化MySQL 8.0在性能方面有显著提升
- **劣势**
- 水平扩展性相对较弱
- 复杂查询性能可能不如专门的分析型数据库
#### 缓存选型理由
**Redis Cluster**
- **优势**
- 高性能:内存数据库,读写速度极快
- 分布式支持Redis Cluster提供高可用和水平扩展能力
- 丰富数据结构:支持字符串、哈希、列表、集合等多种数据结构
- **劣势**
- 内存成本:数据存储在内存中,成本较高
- 持久化性能:持久化操作可能影响性能
#### 消息队列选型理由
**RabbitMQ**
- **优势**
- 成熟稳定:经过多年发展,稳定性好
- 协议支持:支持多种消息协议
- 灵活路由:支持多种消息路由模式
- **劣势**
- 吞吐量相比Kafka等大数据消息队列吞吐量较低
- Erlang语言维护和调优需要掌握Erlang语言
**WebSocket**
- **优势**
- 实时性:全双工通信,实时性好
- 节省资源:相比轮询,节省网络资源
- **劣势**
- 连接管理:需要处理连接断开重连等问题
- 浏览器兼容性:老旧浏览器支持不好
## 3. 部署视图
```
外网:
├── uni-app前端用户 --- HTTPS --> API网关
├── 官网用户 --- HTTPS --> Nginx反向代理 --> 官网系统
└── 第三方支付平台 <-- 支付回调 --- 后端服务
腾讯云服务器:
├── Nginx反向代理 --> 官网系统
│ ├── 静态资源服务
│ └── SSR渲染服务 (Nuxt.js)
├── API网关 --> 后端服务
├── 后端服务 --> MySQL数据库
├── 后端服务 --> Redis缓存
├── 后端服务 --> RabbitMQ消息队列
└── 后端服务 --监控--> Prometheus监控 --> Grafana
|--> ELK Stack
```
### 3.1 部署环境
- 云服务提供商:腾讯云
- 服务器配置4台4核8GB服务器组成Kubernetes集群
- 负载均衡腾讯云负载均衡CLB
- SSL证书腾讯云SSL证书服务
- 域名解析腾讯云DNS解析
- 对象存储腾讯云COS用于存储图片、视频等静态资源
- CDN加速腾讯云CDN用于加速静态资源访问
- 反向代理Nginx
- 静态资源服务器Nginx
### 3.2 部署流程
1. 代码提交到Git仓库触发CI/CD流水线
2. 通过Docker构建服务镜像并推送到镜像仓库
3. Kubernetes从镜像仓库拉取镜像并部署服务
4. 配置健康检查和自动扩缩容策略
5. 配置监控和日志收集系统
6. 配置域名解析和SSL证书
7. 配置Nginx反向代理和静态资源服务器
### 3.3 备份与灾备
- 数据库每日自动备份到COS
- 关键服务配置文件版本化管理
- 多可用区部署实现高可用
## 4. 风险分析与应对策略
### 4.1 技术风险
#### 系统性能瓶颈
- **风险描述**:随着用户量增长,系统可能面临性能瓶颈,特别是在高并发场景下。
- **应对策略**
- 使用Redis缓存热点数据减少数据库访问压力
- 对数据库进行读写分离和分库分表
- 使用CDN加速静态资源访问
- 实施自动扩缩容策略,根据负载动态调整服务实例数量
#### 数据安全风险
- **风险描述**:系统涉及用户个人信息、支付信息等敏感数据,存在数据泄露风险。
- **应对策略**
- 对敏感数据进行加密存储AES/RSA算法
- 实施严格的访问控制和身份认证机制
- 定期进行安全审计和渗透测试
- 遵循GDPR等数据保护法规要求
### 4.2 业务风险
#### 用户增长压力
- **风险描述**:产品上线后可能面临用户快速增长的压力,对系统稳定性提出挑战。
- **应对策略**
- 提前进行压力测试,评估系统承载能力
- 设计可水平扩展的架构,支持快速扩容
- 制定限流和降级策略,保证核心功能稳定运行
#### 商家服务质量风险
- **风险描述**:商家用户提供的服务质量和用户体验直接影响平台声誉。
- **应对策略**
- 建立商家资质审核机制
- 实施用户评价体系,公开服务评价
- 建立投诉处理机制,及时处理用户反馈
- 对低质量商家实施警告、限流或清退措施
### 4.3 运维风险
#### 系统监控不足
- **风险描述**:缺乏有效的监控可能导致问题发现不及时,影响用户体验。
- **应对策略**
- 建立全方位监控体系,包括基础设施、应用性能、业务指标等
- 设置合理的告警阈值和通知机制
- 定期审查和优化监控策略
#### 故障恢复能力
- **风险描述**:系统故障可能导致服务中断,影响业务连续性。
- **应对策略**
- 制定详细的应急预案和故障恢复流程
- 定期进行故障演练,验证恢复能力
- 实施多可用区部署,提高容灾能力
- 建立数据库备份和恢复机制

827
docs/detailed_design.md Normal file
View File

@@ -0,0 +1,827 @@
# 结伴客系统详细设计文档
## 1. 数据库设计
### 1.1 ER图
```mermaid
erDiagram
USERS ||--o{ TRAVEL_PLANS : creates
USERS ||--o{ ANIMAL_CLAIMS : claims
USERS ||--o{ MESSAGES : sends
USERS ||--o{ ORDERS : places
USERS ||--o{ REVIEWS : writes
MERCHANTS ||--o{ PRODUCTS : sells
MERCHANTS ||--o{ ORDERS : processes
MERCHANTS ||--o{ ACTIVITIES : organizes
MERCHANTS ||--o{ ANIMALS : manages
TRAVEL_PLANS ||--o{ TRAVEL_MATCHES : matches
ANIMALS ||--o{ ANIMAL_CLAIMS : claimed
ANIMALS ||--o{ ANIMAL_UPDATES : updates
PRODUCTS ||--o{ ORDER_ITEMS : contains
ORDERS ||--o{ ORDER_ITEMS : contains
ORDERS ||--o{ PAYMENTS : has
ACTIVITIES ||--o{ ACTIVITY_REGISTRATIONS : registers
USERS {
int id PK
string openid
string nickname
string avatar
string gender
date birthday
string phone
string email
datetime created_at
datetime updated_at
}
MERCHANTS {
int id PK
int user_id FK
string merchant_type
string business_name
string business_license
string contact_person
string contact_phone
string address
string description
string status
datetime created_at
datetime updated_at
}
TRAVEL_PLANS {
int id PK
int user_id FK
string destination
date start_date
date end_date
decimal budget
string interests
string visibility
datetime created_at
datetime updated_at
}
TRAVEL_MATCHES {
int id PK
int plan_id FK
int matched_plan_id FK
decimal match_score
datetime created_at
}
ANIMALS {
int id PK
int merchant_id FK
string name
string species
string breed
date birth_date
string personality
string farm_location
decimal price
string status
datetime created_at
datetime updated_at
}
ANIMAL_CLAIMS {
int id PK
int user_id FK
int animal_id FK
decimal price_paid
string agreement_url
string status
datetime claimed_at
datetime ended_at
}
ANIMAL_UPDATES {
int id PK
int animal_id FK
string update_type
string content
string media_url
datetime created_at
}
PRODUCTS {
int id PK
int merchant_id FK
string name
string description
decimal price
string image_url
string category
string status
datetime created_at
datetime updated_at
}
ORDERS {
int id PK
int user_id FK
int merchant_id FK
string order_number
decimal total_amount
string status
string delivery_address
datetime ordered_at
datetime completed_at
}
ORDER_ITEMS {
int id PK
int order_id FK
int product_id FK
int quantity
decimal unit_price
}
PAYMENTS {
int id PK
int order_id FK
string payment_method
string transaction_id
decimal amount
string status
datetime paid_at
}
MESSAGES {
int id PK
int sender_id FK
int receiver_id FK
string content
string status
datetime sent_at
}
REVIEWS {
int id PK
int user_id FK
int merchant_id FK
int order_id FK
int rating
string comment
datetime created_at
}
ACTIVITIES {
int id PK
int merchant_id FK
string title
string description
string activity_type
datetime start_time
datetime end_time
string location
decimal fee
int max_participants
string status
datetime created_at
datetime updated_at
}
ACTIVITY_REGISTRATIONS {
int id PK
int activity_id FK
int user_id FK
string status
datetime registered_at
}
```
### 1.2 核心表结构设计
#### 用户表 (users)
| 字段名 | 类型 | 约束 | 描述 |
|--------|------|------|------|
| id | INT | PRIMARY KEY, AUTO_INCREMENT | 用户ID |
| openid | VARCHAR(64) | UNIQUE, NOT NULL | 微信openid |
| nickname | VARCHAR(50) | NOT NULL | 用户昵称 |
| avatar | VARCHAR(255) | | 用户头像URL |
| gender | ENUM('male', 'female', 'other') | | 性别 |
| birthday | DATE | | 生日 |
| phone | VARCHAR(20) | UNIQUE | 手机号码 |
| email | VARCHAR(100) | UNIQUE | 邮箱地址 |
| created_at | DATETIME | NOT NULL | 创建时间 |
| updated_at | DATETIME | NOT NULL | 更新时间 |
#### 商家表 (merchants)
| 字段名 | 类型 | 约束 | 描述 |
|--------|------|------|------|
| id | INT | PRIMARY KEY, AUTO_INCREMENT | 商家ID |
| user_id | INT | FOREIGN KEY, NOT NULL | 关联的用户ID |
| merchant_type | ENUM('flower_shop', 'activity_organizer', 'farm_owner') | NOT NULL | 商家类型 |
| business_name | VARCHAR(100) | NOT NULL | 商家名称 |
| business_license | VARCHAR(255) | | 营业执照图片URL |
| contact_person | VARCHAR(50) | NOT NULL | 联系人 |
| contact_phone | VARCHAR(20) | NOT NULL | 联系电话 |
| address | VARCHAR(255) | | 地址 |
| description | TEXT | | 商家介绍 |
| status | ENUM('pending', 'approved', 'rejected', 'suspended') | NOT NULL | 商家状态 |
| created_at | DATETIME | NOT NULL | 创建时间 |
| updated_at | DATETIME | NOT NULL | 更新时间 |
#### 旅行计划表 (travel_plans)
| 字段名 | 类型 | 约束 | 描述 |
|--------|------|------|------|
| id | INT | PRIMARY KEY, AUTO_INCREMENT | 计划ID |
| user_id | INT | FOREIGN KEY, NOT NULL | 用户ID |
| destination | VARCHAR(100) | NOT NULL | 目的地 |
| start_date | DATE | NOT NULL | 开始日期 |
| end_date | DATE | NOT NULL | 结束日期 |
| budget | DECIMAL(10,2) | NOT NULL | 预算 |
| interests | TEXT | | 兴趣偏好 |
| visibility | ENUM('public', 'friends', 'private') | NOT NULL | 可见范围 |
| created_at | DATETIME | NOT NULL | 创建时间 |
| updated_at | DATETIME | NOT NULL | 更新时间 |
#### 动物表 (animals)
| 字段名 | 类型 | 约束 | 描述 |
|--------|------|------|------|
| id | INT | PRIMARY KEY, AUTO_INCREMENT | 动物ID |
| merchant_id | INT | FOREIGN KEY, NOT NULL | 关联的农场商家ID |
| name | VARCHAR(50) | NOT NULL | 动物名称 |
| species | VARCHAR(50) | NOT NULL | 动物种类 |
| breed | VARCHAR(50) | | 品种 |
| birth_date | DATE | | 出生日期 |
| personality | TEXT | | 性格特点 |
| farm_location | VARCHAR(255) | | 农场位置 |
| price | DECIMAL(10,2) | NOT NULL | 认领价格 |
| status | ENUM('available', 'claimed', 'unavailable') | NOT NULL | 状态 |
| created_at | DATETIME | NOT NULL | 创建时间 |
| updated_at | DATETIME | NOT NULL | 更新时间 |
#### 动物认领表 (animal_claims)
| 字段名 | 类型 | 约束 | 描述 |
|--------|------|------|------|
| id | INT | PRIMARY KEY, AUTO_INCREMENT | 认领ID |
| user_id | INT | FOREIGN KEY, NOT NULL | 用户ID |
| animal_id | INT | FOREIGN KEY, NOT NULL | 动物ID |
| price_paid | DECIMAL(10,2) | NOT NULL | 支付金额 |
| agreement_url | VARCHAR(255) | | 电子协议URL |
| status | ENUM('active', 'ended', 'cancelled') | NOT NULL | 认领状态 |
| claimed_at | DATETIME | NOT NULL | 认领时间 |
| ended_at | DATETIME | | 结束时间 |
## 2. API设计
### 2.1 用户服务API
#### 用户登录
- **URL**: `POST /api/v1/users/login`
- **请求参数**:
```json
{
"code": "微信登录凭证"
}
```
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {
"token": "用户token",
"user": {
"id": 1,
"openid": "openid",
"nickname": "用户昵称",
"avatar": "头像URL"
}
}
}
```
#### 获取用户信息
- **URL**: `GET /api/v1/users/profile`
- **请求头**: `Authorization: Bearer {token}`
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"openid": "openid",
"nickname": "用户昵称",
"avatar": "头像URL",
"gender": "male",
"birthday": "1990-01-01",
"phone": "13800138000",
"email": "user@example.com"
}
}
```
#### 更新用户信息
- **URL**: `PUT /api/v1/users/profile`
- **请求头**: `Authorization: Bearer {token}`
- **请求参数**:
```json
{
"nickname": "新昵称",
"gender": "female",
"birthday": "1995-01-01",
"phone": "13900139000",
"email": "new@example.com"
}
```
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {}
}
```
### 2.2 旅行服务API
#### 创建旅行计划
- **URL**: `POST /api/v1/travels/plans`
- **请求头**: `Authorization: Bearer {token}`
- **请求参数**:
```json
{
"destination": "目的地",
"start_date": "2023-10-01",
"end_date": "2023-10-07",
"budget": 5000.00,
"interests": "徒步,摄影",
"visibility": "public"
}
```
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"user_id": 1,
"destination": "目的地",
"start_date": "2023-10-01",
"end_date": "2023-10-07",
"budget": 5000.00,
"interests": "徒步,摄影",
"visibility": "public",
"created_at": "2023-09-01T12:00:00Z"
}
}
```
#### 获取旅行计划列表
- **URL**: `GET /api/v1/travels/plans`
- **请求头**: `Authorization: Bearer {token}`
- **查询参数**: `page=1&size=10&visibility=public`
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {
"list": [
{
"id": 1,
"user_id": 1,
"destination": "目的地",
"start_date": "2023-10-01",
"end_date": "2023-10-07",
"budget": 5000.00,
"interests": "徒步,摄影",
"visibility": "public",
"created_at": "2023-09-01T12:00:00Z"
}
],
"pagination": {
"page": 1,
"size": 10,
"total": 1
}
}
}
```
#### 匹配旅行伙伴
- **URL**: `GET /api/v1/travels/matches`
- **请求头**: `Authorization: Bearer {token}`
- **查询参数**: `plan_id=1&page=1&size=10`
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {
"list": [
{
"id": 2,
"user_id": 2,
"destination": "目的地",
"start_date": "2023-10-02",
"end_date": "2023-10-08",
"budget": 4500.00,
"interests": "徒步,美食",
"match_score": 0.85
}
],
"pagination": {
"page": 1,
"size": 10,
"total": 1
}
}
}
```
### 2.3 动物认领服务API
#### 获取可认领动物列表
- **URL**: `GET /api/v1/animals`
- **请求头**: `Authorization: Bearer {token}`
- **查询参数**: `page=1&size=10&species=羊驼`
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {
"list": [
{
"id": 1,
"merchant_id": 1,
"name": "小羊驼",
"species": "羊驼",
"breed": "苏利羊驼",
"birth_date": "2020-01-01",
"personality": "温顺可爱",
"farm_location": "XX农场",
"price": 1000.00,
"status": "available"
}
],
"pagination": {
"page": 1,
"size": 10,
"total": 1
}
}
}
```
#### 认领动物
- **URL**: `POST /api/v1/animals/{id}/claim`
- **请求头**: `Authorization: Bearer {token}`
- **请求参数**:
```json
{
"price_paid": 1000.00
}
```
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"user_id": 1,
"animal_id": 1,
"price_paid": 1000.00,
"agreement_url": "https://example.com/agreement.pdf",
"status": "active",
"claimed_at": "2023-09-01T12:00:00Z"
}
}
```
#### 获取认领记录
- **URL**: `GET /api/v1/animals/claims`
- **请求头**: `Authorization: Bearer {token}`
- **查询参数**: `page=1&size=10&status=active`
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {
"list": [
{
"id": 1,
"user_id": 1,
"animal_id": 1,
"animal_name": "小羊驼",
"price_paid": 1000.00,
"status": "active",
"claimed_at": "2023-09-01T12:00:00Z"
}
],
"pagination": {
"page": 1,
"size": 10,
"total": 1
}
}
}
```
### 2.4 商家服务API
#### 商家注册
- **URL**: `POST /api/v1/merchants/register`
- **请求头**: `Authorization: Bearer {token}`
- **请求参数**:
```json
{
"merchant_type": "farm_owner",
"business_name": "XX农场",
"business_license": "https://example.com/license.jpg",
"contact_person": "张三",
"contact_phone": "13800138000",
"address": "北京市朝阳区XX路XX号",
"description": "专业养殖羊驼的农场"
}
```
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"user_id": 1,
"merchant_type": "farm_owner",
"business_name": "XX农场",
"business_license": "https://example.com/license.jpg",
"contact_person": "张三",
"contact_phone": "13800138000",
"address": "北京市朝阳区XX路XX号",
"description": "专业养殖羊驼的农场",
"status": "pending",
"created_at": "2023-09-01T12:00:00Z"
}
}
```
#### 发布商品/服务
- **URL**: `POST /api/v1/merchants/products`
- **请求头**: `Authorization: Bearer {token}`
- **请求参数**:
```json
{
"name": "羊驼认领体验",
"description": "提供一个月的羊驼认领体验服务",
"price": 1000.00,
"image_url": "https://example.com/product.jpg",
"category": "animal_claim",
"status": "available"
}
```
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"merchant_id": 1,
"name": "羊驼认领体验",
"description": "提供一个月的羊驼认领体验服务",
"price": 1000.00,
"image_url": "https://example.com/product.jpg",
"category": "animal_claim",
"status": "available",
"created_at": "2023-09-01T12:00:00Z"
}
}
```
#### 获取商家订单
- **URL**: `GET /api/v1/merchants/orders`
- **请求头**: `Authorization: Bearer {token}`
- **查询参数**: `page=1&size=10&status=paid`
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {
"list": [
{
"id": 1,
"user_id": 2,
"order_number": "ORD202309010001",
"total_amount": 1000.00,
"status": "paid",
"ordered_at": "2023-09-01T12:00:00Z"
}
],
"pagination": {
"page": 1,
"size": 10,
"total": 1
}
}
}
```
### 2.5 官网系统API
#### 提交商家入驻申请
- **URL**: `POST /api/v1/website/merchant/apply`
- **请求参数**:
```json
{
"business_name": "XX农场",
"contact_person": "张三",
"contact_phone": "13800138000",
"email": "zhangsan@example.com",
"description": "专业养殖羊驼的农场"
}
```
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {
"id": 1,
"business_name": "XX农场",
"contact_person": "张三",
"contact_phone": "13800138000",
"email": "zhangsan@example.com",
"description": "专业养殖羊驼的农场",
"status": "pending",
"created_at": "2023-09-01T12:00:00Z"
}
}
```
#### 获取成功案例列表
- **URL**: `GET /api/v1/website/cases`
- **查询参数**: `page=1&size=10`
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {
"list": [
{
"id": 1,
"title": "XX农场成功入驻案例",
"description": "XX农场通过平台实现了数字化转型",
"image_url": "https://example.com/case1.jpg",
"created_at": "2023-09-01T12:00:00Z"
}
],
"pagination": {
"page": 1,
"size": 10,
"total": 1
}
}
}
```
"image_url": "https://example.com/product.jpg",
"category": "animal_claim",
"status": "available",
"created_at": "2023-09-01T12:00:00Z"
}
}
```
#### 获取商家订单
- **URL**: `GET /api/v1/merchants/orders`
- **请求头**: `Authorization: Bearer {token}`
- **查询参数**: `page=1&size=10&status=paid`
- **响应**:
```json
{
"code": 0,
"message": "success",
"data": {
"list": [
{
"id": 1,
"user_id": 2,
"order_number": "ORD202309010001",
"total_amount": 1000.00,
"status": "paid",
"ordered_at": "2023-09-01T12:00:00Z"
}
],
"pagination": {
"page": 1,
"size": 10,
"total": 1
}
}
}
```
## 3. 核心业务逻辑设计
### 3.1 旅行结伴流程
```mermaid
sequenceDiagram
participant U as 用户
participant TP as 旅行计划服务
participant TM as 旅行匹配服务
participant N as 通知服务
U->>TP: 创建旅行计划
TP->>TP: 保存计划
TP-->>U: 返回计划详情
U->>TM: 请求匹配旅行伙伴
TM->>TM: 根据条件匹配
TM-->>U: 返回匹配结果
U->>U: 选择合适的伙伴
U->>N: 发送结伴邀请
N->>N: 发送通知给被邀请用户
Note over U,N: 被邀请用户接受邀请后,
Note over U,N: 系统创建结伴关系
```
### 3.2 动物认领流程
```mermaid
sequenceDiagram
participant U as 用户
participant A as 动物服务
participant M as 商家服务
participant P as 支付服务
participant N as 通知服务
U->>A: 浏览可认领动物
A-->>U: 返回动物列表
U->>A: 选择动物并认领
A->>P: 创建支付订单
P-->>U: 返回支付信息
U->>P: 完成支付
P->>P: 验证支付结果
P->>A: 通知支付成功
A->>A: 更新动物状态为已认领
A->>M: 通知商家有新认领
A->>N: 发送认领成功通知给用户
M->>M: 更新商家统计信息
N->>N: 发送通知
```
### 3.3 商家服务流程
```mermaid
sequenceDiagram
participant U as 用户
participant M as 商家服务
participant P as 商品服务
participant O as 订单服务
participant Pay as 支付服务
participant N as 通知服务
U->>M: 申请成为商家
M->>M: 审核商家资质
M-->>U: 返回审核结果
alt 审核通过
U->>P: 发布商品/服务
P->>P: 保存商品信息
P-->>U: 返回商品详情
end
U->>P: 浏览商品
P-->>U: 返回商品列表
U->>O: 下单购买
O->>Pay: 创建支付订单
Pay-->>U: 返回支付信息
U->>Pay: 完成支付
Pay->>Pay: 验证支付结果
Pay->>O: 通知支付成功
O->>O: 更新订单状态
O->>M: 通知商家有新订单
O->>N: 发送购买成功通知给用户
M->>M: 处理订单
N->>N: 发送通知
```

333
docs/development_plan.md Normal file
View File

@@ -0,0 +1,333 @@
# 开发计划
## 1. 任务分解 (WBS)
### 1.1 后端开发任务
#### 1.1.1 基础服务搭建
- 用户认证服务 (JWT Token管理)
- API网关配置
- 微服务间通信机制 (gRPC/消息队列)
- 统一配置中心
- 日志收集与监控系统
#### 1.1.2 核心业务服务开发
- 用户管理服务 (用户注册、登录、信息管理)
- 旅行计划服务 (创建、查询、更新旅行计划)
- 旅行匹配服务 (基于兴趣和时间的匹配算法)
- 动物认领服务 (动物信息管理、认领流程)
- 社交互动服务 (消息发送、通知推送)
#### 1.1.3 商家服务开发
- 商家认证与管理服务
- 商品/服务管理服务
- 订单处理服务
- 评价与反馈服务
#### 1.1.4 支付与安全服务
- 支付服务集成 (微信支付)
- 数据加密与安全传输
- API访问控制与权限管理
### 1.2 前端开发任务
#### 1.2.1 基础框架搭建
- 微信小程序基础框架搭建
- UI组件库集成
- 状态管理配置 (Redux/Vuex类似)
- 网络请求封装
#### 1.2.2 用户端功能开发
- 用户登录/注册页面
- 个人中心页面
- 旅行计划创建与浏览页面
- 旅行伙伴匹配页面
- 动物认领浏览与认领页面
- 消息通知页面
#### 1.2.3 商家端功能开发
- 商家注册与认证页面
- 商家中心首页
- 商品/服务管理页面
- 订单管理页面
- 评价管理页面
### 1.3 数据库开发任务
#### 1.3.1 数据库设计与创建
- 核心表结构创建 (用户、商家、旅行计划等)
- 索引优化
- 数据库分表分库设计
#### 1.3.2 数据库初始化
- 初始化数据脚本编写
- 数据迁移脚本
### 1.4 运维部署任务
#### 1.4.1 基础设施搭建
- Kubernetes集群搭建
- Redis集群部署
- RabbitMQ部署
- 数据库主从复制配置
#### 1.4.2 CI/CD流程配置
- Jenkins/GitLab CI配置
- 自动化测试集成
- 自动化部署脚本
#### 1.4.3 监控与日志
- Prometheus监控配置
- Grafana仪表板配置
- ELK日志收集系统配置
### 1.5 官网系统开发任务
#### 1.5.1 官网基础框架搭建
- Nuxt.js 3框架搭建
- TypeScript配置
- Tailwind CSS集成
- Pinia状态管理配置
- API客户端封装
#### 1.5.2 官网页面开发
- 官网首页开发
- 商家合作页面开发
- 成功案例页面开发
- 关于我们页面开发
- 联系我们页面开发
#### 1.5.3 官网功能开发
- 商家入驻申请功能
- 成功案例展示功能
- 表单验证与提交功能
- 响应式布局适配
#### 1.5.4 官网SEO优化
- 页面SEO元信息配置
- 站点地图生成
- 搜索引擎优化配置
## 2. 工时估算
### 2.1 后端开发工时
#### 2.1.1 基础服务搭建 (15人日)
- 用户认证服务: 3人日
- API网关配置: 2人日
- 微服务间通信机制: 4人日
- 统一配置中心: 3人日
- 日志收集与监控系统: 3人日
#### 2.1.2 核心业务服务开发 (25人日)
- 用户管理服务: 4人日
- 旅行计划服务: 5人日
- 旅行匹配服务: 6人日
- 动物认领服务: 5人日
- 社交互动服务: 5人日
#### 2.1.3 商家服务开发 (20人日)
- 商家认证与管理服务: 5人日
- 商品/服务管理服务: 5人日
- 订单处理服务: 5人日
- 评价与反馈服务: 5人日
#### 2.1.4 支付与安全服务 (10人日)
- 支付服务集成: 5人日
- 数据加密与安全传输: 3人日
- API访问控制与权限管理: 2人日
**后端开发总工时: 70人日**
### 2.2 前端开发工时
#### 2.2.1 基础框架搭建 (10人日)
- 微信小程序基础框架搭建: 4人日
- UI组件库集成: 2人日
- 状态管理配置: 2人日
- 网络请求封装: 2人日
#### 2.2.2 用户端功能开发 (25人日)
- 用户登录/注册页面: 3人日
- 个人中心页面: 4人日
- 旅行计划创建与浏览页面: 5人日
- 旅行伙伴匹配页面: 6人日
- 动物认领浏览与认领页面: 4人日
- 消息通知页面: 3人日
#### 2.2.3 商家端功能开发 (20人日)
- 商家注册与认证页面: 4人日
- 商家中心首页: 4人日
- 商品/服务管理页面: 5人日
- 订单管理页面: 4人日
- 评价管理页面: 3人日
**前端开发总工时: 55人日**
### 2.3 数据库开发工时
#### 2.3.1 数据库设计与创建 (8人日)
- 核心表结构创建: 5人日
- 索引优化: 2人日
- 数据库分表分库设计: 1人日
#### 2.3.2 数据库初始化 (2人日)
- 初始化数据脚本编写: 1人日
- 数据迁移脚本: 1人日
**数据库开发总工时: 10人日**
### 2.4 运维部署工时
#### 2.4.1 基础设施搭建 (15人日)
- Kubernetes集群搭建: 5人日
- Redis集群部署: 3人日
- RabbitMQ部署: 3人日
- 数据库主从复制配置: 4人日
#### 2.4.2 CI/CD流程配置 (8人日)
- Jenkins/GitLab CI配置: 3人日
- 自动化测试集成: 3人日
- 自动化部署脚本: 2人日
#### 2.4.3 监控与日志 (4人日)
- Prometheus监控配置: 2人日
- Grafana仪表板配置: 1人日
- ELK日志收集系统配置: 1人日
**运维部署总工时: 27人日**
### 2.5 官网系统开发工时
#### 2.5.1 官网基础框架搭建 (8人日)
- Nuxt.js 3框架搭建: 3人日
- TypeScript配置: 1人日
- Tailwind CSS集成: 2人日
- Pinia状态管理配置: 1人日
- API客户端封装: 1人日
#### 2.5.2 官网页面开发 (12人日)
- 官网首页开发: 3人日
- 商家合作页面开发: 3人日
- 成功案例页面开发: 2人日
- 关于我们页面开发: 2人日
- 联系我们页面开发: 2人日
#### 2.5.3 官网功能开发 (8人日)
- 商家入驻申请功能: 3人日
- 成功案例展示功能: 2人日
- 表单验证与提交功能: 2人日
- 响应式布局适配: 1人日
#### 2.5.4 官网SEO优化 (3人日)
- 页面SEO元信息配置: 1人日
- 站点地图生成: 1人日
- 搜索引擎优化配置: 1人日
**官网系统开发总工时: 31人日**
## 3. 开发里程碑
### 3.1 第一阶段:基础框架搭建 (预计4周)
- **时间**: 第1-4周
- **目标**: 完成技术架构搭建和基础服务开发
- **交付物**:
- 微服务架构搭建完成
- API网关配置完成
- 用户认证服务上线
- 数据库环境搭建完成
- 基础前端框架搭建完成
- **关键任务**:
- 后端基础设施搭建 (15人日)
- 数据库设计与创建 (8人日)
- 前端基础框架搭建 (10人日)
- 运维环境搭建 (15人日)
### 3.2 第二阶段:核心功能开发 (预计6周)
- **时间**: 第5-10周
- **目标**: 完成用户端核心功能开发
- **交付物**:
- 用户管理功能上线
- 旅行计划功能上线
- 旅行匹配功能上线
- 动物认领功能上线
- 社交互动功能上线
- **关键任务**:
- 后端核心业务服务开发 (25人日)
- 前端用户端功能开发 (25人日)
- 支付服务集成 (5人日)
### 3.3 第三阶段:商家功能开发 (预计5周)
- **时间**: 第11-15周
- **目标**: 完成商家端功能开发
- **交付物**:
- 商家认证功能上线
- 商品/服务管理功能上线
- 订单处理功能上线
- 评价反馈功能上线
- **关键任务**:
- 后端商家服务开发 (20人日)
- 前端商家端功能开发 (20人日)
- 安全服务完善 (5人日)
### 3.4 第四阶段:官网系统开发 (预计4周)
- **时间**: 第16-19周
- **目标**: 完成官网系统开发和部署
- **交付物**:
- 官网系统上线
- 商家入驻申请功能上线
- 成功案例展示功能上线
- **关键任务**:
- 官网基础框架搭建 (8人日)
- 官网页面开发 (12人日)
- 官网功能开发 (8人日)
- 官网SEO优化 (3人日)
### 3.5 第五阶段:测试与优化 (预计3周)
- **时间**: 第20-22周
- **目标**: 完成系统测试和性能优化
- **交付物**:
- 系统测试报告
- 性能优化报告
- 安全审计报告
- 上线部署包
- **关键任务**:
- 功能测试 (10人日)
- 性能测试与优化 (8人日)
- 安全测试 (5人日)
- 用户验收测试 (5人日)
- 部署上线 (5人日)
## 4. 资源分配建议
### 4.1 人员配置
- **后端开发工程师**: 3人
- **前端开发工程师**: 3人 (新增1名官网前端开发工程师)
- **数据库工程师**: 1人
- **运维工程师**: 1人
- **测试工程师**: 2人
- **产品经理**: 1人
- **UI/UX设计师**: 1人 (负责官网UI/UX设计)
### 4.2 技术资源
- **开发环境**: macOS/Linux开发机 x 8
- **测试环境**: 腾讯云服务器 (2核4GB) x 3
- **生产环境**: 腾讯云服务器 (4核8GB) x 4
- **开发工具**: VS Code, IntelliJ IDEA, Docker, Kubernetes
- **项目管理**: Jira + Confluence
### 4.3 时间安排建议
- **总开发周期**: 22周 (约5.5个月)
- **并行开发**: 后端与前端可并行开发
- **迭代周期**: 每2周一个迭代每周进行代码评审
- **里程碑评审**: 每个阶段结束后进行里程碑评审
### 4.4 风险控制
- **技术风险**: 微服务架构复杂度高,需提前进行技术预研
- **人员风险**: 关键岗位需有备份人员
- **进度风险**: 预留2周缓冲时间应对不可预见问题
- **质量风险**: 引入自动化测试,保证代码质量
- **官网系统风险**:
- SEO优化效果不达预期
- 浏览器兼容性问题
- 响应式布局在不同设备上显示异常

589
docs/requirements.md Normal file
View File

@@ -0,0 +1,589 @@
# 结伴客小程序需求文档
## 1. 产品概述
### 1.1 产品名称
结伴客
### 1.2 产品定位
结伴客是一款专注于结伴旅行活动的小程序,与其他交友平台不同的是,它包含了目的地牛、羊、猪、鸡等动物的认领功能,为用户提供独特的旅行体验。
### 1.3 目标用户
#### 普通用户
- 热爱旅行的年轻人
- 希望通过旅行结识新朋友的用户
- 对农场生活和动物互动感兴趣的用户
#### 商家用户
- 花店老板:提供鲜花产品和服务
- 活动组织者:组织各类结伴活动
- 农场老板:提供动物认领和农场体验服务
### 1.4 核心价值
- 为用户提供安全、便捷的结伴旅行服务
- 通过动物认领功能,增加旅行的趣味性和独特性
- 促进用户之间的社交互动,建立旅行伙伴关系
## 2. 功能需求
### 2.1 用户管理
#### 普通用户
- 用户注册/登录
- 个人信息完善(头像、昵称、性别、年龄、兴趣爱好等)
- 个人主页展示
#### 商家用户
- 商家注册/登录(需要资质审核)
- 商家信息完善(店铺名称、营业执照、联系方式、服务介绍等)
- 商家主页展示(包含服务项目、评价等)
### 2.2 旅行结伴
- 发布旅行计划(目的地、时间、天数、预算、兴趣偏好等)
- 浏览和搜索其他用户的旅行计划
- 根据条件匹配相似行程的用户
- 发起结伴邀请
- 接受/拒绝结伴邀请
- 发起和参与其他结伴活动(看电影、拼饭、桌游等)
- 基于定位查看周围或某个区域的目的地信息
### 2.3 动物认领
- 浏览可认领的动物(牛、羊、猪、鸡等)
- 查看动物详情(品种、年龄、性格特点、所在农场等)
- 认领动物(支付认领费用、签订电子协议)
- 查看认领的动物状态(生长记录、健康状况等)
- 与认领的动物互动(视频监控、喂养记录等)
### 2.4 社交互动
- 用户之间发送消息
- 评论和点赞功能
- 分享旅行经历和动物认领体验
### 2.5 安全保障
- 用户评价体系
- 紧急联系功能
- 举报和投诉机制
### 2.6 用户推广奖励机制
- 用户可以通过分享小程序获得推广链接
- 新用户通过推广链接注册可获得奖励
- 推广者根据推广效果获得相应奖励
- 用户分享活动可获得奖励
- 用户分享认养可获得奖励
- 邀请多人认养一个动物可获得奖励
- 推广数据统计和奖励发放机制
- 推广奖励提现功能
### 2.7 送花服务
#### 普通用户功能
- 浏览合作花店的鲜花产品
- 在线选择并订购鲜花
- 选择送花对象(结伴伙伴或特定用户)
- 跟踪送花订单状态
#### 商家用户(花店老板)功能
- 管理鲜花产品(添加、编辑、删除商品信息)
- 管理订单(查看、处理、更新订单状态)
- 设置配送范围和时间
- 查看销售数据和收益统计
### 2.8 官网功能
#### 普通用户功能
- 浏览官网首页,了解平台介绍和核心功能
- 查看成功案例和用户评价
- 浏览动物认领和旅行结伴相关资讯
- 通过官网直接跳转至小程序
#### 商家用户功能
- 通过官网了解平台商业模式和收益机制
- 查看商家合作政策和入驻流程
- 在线提交商家入驻申请
- 查看商家成功案例和收益数据
## 3. 用户故事
### 3.1 旅行结伴功能
#### 故事1发布旅行计划
**As a** 旅行爱好者
**I want to** 发布我的旅行计划
**So that** 其他用户可以看到我的行程并申请结伴
**验收标准:**
- 用户可以填写目的地、时间、天数、预算等信息
- 用户可以设置行程的可见范围
- 发布成功后,其他用户可以搜索到该行程
### 3.8 官网功能
#### 故事22浏览官网了解平台信息
**As a** 潜在用户
**I want to** 通过官网了解平台信息
**So that** 我可以更好地了解平台功能并决定是否使用
**验收标准:**
- 用户可以访问官网首页
- 用户可以浏览平台介绍和核心功能
- 用户可以查看成功案例和用户评价
- 用户可以通过官网直接跳转至小程序
#### 故事23商家通过官网了解合作政策
**As a** 潜在商家
**I want to** 通过官网了解商家合作政策
**So that** 我可以了解入驻条件和收益机制
**验收标准:**
- 商家可以访问官网商家合作页面
- 商家可以查看合作政策和入驻流程
- 商家可以在线提交入驻申请
- 商家可以查看成功案例和收益数据
#### 故事2寻找结伴伙伴
**As a** 旅行者
**I want to** 根据条件搜索和匹配相似行程的用户
**So that** 我能找到合适的结伴伙伴
**验收标准:**
- 用户可以根据目的地、时间等条件筛选行程
- 系统能推荐匹配度高的行程
- 用户可以查看其他用户的详细信息和评价
#### 故事3发起结伴邀请
**As a** 旅行者
**I want to** 向匹配的用户发起结伴邀请
**So that** 我可以与他们一起旅行
**验收标准:**
- 用户可以向其他用户发送结伴邀请
- 被邀请用户可以接受或拒绝邀请
- 双方接受邀请后建立结伴关系
#### 故事4基于定位查看目的地信息
**As a** 旅行者
**I want to** 基于我的位置查看周围的目的地信息
**So that** 我可以发现附近有趣的旅行地点
**验收标准:**
- 用户可以授权小程序获取当前位置
- 系统根据用户位置显示附近的目的地信息
- 用户可以查看目的地的详细信息(距离、评分、特色等)
- 用户可以根据距离、评分等条件筛选目的地
- 用户可以将感兴趣的目的地添加到旅行计划中
#### 故事12发起其他结伴活动
**As a** 用户
**I want to** 发起看电影、拼饭、桌游等结伴活动
**So that** 我可以与志趣相投的伙伴一起享受休闲时光
**验收标准:**
- 用户可以选择活动类型(看电影、拼饭、桌游等)
- 用户可以设置活动时间、地点、人数要求等信息
- 其他用户可以浏览和申请参加活动
- 发起者可以接受或拒绝参与申请
### 3.2 动物认领功能
#### 故事4浏览可认领动物
**As a** 对农场生活感兴趣的用户
**I want to** 浏览可认领的动物
**So that** 我可以选择自己喜欢的动物进行认领
**验收标准:**
- 用户可以查看所有可认领的动物列表
- 每个动物都有详细的介绍(品种、年龄、性格特点等)
- 用户可以根据动物类型进行筛选
#### 故事5认领动物
**As a** 用户
**I want to** 认领我喜欢的动物
**So that** 我可以体验农场生活并与动物互动
**验收标准:**
- 用户可以选择动物并支付认领费用
- 系统生成电子协议供用户签署
- 认领成功后,用户可以在个人中心查看认领的动物
#### 故事6与认领动物互动
**As a** 动物认领者
**I want to** 通过视频监控和喂养记录与认领的动物互动
**So that** 我可以随时了解动物的状态并参与其成长过程
**验收标准:**
- 用户可以实时查看动物的视频监控
- 用户可以记录喂养情况
- 系统会推送动物的生长记录和健康状况
### 3.3 社交互动功能
#### 故事7发送消息
**As a** 用户
**I want to** 与其他用户发送消息
**So that** 我可以与他们沟通旅行细节
**验收标准:**
- 用户可以向其他用户发送文本消息
- 用户可以查看聊天记录
- 支持消息提醒功能
#### 故事8分享旅行经历
**As a** 旅行者
**I want to** 分享我的旅行经历和动物认领体验
**So that** 其他用户可以了解我的旅行故事
**验收标准:**
- 用户可以发布图文动态
- 其他用户可以点赞和评论
- 动态会显示在用户的个人主页
### 3.4 送花服务功能
#### 故事9浏览并订购鲜花
**As a** 用户
**I want to** 浏览合作花店的鲜花产品并在线订购
**So that** 我可以向结伴伙伴或特定用户表达心意
**验收标准:**
- 用户可以浏览合作花店的鲜花产品
- 用户可以选择鲜花并添加到购物车
- 用户可以完成在线支付
- 系统将订单信息同步至实体花店
#### 故事10选择送花对象
**As a** 用户
**I want to** 选择送花对象
**So that** 我可以将鲜花送给特定的人
**验收标准:**
- 用户可以从结伴伙伴列表中选择送花对象
- 用户可以通过搜索选择其他用户作为送花对象
- 系统会显示送花对象的基本信息
#### 故事11跟踪送花订单
**As a** 用户
**I want to** 跟踪送花订单状态
**So that** 我可以了解鲜花送达情况
**验收标准:**
- 用户可以在个人中心查看送花订单列表
- 用户可以查看每个订单的当前状态(已下单、已接单、配送中、已完成)
- 系统会在订单状态更新时推送通知
#### 故事18管理鲜花产品
**As a** 花店老板
**I want to** 管理我的鲜花产品
**So that** 我可以向用户提供最新的产品信息
**验收标准:**
- 商家可以添加新的鲜花产品(图片、名称、价格、描述等)
- 商家可以编辑现有产品信息
- 商家可以删除下架的产品
- 用户可以浏览到更新后的产品信息
#### 故事19管理订单
**As a** 花店老板
**I want to** 管理用户的送花订单
**So that** 我可以及时处理订单并提供配送服务
**验收标准:**
- 商家可以在商家中心查看所有订单
- 商家可以更新订单状态(已接单、配送中、已完成)
- 系统会向用户推送订单状态更新通知
- 商家可以查看订单统计信息
### 3.5 用户推广奖励机制
#### 故事12获取推广链接
**As a** 用户
**I want to** 获取专属推广链接
**So that** 我可以分享给朋友并获得奖励
**验收标准:**
- 用户可以在个人中心找到推广功能入口
- 系统为每个用户生成唯一的推广链接
- 用户可以通过多种方式分享推广链接(微信、朋友圈等)
#### 故事13查看推广数据和奖励
**As a** 用户
**I want to** 查看我的推广数据和奖励情况
**So that** 我可以了解推广效果和收益
**验收标准:**
- 用户可以在个人中心查看推广数据(推广人数、成功注册数等)
- 用户可以查看累计获得的奖励金额
- 用户可以查看奖励发放记录
#### 故事14提现推广奖励
**As a** 用户
**I want to** 提现我的推广奖励
**So that** 我可以将奖励转换为实际收益
**验收标准:**
- 用户可以在个人中心申请提现
- 用户需要绑定提现账户(微信钱包等)
- 系统处理提现申请并在规定时间内到账
### 3.6 活动分享奖励
#### 故事15分享活动获得奖励
**As a** 用户
**I want to** 分享我参与的活动
**So that** 我可以获得奖励并邀请更多人参与
**验收标准:**
- 用户可以分享自己参与的结伴活动
- 系统记录分享行为并给予相应奖励
- 被邀请用户通过分享链接参与活动时,分享者可获得额外奖励
### 3.7 认养分享奖励
#### 故事16分享认养获得奖励
**As a** 用户
**I want to** 分享我的动物认养
**So that** 我可以获得奖励并让更多人了解认养
**验收标准:**
- 用户可以分享自己认养的动物信息
- 系统记录分享行为并给予相应奖励
- 其他用户通过分享链接认养动物时,分享者可获得额外奖励
### 3.8 多人认养奖励
#### 故事17邀请多人认养一个动物
**As a** 用户
**I want to** 邀请朋友一起认养一个动物
**So that** 我可以与朋友共同体验认养乐趣并获得奖励
**验收标准:**
- 用户可以邀请朋友共同认养一个动物
- 系统支持多人认养同一个动物
- 成功邀请朋友认养后,邀请者可获得奖励
### 3.9 活动组织者功能
#### 故事20发布和管理结伴活动
**As a** 活动组织者
**I want to** 发布和管理结伴活动
**So that** 我可以为用户提供丰富的活动选择
**验收标准:**
- 活动组织者可以发布新的结伴活动(类型、时间、地点、费用等)
- 活动组织者可以编辑已发布的活动信息
- 活动组织者可以查看活动报名情况
- 活动组织者可以取消活动并通知报名用户
### 3.10 农场老板功能
#### 故事21管理动物认领信息
**As a** 农场老板
**I want to** 管理农场动物认领信息
**So that** 我可以为用户提供准确的认领服务
**验收标准:**
- 农场老板可以添加新的可认领动物
- 农场老板可以更新动物状态信息(生长记录、健康状况等)
- 农场老板可以查看认领情况和认领者信息
- 农场老板可以设置认领费用和条件
## 4. 非功能性需求
### 4.1 性能需求
- 页面加载时间不超过3秒
- 支持同时在线用户数1000人
- 商家服务页面加载时间不超过2秒
### 4.2 安全需求
- 用户数据加密存储
- 敏感操作需要二次确认
- 防止SQL注入和XSS攻击
- 商家资质信息加密存储
- 商家与用户交易记录加密存储
- 商家服务评价数据防篡改
### 4.3 兼容性需求
- 支持微信小程序平台
- 兼容不同屏幕尺寸的移动设备
## 5. 优先级建议
### 5.1 功能优先级MoSCoW模型
**Must Have必须有**
- 用户注册/登录
- 发布和浏览旅行计划
- 基本的结伴匹配功能
- 动物认领核心功能
**Should Have应该有**
- 用户评价体系
- 消息发送功能
- 动物状态查看
- 其他结伴活动功能
- 用户推广奖励机制
- 活动分享奖励功能
- 认养分享奖励功能
- 多人认养奖励功能
- 商家用户管理功能
- 花店商家功能
- 活动组织者功能
- 农场老板功能
- 官网功能
**Could Have可以有**
- 视频监控功能
- 个性化推荐算法
- 社区动态分享
- 送花服务基础功能
- 基于定位查看目的地信息功能
**Won't Have不会有**
- 虚拟现实农场体验
- AI智能行程规划
- 虚拟送花效果预览
## 6. 原型构思
### 6.1 主要界面
#### 首页
- 顶部搜索栏(搜索目的地、用户、动物)
- 轮播图展示热门旅行路线和动物认领活动
- 两个主要功能入口:"找搭子"和"认领动物"
- 推荐的旅行计划列表
#### 旅行计划页面
- 发布旅行计划按钮
- 筛选条件(目的地、时间、预算等)
- 旅行计划卡片列表(显示基本信息和匹配度)
#### 结伴活动页面
- 发布结伴活动按钮
- 活动类型筛选(看电影、拼饭、桌游等)
- 活动卡片列表(显示活动类型、时间、地点、参与人数等信息)
#### 动物认领页面
- 动物分类筛选
- 动物卡片列表(显示动物图片、基本信息)
- 认领排行榜(最受欢迎的动物)
#### 个人中心
- 用户头像和基本信息
- 我的旅行计划
- 我认领的动物
- 我的送花记录
- 我的推广奖励
- 我的活动分享
- 我的认养分享
- 多人认养邀请
- 消息通知
- 设置选项
#### 送花服务页面
- 鲜花产品展示(图片、价格、花语介绍)
- 分类筛选(节日、用途、价格区间等)
- 购物车功能
- 订单确认页面(选择送花对象、填写祝福语、选择配送时间)
#### 推广奖励页面
- 推广链接展示和复制功能
- 二维码推广海报生成
- 推广数据统计图表(推广人数、注册人数、收益等)
- 奖励明细列表
- 提现功能入口
#### 定位功能页面
- 基于用户当前位置显示附近的目的地
- 地图视图展示目的地位置
- 目的地列表视图(包含距离、评分等信息)
- 筛选功能(按距离、评分、特色等条件筛选)
- 搜索功能(搜索特定区域或目的地)
#### 活动分享页面
- 用户参与的活动列表
- 活动分享按钮和分享统计
- 分享奖励记录
#### 认养分享页面
- 用户认养的动物列表
- 动物分享按钮和分享统计
- 分享奖励记录
#### 多人认养邀请页面
- 可邀请的动物列表
- 邀请好友功能
- 邀请记录和奖励明细
#### 商家中心首页
- 商家信息展示
- 服务概览(订单数、收益、评价等)
- 快捷操作入口(发布产品、查看订单等)
#### 官网首页
- 平台介绍和核心功能展示
- 成功案例和用户评价展示
- 动物认领和旅行结伴相关资讯
- 小程序跳转入口
#### 商家合作页面
- 平台商业模式和收益机制介绍
- 商家合作政策和入驻流程
- 在线入驻申请表单
- 商家成功案例和收益数据展示
#### 商品管理页面
- 商品列表展示
- 添加/编辑商品功能
- 商品状态管理(上架/下架)
#### 订单管理页面
- 订单列表展示
- 订单状态更新功能
- 订单详情查看
#### 活动管理页面
- 活动列表展示
- 发布/编辑活动功能
- 活动报名情况查看
#### 动物管理页面
- 可认领动物列表
- 添加/编辑动物信息功能
- 动物状态更新功能
### 6.2 核心流程
#### 结伴流程:
1. 用户发布旅行计划
2. 系统匹配相似行程
3. 用户发起结伴邀请
4. 被邀请用户接受邀请
5. 双方建立结伴关系,开始沟通
#### 认领流程:
1. 用户浏览可认领动物
2. 选择心仪动物
3. 支付认领费用
4. 签署电子协议
5. 开始与动物互动
#### 商家服务流程:
1. 商家注册并完善信息
2. 商家发布服务/产品
3. 用户浏览并选择服务/产品
4. 用户下单并支付
5. 商家处理订单
6. 服务完成,用户评价
## 7. 验收标准
### 7.1 功能验收
- 所有用户故事的验收标准均已满足
- 功能测试通过率达到95%以上
- 用户界面符合设计要求
### 7.2 性能验收
- 页面加载时间符合要求
- 系统稳定性测试通过
- 压力测试达到预期指标
### 7.3 安全验收
- 安全测试通过
- 用户隐私保护符合法规要求