{"id":26336945,"url":"https://github.com/jackielinn/elm_springcloud","last_synced_at":"2026-04-28T12:01:40.781Z","repository":{"id":281317829,"uuid":"944918935","full_name":"JackieLinn/elm_springcloud","owner":"JackieLinn","description":"软件服务工程饿了么项目SpringCloud后端代码仓库","archived":false,"fork":false,"pushed_at":"2025-03-15T11:28:20.000Z","size":55,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T12:20:24.204Z","etag":null,"topics":["springboot","springcloud","springcloudalibaba"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JackieLinn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"security/pom.xml","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-08T08:28:12.000Z","updated_at":"2025-03-15T11:28:24.000Z","dependencies_parsed_at":"2025-03-15T12:19:53.583Z","dependency_job_id":null,"html_url":"https://github.com/JackieLinn/elm_springcloud","commit_stats":null,"previous_names":["jackielinn/elm_springcloud"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JackieLinn%2Felm_springcloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JackieLinn%2Felm_springcloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JackieLinn%2Felm_springcloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JackieLinn%2Felm_springcloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JackieLinn","download_url":"https://codeload.github.com/JackieLinn/elm_springcloud/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243814895,"owners_count":20352038,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["springboot","springcloud","springcloudalibaba"],"created_at":"2025-03-16T02:16:49.113Z","updated_at":"2026-04-28T12:01:40.775Z","avatar_url":"https://github.com/JackieLinn.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# elm_springcloud\n\n软件服务工程饿了么项目SpringCloud后端代码仓库\n\n## 项目概述\n\n这是一个基于Spring Cloud的微服务架构外卖平台后端系统，包含以下核心功能：\n\n### 核心服务\n- **auth-service**: 用户认证与授权服务\n- **business-service**: 商家管理服务\n- **food-service**: 菜品管理服务\n- **cart-service**: 购物车服务\n- **orders-service**: 订单管理服务\n- **address-service**: 地址管理服务\n- **gateway**: API网关服务\n\n## API接口文档\n\n### 1. 认证服务 (auth-service)\n\n#### 1.1 用户认证接口\n- **请求邮件验证码**\n  - 路径: `GET /auth/ask-code`\n  - 参数: `email` (邮箱), `type` (类型: register|reset)\n  - 功能: 发送邮件验证码用于注册或重置密码\n\n- **用户注册**\n  - 路径: `POST /auth/register`\n  - 功能: 用户邮箱注册\n\n- **密码重置确认**\n  - 路径: `POST /auth/reset-confirm`\n  - 功能: 确认密码重置验证码\n\n- **密码重置**\n  - 路径: `POST /auth/reset-password`\n  - 功能: 执行密码重置操作\n\n#### 1.2 用户管理接口\n- **根据用户ID获取用户信息**\n  - 路径: `GET /api/account/get-account-by-userId`\n  - 参数: `userId` (用户ID)\n\n- **支付操作**\n  - 路径: `GET /api/account/pay`\n  - 参数: `userId` (用户ID), `price` (金额)\n  - 功能: 远程调用，扣除用户余额\n\n- **退款操作**\n  - 路径: `GET /api/account/refund`\n  - 参数: `userId` (用户ID), `price` (金额)\n  - 功能: 远程调用，退还用户余额\n\n- **更新用户角色**\n  - 路径: `POST /api/account/role/update`\n  - 参数: `userId` (用户ID), `roleId` (角色ID)\n\n- **根据用户名查询用户ID**\n  - 路径: `GET /api/account/remote/get-user-id`\n  - 参数: `userName` (用户名)\n  - 功能: 远程调用，供其他服务使用\n\n#### 1.3 管理员接口\n- **分页查询所有用户**\n  - 路径: `GET /api/account/admin/list`\n  - 参数: `pageNum` (页码), `pageSize` (页大小), `roleId` (可选，角色ID)\n\n- **新增用户**\n  - 路径: `POST /api/account/admin/add`\n  - 功能: 管理员新增用户\n\n- **删除用户**\n  - 路径: `POST /api/account/admin/delete`\n  - 参数: `userId` (用户ID)\n  - 功能: 逻辑删除用户\n\n- **修改用户信息**\n  - 路径: `POST /api/account/admin/update`\n  - 功能: 管理员修改用户信息\n\n### 2. 商家服务 (business-service)\n\n#### 2.1 商家查询接口\n- **获取所有点餐分类**\n  - 路径: `GET /api/business/get-all-categories`\n  - 功能: 返回所有可用的点餐分类\n\n- **获取推荐商家**\n  - 路径: `GET /api/business/get-recommend-business`\n  - 功能: 获取推荐商家列表\n\n- **根据分类获取商家**\n  - 路径: `GET /api/business/get-business-by-orderTypeId`\n  - 参数: `orderTypeId` (分类ID)\n\n- **根据商家ID获取商家信息**\n  - 路径: `GET /api/business/get-business-by-businessId`\n  - 参数: `businessId` (商家ID)\n\n- **获取商家配送费**\n  - 路径: `GET /api/business/get-delivery-price`\n  - 参数: `businessId` (商家ID)\n\n- **搜索商家**\n  - 路径: `GET /api/business/search`\n  - 参数: `keyword` (搜索关键词)\n\n#### 2.2 商家管理接口\n- **根据用户ID获取商家信息**\n  - 路径: `GET /api/business/list-by-user`\n  - 参数: `userId` (用户ID)\n  - 功能: 商家端查看自己的店铺列表\n\n- **修改商家信息**\n  - 路径: `POST /api/business/update-info-by-user`\n  - 参数: `userId` (用户ID)\n  - 功能: 商家修改自己的店铺信息\n\n- **校验用户是否拥有商家**\n  - 路径: `GET /api/business/user-business/check`\n  - 参数: `userId` (用户ID), `businessId` (商家ID)\n  - 功能: 远程调用，校验用户-商家归属\n\n#### 2.3 远程调用接口\n- **根据商家ID获取商家信息(远程)**\n  - 路径: `GET /api/business/get-business-by-businessId-remote`\n  - 参数: `businessId` (商家ID)\n\n- **根据商家ID列表获取商家信息**\n  - 路径: `GET /api/business/get-business-info`\n  - 参数: `businessIds` (商家ID集合)\n\n#### 2.4 管理员接口\n- **禁用商家**\n  - 路径: `POST /api/business/admin/disable`\n  - 参数: `businessId` (商家ID)\n\n- **启用商家**\n  - 路径: `POST /api/business/admin/enable`\n  - 参数: `businessId` (商家ID)\n\n- **分页查询所有商家**\n  - 路径: `GET /api/business/admin/list`\n  - 参数: `pageNum` (页码), `pageSize` (页大小), `status` (可选，状态), `keyword` (可选，关键词)\n\n- **查询商家详情**\n  - 路径: `GET /api/business/admin/detail`\n  - 参数: `businessId` (商家ID)\n\n### 3. 商家入驻申请接口\n\n#### 3.1 申请接口\n- **提交入驻申请(使用用户名)**\n  - 路径: `POST /api/business/merchant/apply`\n  - 功能: 通过用户名提交商家入驻申请，无需用户登录\n\n- **提交入驻申请(使用用户ID)**\n  - 路径: `POST /api/business/merchant/apply-by-id`\n  - 功能: 通过用户ID提交商家入驻申请，需要用户已登录\n\n- **查询申请状态**\n  - 路径: `GET /api/business/merchant/status`\n  - 参数: `userId` (用户ID)\n\n#### 3.2 管理员审核接口\n- **分页查询申请列表**\n  - 路径: `GET /api/business/admin/apply/list`\n  - 参数: `pageNum` (页码), `pageSize` (页大小), `status` (可选，状态)\n\n- **审核申请**\n  - 路径: `POST /api/business/admin/apply/review`\n  - 参数: `applyId` (申请ID), `result` (审核结果), `reviewReason` (审核原因)\n\n### 4. 菜品服务 (food-service)\n\n#### 4.1 菜品查询接口\n- **根据商家ID获取上架菜品**\n  - 路径: `GET /api/food/list-food-by-BusinessId`\n  - 参数: `businessId` (商家ID)\n  - 功能: 客户端用，只返回上架菜品\n\n- **根据商家ID获取所有菜品**\n  - 路径: `GET /api/food/list-all-food-by-BusinessId`\n  - 参数: `businessId` (商家ID)\n  - 功能: 商家/管理端用，返回所有菜品\n\n#### 4.2 远程调用接口\n- **根据菜品ID获取菜品**\n  - 路径: `GET /api/food/list-food-by-FoodId`\n  - 参数: `foodId` (菜品ID)\n\n- **根据菜品ID列表获取菜品**\n  - 路径: `GET /api/food/get-food-info`\n  - 参数: `foodIds` (菜品ID集合)\n\n#### 4.3 商家菜品管理接口\n- **新增菜品**\n  - 路径: `POST /api/food/add`\n  - 功能: 商家新增菜品\n\n- **修改菜品**\n  - 路径: `POST /api/food/update`\n  - 功能: 商家修改菜品\n\n- **删除菜品**\n  - 路径: `POST /api/food/delete`\n  - 参数: `foodId` (菜品ID)\n  - 功能: 逻辑删除菜品\n\n- **上下架菜品**\n  - 路径: `POST /api/food/status`\n  - 参数: `foodId` (菜品ID), `foodStatus` (状态)\n  - 功能: 商家上下架菜品\n\n#### 4.4 管理员接口\n- **下架菜品**\n  - 路径: `POST /api/food/admin/disable`\n  - 参数: `foodId` (菜品ID)\n\n- **恢复菜品上架**\n  - 路径: `POST /api/food/admin/enable`\n  - 参数: `foodId` (菜品ID)\n\n### 5. 购物车服务 (cart-service)\n\n#### 5.1 购物车操作接口\n- **获取购物车信息**\n  - 路径: `POST /api/cart/list-cart`\n  - 功能: 获取用户购物车中的商品列表\n\n- **保存购物车信息**\n  - 路径: `POST /api/cart/save-cart`\n  - 功能: 添加商品到购物车\n\n- **更新购物车信息**\n  - 路径: `POST /api/cart/update-cart`\n  - 功能: 更新购物车中商品数量\n\n- **移除购物车信息**\n  - 路径: `POST /api/cart/remove-cart`\n  - 功能: 从购物车中移除商品\n\n- **获取购物车数量**\n  - 路径: `GET /api/cart/get-cart-quantity`\n  - 参数: `userId` (用户ID)\n\n#### 5.2 远程调用接口\n- **获取购物车映射**\n  - 路径: `GET /api/cart/get-cart-map`\n  - 参数: `userId` (用户ID), `businessId` (商家ID)\n\n- **删除购物车记录**\n  - 路径: `POST /api/cart/delete-by-cid`\n  - 参数: `cartId` (购物车ID)\n\n### 6. 订单服务 (orders-service)\n\n#### 6.1 订单操作接口\n- **创建订单**\n  - 路径: `POST /api/orders/create-orders`\n  - 功能: 创建新订单\n\n- **支付操作**\n  - 路径: `POST /api/orders/payment`\n  - 功能: 订单支付\n\n- **更新送餐地址**\n  - 路径: `POST /api/orders/update-address`\n  - 功能: 更新订单的送餐地址\n\n#### 6.2 订单查询接口\n- **根据订单编号获取商家信息**\n  - 路径: `GET /api/orders/get-business-info`\n  - 参数: `orderId` (订单ID)\n\n- **根据订单编号获取食物信息**\n  - 路径: `GET /api/orders/get-food-info`\n  - 参数: `orderId` (订单ID)\n\n- **获取所有订单信息**\n  - 路径: `GET /api/orders/get-all-order-info`\n  - 参数: `userId` (用户ID)\n\n#### 6.3 商家端接口\n- **根据商家ID查询订单列表**\n  - 路径: `GET /api/orders/list-by-business`\n  - 参数: `userId` (用户ID), `businessId` (商家ID)\n  - 功能: 商家端查看该商家所有订单\n\n- **订单详情**\n  - 路径: `GET /api/orders/detail`\n  - 参数: `userId` (用户ID), `orderId` (订单ID)\n\n- **接单**\n  - 路径: `POST /api/orders/accept`\n  - 参数: `userId` (用户ID), `orderId` (订单ID)\n\n- **完成订单**\n  - 路径: `POST /api/orders/finish`\n  - 参数: `userId` (用户ID), `orderId` (订单ID)\n\n- **拒单**\n  - 路径: `POST /api/orders/reject`\n  - 参数: `userId` (用户ID), `orderId` (订单ID)\n  - 功能: 商家拒单，已支付需退款\n\n#### 6.4 管理员接口\n- **按商家ID分页查订单**\n  - 路径: `GET /api/orders/admin/list-by-business`\n  - 参数: `businessId` (商家ID), `pageNum` (页码), `pageSize` (页大小), `orderState` (可选，订单状态)\n\n### 7. 地址服务 (address-service)\n\n#### 7.1 地址管理接口\n- **获取用户所有地址信息**\n  - 路径: `GET /api/deliveryAddress/get-all-address`\n  - 参数: `userId` (用户ID)\n\n- **保存地址信息**\n  - 路径: `POST /api/deliveryAddress/save-address`\n  - 功能: 新增配送地址\n\n- **更新地址信息**\n  - 路径: `POST /api/deliveryAddress/update-address`\n  - 功能: 修改配送地址\n\n- **移除地址信息**\n  - 路径: `POST /api/deliveryAddress/remove-address`\n  - 参数: `daId` (地址ID)\n\n## 网关路由配置\n\n所有接口通过网关统一访问，路由规则如下：\n\n- **认证服务**: `/auth/**`, `/api/account/**` → `auth-service`\n- **商家服务**: `/api/business/**` → `business-service`\n- **菜品服务**: `/api/food/**` → `food-service`\n- **地址服务**: `/api/deliveryAddress/**` → `address-service`\n- **购物车服务**: `/api/cart/**` → `cart-service`\n- **订单服务**: `/api/orders/**` → `orders-service`\n\n## 技术特性\n\n### 1. 微服务架构\n- 基于Spring Cloud Gateway的API网关\n- 服务注册与发现使用Nacos\n- 服务间通信使用OpenFeign\n- 分布式事务使用Seata\n\n### 2. 高可用保障\n- 熔断器(Circuit Breaker)\n- 限流器(Rate Limiter)\n- 舱壁隔离(Bulkhead)\n- 统一降级处理\n\n### 3. 数据存储\n- MySQL主从复制\n- Redis缓存\n- Elasticsearch搜索\n- ShardingSphere分库分表\n\n### 4. 安全认证\n- JWT令牌认证\n- 角色权限控制\n- 密码加密存储\n\n## 商家入驻功能\n\n#### 功能描述\n商家入驻功能允许普通用户申请成为商家，经过管理员审核后自动升级为商家角色。\n\n#### 核心特性\n1. **无需登录申请**: 用户可以通过用户名直接申请入驻，无需先登录获取userId\n2. **自动角色升级**: 审核通过后自动将用户角色从普通用户升级为商家\n3. **数据一致性**: 确保用户-商家关联关系的正确建立\n\n#### API接口\n\n##### 提交入驻申请\n```http\nPOST /api/business/merchant/apply\nContent-Type: application/json\n\n{\n    \"userName\": \"用户名\",\n    \"businessName\": \"商家名称\",\n    \"businessAddress\": \"商家地址\",\n    \"contactPhone\": \"联系电话\",\n    \"businessDesc\": \"商家简介\"\n}\n```\n\n##### 查询申请状态\n```http\nGET /api/business/merchant/status?userId={userId}\n```\n\n##### 管理员审核申请\n```http\nPOST /api/business/admin/apply/review?applyId={applyId}\u0026result={result}\u0026reviewReason={reviewReason}\n```\n\n#### 技术实现\n- 使用Feign客户端实现微服务间通信\n- 通过userName查询userId解决未登录用户身份识别问题\n- 数据库userName字段添加唯一约束确保数据一致性\n- 审核通过后自动创建商家记录并建立用户-商家关联关系\n\n## Nacos 集群配置\n\n```bash\ndocker compose up -d\n\ndocker cp mysql-schema.sql elm-mysql-master:/tmp/mysql-schema.sql\n\ndocker exec -it elm-mysql-master mysql -u root -p12345678\n\nCREATE DATABASE nacos;\n\nUSE nacos;\n\nsource /tmp/mysql-schema.sql;\n\nexit\n\ndocker compose -f nacos-compose.yaml up -d\n```\n\n## Shardingsphere 集群配置\n\n```bash\ndocker compose up -d\n\ndocker exec -it elm-mysql-master bash\n\nmysql -u root -p12345678\n\nCREATE USER 'repl'@'%' IDENTIFIED BY 'repl123';\n\nGRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';\n\nFLUSH PRIVILEGES;\n\nSHOW MASTER STATUS;\n\ndocker exec -it elm-mysql-slave bash\n\nmysql -u root -p12345678\n\nCHANGE MASTER TO\n    MASTER_HOST='mysql-master',\n    MASTER_USER='repl',\n    MASTER_PASSWORD='repl123',\n    MASTER_LOG_FILE='mysql-bin.000003',\n    MASTER_LOG_POS=747;\n    \nSTART SLAVE;\n\nSHOW SLAVE STATUS\\G\n\ndocker compose up -d\n```\n\n## Seata 配置\n\n```sql\nCREATE TABLE `undo_log` (\n                            `id` bigint(20) NOT NULL AUTO_INCREMENT,\n                            `branch_id` bigint(20) NOT NULL,\n                            `xid` varchar(100) NOT NULL,\n                            `context` varchar(128) NOT NULL,\n                            `rollback_info` longblob NOT NULL,\n                            `log_status` int(11) NOT NULL,\n                            `log_created` datetime NOT NULL,\n                            `log_modified` datetime NOT NULL,\n                            `ext` varchar(100) DEFAULT NULL,\n                            PRIMARY KEY (`id`),\n                            UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)\n) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;\n```\n\n## 项目反思与改进建议\n\n### 已完成的功能\n1. ✅ 完整的微服务架构设计\n2. ✅ 用户认证与授权系统\n3. ✅ 商家入驻申请流程\n4. ✅ 菜品管理功能\n5. ✅ 购物车操作\n6. ✅ 订单管理流程\n7. ✅ 地址管理功能\n8. ✅ API网关统一入口\n9. ✅ 高可用保障机制\n\n### 潜在改进方向\n1. **监控与日志**: 建议集成ELK日志系统和Prometheus监控\n2. **缓存优化**: 可以增加更多Redis缓存策略\n3. **消息队列**: 考虑引入RabbitMQ处理异步任务\n4. **容器化部署**: 完善Docker和Kubernetes部署方案\n5. **API文档**: 集成Swagger UI提供在线API文档\n6. **测试覆盖**: 增加单元测试和集成测试\n7. **性能优化**: 数据库索引优化和查询性能调优","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjackielinn%2Felm_springcloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjackielinn%2Felm_springcloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjackielinn%2Felm_springcloud/lists"}