From 6863a7f99c91e3fcf4967869f8779b2c00b28717 Mon Sep 17 00:00:00 2001
From: chandler <1915724901@qq.com>
Date: Sun, 22 Sep 2024 19:22:13 +0800
Subject: [PATCH] =?UTF-8?q?feat(0):=20[java]-[wcferry-mvn]-1.maven?=
=?UTF-8?q?=E6=8F=92=E4=BB=B6=E4=B8=AD=E9=9B=86=E6=88=90protobuf=E6=8F=92?=
=?UTF-8?q?=E4=BB=B6=E7=94=A8=E4=BA=8E=E7=94=9F=E6=88=90proto=E6=96=87=202?=
=?UTF-8?q?.=E5=AE=9A=E4=B9=89=E4=BA=86proto=E9=85=8D=E7=BD=AE=E5=BA=8F?=
=?UTF-8?q?=E5=88=97=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
clients/java/wcferry-mvn/README.MD | 8 +
clients/java/wcferry-mvn/pom.xml | 50 ++++
.../com/iamteer/config/ProtobufConfig.java | 35 +++
.../src/main/resources/proto/.gitkeep | 3 +
.../src/main/resources/proto/wcf.proto | 236 ++++++++++++++++++
5 files changed, 332 insertions(+)
create mode 100644 clients/java/wcferry-mvn/src/main/java/com/iamteer/config/ProtobufConfig.java
create mode 100644 clients/java/wcferry-mvn/src/main/resources/proto/.gitkeep
create mode 100644 clients/java/wcferry-mvn/src/main/resources/proto/wcf.proto
diff --git a/clients/java/wcferry-mvn/README.MD b/clients/java/wcferry-mvn/README.MD
index 25fc235..8bc07d9 100644
--- a/clients/java/wcferry-mvn/README.MD
+++ b/clients/java/wcferry-mvn/README.MD
@@ -86,6 +86,7 @@ wcferry-mvn
│ │ │ └─WcferryApplication.java 启动类
│ │ │resources 数据库脚本
│ │ │ ├─libs 本程序内置依赖包
+│ │ │ ├─proto proto文件
│ │ │ ├─win32-x86-64 依赖程序
│ │ │ ├─application.yml 本程序主配置文件
│ │ │ └─logback-spring.xml 日志配置文件
@@ -110,6 +111,13 @@ wcferry:
dll-path: /dll/sdk.dll
```
+#### 生成proto文件
+
+本程序已经集成了生成proto文件的maven插件,直接install即可生成proto文件,且会在打包程序中去除 src/main/resources/proto
+下面的内容,只保留实体类中的文件
+
+默认install会重新根据 生成实体,如果不想被替换,请删除 src/main/resources/proto 下对应的文件即可
+
### 提交规范
本模块希望大家使用统一提交格式,便于区分
diff --git a/clients/java/wcferry-mvn/pom.xml b/clients/java/wcferry-mvn/pom.xml
index f691a7a..16f0a96 100644
--- a/clients/java/wcferry-mvn/pom.xml
+++ b/clients/java/wcferry-mvn/pom.xml
@@ -61,4 +61,54 @@
+
+
+
+ kr.motd.maven
+ os-maven-plugin
+ 1.5.0.Final
+
+
+
+
+
+
+ org.xolstice.maven.plugins
+ protobuf-maven-plugin
+ 0.5.0
+
+
+
+ com.google.protobuf:protoc:3.22.2:exe:${os.detected.classifier}
+
+
+ ${project.basedir}/src/main/resources/proto
+
+ src/main/java
+ grpc-java
+
+ false
+
+
+
+
+ compile
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.3.0
+
+
+ **/*.proto
+
+
+
+
+
+
diff --git a/clients/java/wcferry-mvn/src/main/java/com/iamteer/config/ProtobufConfig.java b/clients/java/wcferry-mvn/src/main/java/com/iamteer/config/ProtobufConfig.java
new file mode 100644
index 0000000..28ca635
--- /dev/null
+++ b/clients/java/wcferry-mvn/src/main/java/com/iamteer/config/ProtobufConfig.java
@@ -0,0 +1,35 @@
+package com.iamteer.config;
+
+import java.util.Collections;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.converter.protobuf.ProtobufHttpMessageConverter;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * 配置类-protobuf
+ *
+ * @author chandler
+ * @date 2024-09-26 21:35
+ */
+@Configuration
+public class ProtobufConfig {
+
+ /**
+ * protobuf 序列化
+ */
+ @Bean
+ ProtobufHttpMessageConverter protobufHttpMessageConverter() {
+ return new ProtobufHttpMessageConverter();
+ }
+
+ /**
+ * protobuf 反序列化
+ */
+ @Bean
+ RestTemplate restTemplate(ProtobufHttpMessageConverter protobufHttpMessageConverter) {
+ return new RestTemplate(Collections.singletonList(protobufHttpMessageConverter));
+ }
+
+}
diff --git a/clients/java/wcferry-mvn/src/main/resources/proto/.gitkeep b/clients/java/wcferry-mvn/src/main/resources/proto/.gitkeep
new file mode 100644
index 0000000..a10d4fe
--- /dev/null
+++ b/clients/java/wcferry-mvn/src/main/resources/proto/.gitkeep
@@ -0,0 +1,3 @@
+# Ignore everything in this directory
+*
+# Except this file !.gitkeep
\ No newline at end of file
diff --git a/clients/java/wcferry-mvn/src/main/resources/proto/wcf.proto b/clients/java/wcferry-mvn/src/main/resources/proto/wcf.proto
new file mode 100644
index 0000000..5427ff0
--- /dev/null
+++ b/clients/java/wcferry-mvn/src/main/resources/proto/wcf.proto
@@ -0,0 +1,236 @@
+syntax = "proto3";
+
+package wcf;
+option java_package = "com.iamteer.entity";
+
+enum Functions {
+ FUNC_RESERVED = 0x00;
+ FUNC_IS_LOGIN = 0x01;
+ FUNC_GET_SELF_WXID = 0x10;
+ FUNC_GET_MSG_TYPES = 0x11;
+ FUNC_GET_CONTACTS = 0x12;
+ FUNC_GET_DB_NAMES = 0x13;
+ FUNC_GET_DB_TABLES = 0x14;
+ FUNC_GET_USER_INFO = 0x15;
+ FUNC_GET_AUDIO_MSG = 0x16;
+ FUNC_SEND_TXT = 0x20;
+ FUNC_SEND_IMG = 0x21;
+ FUNC_SEND_FILE = 0x22;
+ FUNC_SEND_XML = 0x23;
+ FUNC_SEND_EMOTION = 0x24;
+ FUNC_SEND_RICH_TXT = 0x25;
+ FUNC_SEND_PAT_MSG = 0x26;
+ FUNC_FORWARD_MSG = 0x27;
+ FUNC_ENABLE_RECV_TXT = 0x30;
+ FUNC_DISABLE_RECV_TXT = 0x40;
+ FUNC_EXEC_DB_QUERY = 0x50;
+ FUNC_ACCEPT_FRIEND = 0x51;
+ FUNC_RECV_TRANSFER = 0x52;
+ FUNC_REFRESH_PYQ = 0x53;
+ FUNC_DOWNLOAD_ATTACH = 0x54;
+ FUNC_GET_CONTACT_INFO = 0x55;
+ FUNC_REVOKE_MSG = 0x56;
+ FUNC_REFRESH_QRCODE = 0x57;
+ FUNC_DECRYPT_IMAGE = 0x60;
+ FUNC_EXEC_OCR = 0x61;
+ FUNC_ADD_ROOM_MEMBERS = 0x70;
+ FUNC_DEL_ROOM_MEMBERS = 0x71;
+ FUNC_INV_ROOM_MEMBERS = 0x72;
+}
+
+message Request
+{
+ Functions func = 1;
+ oneof msg
+ {
+ Empty empty = 2; // 无参数
+ string str = 3; // 字符串
+ TextMsg txt = 4; // 发送文本消息结构
+ PathMsg file = 5; // 发送图片、文件消息结构
+ DbQuery query = 6; // 数据库查询参数结构
+ Verification v = 7; // 通过好友验证参数结构
+ MemberMgmt m = 8; // 群成员管理,添加、删除、邀请
+ XmlMsg xml = 9; // XML参数结构
+ DecPath dec = 10; // 解密图片参数结构
+ Transfer tf = 11; // 接收转账参数结构
+ uint64 ui64 = 12 [ jstype = JS_STRING ]; // 64 位整数,通用
+ bool flag = 13; // 布尔值
+ AttachMsg att = 14; // 下载图片、视频、文件参数结构
+ AudioMsg am = 15; // 保存语音参数结构
+ RichText rt = 16; // 发送卡片消息结构
+ PatMsg pm = 17; // 发送拍一拍参数结构
+ ForwardMsg fm = 18; // 转发消息参数结构
+ }
+}
+
+message Response
+{
+ Functions func = 1;
+ oneof msg
+ {
+ int32 status = 2; // Int 状态,通用
+ string str = 3; // 字符串
+ WxMsg wxmsg = 4; // 微信消息
+ MsgTypes types = 5; // 消息类型
+ RpcContacts contacts = 6; // 联系人
+ DbNames dbs = 7; // 数据库列表
+ DbTables tables = 8; // 表列表
+ DbRows rows = 9; // 行列表
+ UserInfo ui = 10; // 个人信息
+ OcrMsg ocr = 11; // OCR 结果
+ };
+}
+
+message Empty { }
+
+message WxMsg
+{
+ bool is_self = 1; // 是否自己发送的
+ bool is_group = 2; // 是否群消息
+ uint64 id = 3 [ jstype = JS_STRING ]; // 消息 id
+ uint32 type = 4; // 消息类型
+ uint32 ts = 5; // 消息类型
+ string roomid = 6; // 群 id(如果是群消息的话)
+ string content = 7; // 消息内容
+ string sender = 8; // 消息发送者
+ string sign = 9; // Sign
+ string thumb = 10; // 缩略图
+ string extra = 11; // 附加内容
+ string xml = 12; // 消息 xml
+}
+
+message TextMsg
+{
+ string msg = 1; // 要发送的消息内容
+ string receiver = 2; // 消息接收人,当为群时可@
+ string aters = 3; // 要@的人列表,逗号分隔
+}
+
+message PathMsg
+{
+ string path = 1; // 要发送的图片的路径
+ string receiver = 2; // 消息接收人
+}
+
+message XmlMsg
+{
+ string receiver = 1; // 消息接收人
+ string content = 2; // xml 内容
+ string path = 3; // 图片路径
+ int32 type = 4; // 消息类型
+}
+
+message MsgTypes { map types = 1; }
+
+message RpcContact
+{
+ string wxid = 1; // 微信 id
+ string code = 2; // 微信号
+ string remark = 3; // 备注
+ string name = 4; // 微信昵称
+ string country = 5; // 国家
+ string province = 6; // 省/州
+ string city = 7; // 城市
+ int32 gender = 8; // 性别
+}
+message RpcContacts { repeated RpcContact contacts = 1; }
+
+message DbNames { repeated string names = 1; }
+
+message DbTable
+{
+ string name = 1; // 表名
+ string sql = 2; // 建表 SQL
+}
+message DbTables { repeated DbTable tables = 1; }
+
+message DbQuery
+{
+ string db = 1; // 目标数据库
+ string sql = 2; // 查询 SQL
+}
+
+message DbField
+{
+ int32 type = 1; // 字段类型
+ string column = 2; // 字段名称
+ bytes content = 3; // 字段内容
+}
+message DbRow { repeated DbField fields = 1; }
+message DbRows { repeated DbRow rows = 1; }
+
+message Verification
+{
+ string v3 = 1; // 加密的用户名
+ string v4 = 2; // Ticket
+ int32 scene = 3; // 添加方式:17 名片,30 扫码
+}
+
+message MemberMgmt
+{
+ string roomid = 1; // 要加的群ID
+ string wxids = 2; // 要加群的人列表,逗号分隔
+}
+
+message UserInfo
+{
+ string wxid = 1; // 微信ID
+ string name = 2; // 昵称
+ string mobile = 3; // 手机号
+ string home = 4; // 文件/图片等父路径
+}
+
+message DecPath
+{
+ string src = 1; // 源路径
+ string dst = 2; // 目标路径
+}
+
+message Transfer
+{
+ string wxid = 1; // 转账人
+ string tfid = 2; // 转账id transferid
+ string taid = 3; // Transaction id
+}
+
+message AttachMsg
+{
+ uint64 id = 1 [ jstype = JS_STRING ]; // 消息 id
+ string thumb = 2; // 消息中的 thumb
+ string extra = 3; // 消息中的 extra
+}
+
+message AudioMsg
+{
+ uint64 id = 1 [ jstype = JS_STRING ]; // 语音消息 id
+ string dir = 2; // 存放目录
+}
+
+message RichText
+{
+ string name = 1; // 显示名字
+ string account = 2; // 公众号 id
+ string title = 3; // 标题
+ string digest = 4; // 摘要
+ string url = 5; // 链接
+ string thumburl = 6; // 缩略图
+ string receiver = 7; // 接收人
+}
+
+message PatMsg
+{
+ string roomid = 1; // 群 id
+ string wxid = 2; // wxid
+}
+
+message OcrMsg
+{
+ int32 status = 1; // 状态
+ string result = 2; // 结果
+}
+
+message ForwardMsg
+{
+ uint64 id = 1 [ jstype = JS_STRING ]; // 待转发消息 ID
+ string receiver = 2; // 转发接收目标,群为 roomId,个人为 wxid
+}