activity.go 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package dayActivity
  2. import (
  3. mgo "app.yhyue.com/moapp/jybase/mongodb"
  4. "app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
  5. "context"
  6. "github.com/gogf/gf/v2/frame/g"
  7. "github.com/gogf/gf/v2/util/gconv"
  8. "jyOrderManager/internal/jyutil"
  9. "log"
  10. "strconv"
  11. )
  12. const (
  13. TaskActiveId = 16
  14. TaskIdVip = 4
  15. TaskIdMember = 5
  16. )
  17. func ActivityNsqPublish(ctx context.Context, productType string, userId string, userPhone string, orderCode string, state int) {
  18. // 判断订单上的用户id是职位id还是mgoid
  19. var taskId, positionId int64
  20. var mgoId, nickName string
  21. if mgo.IsObjectIdHex(userId) {
  22. // 如果是mgoid 则根据 mgoid 查询base_user_id 根据 base_user_id 查询 职位id
  23. mgoId = userId
  24. userRs, b := jyutil.MG.DB().FindById("user", userId, `{"base_user_id":1,"s_nickname":1}`)
  25. if b && userRs != nil && len(*userRs) > 0 {
  26. nickName = gconv.String((*userRs)["s_nickname"])
  27. baseUserId := gconv.Int((*userRs)["base_user_id"])
  28. positionData, err := g.DB("base").GetOne(ctx, "SELECT id FROM base_position WHERE type=0 and user_id = ?", baseUserId)
  29. log.Println("抽奖order_code ==", orderCode, baseUserId, err, positionData)
  30. if !positionData.IsEmpty() {
  31. positionId = gconv.Int64(positionData.Map()["id"])
  32. }
  33. }
  34. } else {
  35. // 如果是职位id 则说明是企业版 则根据职位id查询base_user_id 然后根据base_user_id 查询mgoId
  36. positionId_, err := strconv.ParseInt(userId, 10, 64)
  37. if err == nil && positionId_ > 0 {
  38. positionId = positionId_
  39. log.Println("抽奖order_code ==", orderCode, positionId)
  40. positionData, _ := g.DB("base").GetOne(ctx, "SELECT id FROM base_position WHERE id = ?", userId)
  41. if !positionData.IsEmpty() {
  42. baseUserId := gconv.Int64(positionData.Map()["user_id"])
  43. userRs, b := jyutil.MG.DB().FindOne("user", map[string]interface{}{
  44. "base_user_id": baseUserId,
  45. })
  46. if b && userRs != nil && len(*userRs) > 0 {
  47. mgoId = mgo.BsonIdToSId((*userRs)["_id"])
  48. nickName = gconv.String((*userRs)["s_nickname"])
  49. }
  50. }
  51. }
  52. }
  53. if positionId > 0 && mgoId != "" {
  54. if productType == "VIP订阅" {
  55. taskId = TaskIdVip
  56. } else {
  57. taskId = TaskIdMember
  58. }
  59. activityNsqSend(ctx, taskId, positionId, userId, mgoId, userPhone, orderCode, nickName, state)
  60. } else {
  61. log.Printf("用户信息获取有误:order_code-%s user_id-%v phone-%v", orderCode, userId, userPhone)
  62. }
  63. }
  64. func activityNsqSend(ctx context.Context, taskId, positionId int64, userId, mgoId, phone string, orderCode, nickName string, state int) {
  65. node := jy.Jyweb_node2
  66. err := jy.Publish(*jyutil.MG.DB(), g.Cfg().MustGet(ctx, "nsq").String(), g.Cfg().MustGet(ctx, "qsqTopic").String(), "lottery_draw_task", userId, node, map[string]interface{}{
  67. "phone": phone,
  68. "userId": userId,
  69. "mgoUserId": mgoId,
  70. "positionId": positionId,
  71. "activeId": TaskActiveId,
  72. "taskInfoId": taskId,
  73. "orderCode": orderCode,
  74. "nickName": nickName,
  75. "state": state,
  76. })
  77. if err != nil {
  78. log.Println("nsq队列写入失败-->", err, "lottery_draw_task", taskId, userId)
  79. } else {
  80. log.Println("nsq队列写入成功-->", err, "lottery_draw_task", taskId, userId, map[string]interface{}{
  81. "phone": phone,
  82. "userId": userId,
  83. "mgoUserId": mgoId,
  84. "positionId": positionId,
  85. "activeId": TaskActiveId,
  86. "taskInfoId": taskId,
  87. "orderCode": orderCode,
  88. "nickName": nickName,
  89. "state": state,
  90. })
  91. }
  92. }