contact.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. package hook
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/gorilla/websocket"
  6. "strings"
  7. )
  8. // 获取标签信息
  9. func (h *Hook) GetContactLabelList() (result GetContactLabelListReap, err error) {
  10. resp, err := h.Client.R().SetSuccessResult(&result).Post("http://" + h.ServerIp + ":" + h.WxPort + "/GetContactLabelList")
  11. if err != nil {
  12. return
  13. }
  14. if !resp.IsSuccessState() {
  15. err = fmt.Errorf("GetContactLabelList failed with status code %d", resp.StatusCode)
  16. return
  17. }
  18. return
  19. }
  20. // 获取好友和群信息
  21. func (h *Hook) GetFriendAndChatRoomList(typeStr string) (result GetFriendAndChatRoomListReap, err error) {
  22. resp, err := h.Client.R().SetBody(&GetFriendAndChatRoomListReq{
  23. Type: typeStr,
  24. }).SetSuccessResult(&result).Post("http://" + h.ServerIp + ":" + h.WxPort + "/GetFriendAndChatRoomList")
  25. if err != nil {
  26. return
  27. }
  28. if !resp.IsSuccessState() {
  29. err = fmt.Errorf("GetFriendAndChatRoomList failed with status code %d", resp.StatusCode)
  30. return
  31. }
  32. return
  33. }
  34. // 批量获取联系人简明信息(每次100个)
  35. func (h *Hook) BatchGetContactBriefInfo(wxids []string) (result BatchGetContactBriefInfoReap, err error) {
  36. wxidList := strings.Join(wxids, ",")
  37. resp, err := h.Client.R().SetBody(&BatchGetContactBriefInfoReq{
  38. WxidList: wxidList,
  39. }).SetSuccessResult(&result).Post("http://" + h.ServerIp + ":" + h.WxPort + "/BatchGetContactBriefInfo")
  40. if err != nil {
  41. return
  42. }
  43. if !resp.IsSuccessState() {
  44. err = fmt.Errorf("BatchGetChatRoomMemberWxid failed with status code %d", resp.StatusCode)
  45. return
  46. }
  47. return
  48. }
  49. // 添加新的好友
  50. func (h *Hook) AddNewFriend(v3_wxid string, v4 string, desc string, addType string, role string) (result AddNewFriendReap, err error) {
  51. resp, err := h.Client.R().SetBody(&AddNewFriendReq{
  52. V3Wxid: v3_wxid,
  53. V4: v4,
  54. Desc: desc,
  55. AddType: addType,
  56. Role: role,
  57. }).SetSuccessResult(&result).Post("http://" + h.ServerIp + ":" + h.WxPort + "/AddNewFriend")
  58. if err != nil {
  59. return
  60. }
  61. if !resp.IsSuccessState() {
  62. err = fmt.Errorf("AddNewFriend failed with status code %d", resp.StatusCode)
  63. return
  64. }
  65. return
  66. }
  67. func (h *Hook) RequestChatRoomInfo(ChatRoomId, wxWxid string) error {
  68. conn, err := h.connWorkPhone()
  69. if err != nil {
  70. err = fmt.Errorf("RequestChatRoomInfo failed")
  71. return err
  72. }
  73. defer func(conn *websocket.Conn) {
  74. err = conn.Close()
  75. if err != nil {
  76. err = fmt.Errorf("RequestChatRoomInfo failed")
  77. }
  78. }(conn)
  79. message := map[string]interface{}{
  80. "MsgType": "RequestChatRoomInfoTask",
  81. "Content": map[string]interface{}{
  82. "WeChatId": wxWxid,
  83. "Flag": 1,
  84. "ChatRoomId": ChatRoomId,
  85. },
  86. }
  87. transportMessageJSON, err := json.Marshal(message)
  88. if err != nil {
  89. return err
  90. }
  91. // 发送 JSON 消息
  92. err = conn.WriteMessage(websocket.TextMessage, transportMessageJSON)
  93. if err != nil {
  94. return fmt.Errorf("failed to send message: %v", err)
  95. }
  96. return nil
  97. }
  98. func (h *Hook) TriggerChatroomPush(wxWxid string) error {
  99. conn, err := h.connWorkPhone()
  100. if err != nil {
  101. err = fmt.Errorf("TriggerChatroomPush failed")
  102. return err
  103. }
  104. defer func(conn *websocket.Conn) {
  105. err = conn.Close()
  106. if err != nil {
  107. err = fmt.Errorf("TriggerChatroomPush failed")
  108. }
  109. }(conn)
  110. message := map[string]interface{}{
  111. "MsgType": "TriggerChatroomPushTask",
  112. "Content": map[string]interface{}{
  113. "WeChatId": wxWxid,
  114. "Flag": 1,
  115. },
  116. }
  117. transportMessageJSON, err := json.Marshal(message)
  118. if err != nil {
  119. return err
  120. }
  121. // 发送 JSON 消息
  122. err = conn.WriteMessage(websocket.TextMessage, transportMessageJSON)
  123. if err != nil {
  124. return fmt.Errorf("failed to send message: %v", err)
  125. }
  126. return nil
  127. }
  128. // TriggerCustomerPushTask 刷新企微联系人
  129. func (h *Hook) TriggerCustomerPushTask(wxWxid string) error {
  130. conn, err := h.connWorkPhone()
  131. if err != nil {
  132. err = fmt.Errorf("TriggerCustomerPushTask failed")
  133. return err
  134. }
  135. defer func(conn *websocket.Conn) {
  136. err = conn.Close()
  137. if err != nil {
  138. err = fmt.Errorf("TriggerCustomerPushTask failed")
  139. }
  140. }(conn)
  141. message := map[string]interface{}{
  142. "MsgType": "TriggerCustomerPushTask",
  143. "Content": map[string]interface{}{
  144. "WxId": wxWxid,
  145. },
  146. }
  147. transportMessageJSON, err := json.Marshal(message)
  148. if err != nil {
  149. return err
  150. }
  151. // 发送 JSON 消息
  152. err = conn.WriteMessage(websocket.TextMessage, transportMessageJSON)
  153. if err != nil {
  154. return fmt.Errorf("failed to send message: %v", err)
  155. }
  156. return nil
  157. }
  158. // TriggerConversationPushTask 刷新企微群组
  159. func (h *Hook) TriggerConversationPushTask(wxWxid string) error {
  160. conn, err := h.connWorkPhone()
  161. if err != nil {
  162. err = fmt.Errorf("TriggerConversationPushTask failed")
  163. return err
  164. }
  165. defer func(conn *websocket.Conn) {
  166. err = conn.Close()
  167. if err != nil {
  168. err = fmt.Errorf("TriggerConversationPushTask failed")
  169. }
  170. }(conn)
  171. message := map[string]interface{}{
  172. "MsgType": "TriggerConversationPushTask",
  173. "Content": map[string]interface{}{
  174. "WxId": wxWxid,
  175. },
  176. }
  177. transportMessageJSON, err := json.Marshal(message)
  178. if err != nil {
  179. return err
  180. }
  181. // 发送 JSON 消息
  182. err = conn.WriteMessage(websocket.TextMessage, transportMessageJSON)
  183. if err != nil {
  184. return fmt.Errorf("failed to send message: %v", err)
  185. }
  186. return nil
  187. }
  188. func (h *Hook) AddFriendInChatRoom(ChatRoomId, wxWxid, friendId, desc string) error {
  189. conn, err := h.connWorkPhone()
  190. if err != nil {
  191. err = fmt.Errorf("AddFriendInChatRoom failed")
  192. return err
  193. }
  194. defer func(conn *websocket.Conn) {
  195. err = conn.Close()
  196. if err != nil {
  197. err = fmt.Errorf("AddFriendInChatRoom failed")
  198. }
  199. }(conn)
  200. message := map[string]interface{}{
  201. "MsgType": "AddFriendInChatRoomTask",
  202. "Content": map[string]interface{}{
  203. "WeChatId": wxWxid,
  204. "ChatroomId": ChatRoomId,
  205. "FriendId": friendId,
  206. "Message": desc,
  207. },
  208. }
  209. transportMessageJSON, err := json.Marshal(message)
  210. if err != nil {
  211. return err
  212. }
  213. // 发送 JSON 消息
  214. err = conn.WriteMessage(websocket.TextMessage, transportMessageJSON)
  215. if err != nil {
  216. return fmt.Errorf("failed to send message: %v", err)
  217. }
  218. return nil
  219. }