修理图片下载,增加消息中缺少的字段
This commit is contained in:
parent
8b1156f72c
commit
5b75c57b53
23
clients/go_wcf_http/app/api.go
vendored
23
clients/go_wcf_http/app/api.go
vendored
@ -4,6 +4,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Result struct {
|
type Result struct {
|
||||||
@ -196,6 +197,7 @@ func SendIMG(c *gin.Context) {
|
|||||||
var RequestData struct {
|
var RequestData struct {
|
||||||
Path string `json:"path"`
|
Path string `json:"path"`
|
||||||
Receiver string `json:"receiver"`
|
Receiver string `json:"receiver"`
|
||||||
|
Suffix string `json:"suffix"`
|
||||||
}
|
}
|
||||||
if err := c.BindJSON(&RequestData); err != nil {
|
if err := c.BindJSON(&RequestData); err != nil {
|
||||||
result.Code = 0
|
result.Code = 0
|
||||||
@ -205,6 +207,9 @@ func SendIMG(c *gin.Context) {
|
|||||||
c.JSON(http.StatusOK, result)
|
c.JSON(http.StatusOK, result)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if RequestData.Path[0:4] == "http" {
|
||||||
|
RequestData.Path, _ = DownloadFile(RequestData.Path, "file", RequestData.Suffix)
|
||||||
|
}
|
||||||
result.Code = 1
|
result.Code = 1
|
||||||
result.Message = "发送完成"
|
result.Message = "发送完成"
|
||||||
var data = WxClient.SendIMG(RequestData.Path, RequestData.Receiver)
|
var data = WxClient.SendIMG(RequestData.Path, RequestData.Receiver)
|
||||||
@ -218,6 +223,7 @@ func SendFile(c *gin.Context) {
|
|||||||
var RequestData struct {
|
var RequestData struct {
|
||||||
Path string `json:"path"`
|
Path string `json:"path"`
|
||||||
Receiver string `json:"receiver"`
|
Receiver string `json:"receiver"`
|
||||||
|
Suffix string `json:"suffix"`
|
||||||
}
|
}
|
||||||
if err := c.BindJSON(&RequestData); err != nil {
|
if err := c.BindJSON(&RequestData); err != nil {
|
||||||
result.Code = 0
|
result.Code = 0
|
||||||
@ -227,6 +233,9 @@ func SendFile(c *gin.Context) {
|
|||||||
c.JSON(http.StatusOK, result)
|
c.JSON(http.StatusOK, result)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if RequestData.Path[0:4] == "http" {
|
||||||
|
RequestData.Path, _ = DownloadFile(RequestData.Path, "file", RequestData.Suffix)
|
||||||
|
}
|
||||||
result.Code = 1
|
result.Code = 1
|
||||||
result.Message = "发送完成"
|
result.Message = "发送完成"
|
||||||
var data = WxClient.SendFile(RequestData.Path, RequestData.Receiver)
|
var data = WxClient.SendFile(RequestData.Path, RequestData.Receiver)
|
||||||
@ -444,7 +453,17 @@ func DownloadAttach(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
result.Code = 1
|
result.Code = 1
|
||||||
result.Message = "下载附件调用成功"
|
result.Message = "下载附件调用成功"
|
||||||
var data = WxClient.DownloadAttach(RequestData.Id, RequestData.Thumb, RequestData.Extra)
|
WxClient.DownloadAttach(RequestData.Id, "", RequestData.Extra)
|
||||||
result.Data = data
|
times := 1
|
||||||
|
path := ""
|
||||||
|
for times < 30 {
|
||||||
|
path = WxClient.DecryptImage(RequestData.Extra, RequestData.Thumb)
|
||||||
|
if path != "func:FUNC_DECRYPT_IMAGE str:\"\"" && path != "func:FUNC_DECRYPT_IMAGE str:\"\"" {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
time.Sleep(time.Millisecond * 1000)
|
||||||
|
times += 1
|
||||||
|
}
|
||||||
|
result.Data = map[string]string{"path": path}
|
||||||
c.JSON(http.StatusOK, result)
|
c.JSON(http.StatusOK, result)
|
||||||
}
|
}
|
||||||
|
59
clients/go_wcf_http/app/robot.go
vendored
59
clients/go_wcf_http/app/robot.go
vendored
@ -10,8 +10,15 @@ extern int WxDestroySDK();
|
|||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/go-resty/resty/v2"
|
||||||
|
"github.com/google/uuid"
|
||||||
"go_wechatFerry/wcf"
|
"go_wechatFerry/wcf"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -19,6 +26,7 @@ var WxClient *wcf.Client
|
|||||||
|
|
||||||
// Message 组装成一个结构体展示消息
|
// Message 组装成一个结构体展示消息
|
||||||
type Message struct {
|
type Message struct {
|
||||||
|
IsSelf bool `json:"is_self,omitempty"`
|
||||||
IsGroup bool `json:"is_group,omitempty"`
|
IsGroup bool `json:"is_group,omitempty"`
|
||||||
MessageId uint64 `json:"message_id,omitempty"`
|
MessageId uint64 `json:"message_id,omitempty"`
|
||||||
Type uint32 `json:"type,omitempty"`
|
Type uint32 `json:"type,omitempty"`
|
||||||
@ -27,12 +35,13 @@ type Message struct {
|
|||||||
Content string `json:"content,omitempty"`
|
Content string `json:"content,omitempty"`
|
||||||
WxId string `json:"wx_id,omitempty"`
|
WxId string `json:"wx_id,omitempty"`
|
||||||
Sign string `json:"sign,omitempty"`
|
Sign string `json:"sign,omitempty"`
|
||||||
|
Thumb string `json:"thumb,omitempty"`
|
||||||
|
Extra string `json:"extra,omitempty"`
|
||||||
Xml string `json:"xml,omitempty"`
|
Xml string `json:"xml,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// WechatFerryInit 调用sdk.dll中的WxInitSdk 进行启动微信并注入
|
// WechatFerryInit 调用sdk.dll中的WxInitSdk 进行启动微信并注入
|
||||||
func WechatFerryInit() {
|
func WechatFerryInit() {
|
||||||
|
|
||||||
// 调试模式 端口
|
// 调试模式 端口
|
||||||
initSuccess := C.WxInitSDK(C.bool(false), C.int(10086))
|
initSuccess := C.WxInitSDK(C.bool(false), C.int(10086))
|
||||||
if initSuccess == 0 {
|
if initSuccess == 0 {
|
||||||
@ -60,6 +69,13 @@ func WechatFerryInit() {
|
|||||||
fmt.Println("初始化完成")
|
fmt.Println("初始化完成")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MessageProcess 在这里可以继续写代码了
|
||||||
|
func MessageProcess(msg Message) {
|
||||||
|
// 方法都在WxClient中
|
||||||
|
//WxClient.SendTxt("测试","","")
|
||||||
|
fmt.Println(msg)
|
||||||
|
}
|
||||||
|
|
||||||
// ContactsInit 通讯录初始化
|
// ContactsInit 通讯录初始化
|
||||||
func ContactsInit() {
|
func ContactsInit() {
|
||||||
var contactsMap []map[string]string
|
var contactsMap []map[string]string
|
||||||
@ -86,3 +102,44 @@ func ContactsInit() {
|
|||||||
}
|
}
|
||||||
WxClient.ContactsMap = contactsMap
|
WxClient.ContactsMap = contactsMap
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DownloadFile 下载文件
|
||||||
|
func DownloadFile(url string, fileType string, suffix string) (string, error) {
|
||||||
|
fmt.Println(url)
|
||||||
|
// 发送HTTP请求获取文件
|
||||||
|
resp, err := resty.New().R().Get(url)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取当前日期
|
||||||
|
currentTime := time.Now()
|
||||||
|
datePath := filepath.Join("./resource/static/"+fileType, currentTime.Format("2006-01-02"))
|
||||||
|
// 创建目录
|
||||||
|
if err := os.MkdirAll(datePath, os.ModePerm); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生成唯一的文件名
|
||||||
|
fileName := uuid.New().String() + "." + suffix
|
||||||
|
filePath := filepath.Join(datePath, fileName)
|
||||||
|
|
||||||
|
// 创建文件
|
||||||
|
file, err := os.Create(filePath)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
// 将HTTP响应的Body复制到文件
|
||||||
|
_, err = io.Copy(file, bytes.NewBuffer(resp.Body()))
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
currentDir, err := os.Getwd()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
filePath = currentDir + "/" + filePath
|
||||||
|
filePath = strings.Replace(filePath, "\\", "/", -1)
|
||||||
|
return filePath, nil
|
||||||
|
}
|
||||||
|
1
clients/go_wcf_http/go.mod
vendored
1
clients/go_wcf_http/go.mod
vendored
@ -6,6 +6,7 @@ require (
|
|||||||
github.com/danbai225/go-logs v0.3.2
|
github.com/danbai225/go-logs v0.3.2
|
||||||
github.com/gin-gonic/gin v1.10.0
|
github.com/gin-gonic/gin v1.10.0
|
||||||
github.com/go-resty/resty/v2 v2.13.1
|
github.com/go-resty/resty/v2 v2.13.1
|
||||||
|
github.com/google/uuid v1.6.0
|
||||||
github.com/gorilla/websocket v1.5.0
|
github.com/gorilla/websocket v1.5.0
|
||||||
go.nanomsg.org/mangos/v3 v3.4.2
|
go.nanomsg.org/mangos/v3 v3.4.2
|
||||||
google.golang.org/protobuf v1.34.2
|
google.golang.org/protobuf v1.34.2
|
||||||
|
2
clients/go_wcf_http/go.sum
vendored
2
clients/go_wcf_http/go.sum
vendored
@ -36,6 +36,8 @@ github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MG
|
|||||||
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
|
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
|
||||||
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||||
|
24
clients/go_wcf_http/mian.go
vendored
24
clients/go_wcf_http/mian.go
vendored
@ -103,12 +103,13 @@ func httpInit() {
|
|||||||
// 下载附件
|
// 下载附件
|
||||||
r.POST("/api/DownloadAttach", app.DownloadAttach)
|
r.POST("/api/DownloadAttach", app.DownloadAttach)
|
||||||
|
|
||||||
r.Run(":8000")
|
r.Run("127.0.0.1:8000")
|
||||||
}
|
}
|
||||||
|
|
||||||
func OnMsg() {
|
func OnMsg() {
|
||||||
err := app.WxClient.OnMSG(func(msg *wcf.WxMsg) {
|
err := app.WxClient.OnMSG(func(msg *wcf.WxMsg) {
|
||||||
var message app.Message
|
var message app.Message
|
||||||
|
message.IsSelf = msg.IsSelf
|
||||||
message.IsGroup = msg.IsGroup
|
message.IsGroup = msg.IsGroup
|
||||||
message.MessageId = msg.Id
|
message.MessageId = msg.Id
|
||||||
message.Type = msg.Type
|
message.Type = msg.Type
|
||||||
@ -117,7 +118,10 @@ func OnMsg() {
|
|||||||
message.Content = msg.Content
|
message.Content = msg.Content
|
||||||
message.Sign = msg.Sign
|
message.Sign = msg.Sign
|
||||||
message.WxId = msg.Sender
|
message.WxId = msg.Sender
|
||||||
|
message.Thumb = msg.Thumb
|
||||||
|
message.Extra = msg.Extra
|
||||||
message.Xml = msg.Xml
|
message.Xml = msg.Xml
|
||||||
|
// 如果你设置了回调链接 那么他就是会传给你 如果你没设置 你可以在else中 添加你的代码 直接删掉 回调的判断即可
|
||||||
if app.WxClient.MessageCallbackUrl != "" {
|
if app.WxClient.MessageCallbackUrl != "" {
|
||||||
var data = map[string]interface{}{
|
var data = map[string]interface{}{
|
||||||
"code": 0,
|
"code": 0,
|
||||||
@ -177,11 +181,23 @@ func OnMsg() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 植入我自己的功能接口
|
//fmt.Println("消息类型:", message.Type)
|
||||||
fmt.Println("请设置消息回调的url")
|
//fmt.Println("消息Thumb:", message.Thumb) // 这个可以直接下载
|
||||||
|
//fmt.Println("消息Extra:", message.Extra) // 这个要点一下才能下载(自行处理)
|
||||||
|
//fmt.Println("消息xml:", message.Xml)
|
||||||
|
//if message.Type == 3 {
|
||||||
|
// resp, _ := resty.New().R().SetBody(map[string]interface{}{
|
||||||
|
// "id": message.MessageId,
|
||||||
|
// "thumb": "F:/c++/WeChatFerry/clients/go_wcf_http/", //下载到本地的哪里
|
||||||
|
// "extra": message.Thumb, // 看上面的
|
||||||
|
// }).Post("http://127.0.0.1:8001/api/DownloadAttach")
|
||||||
|
// fmt.Println(resp.String())
|
||||||
|
// fmt.Println(resp.Error())
|
||||||
|
// fmt.Println(resp.StatusCode())
|
||||||
|
//}
|
||||||
|
go app.MessageProcess(message)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
fmt.Println(err)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
OnMsg()
|
OnMsg()
|
||||||
|
File diff suppressed because one or more lines are too long
5
clients/go_wcf_http/wcf/wcf.go
vendored
5
clients/go_wcf_http/wcf/wcf.go
vendored
@ -237,7 +237,7 @@ func (c *Client) RefreshPYQ() int32 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// DecryptImage 解密图片 加密路径,解密路径
|
// DecryptImage 解密图片 加密路径,解密路径
|
||||||
func (c *Client) DecryptImage(src, dst string) int32 {
|
func (c *Client) DecryptImage(src, dst string) string {
|
||||||
req := genFunReq(Functions_FUNC_DECRYPT_IMAGE)
|
req := genFunReq(Functions_FUNC_DECRYPT_IMAGE)
|
||||||
q := Request_Dec{
|
q := Request_Dec{
|
||||||
Dec: &DecPath{Src: src, Dst: dst},
|
Dec: &DecPath{Src: src, Dst: dst},
|
||||||
@ -251,7 +251,8 @@ func (c *Client) DecryptImage(src, dst string) int32 {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
logs.Err(err)
|
logs.Err(err)
|
||||||
}
|
}
|
||||||
return recv.GetStatus()
|
|
||||||
|
return recv.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddChatRoomMembers 添加群成员
|
// AddChatRoomMembers 添加群成员
|
||||||
|
Loading…
Reference in New Issue
Block a user