Merge pull request #24 from danbai225/master

接受好友申请
This commit is contained in:
Changhua 2023-05-07 12:09:00 +08:00 committed by GitHub
commit d07800abaf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 472 additions and 401 deletions

View File

@ -1,9 +0,0 @@
# Generate all fields as pointers.
* mangle_names:M_STRIP_PACKAGE
* fallback_type:FT_POINTER
MsgTypes* fallback_type:FT_CALLBACK
RpcContact* fallback_type:FT_CALLBACK
DbNames* fallback_type:FT_CALLBACK
DbTable* fallback_type:FT_CALLBACK
DbField* fallback_type:FT_CALLBACK
DbRow* fallback_type:FT_CALLBACK

View File

@ -5,112 +5,112 @@ option go_package = "./wcf";
option java_package = "com.iamteer"; option java_package = "com.iamteer";
enum Functions { enum Functions {
FUNC_RESERVED = 0x00; FUNC_RESERVED = 0x00;
FUNC_IS_LOGIN = 0x01; FUNC_IS_LOGIN = 0x01;
FUNC_GET_SELF_WXID = 0x10; FUNC_GET_SELF_WXID = 0x10;
FUNC_GET_MSG_TYPES = 0x11; FUNC_GET_MSG_TYPES = 0x11;
FUNC_GET_CONTACTS = 0x12; FUNC_GET_CONTACTS = 0x12;
FUNC_GET_DB_NAMES = 0x13; FUNC_GET_DB_NAMES = 0x13;
FUNC_GET_DB_TABLES = 0x14; FUNC_GET_DB_TABLES = 0x14;
FUNC_GET_USER_INFO = 0x15; FUNC_GET_USER_INFO = 0x15;
FUNC_SEND_TXT = 0x20; FUNC_SEND_TXT = 0x20;
FUNC_SEND_IMG = 0x21; FUNC_SEND_IMG = 0x21;
FUNC_SEND_FILE = 0x22; FUNC_SEND_FILE = 0x22;
FUNC_SEND_XML = 0x23; FUNC_SEND_XML = 0x23;
FUNC_SEND_EMOTION = 0x24; FUNC_SEND_EMOTION = 0x24;
FUNC_ENABLE_RECV_TXT = 0x30; FUNC_ENABLE_RECV_TXT = 0x30;
FUNC_DISABLE_RECV_TXT = 0x40; FUNC_DISABLE_RECV_TXT = 0x40;
FUNC_EXEC_DB_QUERY = 0x50; FUNC_EXEC_DB_QUERY = 0x50;
FUNC_ACCEPT_FRIEND = 0x51; FUNC_ACCEPT_FRIEND = 0x51;
FUNC_ADD_ROOM_MEMBERS = 0x52; FUNC_ADD_ROOM_MEMBERS = 0x52;
FUNC_RECV_TRANSFER = 0x53; FUNC_RECV_TRANSFER = 0x53;
FUNC_DECRYPT_IMAGE = 0x60; FUNC_DECRYPT_IMAGE = 0x60;
} }
message Request message Request
{ {
Functions func = 1; Functions func = 1;
oneof msg oneof msg
{ {
Empty empty = 2; Empty empty = 2;
string str = 3; string str = 3;
TextMsg txt = 4; TextMsg txt = 4;
PathMsg file = 5; PathMsg file = 5;
DbQuery query = 6; DbQuery query = 6;
Verification v = 7; Verification v = 7;
AddMembers m = 8; AddMembers m = 8;
XmlMsg xml = 9; XmlMsg xml = 9;
DecPath dec = 10; DecPath dec = 10;
Transfer tf = 11; Transfer tf = 11;
} }
} }
message Response message Response
{ {
Functions func = 1; Functions func = 1;
oneof msg oneof msg
{ {
int32 status = 2; // Int int32 status = 2; // Int
string str = 3; // string str = 3; //
WxMsg wxmsg = 4; // WxMsg wxmsg = 4; //
MsgTypes types = 5; // MsgTypes types = 5; //
RpcContacts contacts = 6; // RpcContacts contacts = 6; //
DbNames dbs = 7; // DbNames dbs = 7; //
DbTables tables = 8; // DbTables tables = 8; //
DbRows rows = 9; // DbRows rows = 9; //
UserInfo ui = 10; // UserInfo ui = 10; //
}; };
} }
message Empty { } message Empty { }
message WxMsg message WxMsg
{ {
bool is_self = 1; // bool is_self = 1; //
bool is_group = 2; // bool is_group = 2; //
int32 type = 3; // int32 type = 3; //
string id = 4; // id string id = 4; // id
string xml = 5; // xml string xml = 5; // xml
string sender = 6; // string sender = 6; //
string roomid = 7; // id string roomid = 7; // id
string content = 8; // string content = 8; //
string thumb = 9; // string thumb = 9; //
string extra = 10; // string extra = 10; //
} }
message TextMsg message TextMsg
{ {
string msg = 1; // string msg = 1; //
string receiver = 2; // @ string receiver = 2; // @
string aters = 3; // @ string aters = 3; // @
} }
message PathMsg message PathMsg
{ {
string path = 1; // string path = 1; //
string receiver = 2; // string receiver = 2; //
} }
message XmlMsg message XmlMsg
{ {
string receiver = 1; // string receiver = 1; //
string content = 2; // xml string content = 2; // xml
string path = 3; // string path = 3; //
int32 type = 4; // int32 type = 4; //
} }
message MsgTypes { map<int32, string> types = 1; } message MsgTypes { map<int32, string> types = 1; }
message RpcContact message RpcContact
{ {
string wxid = 1; // id string wxid = 1; // id
string code = 2; // string code = 2; //
string remark = 3; // string remark = 3; //
string name = 4; // string name = 4; //
string country = 5; // string country = 5; //
string province = 6; // / string province = 6; // /
string city = 7; // string city = 7; //
int32 gender = 8; // int32 gender = 8; //
} }
message RpcContacts { repeated RpcContact contacts = 1; } message RpcContacts { repeated RpcContact contacts = 1; }
@ -118,54 +118,55 @@ message DbNames { repeated string names = 1; }
message DbTable message DbTable
{ {
string name = 1; // string name = 1; //
string sql = 2; // SQL string sql = 2; // SQL
} }
message DbTables { repeated DbTable tables = 1; } message DbTables { repeated DbTable tables = 1; }
message DbQuery message DbQuery
{ {
string db = 1; // string db = 1; //
string sql = 2; // SQL string sql = 2; // SQL
} }
message DbField message DbField
{ {
int32 type = 1; // int32 type = 1; //
string column = 2; // string column = 2; //
bytes content = 3; // bytes content = 3; //
} }
message DbRow { repeated DbField fields = 1; } message DbRow { repeated DbField fields = 1; }
message DbRows { repeated DbRow rows = 1; } message DbRows { repeated DbRow rows = 1; }
message Verification message Verification
{ {
string v3 = 1; string v3 = 1; //
string v4 = 2; string v4 = 2; // Ticket
int32 scene = 3; // 17 30
} }
message AddMembers message AddMembers
{ {
string roomid = 1; // ID string roomid = 1; // ID
string wxids = 2; // string wxids = 2; //
} }
message UserInfo message UserInfo
{ {
string wxid = 1; // ID string wxid = 1; // ID
string name = 2; // string name = 2; //
string mobile = 3; // string mobile = 3; //
string home = 4; // / string home = 4; // /
} }
message DecPath message DecPath
{ {
string src = 1; // string src = 1; //
string dst = 2; // string dst = 2; //
} }
message Transfer message Transfer
{ {
string wxid = 1; // string wxid = 1; //
string tid = 2; // id transferid string tid = 2; // id transferid
} }

