ding_event.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. // CallBack 钉钉事件回调
  13. // 日程相关详情参照文档:https://open.dingtalk.com/document/orgapp/schedule-event
  14. // 审批相关详情参照文档:https://open.dingtalk.com/document/orgapp/approval-events
  15. func (h *DingHandler) CallBack(ctx context.Context, req *message.SubsMessage, rsp *message.Reply) error {
  16. req.Ctx = ctx
  17. handler := dingtalk.Client.GetDingTalkHandler(req)
  18. //设置接收消息的处理方法
  19. handler.SetHandleMessageFunc(func(msg *message.MixMessage) string {
  20. switch msg.EventType {
  21. case message.EventCheckUrl:
  22. return h.handleCheckUrl(msg)
  23. case message.EventCalendarChange:
  24. return h.handleCalendarChange(msg, handler.Context)
  25. }
  26. return ""
  27. })
  28. result, _ := handler.Handle()
  29. *rsp = result
  30. return nil
  31. }
  32. func (h *DingHandler) handleCheckUrl(msg *message.MixMessage) string {
  33. fmt.Println(msg)
  34. return "success"
  35. }
  36. func (h *DingHandler) handleCalendarChange(msg *message.MixMessage, ctx *dingContext.Context) string {
  37. fmt.Println(msg)
  38. // 本系统数据库操作
  39. s, err := platServer.NewScheduleService(ctx.SubsMessage.Ctx)
  40. if err != nil {
  41. glog.Error(err)
  42. return err.Error()
  43. }
  44. // 回填数据
  45. err = s.SaveByDingEvent(msg)
  46. if err != nil {
  47. glog.Error(err)
  48. return err.Error()
  49. }
  50. return "success"
  51. }