# gewechat **Repository Path**: ai-sales/gewechat ## Basic Information - **Project Name**: gewechat - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-17 - **Last Updated**: 2025-09-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
#### 核心分层设计
1. **接入层**
- 提供标准化的RESTful API接口,支持多语言(Java、Python、Node.js等)接入
- 负责请求的路由和参数校验,提供统一的访问入口
- 主要组件:`GeWechatMessageController`
2. **业务API层**
- 封装各类微信操作API,提供简洁易用的接口
- 按功能模块划分,包括登录、消息、好友、群组等API
- 主要组件:`LoginApi`、`MessageApi`、`ContactApi`、`GroupApi`等
3. **事件驱动层**
- 基于观察者模式实现事件的发布和订阅
- 处理微信消息、离线通知等事件的分发和处理
- 主要组件:`Publisher`、`EventByNewMessage`、`EventByOffline`
4. **数据持久层**
- 基于MyBatis-Plus和MySQL实现数据存储
- 提供消息和配置数据的CRUD操作
- 主要组件:`GewechatMessageMapper`
5. **消息处理层**
- 负责消息的接收、解析、处理和发送
- 支持多种消息类型的处理逻辑
- 主要组件:`MessageService`、各类Listener实现
6. **工具层**
- 提供HTTP请求、JSON处理等通用功能
- 封装常用工具方法,提升开发效率
- 主要组件:`OkhttpUtil`
#### 核心功能模块
1. **API模块**:提供完整的微信操作接口
- 登录模块:扫码登录、登出、状态检查等
- 消息模块:发送各类消息、接收消息等
- 联系人模块:好友管理、通讯录操作等
- 群组模块:群聊创建、管理等
- 标签模块:联系人标签管理
- 个人模块:个人信息管理
- 收藏夹模块:微信收藏管理
2. **事件监听模块**:实现事件的处理和分发
- 新消息监听器:处理接收到的新消息
- 离线消息监听器:处理离线通知
- 消息持久化监听器:将消息保存到数据库
- 消息回显监听器:将消息回显给调用方
3. **数据模型**:定义系统的数据结构
- 消息模型:各类微信消息的定义
- 事件模型:系统事件的定义
- DTO模型:数据传输对象的定义
#### 技术栈
- **后端框架**:Spring Boot 2.3.0 - 提供Web应用基础框架
- **数据库迁移工具**:Flyway - 实现数据库的自动创建和版本更新
#### 数据库自动创建与更新(Flyway)
Gewechat集成了Flyway数据库迁移工具,实现了数据库结构的自动创建和版本控制,确保应用在不同环境部署时数据库结构的一致性和可追溯性。
**主要功能**:
- 自动执行数据库迁移脚本,创建表结构和初始数据
- 版本化管理数据库变更,支持回滚和追踪
- 保证多环境部署时数据库结构的一致性
- 避免手动执行SQL脚本导致的错误和不一致
**迁移脚本位置**:`src/main/resources/db/migration`
**配置方式**:
```properties
# Flyway配置(application.properties)
spring.flyway.enabled=true
spring.flyway.locations=classpath:db/migration
spring.flyway.baseline-on-migrate=true
spring.flyway.table=schema_version
```
**使用流程**:
1. 按照Flyway命名规范创建SQL迁移脚本(如:V1.0.0__Create_Table.sql)
2. 启动应用时,Flyway会自动检测并执行未应用的迁移脚本
3. 所有执行记录保存在`schema_version`表中,便于追踪和管理
通过Flyway的集成,Gewechat实现了数据库的自动化管理,大大简化了应用部署和升级过程,提高了系统的稳定性和可靠性。
- **数据库**:MySQL 5.1.34 - 数据持久化存储
- **缓存**:Redis - 提升系统性能和响应速度
- **ORM框架**:MyBatis-Plus 3.4.2 - 简化数据库操作
- **HTTP客户端**:OkHttp 3.10.0 - 处理HTTP请求
- **JSON处理**:Fastjson2 - 高效的JSON序列化和反序列化
- **工具库**:Hutool 5.6.3 - 提供丰富的工具方法
- **容器化**:Docker - 简化部署和环境一致性
## 基本用法
Gewechat提供了完整的API接口,下面以Java为例展示基本的使用流程。其他语言只需通过RESTful接口调用即可实现相同功能。
### Java客户端使用示例
#### 1. 获取API Token
```java
// 获取接口访问Token
JSONObject token = LoginApi.getToken();
// 将Token设置到请求头中(每个API调用都需要)
header.put("X-GEWE-TOKEN", token.getString("token"));
```
#### 2. 微信登录流程
```java
/**
* 获取登录二维码
* @param appId 设备id,首次登录传空,后续登录传返回的appid
*/
JSONObject qr = LoginApi.getQr(appId);
/**
* 确认登录
* @param appId 设备id
* @param uuid 二维码返回的uuid
* @param captchCode 登录验证码(同省登录可避免此问题,提高账号稳定性)
*/
JSONObject loginResult = LoginApi.checkQr(appId, uuid, captchCode);
// 登录成功后可执行其他操作
if (loginResult.getInteger("code") == 0) {
System.out.println("微信登录成功!");
// 执行后续操作...
}
```
#### 3. 发送消息示例
```java
/**
* 发送文本消息
* @param appId 设备id
* @param toWxid 接收者微信id
* @param content 消息内容
* @param ats @的用户(群聊时使用,多个用户用逗号分隔)
*/
JSONObject textResult = MessageApi.postText(appId, "wxid_xxxxxx", "你好,这是一条测试消息", "");
/**
* 发送图片消息
* @param appId 设备id
* @param toWxid 接收者微信id
* @param imgUrl 图片URL地址
*/
JSONObject imgResult = MessageApi.postImage(appId, "wxid_xxxxxx", "http://example.com/image.jpg");
```
### 核心API模块
登录成功后,可以使用以下核心API类实现各种功能:
- `LoginApi.class` - 登录模块(获取二维码、确认登录、退出登录等)
- `PersonalApi.class` - 个人账号模块(获取个人资料、修改信息等)
- `ContactApi.class` - 联系人模块(获取好友列表、添加/删除好友等)
- `GroupApi.class` - 微信群模块(创建群聊、群管理等)
- `MessageApi.class` - 消息模块(发送各类消息、接收消息等)
- `LabelApi.class` - 标签模块(创建标签、管理标签等)
- `FavorApi.class` - 收藏夹模块(管理微信收藏夹)
```
## 注意事项
1. **系统环境要求**:推荐使用Centos7或Ubuntu22.04操作系统
2. **硬件配置**:建议使用4核8G及以上配置以保证服务稳定运行
3. **端口占用**:确保服务器的2531和2532端口未被其他服务占用
4. **网络要求**:服务器需能正常访问外网,确保可以连接腾讯服务
5. **地域限制**:为保证账号稳定,建议在微信账号注册地所在省份的服务器上部署
6. **使用范围**:本框架面向个人学习和娱乐使用,请勿用于任何商用场景
## 常见问题与解决方案
1. **登录验证码问题**:
- 问题:登录时提示需要验证码
- 解决:在微信账号注册地所在省份的服务器上部署服务
2. **消息收发延迟**:
- 问题:消息收发有延迟
- 解决:检查服务器网络连接,确保网络通畅
3. **容器启动失败**:
- 问题:Docker容器无法正常启动
- 解决:检查服务器网络连接,确保可以访问腾讯服务和Docker镜像源
4. **端口占用冲突**:
- 问题:端口2531或2532被占用
- 解决:停止占用该端口的服务,或修改Docker运行命令中的端口映射配置
## 社区交流
添加好友备注「GW加群交流」,加入技术交流群
## 版本更新 ### 更新流程 1. 停止并删除旧版本容器 ```bash # 停止运行中的容器 docker stop gewe # 删除容器 docker rm gewe ``` 2. 拉取最新版本镜像 ```bash docker pull registry.cn-hangzhou.aliyuncs.com/gewe/gewe:latest docker tag registry.cn-hangzhou.aliyuncs.com/gewe/gewe gewe ``` 3. 重新启动容器 ```bash docker run -itd -v /root/temp:/root/temp -p 2531:2531 -p 2532:2532 --privileged=true --name=gewe gewe /usr/sbin/init docker update --restart=always gewe ``` > **注意**:每次更新后会被视为新设备登录,建议新设备登录后先保持一段时间稳定运行再进行频繁操作,以避免账号异常。 ## 生态与扩展 ### 社区扩展项目 - [gewechaty](https://github.com/mikoshu/gewechaty) - 基于Node.js的Gewechat封装,提供更加易用的API接口 - [dify-on-wechat](https://github.com/hanfangyuan4396/dify-on-wechat) - 对chatgpt-on-wechat项目的扩展,实现了Gewechat通道 - [Coze-on-Wechat](https://github.com/JC0v0/Coze-on-Wechat) - 对接Coze平台的Gewechat扩展 - [rgewe-api](https://github.com/momo402/rgewe-api) - 基于Rust语言的Gewechat API封装,同步API文档 - [gewechat-python](https://github.com/hanfangyuan4396/gewechat-python) - 基于Python语言的Gewechat API实现示例 ### 第三方集成 Gewechat可以与多种第三方服务进行集成: - **AI模型**:ChatGPT、Sora、Dify、Coze等 - **业务系统**:客服系统、RPA自动化流程、数据分析平台等 - **开发语言**:Java、Node.js、Python、Rust等多种编程语言支持 ## 版本更新历史 ### 1.0.2 - **发布日期**:2023年 - **更新内容**:修复已知bug,优化系统稳定性 - **注意事项**:历史版本会逐渐失效,更新后将视为新设备登录 - **更新建议**:新设备登录后建议先稳定运行几天再进行频繁操作 ### 1.0.1 - **发布日期**:2023年 - **更新内容**:优化图片下载功能,提高兼容性 - **注意事项**:本次更新后将视为新设备登录 ### 1.0.0 - **发布日期**:2023年 - **更新内容**:Gewechat框架正式版发布,提供完整的微信API功能 - **主要特性**:消息收发、好友管理、群组管理、标签管理等基础功能