msg.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package msg
  2. import (
  3. "rocommon"
  4. "rocommon/service"
  5. "rocommon/util"
  6. "roserver/baseserver/model"
  7. dbmodel "roserver/db/model"
  8. gmmodel "roserver/gmweb/model"
  9. "roserver/serverproto"
  10. "runtime/debug"
  11. "strconv"
  12. "time"
  13. )
  14. const RoleCdkInfo = "cdk_info_"
  15. const CdkTotal = "cdk_Total_"
  16. // other service
  17. func init() {
  18. //serverproto.Handle_GMWEB_SSWebGMAddMailAck = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  19. // msg := ev.Msg().(*serverproto.SSWebGMAddMailAck)
  20. // util.InfoF("SSWebGMAddMailAck msgid=%v", msg)
  21. //
  22. // model2.GetMailUpdateMag().AttachMail2Update()
  23. //})
  24. serverproto.Handle_GMWEB_CSGiftRewardReq = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  25. msg := ev.Msg().(*serverproto.CSGiftRewardReq)
  26. util.InfoF("uid=%v CSGiftRewardReq msg=%v", msg.Uuid, msg)
  27. //model2.GetMailUpdateMag().AttachMail2Update()
  28. //uuid := msg.Uuid
  29. //uidStr := strconv.FormatUint(uuid, 10)
  30. //zoneStr := strconv.Itoa(service.GetServiceConfig().Node.Zone)
  31. //urlPath := "?code=" + msg.GiftCode + "&uid=" + uidStr + "&serverid=" + zoneStr
  32. go func(code string, uuid uint64) {
  33. defer func() {
  34. //打印奔溃信息
  35. if err := recover(); err != nil {
  36. util.InfoF("onError data=%v \n%s\n", err, string(debug.Stack()))
  37. }
  38. }()
  39. uidStr := strconv.FormatUint(uuid, 10)
  40. res := &serverproto.SCGiftRewardAck{
  41. Uuid: uuid,
  42. }
  43. //非通码
  44. if len(code) == length {
  45. award, err := RedisCdk2.RedisCli().HGet(dbmodel.CdkNormal, code).Result()
  46. if err != nil {
  47. res.Error = 3
  48. util.ErrorF("uid:%v cdk get is nil,code:%v error:%v", uuid, code, err)
  49. gmmodel.SendSocial(res)
  50. }
  51. a := &serverproto.SCUseHeadFrameItemAck{
  52. ItemList: make([]*serverproto.KeyValueType, 0),
  53. }
  54. err = model.GetDecodeMessage(a, award)
  55. if err != nil {
  56. res.Error = 3
  57. util.ErrorF("uid:%v cdk unmarshall error,%v", uuid, err)
  58. gmmodel.SendSocial(res)
  59. }
  60. _, err = RedisCdk2.RedisCli().HDel(dbmodel.CdkNormal, code).Result()
  61. if err != nil {
  62. res.Error = 3
  63. util.ErrorF("uid:%v cdk del error,code:%v error:%v", uuid, code, err)
  64. gmmodel.SendSocial(res)
  65. }
  66. util.ErrorF("uid:%v cdk get:%v", uuid, code)
  67. res.RewardList = a.ItemList
  68. } else {
  69. //util.InfoF("aaaa:%v", model.ConvertCdkRewardMap)
  70. if _, ok := model.ConvertCdkRewardMap[code]; !ok {
  71. res.Error = 3
  72. util.ErrorF("uid:%v cdk get config is nil,%v", uuid, model.ConvertCdkRewardMap)
  73. gmmodel.SendSocial(res)
  74. return
  75. }
  76. v := model.ConvertCdkRewardMap[code]
  77. if v == nil {
  78. util.ErrorF("uid:%v cdk get config is nil", uuid)
  79. res.Error = 3
  80. gmmodel.SendSocial(res)
  81. return
  82. }
  83. now := time.Now()
  84. if now.Before(v.Start) || now.After(v.End) {
  85. res.Error = 2
  86. gmmodel.SendSocial(res)
  87. return
  88. }
  89. if v.Total > 0 {
  90. ker := CdkTotal + strconv.Itoa(int(v.Id))
  91. num, _ := service.GetRedis().Incr(ker).Result()
  92. if num >= int64(v.Total) {
  93. res.Error = 1
  94. gmmodel.SendSocial(res)
  95. return
  96. }
  97. }
  98. key := RoleCdkInfo + strconv.FormatUint(uuid, 10)
  99. field := strconv.FormatInt(int64(v.Id), 10)
  100. b, err := service.GetRedis().HExists(key, field).Result()
  101. if err != nil {
  102. util.ErrorF("uid:%v cdk get redis err:%v", uuid, err)
  103. res.Error = 3
  104. gmmodel.SendSocial(res)
  105. return
  106. }
  107. if b {
  108. res.Error = 1
  109. gmmodel.SendSocial(res)
  110. return
  111. }
  112. res.RewardList = v.RewardList
  113. _, er := service.GetRedis().HSet(key, field, "11").Result()
  114. if er != nil {
  115. util.ErrorF("uid:%v cdk set redis err:%v", uuid, err)
  116. res.Error = 3
  117. gmmodel.SendSocial(res)
  118. return
  119. }
  120. }
  121. //this.GiftReward(res)
  122. //util.InfoF("uid:%v cdk get reward:%v", this.GetUUid(), res.RewardList)
  123. //this.ReplayGate(res, true)
  124. //error
  125. //1礼包吗已经使用
  126. //2礼包吗已经过期
  127. //3 没有找到礼包吗
  128. util.InfoF("uid=%v CSGiftRewardReq msg=%v res=%v", uidStr, msg, res)
  129. gmmodel.SendSocial(res)
  130. }(msg.GiftCode, msg.Uuid)
  131. })
  132. serverproto.Handle_GMWEB_SSWebGMChatMsgNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  133. msg := ev.Msg().(*serverproto.SSWebGMChatMsgNtf)
  134. util.InfoF("uid=%v SSWebGMChatMsgNtf msg=%v", msg.Uid, msg)
  135. gmmodel.GetChatUpdateMag().AddChatMsg(msg)
  136. })
  137. serverproto.Handle_GMWEB_SSWebGMChatMsgNtf = model.HandleBackendMessage(func(ev rocommon.ProcEvent, cliId model.ClientID) {
  138. msg := ev.Msg().(*serverproto.SSWebGMChatMsgNtf)
  139. util.InfoF("uid=%v SSWebGMChatMsgNtf msg=%v", msg.Uid, msg)
  140. gmmodel.GetChatUpdateMag().AddChatMsg(msg)
  141. })
  142. }