# 腾讯广告投放平台自动化项目 ## 项目简介 这是一个基于 Spring Boot 的腾讯广告投放平台自动化管理系统,采用经典的三层架构设计,集成了现代化的 Java 生态技术栈。 ## 技术栈 ### 核心框架 - **JDK**: 21 - **Spring Boot**: 3.2.2 - **Maven**: 项目管理和构建工具 ### 数据层 - **MySQL**: 关系型数据库 - **MyBatis-Plus**: 3.5.5 - ORM框架,简化数据库操作 - **Dynamic DataSource**: 4.3.0 - 动态数据源切换 - **P6Spy**: 3.9.1 - SQL监控和分析 ### 缓存层 - **Redis**: 分布式缓存和Session管理 ### 工具库 - **Lombok**: 简化Java代码 - **FastJson2**: 2.0.47 - 高性能JSON处理 - **Plumelog**: 3.5.2 - 分布式日志收集 - **Logback**: 日志框架 ### 定时任务 - **Spring Scheduling**: Spring定时任务 - **ShedLock**: 5.10.2 - 分布式定时任务锁,防止重复执行 ### 业务SDK - **Marketing API Java SDK**: 腾讯广告营销API SDK ## 项目结构 ``` gdt-auto/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/moka/gdtauto/ │ │ │ ├── GdtAutoApplication.java # 主启动类 │ │ │ ├── controller/ # 控制层 │ │ │ ├── service/ # 服务接口层 │ │ │ │ └── impl/ # 服务实现层 │ │ │ ├── mapper/ # 数据访问层 │ │ │ ├── entity/ # 实体类 │ │ │ ├── task/ # 定时任务 │ │ │ └── config/ # 配置类 │ │ └── resources/ │ │ ├── application.yml # 应用配置 │ │ ├── logback-spring.xml # 日志配置 │ │ ├── spy.properties # P6Spy配置 │ │ └── mapper/ # MyBatis XML映射文件 │ └── test/ # 测试代码 ├── pom.xml # Maven依赖配置 └── README.md # 项目说明文档 ``` ## 环境要求 - JDK 21+ - Maven 3.6+ - MySQL 5.7+ 或 8.0+ - Redis 5.0+ ## 安装步骤 ### 1. 克隆项目 ```bash git clone cd gdt-auto ``` ### 2. 配置数据库 创建数据库: ```sql CREATE DATABASE gdt_auto DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 修改 `src/main/resources/application.yml` 中的数据库配置: ```yaml spring: datasource: dynamic: datasource: master: url: jdbc:p6spy:mysql://localhost:3306/gdt_auto?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: your_username password: your_password ``` ### 3. 配置Redis 修改 `src/main/resources/application.yml` 中的Redis配置: ```yaml spring: data: redis: host: localhost port: 6379 password: your_password # 如果有密码 database: 0 ``` ### 4. 配置腾讯广告API 修改 `src/main/resources/application.yml` 中的腾讯广告API配置: ```yaml tencent: ads: access-token: your_access_token refresh-token: your_refresh_token app-id: your_app_id secret: your_secret ``` ### 5. 安装依赖 ```bash mvn clean install ``` ## 运行项目 ### 开发环境运行 ```bash mvn spring-boot:run ``` 或者在IDE中直接运行 `GdtAutoApplication.java` 主类。 ### 打包部署 ```bash # 打包 mvn clean package -DskipTests # 运行jar包 java -jar target/gdt-auto-1.0.0.jar # 指定环境 java -jar target/gdt-auto-1.0.0.jar --spring.profiles.active=prod ``` ## 验证运行 项目启动后,访问健康检查接口: ```bash curl http://localhost:8080/health ``` 返回 `OK` 表示项目运行正常。 ## 核心功能模块 ### 1. MyBatis-Plus集成 - 自动分页 - 逻辑删除 - 自动填充 - 代码生成器支持 ### 2. 动态数据源 支持多数据源动态切换,可以通过注解 `@DS("数据源名称")` 指定使用的数据源。 ### 3. SQL监控 集成P6Spy,自动记录SQL执行日志,支持慢SQL检测(默认2秒)。 ### 4. 分布式定时任务 使用ShedLock确保定时任务在分布式环境下不会重复执行。 ### 5. 日志管理 - 控制台输出 - 文件滚动记录 - 错误日志独立存储 - 支持Plumelog分布式日志收集 ## 开发规范 ### 代码结构 - **Controller层**: 处理HTTP请求,参数校验 - **Service层**: 业务逻辑处理 - **Mapper层**: 数据库访问 - **Entity层**: 数据实体 - **Task层**: 定时任务 ### 命名规范 - 类名:大驼峰(PascalCase) - 方法名:小驼峰(camelCase) - 常量:全大写下划线分隔 - 包名:全小写 ## Git版本控制 ```bash # 初始化仓库 git init # 添加远程仓库 git remote add origin # 提交代码 git add . git commit -m "Initial commit" git push -u origin main ``` ## 常见问题 ### 1. MySQL连接失败 - 检查MySQL服务是否启动 - 确认数据库名称、用户名、密码是否正确 - 检查MySQL是否允许远程连接 ### 2. Redis连接失败 - 检查Redis服务是否启动 - 确认Redis配置(host、port、password) ### 3. 端口冲突 如果8080端口被占用,可以在 `application.yml` 中修改: ```yaml server: port: 8081 ``` ## 许可证 本项目采用 MIT 许可证。 ## 联系方式 如有问题,请提交 Issue 或联系项目维护者。