9.4 KiB
Vendored
WCF-BMC 【WeChatFerry中的Springboot+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/wcf-bmc为根目录打开
添加Maven
找到 WeChatFerry/clients/java/wcf-bmc/pom.xml 文件,右键添加到Maven中,会自动下载依赖
替换对应版本的dll
把刚下载的最新发布文件解压到本项目中的 dll 文件目录下,直接替换原因文件即可
替换 clients/java/wcf-bmc/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\wcf-bmc\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 wcf-bmc
mvn clean
mvn install
打包后的文件在target/wcf-bmc-xx.x.x.x-SNAPSHOT.jar
安装部署
服务器环境
名称 | 版本 | 备注 |
---|---|---|
JDK | 1.8+ | √ |
微信客户端 | 安装对应版本 | √ |
整合安装包
自己在项目中找到对应的文件,手动复制过去
wcf-bmc
├─dll 核心dll目录
│ ├─sdk.dll sdk文件
│ ├─spy.dll spy文件
│ ├─spy_debug.dll spy文件
│ └─DISCLAIMER.md DISCLAIMER文件
│
├─bin 命令目录
│ └─run.bat 启动命令
│
├─config 配置文件目录
│ ├─application.yml 配置文件
│ └─logback-spring.xml 日志配置文件
│
├─wcf-bmc-xx.x.x.x.jar 打包后的源码包
│
启动
1.退出微信客户端后台
2.进入命令黑窗口(CMD),并进入到项目目录下
cd wcf
3.执行启动命令,jar名称换成自己的
java -Dconfig.dir=./config -jar wcf-bmc-xx.x.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 |
模块结构
wcf-bmc
├─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): [wcf-bmc]-基础类目录划分迁移及代码格式
名称 | 版本 |
---|---|
feat | 新功能 |
fix | 缺陷 |
... | 其他等git规范中的均可 |
说明
下面主要是针对一些合作开发者的咨询做统一回复,可以直接忽略。
项目名称的由来
WCF-BCM
WCF是WeChatFerry
第一层:BMC是Business Management Center的缩写
第二层:BMC是SpringBoot Maven Client
目录层级拆分太细
其实这个服务是底层服务,目录分细确实会增加开发量,但是针对于后面的拓展和维护上来说,个人感觉利大于弊, 毕竟功能开发完之后,这个服务很少在变动,更多的是阅读,如果能让大家阅读、维护方便,开发时多花点时间能接受。
当然,如果觉得目录太多,可以自己删除点,这样可以少写点代码,目前本项目还是建议保必要的层级隔离
文件名太长
出发点是为了名称进行统一规范化,便于阅读更加方便,只要了解了基础的缩写含义,其实跟自己平时命名一样, 只不过加上了固定的前缀和后缀而已,这样单从文件名就能分析出功能模块及其含义