2024-09-21 20:22:28 +08:00
|
|
|
|
# WeChatFerry Java 客户端 maven版
|
|
|
|
|
|
|
|
|
|
⚠️ **只支持 Windows** ⚠️
|
|
|
|
|
|
2024-10-01 12:32:26 +08:00
|
|
|
|
`声明:` 本项目是基于 clients/java/wcferry 项目改造,随着时间推进,项目结构和代码规范逐渐产生分离,使用此项目的人员可参考之前的项目
|
|
|
|
|
我们在开发时请尽量保持注释的完整性,便于阅读维护
|
|
|
|
|
|
2024-09-21 20:22:28 +08:00
|
|
|
|
## 快速使用
|
|
|
|
|
|
|
|
|
|
### 环境准备
|
|
|
|
|
|
2024-12-23 19:46:07 +08:00
|
|
|
|
| 名称 | 版本 | 备注 |
|
|
|
|
|
|-----------------|-----------|----|
|
|
|
|
|
| JDK | 1.8+ | √ |
|
|
|
|
|
| Maven | 3.8+ | √ |
|
2025-05-01 12:41:35 +08:00
|
|
|
|
| 微信客户端 | 3.9.12.51 | √ |
|
|
|
|
|
| WeChatFerry-SDK | 39.5.2 | √ |
|
2024-12-23 19:46:07 +08:00
|
|
|
|
| MySQL | 8.0+ | 备用 |
|
2024-09-21 20:22:28 +08:00
|
|
|
|
|
|
|
|
|
### 下载文件
|
|
|
|
|
|
|
|
|
|
* 下载 [最新发布的文件](https://github.com/lich0821/WeChatFerry/releases/latest)
|
|
|
|
|
|
|
|
|
|
### 使用惯用 IDE,打开工程
|
|
|
|
|
|
|
|
|
|
可以直接以WeChatFerry为根目录打开
|
|
|
|
|
|
2024-10-01 00:15:50 +08:00
|
|
|
|
或者以WeChatFerry/clients/java/wechat-ferry-mvn为根目录打开
|
2024-09-21 20:22:28 +08:00
|
|
|
|
|
|
|
|
|
### 添加Maven
|
|
|
|
|
|
2024-10-01 00:15:50 +08:00
|
|
|
|
找到 WeChatFerry/clients/java/wechat-ferry-mvn/pom.xml 文件,右键添加到Maven中,会自动下载依赖
|
2024-09-21 20:22:28 +08:00
|
|
|
|
|
|
|
|
|
### 替换对应版本的dll
|
|
|
|
|
|
|
|
|
|
把刚下载的最新发布文件解压到本项目中的 dll 文件目录下,直接替换原因文件即可
|
|
|
|
|
|
2024-12-27 00:24:51 +08:00
|
|
|
|
替换 `clients/java/wechat-ferry-mvn/dll` 目录下(也可以在配置文件中改为自定义的目录)
|
|
|
|
|
|
|
|
|
|
- sdk.dll
|
|
|
|
|
- spy.dll
|
|
|
|
|
- spy_debug.dll
|
2025-03-08 20:46:24 +08:00
|
|
|
|
- DISCLAIMER.md
|
2024-12-27 00:24:51 +08:00
|
|
|
|
|
|
|
|
|
> 如果之前已经使用本项目启动过微信,此时替换发现替换不了,是因为正则运行的微信客户端正在使用该文件,
|
|
|
|
|
> 请退出并关闭微信客户端之后再进行替换
|
|
|
|
|
|
2024-09-21 20:22:28 +08:00
|
|
|
|
### 修改配置文件
|
|
|
|
|
|
|
|
|
|
配置文件:src/main/resources/application.yml
|
|
|
|
|
|
|
|
|
|
根据自己的dll目录位置修改配置文件
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
# 本服务参数
|
2024-10-01 12:32:26 +08:00
|
|
|
|
wechat:
|
2025-05-01 12:41:35 +08:00
|
|
|
|
ferry:
|
|
|
|
|
# DLL文件位置
|
|
|
|
|
dll-path: E:\WeChatFerry\clients\java\wechat-ferry-mvn\dll\sdk.dll
|
|
|
|
|
# socket端口
|
|
|
|
|
socket-port: 10086
|
2024-09-21 20:22:28 +08:00
|
|
|
|
```
|
|
|
|
|
|
2024-10-05 12:54:43 +08:00
|
|
|
|
### 数据库修改-目前未使用
|
|
|
|
|
|
|
|
|
|
为了更好的拓展应用,本客户端后续将采用mysql数据库,请自行安装mysql数据库
|
|
|
|
|
|
2024-09-21 20:22:28 +08:00
|
|
|
|
### 编译运行
|
|
|
|
|
|
2024-10-01 00:15:50 +08:00
|
|
|
|
找到 src/main/java/com/wechat/ferry/WeChatFerryApplication.java 类
|
2024-09-21 20:22:28 +08:00
|
|
|
|
|
|
|
|
|
直接启动即可
|
|
|
|
|
|
|
|
|
|
### 访问
|
|
|
|
|
|
|
|
|
|
启动后springboot自身的端口为 9201 socket的端口为 10086
|
|
|
|
|
|
2024-09-24 22:22:09 +08:00
|
|
|
|
swagger地址:http://localhost:9201/swagger-ui/index.html
|
|
|
|
|
|
2025-05-01 12:41:35 +08:00
|
|
|
|
### 项目打包
|
|
|
|
|
|
|
|
|
|
使用maven插件打包
|
|
|
|
|
|
2025-05-01 12:51:49 +08:00
|
|
|
|
- 先 clean
|
|
|
|
|
- 在 install
|
|
|
|
|
|
|
|
|
|
或者进入到项目根目录使用命令打包
|
|
|
|
|
|
|
|
|
|
``` shell
|
|
|
|
|
cd wechat-ferry-mvn
|
|
|
|
|
|
|
|
|
|
mvn clean
|
|
|
|
|
|
|
|
|
|
mvn install
|
|
|
|
|
```
|
2025-05-01 12:41:35 +08:00
|
|
|
|
|
|
|
|
|
打包后的文件在target/wechat-ferry-mvn-0.0.1-SNAPSHOT.jar
|
|
|
|
|
|
|
|
|
|
## 安装部署
|
|
|
|
|
|
|
|
|
|
### 服务器环境
|
|
|
|
|
|
|
|
|
|
| 名称 | 版本 | 备注 |
|
|
|
|
|
|-------|--------|----|
|
|
|
|
|
| JDK | 1.8+ | √ |
|
|
|
|
|
| 微信客户端 | 安装对应版本 | √ |
|
|
|
|
|
|
|
|
|
|
### 整合安装包
|
|
|
|
|
|
|
|
|
|
自己在项目中找到对应的文件,手动复制过去
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
wcf
|
|
|
|
|
├─dll 核心dll目录
|
|
|
|
|
│ ├─sdk.dll sdk文件
|
|
|
|
|
│ ├─spy.dll spy文件
|
|
|
|
|
│ ├─spy_debug.dll spy文件
|
|
|
|
|
│ └─DISCLAIMER.md DISCLAIMER文件
|
|
|
|
|
│
|
|
|
|
|
├─bin 命令目录
|
|
|
|
|
│ └─run.bat 启动命令
|
|
|
|
|
│
|
|
|
|
|
├─config 配置文件目录
|
|
|
|
|
│ ├─application.yml 配置文件
|
|
|
|
|
│ └─logback-spring.xml 日志配置文件
|
|
|
|
|
│
|
|
|
|
|
├─wechat-ferry-mvn-xx.x.x.jar 打包后的源码包
|
|
|
|
|
│
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 启动
|
|
|
|
|
|
|
|
|
|
1.退出微信客户端后台
|
|
|
|
|
|
|
|
|
|
2.进入命令黑窗口(CMD),并进入到项目目录下
|
|
|
|
|
|
|
|
|
|
``` shell
|
|
|
|
|
cd wcf
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3.执行启动命令,jar名称换成自己的
|
|
|
|
|
|
|
|
|
|
``` shell
|
|
|
|
|
java -Dconfig.dir=./config -jar wechat-ferry-mvn-xx.x.x.jar
|
|
|
|
|
```
|
|
|
|
|
|
2024-09-21 20:22:28 +08:00
|
|
|
|
## 参与开发
|
|
|
|
|
|
|
|
|
|
### 核心依赖
|
|
|
|
|
|
2024-12-27 00:24:51 +08:00
|
|
|
|
| 依赖 | 版本 | 说明 |
|
|
|
|
|
|---------------|-------------|----------|
|
|
|
|
|
| Spring Boot | 2.7.18 | 基础框架 |
|
|
|
|
|
| protobuf-java | 3.22.2 | rpc |
|
|
|
|
|
| jna | 5.6.0 | 态访问系统本地库 |
|
|
|
|
|
| nng-java | 1.4.0 | 本地包 |
|
|
|
|
|
| fastjson2 | 2.0.52 | 序列化 |
|
|
|
|
|
| dom4j | 2.1.3 | XML解析包 |
|
|
|
|
|
| httpclient | 4.5.13 | 客户端请求 |
|
|
|
|
|
| validation | 2.0.1.Final | 参数校验 |
|
|
|
|
|
| springfox | 3.0.0 | swagger3 |
|
2024-09-21 20:22:28 +08:00
|
|
|
|
|
2024-09-22 18:04:05 +08:00
|
|
|
|
### 模块结构
|
|
|
|
|
|
|
|
|
|
```
|
2024-10-01 00:15:50 +08:00
|
|
|
|
wechat-ferry-mvn
|
2024-09-22 18:04:05 +08:00
|
|
|
|
├─dll 核心dll
|
2024-09-23 21:12:13 +08:00
|
|
|
|
│ ├─sdk.dll sdk文件
|
|
|
|
|
│ └─readme.txt 本目录说明文件
|
2025-05-01 12:41:35 +08:00
|
|
|
|
│
|
|
|
|
|
├─images 图片
|
|
|
|
|
│ └─md MD文档图片
|
|
|
|
|
│
|
2024-09-22 18:04:05 +08:00
|
|
|
|
├─src 源
|
2024-09-23 21:12:13 +08:00
|
|
|
|
│ ├─main 重启命令
|
2024-10-01 00:15:50 +08:00
|
|
|
|
│ │ ├─java(com.wechat.ferry) java代码目录
|
2024-09-23 21:12:13 +08:00
|
|
|
|
│ │ │ ├─config 配置
|
2024-12-27 00:24:51 +08:00
|
|
|
|
│ │ │ ├─constant 常量
|
|
|
|
|
│ │ │ ├─controller 控制层(API接口)
|
2024-10-01 00:15:50 +08:00
|
|
|
|
│ │ │ ├─entity 聚合模型
|
|
|
|
|
│ │ │ │ ├─dto DTO模型
|
2024-10-05 12:54:43 +08:00
|
|
|
|
│ │ │ │ ├─po 数据库实体(与表结构一一对应,否则请使用DTO)
|
|
|
|
|
│ │ │ │ ├─proto PB实体
|
2024-10-01 00:15:50 +08:00
|
|
|
|
│ │ │ │ └─vo 视图层返回体目录
|
|
|
|
|
│ │ │ ├─enums 枚举
|
2024-12-27 00:24:51 +08:00
|
|
|
|
│ │ │ ├─exception 异常封装
|
2024-10-01 00:15:50 +08:00
|
|
|
|
│ │ │ ├─handle 处理层
|
2024-12-27 00:24:51 +08:00
|
|
|
|
│ │ │ ├─service 业务层
|
2024-09-23 21:12:13 +08:00
|
|
|
|
│ │ │ │ └─impl 业务实现类
|
2024-12-27 00:24:51 +08:00
|
|
|
|
│ │ │ ├─strategy 策略层
|
|
|
|
|
│ │ │ │ └─impl 策略实现类(如接收到消息之后的事件处理可以放在这里)
|
|
|
|
|
│ │ │ ├─task 定时任务
|
|
|
|
|
│ │ │ ├─utils 工具层
|
2024-09-23 21:12:13 +08:00
|
|
|
|
│ │ │ └─WcferryApplication.java 启动类
|
2024-10-01 00:15:50 +08:00
|
|
|
|
│ │ │
|
2024-09-23 21:12:13 +08:00
|
|
|
|
│ │ │resources 资源目录
|
|
|
|
|
│ │ │ ├─libs 本程序内置依赖包
|
2024-10-01 00:15:50 +08:00
|
|
|
|
│ │ │ ├─proto proto文件(此目录打包将被排除)
|
2024-09-23 21:12:13 +08:00
|
|
|
|
│ │ │ ├─win32-x86-64 依赖程序
|
|
|
|
|
│ │ │ ├─application.yml 本程序主配置文件
|
|
|
|
|
│ │ │ └─logback-spring.xml 日志配置文件
|
2025-05-01 12:41:35 +08:00
|
|
|
|
│
|
|
|
|
|
├─CHANGELOG.md 更新日志文件
|
2024-09-22 18:04:05 +08:00
|
|
|
|
├─pom.xml POM文件
|
|
|
|
|
├─README.MD 说明文件
|
2025-05-01 12:41:35 +08:00
|
|
|
|
│
|
2024-09-22 18:04:05 +08:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 配置说明
|
|
|
|
|
|
|
|
|
|
本程序主配置文件为 application.yml
|
|
|
|
|
|
|
|
|
|
#### 配置参数
|
|
|
|
|
|
2024-10-01 00:15:50 +08:00
|
|
|
|
本程序内置参数统一前缀:wechat.ferry 所有自定义本服务的参数请都放置在此前缀下,如:
|
2024-09-22 18:04:05 +08:00
|
|
|
|
|
|
|
|
|
```ymal
|
2024-10-01 00:15:50 +08:00
|
|
|
|
wechat:
|
|
|
|
|
ferry:
|
|
|
|
|
# DLL文件位置
|
|
|
|
|
dll-path: /dll/sdk.dll
|
2024-09-22 18:04:05 +08:00
|
|
|
|
```
|
|
|
|
|
|
2024-10-07 20:55:23 +08:00
|
|
|
|
### 缩写含义
|
|
|
|
|
|
|
|
|
|
首先特别通用的缩写,这里就不在重复了,比如DTO,PO这类
|
|
|
|
|
|
|
|
|
|
请求入参:req
|
|
|
|
|
|
|
|
|
|
请求出参:resp
|
|
|
|
|
|
|
|
|
|
微信:wx
|
|
|
|
|
|
|
|
|
|
个人微信:pp
|
|
|
|
|
|
|
|
|
|
企业微信:cp
|
|
|
|
|
|
|
|
|
|
微信公众号:mp
|
|
|
|
|
|
|
|
|
|
WeChatFerry框架:wcf
|
|
|
|
|
|
|
|
|
|
.gitkeep:占位文件,比如我们定义一个文件夹之后,为了避免文件夹下无内容,导致git未提交上,所以会建议此文件,阅读时直接忽略此类文件即可
|
|
|
|
|
|
|
|
|
|
### 生成proto文件
|
2024-09-22 19:22:13 +08:00
|
|
|
|
|
|
|
|
|
本程序已经集成了生成proto文件的maven插件,直接install即可生成proto文件,且会在打包程序中去除 src/main/resources/proto
|
|
|
|
|
下面的内容,只保留实体类中的文件
|
|
|
|
|
|
2024-09-23 21:12:13 +08:00
|
|
|
|
默认install会重新根据.proto文件重新生成实体,如果不想被替换,请删除 src/main/resources/proto 下对应的.proto文件即可
|
2024-09-22 19:22:13 +08:00
|
|
|
|
|
2024-10-07 20:55:23 +08:00
|
|
|
|
#### 本项目自适配类型
|
|
|
|
|
|
|
|
|
|
有一些查询数据的自定义返回字段,定义了本项目自身的返回类型,所以 proto 文件不要从其他项目拷贝,不然缺失类型导致接口返回乱码自行负责
|
|
|
|
|
|
|
|
|
|
如:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
message RoomData
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
2024-09-22 18:04:05 +08:00
|
|
|
|
### 提交规范
|
|
|
|
|
|
|
|
|
|
本模块希望大家使用统一提交格式,便于区分
|
|
|
|
|
|
|
|
|
|
格式:类型(任务号/缺陷号/没有使用0替代): [模块名称]-[子模块名称]-本次修改的说明
|
|
|
|
|
|
|
|
|
|
如:
|
|
|
|
|
|
|
|
|
|
```cmd
|
2024-10-01 00:15:50 +08:00
|
|
|
|
feat(0): [java]-[wechat-ferry-mvn]-基础类目录划分迁移及代码格式
|
2024-09-22 18:04:05 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
| 名称 | 版本 |
|
|
|
|
|
|------|--------------|
|
|
|
|
|
| feat | 新功能 |
|
|
|
|
|
| fix | 缺陷 |
|
|
|
|
|
| ... | 其他等git规范中的均可 |
|
2024-09-21 20:22:28 +08:00
|
|
|
|
|
2024-10-07 20:55:23 +08:00
|
|
|
|
### 说明
|
|
|
|
|
|
|
|
|
|
下面主要是针对一些合作开发者的咨询做统一回复,可以直接忽略。
|
|
|
|
|
|
|
|
|
|
#### 目录层级拆分太细
|
|
|
|
|
|
|
|
|
|
其实这个服务是底层服务,目录分细确实会增加开发量,但是针对于后面的拓展和维护上来说,个人感觉利大于弊,
|
|
|
|
|
毕竟功能开发完之后,这个服务很少在变动,更多的是阅读,如果能让大家阅读、维护方便,开发时多花点时间能接受。
|
|
|
|
|
|
|
|
|
|
当然,如果觉得目录太多,可以自己删除点,这样可以少写点代码,目前本项目还是建议保必要的层级隔离
|
|
|
|
|
|
|
|
|
|
#### 文件名太长
|
2024-09-21 20:22:28 +08:00
|
|
|
|
|
2024-10-07 20:55:23 +08:00
|
|
|
|
出发点是为了名称进行统一规范化,便于阅读更加方便,只要了解了基础的缩写含义,其实跟自己平时命名一样,
|
|
|
|
|
只不过加上了固定的前缀和后缀而已,这样单从文件名就能分析出功能模块及其含义
|