# jct **Repository Path**: gfdr5/jct ## Basic Information - **Project Name**: jct - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-13 - **Last Updated**: 2026-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 这是一个基于Spring Boot的微服务项目,主要功能包括用户管理、景点信息管理、博客评论、优惠券秒杀等模块。以下是项目的简要说明和使用指南。 --- ## 项目简介 该项目是一个基于Java的后端服务系统,使用Spring Boot框架构建,整合了MyBatis Plus、Redis、RabbitMQ等技术,实现了以下核心功能: - **用户管理**:包括用户登录、注册、信息管理等。 - **景点管理**:支持景点信息的增删改查,以及基于地理位置的搜索。 - **博客系统**:用户可以发布博客、点赞、评论,支持关注机制。 - **优惠券系统**:支持普通优惠券和秒杀优惠券的管理与下单。 - **缓存与分布式锁**:使用Redis实现缓存穿透、缓存击穿、缓存雪崩的解决方案,并通过Redisson实现分布式锁。 - **消息队列**:使用RabbitMQ处理异步任务,如秒杀订单的异步处理。 --- ## 技术栈 - **Spring Boot**:快速构建微服务。 - **MyBatis Plus**:简化数据库操作。 - **Redis**:缓存数据,提升系统性能。 - **Redisson**:实现分布式锁。 - **RabbitMQ**:异步消息处理。 - **JWT**:用户身份验证与授权。 - **Swagger**:API文档生成。 - **Lombok**:简化Java实体类开发。 - **Maven**:项目依赖管理。 --- ## 项目结构 ``` src ├── main │ ├── java │ │ └── com.hmdp │ │ ├── controller // 控制器层,处理HTTP请求 │ │ ├── service // 业务逻辑接口 │ │ ├── service.impl // 业务逻辑实现类 │ │ ├── mapper // 数据库操作接口 │ │ ├── entity // 数据库实体类 │ │ ├── config // 配置类(Spring、Redis、安全等) │ │ ├── utils // 工具类(JWT、Redis、ID生成等) │ │ ├── dto // 数据传输对象 │ │ ├── interceptor // 拦截器(登录、Token刷新) │ │ ├── exception // 异常处理类 │ │ └── mq // 消息队列消费者 │ │ │ ├── resources │ │ ├── application.yml // 主配置文件 │ │ ├── mapper // MyBatis XML映射文件 │ │ ├── static // 静态资源文件 │ │ └── jct.jks // SSL证书文件 │ │ └── test └── java // 单元测试类 ``` --- ## 快速启动 ### 1. 环境要求 - JDK 1.8 或以上 - Maven 3.6 或以上 - Redis 6.0 或以上 - RabbitMQ 3.8 或以上 - MySQL 5.7 或以上 ### 2. 数据库准备 - 创建数据库 `jct` - 执行 `sql.sql` 文件导入表结构 ### 3. 配置文件修改 编辑 `application.yml` 文件,配置数据库、Redis、RabbitMQ 等连接信息。 ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/jct?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai username: root password: root redis: host: localhost port: 6379 password: ``` ### 4. 启动项目 ```bash mvn spring-boot:run ``` 项目启动后,默认访问端口为 `8080`。 --- ## API 文档 项目集成了 Swagger,启动后可以通过以下链接访问 API 文档: ``` http://localhost:8080/swagger-ui.html ``` --- ## 功能模块说明 ### 用户模块 - `/user/login`:用户登录(手机号+验证码或密码) - `/user/me`:获取当前登录用户信息 - `/user/info/{id}`:获取指定用户信息 ### 景点模块 - `/spot/{id}`:获取景点详情 - `/spot`:新增景点 - `/spot/of/type`:根据类型查询景点(支持地理位置排序) ### 博客模块 - `/blog`:发布博客 - `/blog/like/{id}`:点赞博客 - `/blog/{id}`:获取博客详情 - `/blog/of/follow`:获取关注用户的博客流 ### 优惠券模块 - `/voucher/seckill`:添加秒杀优惠券 - `/voucher/list/{shopId}`:查询店铺优惠券 - `/voucher-order/seckill/{id}`:秒杀下单 --- ## 缓存策略 - 使用 Redis 缓存热点数据(如景点信息) - 使用 `CacheClient` 工具类实现缓存穿透、缓存击穿、缓存雪崩的解决方案 - 支持逻辑过期时间策略 --- ## 分布式锁 - 使用 Redisson 实现分布式锁,确保并发安全 - 主要用于秒杀、缓存重建等场景 --- ## 消息队列 - 使用 RabbitMQ 异步处理秒杀订单,提升系统响应速度 - 消费者类:`VoucherOrderConsumer` --- ## 安全与权限 - 使用 JWT 实现无状态认证 - 登录拦截器:`LoginInterceptor` - Token刷新拦截器:`RefreshTokenInterceptor` --- ## 日志与异常处理 - 使用 `@RestControllerAdvice` 统一处理异常 - 日志输出使用 `Lombok` 的 `@Slf4j` --- ## 测试 - 使用 `JUnit` 编写单元测试 - 测试类位于 `src/test/java` 目录下 --- ## 贡献指南 欢迎贡献代码!请遵循以下步骤: 1. Fork 项目 2. 创建新分支 3. 提交代码 4. 发起 Pull Request --- ## 许可证 本项目采用 MIT 许可证。详情请查看 LICENSE 文件。