# cloud-platform-chat-solution **Repository Path**: chenqian1995/cloud-platform-chat-solution ## Basic Information - **Project Name**: cloud-platform-chat-solution - **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-04-11 - **Last Updated**: 2026-04-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # VIN 同步排查服务 企业微信群机器人自动排查 VIN 同步问题的 SpringBoot 服务。 ## 功能特性 - ✅ 接收企业微信群机器人 Webhook 消息 - ✅ 自动从消息内容中提取 17 位 VIN 码 - ✅ 查询 1.0 业务表判断 VIN 是否存在 - ✅ 查询同步日志表获取最新同步状态 - ✅ 按照固定排查逻辑生成排查结论 - ✅ 自动将排查结果发送回企业微信群 ## 技术栈 - Spring Boot 2.7.18 - JdbcTemplate (数据库访问) - RestTemplate (HTTP 请求) - MySQL 8.0 ## 项目结构 ``` vin-sync-checker/ ├── pom.xml # Maven 配置 ├── src/main/java/com/example/vinchecker/ │ ├── VinCheckerApplication.java # 启动类 │ ├── config/ │ │ └── WeChatBotConfig.java # 企业微信配置 │ ├── controller/ │ │ └── WebhookController.java # Webhook 接收接口 │ ├── service/ │ │ ├── VinCheckService.java # VIN 排查服务 │ │ └── WeChatBotService.java # 企业微信消息服务 │ ├── repository/ │ │ └── VinRepository.java # 数据库访问层 │ ├── entity/ │ │ ├── VinRecord.java # 1.0 业务表实体 │ │ └── SyncLog.java # 同步日志实体 │ ├── dto/ │ │ ├── WebhookRequest.java # Webhook 请求 DTO │ │ ├── CheckResult.java # 排查结果 DTO │ │ └── WeChatMessage.java # 企业微信消息 DTO │ └── util/ │ └── VinValidator.java # VIN 验证工具 └── src/main/resources/ └── application.yml # 应用配置 ``` ## 快速开始 ### 1. 环境要求 - JDK 11+ - Maven 3.6+ - MySQL 8.0+ ### 2. 配置修改 编辑 `src/main/resources/application.yml`,修改以下配置: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: your_username password: your_password wechat: bot: webhook-url: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your_webhook_key ``` ### 3. 数据库表配置 编辑 `src/main/java/com/example/vinchecker/repository/VinRepository.java`,修改表名: ```java // 请替换为实际的表名 private static final String TABLE_VIN_RECORD = "your_1_0_business_table_name"; private static final String TABLE_SYNC_LOG = "your_sync_log_table_name"; ``` ### 4. 构建项目 ```bash cd vin-sync-checker mvn clean package -DskipTests ``` ### 5. 运行服务 ```bash java -jar target/vin-sync-checker-1.0.0.jar ``` 或使用 Maven: ```bash mvn spring-boot:run ``` ### 6. 企业微信群机器人配置 1. 在企业微信群中添加「群机器人」 2. 获取 Webhook 地址 3. 将 Webhook 地址配置到 `application.yml` 4. 在企业微信群中发送包含 VIN 码的消息 ## API 接口 ### 1. 接收 Webhook 消息 ``` POST /api/webhook/receive Content-Type: application/json { "msgtype": "text", "text": { "content": "请帮我查一下这个 VIN: LHGCM123456789012" } } ``` ### 2. 健康检查 ``` GET /api/webhook/health ``` ### 3. 测试接口 (调试用) ``` GET /api/webhook/test?vin=LHGCM123456789012 ``` ## VIN 排查逻辑 | 场景 | 排查结论 | |------|----------| | VIN 格式不合法 | ⚠️ 提示 VIN 格式错误,检查 17 位规则 | | 1.0 系统不存在 | ⚠️ 提示 VIN 未录入 1.0 系统 | | 无同步记录 | ⚠️ 提示需手动触发同步 | | 同步成功 | ✅ 显示同步完成状态 | | 同步失败 | ❌ 显示失败原因和处理建议 | | 同步处理中 | ⏳ 提示正在处理,耐心等待 | ## VIN 码规则 - 长度:17 位 - 字符:大写字母 A-Z (排除 I、O、Q) 和数字 0-9 - 支持从文本中自动提取 ## 数据库表结构 ### 1.0 业务表 (需替换为实际表名) ```sql CREATE TABLE your_1_0_business_table_name ( id BIGINT PRIMARY KEY AUTO_INCREMENT, vin VARCHAR(17) NOT NULL, vehicle_model VARCHAR(100), create_time DATETIME, INDEX idx_vin (vin) ); ``` ### 同步日志表 (需替换为实际表名) ```sql CREATE TABLE your_sync_log_table_name ( id BIGINT PRIMARY KEY AUTO_INCREMENT, vin VARCHAR(17) NOT NULL, status VARCHAR(20) NOT NULL COMMENT 'SUCCESS/FAIL/PROCESSING', fail_reason VARCHAR(500), create_time DATETIME NOT NULL, INDEX idx_vin_time (vin, create_time) ); ``` ## 日志配置 日志级别可在 `application.yml` 中调整: ```yaml logging: level: com.example.vinchecker: DEBUG # DEBUG/INFO/WARN/ERROR ``` ## 常见问题 ### Q: 如何获取企业微信 Webhook 地址? A: 在企业微信群聊中,点击「群机器人」→「添加」→ 创建机器人后获取 Webhook 地址。 ### Q: VIN 码提取不准确? A: 检查 `VinValidator.extractFromText()` 方法,可根据实际消息格式调整正则表达式。 ### Q: 数据库查询失败? A: 检查 `VinRepository.java` 中的表名和字段名是否与实际数据库一致。 ### Q: 消息发送失败? A: 检查企业微信 Webhook 地址是否正确,确保服务器可以访问外网。 ## 开发说明 ### 添加新的排查逻辑 编辑 `VinCheckService.generateSuggestion()` 方法,根据业务需求调整排查结论。 ### 扩展数据库查询 在 `VinRepository` 中添加新的查询方法,使用 `JdbcTemplate` 执行 SQL。 ### 自定义消息格式 编辑 `WeChatMessage.fromCheckResult()` 方法,调整 Markdown 消息格式。 ## License MIT License ## Author 陈乾 notFound · 严谨专业版