ding_event.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package dingtalk
  2. import (
  3. "context"
  4. platServer "dashoo.cn/micro/app/service/plat"
  5. "dashoo.cn/opms_libary/plugin/dingtalk"
  6. dingContext "dashoo.cn/opms_libary/plugin/dingtalk/context"
  7. "dashoo.cn/opms_libary/plugin/dingtalk/message"
  8. "fmt"
  9. "github.com/gogf/gf/os/glog"
  10. )
  11. type DingHandler struct{}
  12. func (h *DingHandler) CallBack(ctx context.Context, req *message.SubsMessage, rsp *message.Reply) error {
  13. req.Ctx = ctx
  14. handler := dingtalk.Client.GetDingTalkHandler(req)
  15. //设置接收消息的处理方法
  16. handler.SetHandleMessageFunc(func(msg *message.MixMessage) string {
  17. switch msg.EventType {
  18. case message.EventCheckUrl:
  19. return h.handleCheckUrl(msg)
  20. case message.EventCalendarChange:
  21. return h.handleCalendarChange(msg, handler.Context)
  22. }
  23. return ""
  24. })
  25. result, _ := handler.Handle()
  26. *rsp = result
  27. return nil
  28. }
  29. func (h *DingHandler) handleCheckUrl(msg *message.MixMessage) string {
  30. fmt.Println(msg)
  31. return "success"
  32. }
  33. func (h *DingHandler) handleCalendarChange(msg *message.MixMessage, ctx *dingContext.Context) string {
  34. fmt.Println(msg)
  35. // 本系统数据库操作
  36. s, err := platServer.NewScheduleService(ctx.SubsMessage.Ctx)
  37. if err != nil {
  38. glog.Error(err)
  39. return err.Error()
  40. }
  41. // 回填数据
  42. err = s.SaveByDingEvent(msg)
  43. if err != nil {
  44. glog.Error(err)
  45. return err.Error()
  46. }
  47. return "success"
  48. }