From 54ecc09661350ac39b5168ada559554ff55ff7d6 Mon Sep 17 00:00:00 2001 From: gitee-bot Date: Thu, 17 Jul 2025 06:38:46 +0000 Subject: [PATCH] Update README.md --- README.md | 300 ++++++++++++++++++++++++------------------------------ 1 file changed, 135 insertions(+), 165 deletions(-) diff --git a/README.md b/README.md index f0eccf0..f92d858 100644 --- a/README.md +++ b/README.md @@ -1,135 +1,93 @@ - - -# jzo2o - -![](docs/images/logo.png) - -jzo2o 是一个家政 O2O 平台,包含用户端、机构端和服务人员端,支持家政服务的在线交易流程。 +# JZO2O ## 一、项目介绍 - ### 1、项目背景 -jzo2o 项目旨在打造一个家政 O2O 平台,实现服务人员、机构与用户的高效对接,提供从服务上架到订单结算的完整交易闭环。 +JZO2O 是一个基于 O2O(Online To Offline)模式的服务平台,旨在连接线上服务请求与线下服务提供者。该项目适用于各类本地化服务,如家政、维修、配送等,提供从下单到服务完成的全流程支持。 ### 2、运营模式 -平台支持 B2B2C 与 C2B2C 两种运营模式: -- **B2B2C**:机构提供服务,平台负责撮合与抽成 -- **C2B2C**:用户发布需求,机构或服务人员接单 - -![](docs/images/B2B2C与C2B2C的区别.png) +JZO2O 采用多角色协作的运营模式,主要角色包括: +- **用户(C端)**:发起服务请求,查看服务信息,提交订单。 +- **服务人员/机构(Worker/Institution)**:接收订单,提供服务,管理服务技能。 +- **运营人员(Operator)**:管理区域、服务类型、服务项,审核服务人员和机构资质。 +- **系统管理员(System Admin)**:维护系统配置,处理异常情况。 ### 3、项目业务流程 -项目核心业务流程如下: - -![](docs/images/项目核心业务流程.png) - -1. 运营端在运营区域上架家政服务 -2. 用户端通过定位区域获取当前区域的服务项目,选择家政服务,下单、支付 -3. 家政服务人员及机构通过平台抢单或派单 -4. 服务完成后,订单结算,平台按比例抽成 +1. **用户下单**:用户选择服务类型和服务项,填写服务地址、时间等信息,提交订单。 +2. **订单派发**:系统根据服务人员/机构的接单设置、服务范围、评分等因素进行派单或抢单。 +3. **服务执行**:服务人员/机构接收订单后,按约定时间上门服务。 +4. **订单完成与评价**:服务完成后,用户可对服务进行评价,系统根据评价更新服务人员/机构的评分。 +5. **支付与退款**:用户通过小程序完成支付,若服务未完成或不满意,可发起退款。 ### 4、项目演示 -后台管理:https://jzo2o-operation.itheima.net/#/dashboard/base -机构端:https://jzo2o-institution.itheima.net/#/dashboard/base +项目提供完整的前后端分离架构,前端支持微信小程序、H5、PC端等多种终端,后端采用微服务架构,涵盖订单管理、客户管理、基础服务、交易服务、营销服务等多个模块。 ## 二、项目架构 - ### 1、项目业务模块 -| 模块 | 服务名称 | 功能说明 | -|------------------|----------------|-------------------------------------------| -| jzo2o-api | 接口服务 | 微服务间远程调用接口 | -| jzo2o-customer | 客户管理 | 用户管理、服务人员管理、机构管理 | -| jzo2o-foundations| 基础服务 | 服务管理、区域管理 | -| jzo2o-orders | 订单管理 | 订单生命周期管理、抢单、派单、历史订单 | -| jzo2o-trade | 交易服务 | 小程序支付、退款 | -| jzo2o-market | 营销活动 | 优惠券、活动管理 | -| jzo2o-publics | 通用服务 | 上传、定位等通用服务 | -| jzo2o-framework | 系统架构基础 | 提供通用架构封装 | -| jzo2o-gateway | 网关 | 请求过滤、负载均衡、路由转发 | +JZO2O 采用微服务架构,主要模块包括: +- **jzo2o-api**:微服务间通信的接口定义。 +- **jzo2o-customer**:客户管理服务,负责用户、服务人员、机构的管理。 +- **jzo2o-foundations**:基础服务,负责区域、服务类型、服务项的管理。 +- **jzo2o-orders**:订单管理服务,包含订单调度、历史订单、抢单等子模块。 +- **jzo2o-trade**:交易服务,处理支付、退款等与第三方支付系统的对接。 +- **jzo2o-market**:营销服务,管理优惠券、促销活动等。 +- **jzo2o-publics**:通用服务,提供地图定位、文件上传等公共功能。 +- **jzo2o-gateway**:网关服务,负责请求过滤、负载均衡、路由转发。 ### 2、项目架构 -项目基于 Spring Cloud Alibaba 构建,采用前后端分离架构。 - -![](docs/images/项目架构.png) - -主要技术栈: -- Spring Cloud Alibaba -- Redis 缓存 -- Elasticsearch 搜索与地理定位 -- ShardingSphere 分库分表 -- Seata 分布式事务 -- Canal + RabbitMQ 异构数据同步 -- XXL-JOB 任务调度 -- 状态机引擎 流程控制 +- **前端**:支持微信小程序、H5、PC端,采用 Vue.js 或 React.js 构建。 +- **后端**:基于 Spring Boot + Spring Cloud Alibaba 的微服务架构,使用 Nacos 作为配置中心和服务注册中心。 +- **数据库**:MySQL 作为主数据库,Redis 用于缓存,Elasticsearch 用于服务搜索,RabbitMQ 用于异步消息处理。 +- **部署**:采用 Docker 容器化部署,支持本地部署和云部署。 ### 3、学习收获 -通过本项目,开发者可以掌握: -1. 项目需求分析与系统设计 -2. 微服务开发与调优(Spring Cloud Alibaba) -3. Redis 缓存方案设计 -4. Canal + MQ 数据同步 -5. Elasticsearch 全文检索与地理搜索 -6. ShardingSphere 分库分表 -7. Seata 分布式事务控制 -8. XXL-JOB 调度与线程池管理 -9. 状态机流程设计 -10. 秒杀、派单调度、服务管理等业务系统设计 -11. 统计分析与看板系统开发 +通过本项目,开发者可以学习到: +- 微服务架构的设计与实现。 +- 多模块项目的构建与管理。 +- 服务间通信(Feign、Ribbon)。 +- 分布式事务(Seata)。 +- 消息队列(RabbitMQ)的使用。 +- 缓存(Redis)与搜索(Elasticsearch)的集成。 +- 与第三方服务(微信支付、阿里云OSS、高德地图)的对接。 ## 三、核心功能演示 - ### 启动顺序 -1. 启动 jzo2o-gateway -2. 启动 jzo2o-customer -3. 启动 jzo2o-publics -4. 启动 jzo2o-foundations -5. 启动 jzo2o-orders-manager -6. 启动 jzo2o-orders-seize -7. 启动管理端(前端) -8. 启动服务端(前端) -9. 启动用户端(前端) -10. 启动 Canal 前需执行 `reset master` 并删除 `meta.dat` +1. 启动 Nacos(服务注册与配置中心)。 +2. 启动网关服务(jzo2o-gateway)。 +3. 启动客户管理服务(jzo2o-customer)。 +4. 启动基础服务(jzo2o-foundations)。 +5. 启动订单管理服务(jzo2o-orders-manager)。 +6. 启动抢单服务(jzo2o-orders-seize)。 +7. 启动交易服务(jzo2o-trade)。 +8. 启动营销服务(jzo2o-market)。 +9. 启动公共通用服务(jzo2o-publics)。 +10. 启动历史订单服务(jzo2o-orders-history)。 ### 核心业务流程 -1. **服务管理**:运营端上架家政服务(如北京上架日常保洁、空调维修) -2. **用户下单**:用户通过小程序查询服务,选择后下单并支付 -3. **抢单/派单**:服务人员或机构设置服务范围与技能后,通过抢单或系统派单获取订单 -4. **订单管理**:订单生命周期管理(创建、取消、完成等) -5. **交易结算**:平台根据订单完成情况抽成 - -![](docs/images/项目核心交互流程.jpg) +1. **用户注册/登录**:用户通过微信授权登录,系统生成 JWT Token。 +2. **服务查询**:用户根据所在区域查询可用服务,系统从 Redis 缓存中获取服务列表。 +3. **下单**:用户选择服务项,填写地址、时间等信息,系统生成订单并发送至 RabbitMQ。 +4. **订单派发**:系统根据服务人员/机构的接单设置、服务范围、评分等因素进行派单或抢单。 +5. **服务执行**:服务人员/机构接收订单,按约定时间上门服务。 +6. **订单完成与评价**:服务完成后,用户可对服务进行评价,系统更新服务人员/机构的评分。 +7. **支付与退款**:用户通过微信支付完成订单支付,若服务未完成或不满意,可发起退款。 ## 四、部署与开发环境 - ### 技术栈 -- Spring Boot 2.x -- Spring Cloud Alibaba 2022.x -- Nacos 服务注册与配置中心 -- Redis 缓存 -- Elasticsearch 全文检索与地理搜索 -- RabbitMQ 消息队列 -- MySQL 分库分表 -- Seata 分布式事务 -- XXL-JOB 任务调度 -- Knife4j 接口文档 +- **后端**:Spring Boot、Spring Cloud Alibaba、MyBatis Plus、Redis、Elasticsearch、RabbitMQ、Seata、XXL-JOB。 +- **前端**:Vue.js / React.js、微信小程序。 +- **数据库**:MySQL、MongoDB(用于日志存储)。 +- **部署**:Docker、Kubernetes(可选)。 +- **第三方服务**:微信支付、阿里云OSS、高德地图API。 ### 模块依赖关系 -``` -jzo2o-customer -├── jzo2o-api -├── jzo2o-framework -│ ├── jzo2o-common -│ ├── jzo2o-mvc -│ ├── jzo2o-rabbitmq -│ ├── jzo2o-es -│ ├── jzo2o-mysql -│ └── jzo2o-redis -├── jzo2o-orders -│ ├── jzo2o-orders-manager -│ ├── jzo2o-orders-seize -│ └── jzo2o-orders-dispatch -└── jzo2o-trade -``` +- **jzo2o-api**:所有微服务依赖此模块,用于服务间通信。 +- **jzo2o-customer**:依赖 jzo2o-api,提供用户、服务人员、机构的管理。 +- **jzo2o-foundations**:依赖 jzo2o-api,提供区域、服务类型、服务项的管理。 +- **jzo2o-orders**:依赖 jzo2o-api,提供订单调度、历史订单、抢单服务。 +- **jzo2o-trade**:依赖 jzo2o-api,处理支付、退款等交易流程。 +- **jzo2o-market**:依赖 jzo2o-api,管理优惠券、促销活动。 +- **jzo2o-publics**:依赖 jzo2o-api,提供地图定位、文件上传等公共功能。 +- **jzo2o-gateway**:依赖所有微服务,作为统一入口,处理请求过滤、路由转发。 ### 项目结构 ``` @@ -158,100 +116,112 @@ jzo2o/ ``` ## 五、开发与部署 - ### 1. 开发环境 -- JDK 11+ -- Maven 3.6+ -- Git -- IDE(IntelliJ IDEA / Eclipse) -- Docker(可选) +- **JDK**:11 或以上。 +- **IDE**:IntelliJ IDEA 或 Eclipse。 +- **构建工具**:Maven。 +- **数据库**:MySQL 8.x、Redis 6.x、Elasticsearch 7.x。 +- **消息队列**:RabbitMQ。 +- **服务注册与配置中心**:Nacos。 +- **分布式事务**:Seata。 +- **任务调度**:XXL-JOB。 ### 2. 构建项目 +#### 克隆项目 ```bash -# 克隆项目 git clone https://gitee.com/itxinfei/jzo2o.git +``` -# 进入项目目录 +#### 进入项目目录 +```bash cd jzo2o +``` -# 构建所有模块 +#### 构建所有模块 +```bash mvn clean install ``` ### 3. 部署项目 +#### 启动网关服务 ```bash -# 启动网关服务 -cd jzo2o-gateway && mvn spring-boot:run +cd jzo2o-gateway +mvn spring-boot:run +``` -# 启动客户管理服务 -cd ../jzo2o-customer && mvn spring-boot:run +#### 启动客户管理服务 +```bash +cd jzo2o-customer +mvn spring-boot:run +``` -# 启动基础服务(区域、服务项管理) -cd ../jzo2o-foundations && mvn spring-boot:run +#### 启动基础服务(区域、服务项管理) +```bash +cd jzo2o-foundations +mvn spring-boot:run +``` -# 启动订单管理服务 -cd ../jzo2o-orders/jzo2o-orders-manager && mvn spring-boot:run +#### 启动订单管理服务 +```bash +cd jzo2o-orders/jzo2o-orders-manager +mvn spring-boot:run +``` -# 启动抢单服务 -cd ../jzo2o-orders-seize && mvn spring-boot:run +#### 启动抢单服务 +```bash +cd jzo2o-orders/jzo2o-orders-seize +mvn spring-boot:run +``` -# 启动交易服务 -cd ../../jzo2o-trade && mvn spring-boot:run +#### 启动交易服务 +```bash +cd jzo2o-trade +mvn spring-boot:run +``` -# 启动营销服务 -cd ../jzo2o-market && mvn spring-boot:run +#### 启动营销服务 +```bash +cd jzo2o-market +mvn spring-boot:run +``` -# 启动公共通用服务 -cd ../jzo2o-publics && mvn spring-boot:run +#### 启动公共通用服务 +```bash +cd jzo2o-publics +mvn spring-boot:run ``` ### 4. 前端部署 -- 管理端:https://jzo2o-operation.itheima.net -- 机构端:https://jzo2o-institution.itheima.net -- 用户端:https://jzo2o-user.itheima.net +前端项目使用 Vue.js 或 React.js 构建,支持微信小程序、H5、PC端: +```bash +npm install +npm run serve +``` ## 六、贡献指南 - ### 提交规范 -1. 请确保提交前通过本地测试 -2. 提交前请 pull 最新代码并解决冲突 -3. 遵循 [Conventional Commits](https://www.conventionalcommits.org/) 规范 -4. 提交前请确保代码风格统一(使用 IDEA 默认格式) -5. 请使用中文注释 +- 使用标准的 Git 提交信息格式。 +- 提交前确保代码通过本地测试。 +- 提交 PR 前确保代码风格与项目一致(使用 Checkstyle)。 -### Issue 管理 -- 请在 issue 中清晰描述 bug、需求或文档问题 -- 开发者可认领 issue 进行修复 -- 提交 PR 时请关联对应 issue +### Issue ://gitee.com/itxinfei/jzo2o/issues ## 七、文档与社区 - ### 接口文档 -项目使用 Knife4j 提供接口文档支持,文档地址: -- 客户管理服务:http://localhost:8080/doc.html -- 订单服务:http://localhost:8081/doc.html -- 基础服务:http://localhost:8082/doc.html -- 营销服务:http://localhost:8083/doc.html -- 交易服务:http://localhost:8084/doc.html +- 使用 Knife4j(基于 Swagger)生成 RESTful API 文档。 +- 文档访问地址:`http://localhost:8080/doc.html` ### 社区支持 -- Gitee 仓库:https://gitee.com/itxinfei/jzo2o -- Issue 提交:https://gitee.com/itxinfei/jzo2o/issues -- Wiki:https://gitee.com/itxinfei/jzo2o/wikis -- 交流群:请加入 Gitee 社区讨论组 +- Gitee 项目主页:[https://gitee.com/itxinfei/jzo2o](https://gitee.com/itxinfei/jzo2o) +- 交流群:QQ群、微信群(请参考项目文档获取加入方式) ## 八、许可证 -本项目基于 [MIT License](LICENSE),可自由用于商业用途,但需保留原始版权声明。 +本项目采用 **Apache License 2.0** 开源协议。 ## 九、项目维护者 -项目由 [itxinfei](https://gitee.com/itxinfei) 维护,欢迎社区开发者参与贡献。 +- **itxinfei**:项目发起人,主要维护者。 ## 十、联系方式 -- 邮箱:itxinfei@163.com -- 微信:请查看项目 Wiki -- Gitee:https://gitee.com/itxinfei/jzo2o - ---- -**项目核心交互流程图** - -![](docs/images/项目核心交互流程.jpg) \ No newline at end of file +- **Gitee**:[https://gitee.com/itxinfei](https://gitee.com/itxinfei) +- **微信公众号**:搜索“JZO2O”获取最新动态。 +- **邮箱**:itxinfei@126.com \ No newline at end of file -- Gitee