handler.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package handler
  2. import (
  3. "app.yhyue.com/moapp/message/util"
  4. "encoding/json"
  5. "fmt"
  6. "time"
  7. "app.yhyue.com/moapp/message/handler/activity"
  8. "app.yhyue.com/moapp/jybase/common"
  9. "app.yhyue.com/moapp/jybase/go-logger/logger"
  10. "app.yhyue.com/moapp/message/model"
  11. "github.com/nsqio/go-nsq"
  12. )
  13. var (
  14. FuncMap = map[string]func(msg *model.Message){
  15. //新用户注册活动
  16. "jyapp_wx_register": activity.NewUserActivity,
  17. "jyapp_phone_register": activity.NewUserActivity,
  18. "jypc_phone_register": activity.NewUserActivity,
  19. "jywx_subscribe_new": activity.NewUserActivity,
  20. //邀请注册活动
  21. "jywx_subscribe_invite": activity.InviteActivity, //邀请奖励
  22. "jywx_subscribe_invited": activity.InvitedActivity, //被邀请奖励
  23. "jywx_report_invited": activity.ReportInvitedActivity, //年终报告被邀请奖励
  24. //三级页分享活动
  25. "jydocs_doc_open": activity.ShareOpenDetail, //分享打开文库详情
  26. "jyweb_article_open": activity.ShareOpenDetail, //分享打开标讯详情
  27. //其他
  28. "jywx_activity_message": VarPush.Jywx_activity_message,
  29. "jywx_exhibition_active": activity.ExhibitionActive,
  30. //任务
  31. "task": activity.Task,
  32. //抽奖 任务
  33. "lottery_draw_task": activity.LotteryDrawTask,
  34. //中奖信息
  35. "lottery_winning_info": activity.LotteryWinning,
  36. "add_user": activity.AddUser,
  37. }
  38. )
  39. type Handler struct {
  40. }
  41. func (h *Handler) HandleMessage(m *nsq.Message) error {
  42. defer common.Catch()
  43. if len(m.Body) == 0 {
  44. // Returning nil will automatically send a FIN command to NSQ to mark the message as processed.
  45. return nil
  46. }
  47. var msg *model.Message
  48. err := json.Unmarshal(m.Body, &msg)
  49. if err != nil {
  50. logger.Error(err)
  51. return err
  52. }
  53. logger.Info("接收到消息", fmt.Sprintf("%+v", msg))
  54. if msg.E_code == "" {
  55. logger.Info("缺少参数e_code", fmt.Sprintf("%+v", msg))
  56. return nil
  57. } else if msg.E_time == 0 {
  58. logger.Info("缺少参数e_time", fmt.Sprintf("%+v", msg))
  59. return nil
  60. }
  61. f, f_ok := FuncMap[msg.E_code]
  62. if f_ok {
  63. f(msg)
  64. } else {
  65. logger.Info("无效的code值", msg)
  66. return nil
  67. }
  68. data := map[string]interface{}{
  69. "createtime": time.Now().Unix(),
  70. "body": msg,
  71. "type": "consumer", //producer or consumer
  72. }
  73. go util.NsqLog.SendLogs(data)
  74. // Returning a non-nil error will automatically send a REQ command to NSQ to re-queue the message.
  75. return nil
  76. }