# hm-dianping **Repository Path**: liull_code/hm-dianping ## Basic Information - **Project Name**: hm-dianping - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 279 - **Created**: 2026-03-24 - **Last Updated**: 2026-03-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 黑马点评 (hm-dianping) 一个基于 Spring Boot 的点评社交平台系统,提供商铺浏览、博客分享、优惠券抢购、用户关注等功能。 ## 项目简介 本项目是一个前后端分离的点评系统后端服务,采用微服务架构设计。系统包含用户模块、商铺模块、博客模块、优惠券模块等核心功能,支持分布式锁、缓存穿透防护、热点数据限流等高级特性。 ## 技术栈 - **框架**: Spring Boot 2.x - **持久层**: MyBatis Plus - **数据库**: MySQL - **缓存**: Redis (含 Redisson 分布式锁) - **模板**: Thymeleaf - **其他**: Lombok, Hutool ## 核心功能 ### 用户模块 - 手机验证码登录/注册 - Token 状态管理 - 签到功能 (BitMap 实现) - 用户信息管理 ### 商铺模块 - 商铺 CRUD 操作 - 商铺类型查询 - 附近商铺推荐 (基于 LBS 定位) - 商铺缓存 (击穿/穿透/雪崩防护) ### 博客模块 - 博客发布与浏览 - 博客点赞 (Redis ZSet 实现) - 关注流推送 (Feed 流) - 热门博客榜单 ### 优惠券模块 - 普通优惠券 - 秒杀优惠券 (Redis 预减库存) - 分布式锁保障下单安全 - 异步下单处理 (消息队列 Stream) ### 关注模块 - 用户关注/取关 - 共同关注推荐 - 关注列表查询 ## 项目结构 ``` com.hmdp ├── config/ # 配置类 ├── controller/ # 控制器层 ├── dto/ # 数据传输对象 ├── entity/ # 实体类 ├── mapper/ # 数据访问层 ├── service/ # 业务逻辑层 └── utils/ # 工具类 ``` ## 快速开始 ### 环境要求 - JDK 1.8+ - MySQL 5.7+ - Redis 5.0+ ### 配置说明 在 `src/main/resources/application.yaml` 中配置数据库和 Redis 连接信息: ```yaml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/hmdp username: root password: root redis: host: localhost port: 6379 ``` ### 初始化数据库 执行 `src/main/resources/db/hmdp.sql` 脚本创建数据库表。 ### 启动项目 ```bash mvn spring-boot:run ``` 或运行主类 `HmDianPingApplication` ## API 接口 ### 用户接口 | 接口 | 方法 | 说明 | |------|------|------| | /user/code | POST | 发送验证码 | | /user/login | POST | 登录 | | /user/logout | POST | 登出 | | /user/me | GET | 获取当前用户 | | /user/sign | POST | 签到 | | /user/sign/count | GET | 签到统计 | ### 商铺接口 | 接口 | 方法 | 说明 | |------|------|------| | /shop/{id} | GET | 获取商铺信息 | | /shop | POST | 新增商铺 | | /shop | PUT | 更新商铺 | | /shop/of/type | GET | 按类型查询商铺 | | /shop/of/name | GET | 按名称查询商铺 | ### 博客接口 | 接口 | 方法 | 说明 | |------|------|------| | /blog | POST | 发布博客 | | /blog/{id} | GET | 获取博客详情 | | /blog/hot | GET | 热门博客 | | /blog/like/{id} | PUT | 点赞博客 | | /blog/of/follow | GET | 关注流博客 | | /blog/of/user | GET | 用户博客列表 | ### 优惠券接口 | 接口 | 方法 | 说明 | |------|------|------| | /voucher | POST | 添加优惠券 | | /voucher/seckill | POST | 添加秒杀券 | | /voucher/list/{shopId} | GET | 商铺优惠券列表 | | /voucher-order/seckill/{id} | POST | 秒杀抢购 | ### 关注接口 | 接口 | 方法 | 说明 | |------|------|------| | /follow/{id}/{isFollow} | PUT | 关注/取关 | | /follow/or/not/{id} | GET | 是否关注 | | /follow/common/{id} | GET | 共同关注 | ## 分支说明 - **master**: 完整版代码,包含所有功能实现 - **init**: 初始分支,适合作为开发起点 ```bash # 克隆项目 git clone https://gitee.com/huyi612/hm-dianping.git # 切换到初始分支 git checkout init ``` ## 常见问题 运行 master 分支时如果出现 Redis Stream 错误: ``` NOGROUP No such key 'stream.orders' or consumer group 'g1' ``` 可执行以下命令解决: ```bash XGROUP CREATE stream.orders g1 $ MKSTREAM ``` ## 许可证 本项目仅供学习交流使用。