orm_social.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package model
  2. import (
  3. "rocommon"
  4. "rocommon/service"
  5. "rocommon/util"
  6. "roserver/baseserver/model"
  7. "roserver/serverproto"
  8. "strconv"
  9. )
  10. //把fromUid添加到addUid的粉丝列表中
  11. func FriendAddFans(fromUid, addUid uint64) (int32, *serverproto.CommonPlayerBriefInfo) {
  12. if addUid <= 0 || fromUid <= 0 {
  13. return int32(serverproto.ErrorCode_ERROR_FAIL), nil
  14. }
  15. value := strconv.FormatUint(addUid, 10)
  16. keyStr := RoleSocialFriendFansListPrefix + value
  17. _, err := service.GetRedis().LPush(keyStr, fromUid).Result()
  18. if err != nil {
  19. util.InfoF("FriendAddFans fromUid=%v addUid=%v err=%v", fromUid, addUid, err)
  20. return int32(serverproto.ErrorCode_ERROR_FAIL), nil
  21. }
  22. err, bInfo := GetPlayerBriefInfo(addUid)
  23. if err == nil {
  24. return int32(serverproto.ErrorCode_ERROR_OK), bInfo
  25. }
  26. return int32(serverproto.ErrorCode_ERROR_FAIL), nil
  27. }
  28. //从delUid中移除粉丝fromUid
  29. func FriendDelFans(fromUid, delUid uint64) {
  30. if fromUid <= 0 || delUid <= 0 {
  31. return
  32. }
  33. uidStr := strconv.FormatUint(delUid, 10)
  34. keyStr := RoleSocialFriendFansListPrefix + uidStr
  35. _, err := service.GetRedis().LRem(keyStr, 0, fromUid).Result()
  36. if err != nil {
  37. util.InfoF("FriendDelFans fromUid=%v addUid=%v err=%v", fromUid, delUid, err)
  38. }
  39. }
  40. //数据保存操作
  41. func SetFriendDataToRedis(uid uint64, msg *serverproto.SSFriendDataSaveReq) {
  42. //1add 2del
  43. uidStr := strconv.FormatUint(uid, 10)
  44. //sublist
  45. subKeyStr := RoleSocialFriendSubListPrefix + uidStr
  46. for idx := range msg.SubList {
  47. data := msg.SubList[idx]
  48. if data.Value == 1 {
  49. service.GetRedis().LPush(subKeyStr, data.Key)
  50. } else if data.Value == 2 {
  51. service.GetRedis().LRem(subKeyStr, 0, data.Key)
  52. }
  53. }
  54. //fanslist
  55. fansKeyStr := RoleSocialFriendFansListPrefix + uidStr
  56. for idx := range msg.FansList {
  57. data := msg.FansList[idx]
  58. if data.Value == 1 {
  59. service.GetRedis().LPush(fansKeyStr, data.Key)
  60. } else if data.Value == 2 {
  61. service.GetRedis().LRem(fansKeyStr, 0, data.Key)
  62. }
  63. }
  64. //blacklist
  65. blackKeyStr := RoleSocialFriendBlackListPrefix + uidStr
  66. for idx := range msg.BlackList {
  67. data := msg.BlackList[idx]
  68. if data.Value == 1 {
  69. service.GetRedis().LPush(blackKeyStr, data.Key)
  70. } else if data.Value == 2 {
  71. service.GetRedis().LRem(blackKeyStr, 0, data.Key)
  72. }
  73. }
  74. }
  75. func GetRoleFriendDataFromRedis(uid uint64, msg *serverproto.RoleFriend) bool {
  76. bRet := false
  77. uidStr := strconv.FormatUint(uid, 10)
  78. //sublist
  79. subKeyStr := RoleSocialFriendSubListPrefix + uidStr
  80. subList, err := service.GetRedis().LRange(subKeyStr, 0, -1).Result()
  81. if err != nil {
  82. util.InfoF("GetRoleFriendDataFromRedis sublist uid=%v err=%v", uid, err)
  83. } else {
  84. for idx := range subList {
  85. subUid, _ := model.Str2NumU64(subList[idx])
  86. if subUid != 0 {
  87. msg.SubList = append(msg.SubList, subUid)
  88. bRet = true
  89. }
  90. }
  91. }
  92. //fanslist
  93. fansKeyStr := RoleSocialFriendFansListPrefix + uidStr
  94. fansList, err1 := service.GetRedis().LRange(fansKeyStr, 0, -1).Result()
  95. if err1 != nil {
  96. util.InfoF("GetRoleFriendDataFromRedis fansList uid=%v err=%v", uid, err)
  97. } else {
  98. for idx := range fansList {
  99. fansUid, _ := model.Str2NumU64(fansList[idx])
  100. if fansUid != 0 {
  101. msg.FansList = append(msg.FansList, fansUid)
  102. bRet = true
  103. }
  104. }
  105. }
  106. //blacklist
  107. blackKeyStr := RoleSocialFriendBlackListPrefix + uidStr
  108. blackList, err2 := service.GetRedis().LRange(blackKeyStr, 0, -1).Result()
  109. if err2 != nil {
  110. util.InfoF("GetRoleFriendDataFromRedis blackList uid=%v err=%v", uid, err)
  111. } else {
  112. for idx := range blackList {
  113. blackUid, _ := model.Str2NumU64(blackList[idx])
  114. if blackUid != 0 {
  115. msg.BlackList = append(msg.BlackList, blackUid)
  116. bRet = true
  117. }
  118. }
  119. }
  120. return bRet
  121. }
  122. func GetFriendBriefFromRedis(uidList []uint64, begin int32, end int32, ev rocommon.ProcEvent) {
  123. var count int32 = 0
  124. ssAckMsg := &serverproto.SSGetFriendTowerInfoAck{}
  125. for _, data := range uidList {
  126. bRet, brief := GetPlayerBriefInfo(data)
  127. if bRet == nil {
  128. ssAckMsg.Infos = append(ssAckMsg.Infos, brief)
  129. count++
  130. if count >= 10 {
  131. ssAckMsg.Final = false
  132. model.ServiceReplay(ev, ssAckMsg)
  133. //发送完清掉
  134. ssAckMsg.Infos = ssAckMsg.Infos[:0]
  135. count = 0
  136. }
  137. }
  138. }
  139. ssAckMsg.Final = true
  140. ssAckMsg.Begin = begin
  141. ssAckMsg.End = end
  142. model.ServiceReplay(ev, ssAckMsg)
  143. }