WeChatFerry/clients/java/wechat-ferry-mvn
2025-05-01 12:51:49 +08:00
..
dll feat: [java]-[mvn]-1.update to v39.5.2 2025-05-01 12:41:35 +08:00
src/main feat: [java]-[mvn]-1.update to v39.5.2 2025-05-01 12:41:35 +08:00
.gitignore feat(0): [java]-[wechat-ferry-mvn]-项目名称及目录统一调整 2024-10-01 00:15:50 +08:00
CHANGELOG.md feat: [java]-[mvn]-1.update to v39.5.2 2025-05-01 12:41:35 +08:00
pom.xml feat: [java]-[mvn]-代码注释补充 2025-03-12 18:12:39 +08:00
README.MD feat: [java]-[mvn]-更新说明文件中的部署说明 2025-05-01 12:51:49 +08:00

WeChatFerry Java 客户端 maven版

⚠️ 只支持 Windows ⚠️

声明: 本项目是基于 clients/java/wcferry 项目改造,随着时间推进,项目结构和代码规范逐渐产生分离,使用此项目的人员可参考之前的项目 我们在开发时请尽量保持注释的完整性,便于阅读维护

快速使用

环境准备

名称 版本 备注
JDK 1.8+
Maven 3.8+
微信客户端 3.9.12.51
WeChatFerry-SDK 39.5.2
MySQL 8.0+ 备用

下载文件

使用惯用 IDE打开工程

可以直接以WeChatFerry为根目录打开

或者以WeChatFerry/clients/java/wechat-ferry-mvn为根目录打开

添加Maven

找到 WeChatFerry/clients/java/wechat-ferry-mvn/pom.xml 文件右键添加到Maven中会自动下载依赖

替换对应版本的dll

把刚下载的最新发布文件解压到本项目中的 dll 文件目录下,直接替换原因文件即可

替换 clients/java/wechat-ferry-mvn/dll 目录下(也可以在配置文件中改为自定义的目录)

  • sdk.dll
  • spy.dll
  • spy_debug.dll
  • DISCLAIMER.md

如果之前已经使用本项目启动过微信,此时替换发现替换不了,是因为正则运行的微信客户端正在使用该文件, 请退出并关闭微信客户端之后再进行替换

修改配置文件

配置文件src/main/resources/application.yml

根据自己的dll目录位置修改配置文件

# 本服务参数
wechat:
    ferry:
        # DLL文件位置
        dll-path: E:\WeChatFerry\clients\java\wechat-ferry-mvn\dll\sdk.dll
        # socket端口
        socket-port: 10086

数据库修改-目前未使用

为了更好的拓展应用本客户端后续将采用mysql数据库请自行安装mysql数据库

编译运行

找到 src/main/java/com/wechat/ferry/WeChatFerryApplication.java 类

直接启动即可

访问

启动后springboot自身的端口为 9201 socket的端口为 10086

swagger地址http://localhost:9201/swagger-ui/index.html

项目打包

使用maven插件打包

  • 先 clean
  • 在 install

或者进入到项目根目录使用命令打包

cd wechat-ferry-mvn

mvn clean

mvn install

打包后的文件在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),并进入到项目目录下

cd wcf

3.执行启动命令jar名称换成自己的

java -Dconfig.dir=./config -jar wechat-ferry-mvn-xx.x.x.jar

参与开发

核心依赖

依赖 版本 说明
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

模块结构

wechat-ferry-mvn
├─dll                                       核心dll
│  ├─sdk.dll                                sdk文件
│  └─readme.txt                             本目录说明文件
│
├─images                                    图片
│  └─md                                     MD文档图片
│
├─src                                       源
│  ├─main                                   重启命令
│  │  ├─java(com.wechat.ferry)              java代码目录
│  │  │  ├─config                           配置
│  │  │  ├─constant                         常量
│  │  │  ├─controller                       控制层(API接口)
│  │  │  ├─entity                           聚合模型
│  │  │  │  ├─dto                           DTO模型
│  │  │  │  ├─po                            数据库实体(与表结构一一对应,否则请使用DTO)
│  │  │  │  ├─proto                         PB实体
│  │  │  │  └─vo                            视图层返回体目录
│  │  │  ├─enums                            枚举
│  │  │  ├─exception                        异常封装
│  │  │  ├─handle                           处理层
│  │  │  ├─service                          业务层
│  │  │  │  └─impl                          业务实现类
│  │  │  ├─strategy                         策略层
│  │  │  │  └─impl                          策略实现类(如接收到消息之后的事件处理可以放在这里)
│  │  │  ├─task                             定时任务
│  │  │  ├─utils                            工具层
│  │  │  └─WcferryApplication.java          启动类
│  │  │
│  │  │resources                            资源目录
│  │  │  ├─libs                             本程序内置依赖包
│  │  │  ├─proto                            proto文件(此目录打包将被排除)
│  │  │  ├─win32-x86-64                     依赖程序
│  │  │  ├─application.yml                  本程序主配置文件
│  │  │  └─logback-spring.xml               日志配置文件
│
├─CHANGELOG.md                              更新日志文件
├─pom.xml                                   POM文件
├─README.MD                                 说明文件
│

配置说明

本程序主配置文件为 application.yml

配置参数

本程序内置参数统一前缀wechat.ferry 所有自定义本服务的参数请都放置在此前缀下,如:

wechat:
  ferry:
    # DLL文件位置
    dll-path: /dll/sdk.dll

缩写含义

首先特别通用的缩写这里就不在重复了比如DTO,PO这类

请求入参req

请求出参resp

微信wx

个人微信pp

企业微信cp

微信公众号mp

WeChatFerry框架wcf

.gitkeep占位文件比如我们定义一个文件夹之后为了避免文件夹下无内容导致git未提交上所以会建议此文件阅读时直接忽略此类文件即可

生成proto文件

本程序已经集成了生成proto文件的maven插件直接install即可生成proto文件且会在打包程序中去除 src/main/resources/proto 下面的内容,只保留实体类中的文件

默认install会重新根据.proto文件重新生成实体如果不想被替换请删除 src/main/resources/proto 下对应的.proto文件即可

本项目自适配类型

有一些查询数据的自定义返回字段,定义了本项目自身的返回类型,所以 proto 文件不要从其他项目拷贝,不然缺失类型导致接口返回乱码自行负责

如:

message RoomData

提交规范

本模块希望大家使用统一提交格式,便于区分

格式:类型(任务号/缺陷号/没有使用0替代): [模块名称]-[子模块名称]-本次修改的说明

如:

feat(0): [java]-[wechat-ferry-mvn]-基础类目录划分迁移及代码格式
名称 版本
feat 新功能
fix 缺陷
... 其他等git规范中的均可

说明

下面主要是针对一些合作开发者的咨询做统一回复,可以直接忽略。

目录层级拆分太细

其实这个服务是底层服务,目录分细确实会增加开发量,但是针对于后面的拓展和维护上来说,个人感觉利大于弊, 毕竟功能开发完之后,这个服务很少在变动,更多的是阅读,如果能让大家阅读、维护方便,开发时多花点时间能接受。

当然,如果觉得目录太多,可以自己删除点,这样可以少写点代码,目前本项目还是建议保必要的层级隔离

文件名太长

出发点是为了名称进行统一规范化,便于阅读更加方便,只要了解了基础的缩写含义,其实跟自己平时命名一样, 只不过加上了固定的前缀和后缀而已,这样单从文件名就能分析出功能模块及其含义