Parcourir la source

fix:修改发消息和企微同步URL

jimmyyem il y a 10 heures
Parent
commit
90b1b03df0
5 fichiers modifiés avec 63 ajouts et 13 suppressions
  1. 8 1
      crontask/send_msg.go
  2. 11 3
      crontask/send_wx.go
  3. 22 0
      hook/init.go
  4. 21 8
      hook/message.go
  5. 1 1
      internal/logic/WorkPhone/qw_refresh_logic.go

+ 8 - 1
crontask/send_msg.go

@@ -198,6 +198,7 @@ func (l *CronTask) sendMsg() {
 		privateIP := ""
 		adminPort := ""
 		port := ""
+		var ctype uint64
 
 		if wxInfo.ServerID != 0 {
 			serverInfo, err := l.svcCtx.DB.Server.Get(l.ctx, wxInfo.ServerID)
@@ -208,9 +209,15 @@ func (l *CronTask) sendMsg() {
 			privateIP = serverInfo.PrivateIP
 			adminPort = serverInfo.AdminPort
 			port = wxInfo.Port
+			ctype = wxInfo.Ctype
 		}
 
-		hookClient := hook.NewHook(privateIP, adminPort, port)
+		var hookClient *hook.Hook
+		if ctype == uint64(3) {
+			hookClient = hook.NewWecomHook("", adminPort, port)
+		} else {
+			hookClient = hook.NewHook(privateIP, adminPort, port)
+		}
 
 		//循环发送消息
 		for _, msg := range msglist {

+ 11 - 3
crontask/send_wx.go

@@ -91,7 +91,8 @@ func (l *CronTask) sendWx() {
 					l.Logger.Errorf("get server info failed wxid=%v err=%v", wxid, err)
 					return "", err
 				}
-				val = server.PrivateIP + ":" + server.AdminPort + ":" + wx.Port
+				ctype := strconv.Itoa(int(wx.Ctype))
+				val = server.PrivateIP + ":" + server.AdminPort + ":" + wx.Port + ":" + ctype
 				l.svcCtx.Rds.HSet(ctx, key, wxid, val)
 			}
 		}
@@ -118,9 +119,10 @@ func (l *CronTask) sendWx() {
 			serverIp := ""
 			adminPort := ""
 			wxPort := ""
+			ctype := ""
 			if serverInfo != "" {
 				infoArray := strings.Split(serverInfo, ":")
-				serverIp, adminPort, wxPort = infoArray[0], infoArray[1], infoArray[2]
+				serverIp, adminPort, wxPort, ctype = infoArray[0], infoArray[1], infoArray[2], infoArray[3]
 			}
 
 			_, err = tx.MessageRecords.UpdateOneID(v.ID).SetStatus(2).Save(ctx)
@@ -129,7 +131,13 @@ func (l *CronTask) sendWx() {
 				continue
 			}
 
-			hookClient := hook.NewHook(serverIp, adminPort, wxPort)
+			var hookClient *hook.Hook
+			if ctype == "3" { //企微
+				hookClient = hook.NewWecomHook("", adminPort, wxPort)
+			} else { //个微
+				hookClient = hook.NewHook(serverIp, adminPort, wxPort)
+			}
+
 			if v.ContentType == 1 {
 				content := v.Content
 				if containsPlaceholder(content) {

+ 22 - 0
hook/init.go

@@ -13,6 +13,7 @@ type Hook struct {
 	WxPort       string
 	Client       *req.Client
 	WorkPhoneUrl string
+	Ctype        uint64
 }
 
 func NewHook(serverIp string, adminPort string, WxPort string) *Hook {
@@ -30,6 +31,27 @@ func NewHook(serverIp string, adminPort string, WxPort string) *Hook {
 		WxPort:       WxPort,
 		Client:       req.C().DevMode(),
 		WorkPhoneUrl: workPhoneUrl.String(),
+		Ctype:        1,
+	}
+}
+
+// NewWecomHook 企微客户端初始化
+func NewWecomHook(serverIp string, adminPort string, WxPort string) *Hook {
+
+	client := req.C().DevMode()
+	client.SetCommonRetryCount(2).
+		SetCommonRetryBackoffInterval(1*time.Second, 5*time.Second).
+		SetCommonRetryFixedInterval(2 * time.Second).SetTimeout(30 * time.Second)
+
+	wecomUrl := url.URL{Scheme: "ws", Host: "wecom.gkscrm.com:15088"}
+
+	return &Hook{
+		ServerIp:     serverIp,
+		AdminPort:    adminPort,
+		WxPort:       WxPort,
+		Client:       req.C().DevMode(),
+		WorkPhoneUrl: wecomUrl.String(),
+		Ctype:        3,
 	}
 }
 

+ 21 - 8
hook/message.go

@@ -64,14 +64,27 @@ func (h *Hook) SendTextMsg(wxid, msg, wxWxid string) error {
 		//if err != nil {
 		//	return fmt.Errorf("failed to marshal transport message: %v", err)
 		//}
-		message := map[string]interface{}{
-			"MsgType": "TalkToFriendTask",
-			"Content": map[string]interface{}{
-				"WeChatId":    wxWxid,
-				"FriendId":    wxid,
-				"ContentType": "Text",
-				"Content":     encodedString,
-			},
+		var message map[string]interface{}
+		if h.Ctype == uint64(3) {
+			message = map[string]interface{}{
+				"MsgType": "TalkToFriendTask",
+				"Content": map[string]interface{}{
+					"WxId":        wxWxid,
+					"ConvId":      wxid,
+					"ContentType": "Text",
+					"Content":     encodedString,
+				},
+			}
+		} else {
+			message = map[string]interface{}{
+				"MsgType": "TalkToFriendTask",
+				"Content": map[string]interface{}{
+					"WeChatId":    wxWxid,
+					"FriendId":    wxid,
+					"ContentType": "Text",
+					"Content":     encodedString,
+				},
+			}
 		}
 		transportMessageJSON, err := json.Marshal(message)
 		if err != nil {

+ 1 - 1
internal/logic/WorkPhone/qw_refresh_logic.go

@@ -31,7 +31,7 @@ func (l *QwRefreshLogic) QwRefresh() (resp *types.BaseMsgResp, err error) {
 	client.SetCommonRetryCount(2).
 		SetCommonRetryBackoffInterval(1*time.Second, 5*time.Second).
 		SetCommonRetryFixedInterval(2 * time.Second).SetTimeout(30 * time.Second)
-	res, err := client.R().SetSuccessResult(&result).Post("http://chat.gkscrm.com:15086/pc/GetWeChatsReq?id=13")
+	res, err := client.R().SetSuccessResult(&result).Post("http://wecom.gkscrm.com:15086/pc/GetWeChatsReq?id=19")
 
 	if err != nil {
 		return nil, err