# hmall **Repository Path**: baishuai2001/hmall ## Basic Information - **Project Name**: hmall - **Description**: 工程实践项目 - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-02-18 - **Last Updated**: 2025-08-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 博恺商城 ## 项目介绍 博恺商城是一个电商平台系统,包含购物车、商品、订单、支付、用户等核心模块。系统采用微服务架构,各模块可独立部署,通过 gRPC 和 RabbitMQ 实现服务间通信和异步消息处理。 ## 项目结构 ``` . ├── cart-service # 购物车服务 ├── hm-api # 公共 API 定义 (gRPC 接口) ├── hm-common # 公共组件 (工具类、异常处理等) ├── hm-gateway # 网关服务 (JWT 认证) ├── hm-service # 主要业务服务 ├── item-service # 商品服务 (含库存管理) ├── pay-service # 支付服务 ├── trade-service # 订单服务 └── user-service # 用户服务 ``` ## 核心功能 - 购物车管理 (添加/更新/删除商品) - 商品管理 (增删改查、库存扣减/恢复) - 订单管理 (创建订单、支付状态跟踪) - 支付系统 (生成支付单、余额支付) - 用户系统 (登录、余额管理) - 搜索功能 (商品检索) - 服务间通信 (gRPC + RabbitMQ) ## 技术栈 - Spring Boot 2.x - MyBatis Plus - gRPC - RabbitMQ - Redis - Elasticsearch - Swagger2 (API文档) - JWT (身份验证) ## 模块说明 ### 购物车服务 (cart-service) ```java @RestController @RequestMapping("/carts") public class CartController { // 添加商品到购物车 @PostMapping public void addItem2Cart(@Valid @RequestBody CartFormDTO cartFormDTO) // 查询购物车列表 @GetMapping public List queryMyCarts() // 批量删除购物车商品 @DeleteMapping public void deleteCartItemByIds(@RequestParam("ids") List ids) } ``` ### 商品服务 (item-service) ```java @RestController @RequestMapping("/items") public class ItemController { // 商品分页查询 @GetMapping("/page") public PageDTO queryItemByPage(PageQuery query) // 库存扣减 @PutMapping("/stock/deduct") public void deductStock(@RequestBody List items) // 商品上下架 @PutMapping("/status/{id}/{status}") public void updateItemStatus(@PathVariable("id") Long id, @PathVariable("status") Integer status) } ``` ### 订单服务 (trade-service) ```java @RestController @RequestMapping("/orders") public class OrderController { // 创建订单 @PostMapping public Long createOrder(@RequestBody OrderFormDTO orderFormDTO) // 标记订单支付成功 @PutMapping("/{orderId}") public void markOrderPaySuccess(@PathVariable("orderId") Long orderId) } ``` ### 支付服务 (pay-service) ```java @RestController @RequestMapping("pay-orders") public class PayController { // 生成支付单 @PostMapping public String applyPayOrder(@RequestBody PayApplyDTO applyDTO) // 余额支付 @PostMapping("{id}") public void tryPayOrderByBalance(@PathVariable("id") Long id, @RequestBody PayOrderFormDTO payOrderFormDTO) } ``` ### 用户服务 (user-service) ```java @RestController @RequestMapping("/users") public class UserController { // 用户登录 @PostMapping("login") public UserLoginVO login(@RequestBody @Validated LoginFormDTO loginFormDTO) // 余额扣减 @PutMapping("/money/deduct") public void deductMoney(@RequestParam("pw") String pw, @RequestParam("amount") Integer amount) } ``` ## 部署说明 - 使用 Spring Boot 的 profile 机制管理不同环境配置 - 通过 application.yaml 中的 spring.datasource 配置数据库连接 - gRPC 服务配置在 application.yaml 中的 grpc.server.address - RabbitMQ 配置在 application.yaml 中的 spring.rabbitmq ## 目录结构 ``` . ├── logs/ # 日志文件 │ ├── cart-service/ │ ├── item-service/ │ ├── hm-service/ │ ├── pay-service/ │ ├── trade-service/ │ └── user-service/ └── Dockerfile # 服务容器化部署文件 ``` ## 贡献者 - 该项目采用标准 Spring Boot 项目结构 - 所有 REST API 都使用 Swagger 注解 - 数据访问层使用 MyBatis Plus - 服务间通信使用 gRPC 和 RabbitMQ - Redis 用于缓存和库存管理 - Elasticsearch 用于商品搜索 ## 许可证 该项目使用 MIT 许可证,请查看 LICENSE 文件获取详细信息。