|
@@ -3,13 +3,13 @@ package crontask
|
|
import (
|
|
import (
|
|
"context"
|
|
"context"
|
|
"encoding/json"
|
|
"encoding/json"
|
|
- "github.com/imroc/req/v3"
|
|
|
|
"strings"
|
|
"strings"
|
|
"time"
|
|
"time"
|
|
"wechat-api/ent"
|
|
"wechat-api/ent"
|
|
"wechat-api/ent/messagerecords"
|
|
"wechat-api/ent/messagerecords"
|
|
"wechat-api/ent/server"
|
|
"wechat-api/ent/server"
|
|
"wechat-api/ent/wx"
|
|
"wechat-api/ent/wx"
|
|
|
|
+ "wechat-api/hook"
|
|
"wechat-api/internal/types/payload"
|
|
"wechat-api/internal/types/payload"
|
|
)
|
|
)
|
|
|
|
|
|
@@ -57,11 +57,6 @@ func (l *CronTask) sendWx() {
|
|
|
|
|
|
startTime := time.Now()
|
|
startTime := time.Now()
|
|
|
|
|
|
- client := req.C().DevMode()
|
|
|
|
- client.SetCommonRetryCount(2).
|
|
|
|
- SetCommonRetryBackoffInterval(1*time.Second, 5*time.Second).
|
|
|
|
- SetCommonRetryFixedInterval(2 * time.Second).SetTimeout(30 * time.Second)
|
|
|
|
-
|
|
|
|
type SendTextMsgReq struct {
|
|
type SendTextMsgReq struct {
|
|
Wxid string `json:"wxid"`
|
|
Wxid string `json:"wxid"`
|
|
Msg string `json:"msg"`
|
|
Msg string `json:"msg"`
|
|
@@ -76,10 +71,10 @@ func (l *CronTask) sendWx() {
|
|
// 从 Redis 中获取服务器信息(ip, port)
|
|
// 从 Redis 中获取服务器信息(ip, port)
|
|
getServerInfo := func(wxid string) (string, error) {
|
|
getServerInfo := func(wxid string) (string, error) {
|
|
key := "crontask_wx_server_info"
|
|
key := "crontask_wx_server_info"
|
|
- val, err := l.svcCtx.Rds.HGet(ctx, key, wxid).Result()
|
|
|
|
- if err != nil {
|
|
|
|
- return "", err
|
|
|
|
- }
|
|
|
|
|
|
+ val, _ := l.svcCtx.Rds.HGet(ctx, key, wxid).Result()
|
|
|
|
+ //if err != nil {
|
|
|
|
+ // return "", err
|
|
|
|
+ //}
|
|
|
|
|
|
if val == "" {
|
|
if val == "" {
|
|
wx, err := l.svcCtx.DB.Wx.Query().Where(wx.WxidEQ(wxid)).First(l.ctx)
|
|
wx, err := l.svcCtx.DB.Wx.Query().Where(wx.WxidEQ(wxid)).First(l.ctx)
|
|
@@ -92,7 +87,7 @@ func (l *CronTask) sendWx() {
|
|
l.Logger.Errorf("get server info failed wxid=%v err=%v", wxid, err)
|
|
l.Logger.Errorf("get server info failed wxid=%v err=%v", wxid, err)
|
|
return "", err
|
|
return "", err
|
|
}
|
|
}
|
|
- val = server.PrivateIP + ":" + server.AdminPort
|
|
|
|
|
|
+ val = server.PrivateIP + ":" + server.AdminPort + ":" + wx.Port
|
|
l.svcCtx.Rds.HSet(ctx, key, wxid, val)
|
|
l.svcCtx.Rds.HSet(ctx, key, wxid, val)
|
|
}
|
|
}
|
|
|
|
|
|
@@ -102,7 +97,7 @@ func (l *CronTask) sendWx() {
|
|
for _, v := range messages {
|
|
for _, v := range messages {
|
|
serverInfo, _ := getServerInfo(v.BotWxid)
|
|
serverInfo, _ := getServerInfo(v.BotWxid)
|
|
infoArray := strings.Split(serverInfo, ":")
|
|
infoArray := strings.Split(serverInfo, ":")
|
|
- ip, wxPort := infoArray[0], infoArray[1]
|
|
|
|
|
|
+ serverIp, adminPort, wxPort := infoArray[0], infoArray[1], infoArray[2]
|
|
|
|
|
|
// 更新 status 值为 2(发送中)
|
|
// 更新 status 值为 2(发送中)
|
|
tx, err := l.svcCtx.DB.Tx(l.ctx)
|
|
tx, err := l.svcCtx.DB.Tx(l.ctx)
|
|
@@ -113,17 +108,12 @@ func (l *CronTask) sendWx() {
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ hookClient := hook.NewHook(serverIp, adminPort, wxPort)
|
|
|
|
+
|
|
if v.ContentType == 1 {
|
|
if v.ContentType == 1 {
|
|
- _, err = client.R().SetBody(&SendTextMsgReq{
|
|
|
|
- Wxid: v.ContactWxid,
|
|
|
|
- Msg: v.Content,
|
|
|
|
- }).Post("http://" + ip + ":" + wxPort + "/SendTextMsg")
|
|
|
|
|
|
+ err = hookClient.SendTextMsg(v.ContactWxid, v.Content)
|
|
} else {
|
|
} else {
|
|
- _, err = client.R().SetBody(&SendFileMsgReq{
|
|
|
|
- Wxid: v.ContactWxid,
|
|
|
|
- Filepath: v.Content,
|
|
|
|
- Diyfilename: v.Meta.Filename,
|
|
|
|
- }).Post("http://" + ip + ":" + wxPort + "/SendFileMsg")
|
|
|
|
|
|
+ err = hookClient.SendPicMsg(v.ContactWxid, v.Content, v.Meta.Filename)
|
|
}
|
|
}
|
|
|
|
|
|
if err != nil {
|
|
if err != nil {
|