Prechádzať zdrojové kódy

fix:修改群发企微

jimmyyem 2 týždňov pred
rodič
commit
73c065b841
2 zmenil súbory, kde vykonal 101 pridanie a 47 odobranie
  1. 1 0
      crontask/send_msg.go
  2. 100 47
      hook/message.go

+ 1 - 0
crontask/send_msg.go

@@ -23,6 +23,7 @@ func (l *CronTask) sendMsg() {
 		batchmsg.StatusIn(0, 1),
 		batchmsg.CtypeIn(1, 3),
 	).All(l.ctx)
+	l.Logger.Infof("send_msg.go BatchList %v\n", batchList)
 	if err != nil {
 		l.Logger.Errorf("batchList err: %v", err)
 		return

+ 100 - 47
hook/message.go

@@ -26,7 +26,7 @@ func (h *Hook) ConfigureMsgRecive(isEnable string, url string) (err error) {
 	return
 }
 
-// 发送微信文本消息
+// SendTextMsg 发送微信文本消息
 func (h *Hook) SendTextMsg(wxid, msg, wxWxid string) error {
 	if h.ServerIp == "" {
 		conn, err := h.connWorkPhone()
@@ -128,59 +128,112 @@ func (h *Hook) SendTextMsg(wxid, msg, wxWxid string) error {
 	}
 }
 
-// 发送微信图片
+// SendPicMsg 发送微信图片
 func (h *Hook) SendPicMsg(wxid, picpath, diyfilename, wxWxid string) (err error) {
 	if h.ServerIp == "" {
-		conn, err := h.connWorkPhone()
-		if err != nil {
-			err = fmt.Errorf("SendTextMsg failed")
-			return err
-		}
-		defer func(conn *websocket.Conn) {
-			err = conn.Close()
+		if h.Ctype == uint64(3) {
+			conn, err := h.connWorkPhone()
+			if err != nil {
+				err = fmt.Errorf("SendPicMsg failed")
+				return err
+			}
+			defer func(conn *websocket.Conn) {
+				err = conn.Close()
+				if err != nil {
+					err = fmt.Errorf("SendPicMsg failed")
+				}
+			}(conn)
+			encodedString := base64.StdEncoding.EncodeToString([]byte(picpath))
+			contentType := "File"
+			if isImageFile(diyfilename) {
+				contentType = "Picture"
+			}
+
+			message := map[string]interface{}{
+				"MsgType": "TalkToFriendTask",
+				"Content": map[string]interface{}{
+					"WxId":        wxWxid,
+					"ConvId":      wxid,
+					"ContentType": contentType,
+					"Content":     encodedString,
+				},
+			}
+			transportMessageJSON, err := json.Marshal(message)
+			if err != nil {
+				return err
+			}
+			// 发送 JSON 消息
+			err = conn.WriteMessage(websocket.TextMessage, transportMessageJSON)
+			if err != nil {
+				return fmt.Errorf("failed to send message: %v", err)
+			}
+			// 读取回复消息
+			_, replyMessage, err := conn.ReadMessage()
+			if err != nil {
+				return fmt.Errorf("failed to read message: %v", err)
+			}
+			var replyMessageData map[string]interface{}
+			err = json.Unmarshal([]byte(replyMessage), &replyMessageData)
+			if err != nil {
+				return fmt.Errorf("failed to send message: %v", err)
+			}
+			if replyMessageData["msgType"] == nil || replyMessageData["msgType"] != workphone.EnumMsgType_name[int32(workphone.EnumMsgType_MsgReceivedAck)] {
+				return fmt.Errorf("failed to send message: %v")
+			}
+
+			return nil
+		} else {
+			conn, err := h.connWorkPhone()
 			if err != nil {
 				err = fmt.Errorf("SendTextMsg failed")
+				return err
+			}
+			defer func(conn *websocket.Conn) {
+				err = conn.Close()
+				if err != nil {
+					err = fmt.Errorf("SendTextMsg failed")
+				}
+			}(conn)
+			encodedString := base64.StdEncoding.EncodeToString([]byte(picpath))
+			contentType := "File"
+			if isImageFile(diyfilename) {
+				contentType = "Picture"
 			}
-		}(conn)
-		encodedString := base64.StdEncoding.EncodeToString([]byte(picpath))
-		contentType := "File"
-		if isImageFile(diyfilename) {
-			contentType = "Picture"
-		}
 
-		message := map[string]interface{}{
-			"MsgType": "TalkToFriendTask",
-			"Content": map[string]interface{}{
-				"WeChatId":    wxWxid,
-				"FriendId":    wxid,
-				"ContentType": contentType,
-				"Content":     encodedString,
-			},
-		}
-		transportMessageJSON, err := json.Marshal(message)
-		if err != nil {
-			return err
-		}
-		// 发送 JSON 消息
-		err = conn.WriteMessage(websocket.TextMessage, transportMessageJSON)
-		if err != nil {
-			return fmt.Errorf("failed to send message: %v", err)
-		}
-		// 读取回复消息
-		_, replyMessage, err := conn.ReadMessage()
-		if err != nil {
-			return fmt.Errorf("failed to read message: %v", err)
-		}
-		var replyMessageData map[string]interface{}
-		err = json.Unmarshal([]byte(replyMessage), &replyMessageData)
-		if err != nil {
-			return fmt.Errorf("failed to send message: %v", err)
-		}
-		if replyMessageData["msgType"] == nil || replyMessageData["msgType"] != workphone.EnumMsgType_name[int32(workphone.EnumMsgType_MsgReceivedAck)] {
-			return fmt.Errorf("failed to send message: %v")
-		}
+			message := map[string]interface{}{
+				"MsgType": "TalkToFriendTask",
+				"Content": map[string]interface{}{
+					"WeChatId":    wxWxid,
+					"FriendId":    wxid,
+					"ContentType": contentType,
+					"Content":     encodedString,
+				},
+			}
+			transportMessageJSON, err := json.Marshal(message)
+			if err != nil {
+				return err
+			}
+			// 发送 JSON 消息
+			err = conn.WriteMessage(websocket.TextMessage, transportMessageJSON)
+			if err != nil {
+				return fmt.Errorf("failed to send message: %v", err)
+			}
+			// 读取回复消息
+			_, replyMessage, err := conn.ReadMessage()
+			if err != nil {
+				return fmt.Errorf("failed to read message: %v", err)
+			}
+			var replyMessageData map[string]interface{}
+			err = json.Unmarshal([]byte(replyMessage), &replyMessageData)
+			if err != nil {
+				return fmt.Errorf("failed to send message: %v", err)
+			}
+			if replyMessageData["msgType"] == nil || replyMessageData["msgType"] != workphone.EnumMsgType_name[int32(workphone.EnumMsgType_MsgReceivedAck)] {
+				return fmt.Errorf("failed to send message: %v")
+			}
 
-		return nil
+			return nil
+		}
 	} else {
 		resp, err := h.Client.R().SetBody(&SendPicMsgReq{
 			Wxid:        wxid,