View File

@ -132,8 +132,25 @@ func (c *Client) ExecDBQuery(db, sql string) []*DbRow {
} }
return recv.GetRows().GetRows() return recv.GetRows().GetRows()
} }
func (c *Client) AcceptFriend() int32 {
err := c.send(genFunReq(Functions_FUNC_ACCEPT_FRIEND).build()) /*AcceptFriend 接收好友请求
* 接收好友请求
*
* @param v3 xml.attrib["encryptusername"] // 加密的用户名
* @param v4 xml.attrib["ticket"] // Ticket
* @param scene 17 // 添加方式17 名片30 扫码
*/
func (c *Client) AcceptFriend(v3, v4 string, scene int32) int32 {
req := genFunReq(Functions_FUNC_ACCEPT_FRIEND)
q := Request_V{
V: &Verification{
V3: v3,
V4: v4,
Scene: scene,
}}
req.Msg = &q
err := c.send(req.build())
if err != nil { if err != nil {
logs.Err(err) logs.Err(err)
} }
@ -143,6 +160,59 @@ func (c *Client) AcceptFriend() int32 {
} }
return recv.GetStatus() return recv.GetStatus()
} }
func (c *Client) AddChatroomMembers(roomID, wxIDs string) int32 {
req := genFunReq(Functions_FUNC_ADD_ROOM_MEMBERS)
q := Request_M{
M: &AddMembers{Roomid: roomID, Wxids: wxIDs},
}
req.Msg = &q
err := c.send(req.build())
if err != nil {
logs.Err(err)
}
recv, err := c.Recv()
if err != nil {
logs.Err(err)
}
return recv.GetStatus()
}
// ReceiveTransfer 接收转账
func (c *Client) ReceiveTransfer(transferId, wxID string) int32 {
req := genFunReq(Functions_FUNC_RECV_TRANSFER)
q := Request_Tf{
Tf: &Transfer{Tid: transferId, Wxid: wxID},
}
req.Msg = &q
err := c.send(req.build())
if err != nil {
logs.Err(err)
}
recv, err := c.Recv()
if err != nil {
logs.Err(err)
}
return recv.GetStatus()
}
// DecryptImage 解密图片 加密路径,解密路径
func (c *Client) DecryptImage(src, dst string) int32 {
req := genFunReq(Functions_FUNC_DECRYPT_IMAGE)
q := Request_Dec{
Dec: &DecPath{Src: src, Dst: dst},
}
req.Msg = &q
err := c.send(req.build())
if err != nil {
logs.Err(err)
}
recv, err := c.Recv()
if err != nil {
logs.Err(err)
}
return recv.GetStatus()
}
func (c *Client) AddChatRoomMembers(roomId string, wxIds []string) int32 { func (c *Client) AddChatRoomMembers(roomId string, wxIds []string) int32 {
req := genFunReq(Functions_FUNC_ADD_ROOM_MEMBERS) req := genFunReq(Functions_FUNC_ADD_ROOM_MEMBERS)
q := Request_M{ q := Request_M{
@ -292,8 +362,8 @@ func (c *Client) OnMSG(f func(msg *WxMsg)) error {
if err != nil { if err != nil {
return err return err
} }
socket.SetOption(mangos.OptionRecvDeadline, 2000) _ = socket.SetOption(mangos.OptionRecvDeadline, 2000)
socket.SetOption(mangos.OptionSendDeadline, 2000) _ = socket.SetOption(mangos.OptionSendDeadline, 2000)
err = socket.Dial(addPort(c.add)) err = socket.Dial(addPort(c.add))
if err != nil { if err != nil {
@ -305,7 +375,6 @@ func (c *Client) OnMSG(f func(msg *WxMsg)) error {
if err != nil { if err != nil {
return err return err
} }
logs.Info(len(recv))
_ = proto.Unmarshal(recv, msg) _ = proto.Unmarshal(recv, msg)
go f(msg.GetWxmsg()) go f(msg.GetWxmsg())
} }

File diff suppressed because it is too large Load Diff

View File

@ -112,7 +112,7 @@ func TestAcceptFriend(t *testing.T) {
logs.Err(err) logs.Err(err)
return return
} }
logs.Info(wcf.AcceptFriend()) logs.Info(wcf.AcceptFriend("encryptusername", "ticket", 17))
} }
func TestGetUserInfo(t *testing.T) { func TestGetUserInfo(t *testing.T) {
wcf, err := NewWCF("") wcf, err := NewWCF("")