message.go 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package utils
  2. import (
  3. "github.com/zjxpcyc/websocket"
  4. "github.com/zjxpcyc/wechat/wx"
  5. )
  6. // ClientID 消息对象
  7. type ClientID websocket.ClientID
  8. // Message 发送消息
  9. type Message struct {
  10. From ClientID `json:"from"`
  11. To ClientID `json:"to"`
  12. Data interface{} `json:"data"`
  13. }
  14. // 消息类型
  15. const (
  16. WsMessage = "websocket"
  17. WechatMessage = "wechat"
  18. SMSMessage = "sms"
  19. )
  20. // SendWs 发送 websocket
  21. func SendWs(message Message) {
  22. msg := websocket.Message{
  23. From: websocket.ClientID(message.From),
  24. To: websocket.ClientID(message.To),
  25. Data: message.Data,
  26. }
  27. websocket.Send(msg)
  28. }
  29. func SendWechat(message Message) {
  30. dt := message.Data.(map[string]interface{})
  31. org := dt["orgid"].(string)
  32. tplID := dt["tplid"].(string)
  33. tplLink := dt["link"].(string)
  34. tplData := dt["data"].(map[string]string)
  35. var data map[string]wx.TplMessageData
  36. if tplData != nil {
  37. data = make(map[string]wx.TplMessageData)
  38. for k, v := range tplData {
  39. data[k] = wx.TplMessageData{Value: v}
  40. }
  41. }
  42. err := WxClientFor(org).SendTplMessage(message.To.ID, tplID, tplLink, data)
  43. if err != nil {
  44. LogError("推送微信消息失败: ", err)
  45. }
  46. }
  47. // SendMessage 发送消息
  48. func SendMessage(message Message, msgType string) {
  49. switch msgType {
  50. case WsMessage:
  51. SendWs(message)
  52. case WechatMessage:
  53. case SMSMessage:
  54. default:
  55. }
  56. }
  57. func MessageInit() {
  58. go websocket.Run()
  59. }