| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- package model
- import (
- "rocommon"
- "rocommon/service"
- "rocommon/util"
- "roserver/baseserver/model"
- "roserver/serverproto"
- "strconv"
- )
- //把fromUid添加到addUid的粉丝列表中
- func FriendAddFans(fromUid, addUid uint64) (int32, *serverproto.CommonPlayerBriefInfo) {
- if addUid <= 0 || fromUid <= 0 {
- return int32(serverproto.ErrorCode_ERROR_FAIL), nil
- }
- value := strconv.FormatUint(addUid, 10)
- keyStr := RoleSocialFriendFansListPrefix + value
- _, err := service.GetRedis().LPush(keyStr, fromUid).Result()
- if err != nil {
- util.InfoF("FriendAddFans fromUid=%v addUid=%v err=%v", fromUid, addUid, err)
- return int32(serverproto.ErrorCode_ERROR_FAIL), nil
- }
- err, bInfo := GetPlayerBriefInfo(addUid)
- if err == nil {
- return int32(serverproto.ErrorCode_ERROR_OK), bInfo
- }
- return int32(serverproto.ErrorCode_ERROR_FAIL), nil
- }
- //从delUid中移除粉丝fromUid
- func FriendDelFans(fromUid, delUid uint64) {
- if fromUid <= 0 || delUid <= 0 {
- return
- }
- uidStr := strconv.FormatUint(delUid, 10)
- keyStr := RoleSocialFriendFansListPrefix + uidStr
- _, err := service.GetRedis().LRem(keyStr, 0, fromUid).Result()
- if err != nil {
- util.InfoF("FriendDelFans fromUid=%v addUid=%v err=%v", fromUid, delUid, err)
- }
- }
- //数据保存操作
- func SetFriendDataToRedis(uid uint64, msg *serverproto.SSFriendDataSaveReq) {
- //1add 2del
- uidStr := strconv.FormatUint(uid, 10)
- //sublist
- subKeyStr := RoleSocialFriendSubListPrefix + uidStr
- for idx := range msg.SubList {
- data := msg.SubList[idx]
- if data.Value == 1 {
- service.GetRedis().LPush(subKeyStr, data.Key)
- } else if data.Value == 2 {
- service.GetRedis().LRem(subKeyStr, 0, data.Key)
- }
- }
- //fanslist
- fansKeyStr := RoleSocialFriendFansListPrefix + uidStr
- for idx := range msg.FansList {
- data := msg.FansList[idx]
- if data.Value == 1 {
- service.GetRedis().LPush(fansKeyStr, data.Key)
- } else if data.Value == 2 {
- service.GetRedis().LRem(fansKeyStr, 0, data.Key)
- }
- }
- //blacklist
- blackKeyStr := RoleSocialFriendBlackListPrefix + uidStr
- for idx := range msg.BlackList {
- data := msg.BlackList[idx]
- if data.Value == 1 {
- service.GetRedis().LPush(blackKeyStr, data.Key)
- } else if data.Value == 2 {
- service.GetRedis().LRem(blackKeyStr, 0, data.Key)
- }
- }
- }
- func GetRoleFriendDataFromRedis(uid uint64, msg *serverproto.RoleFriend) bool {
- bRet := false
- uidStr := strconv.FormatUint(uid, 10)
- //sublist
- subKeyStr := RoleSocialFriendSubListPrefix + uidStr
- subList, err := service.GetRedis().LRange(subKeyStr, 0, -1).Result()
- if err != nil {
- util.InfoF("GetRoleFriendDataFromRedis sublist uid=%v err=%v", uid, err)
- } else {
- for idx := range subList {
- subUid, _ := model.Str2NumU64(subList[idx])
- if subUid != 0 {
- msg.SubList = append(msg.SubList, subUid)
- bRet = true
- }
- }
- }
- //fanslist
- fansKeyStr := RoleSocialFriendFansListPrefix + uidStr
- fansList, err1 := service.GetRedis().LRange(fansKeyStr, 0, -1).Result()
- if err1 != nil {
- util.InfoF("GetRoleFriendDataFromRedis fansList uid=%v err=%v", uid, err)
- } else {
- for idx := range fansList {
- fansUid, _ := model.Str2NumU64(fansList[idx])
- if fansUid != 0 {
- msg.FansList = append(msg.FansList, fansUid)
- bRet = true
- }
- }
- }
- //blacklist
- blackKeyStr := RoleSocialFriendBlackListPrefix + uidStr
- blackList, err2 := service.GetRedis().LRange(blackKeyStr, 0, -1).Result()
- if err2 != nil {
- util.InfoF("GetRoleFriendDataFromRedis blackList uid=%v err=%v", uid, err)
- } else {
- for idx := range blackList {
- blackUid, _ := model.Str2NumU64(blackList[idx])
- if blackUid != 0 {
- msg.BlackList = append(msg.BlackList, blackUid)
- bRet = true
- }
- }
- }
- return bRet
- }
- func GetFriendBriefFromRedis(uidList []uint64, begin int32, end int32, ev rocommon.ProcEvent) {
- var count int32 = 0
- ssAckMsg := &serverproto.SSGetFriendTowerInfoAck{}
- for _, data := range uidList {
- bRet, brief := GetPlayerBriefInfo(data)
- if bRet == nil {
- ssAckMsg.Infos = append(ssAckMsg.Infos, brief)
- count++
- if count >= 10 {
- ssAckMsg.Final = false
- model.ServiceReplay(ev, ssAckMsg)
- //发送完清掉
- ssAckMsg.Infos = ssAckMsg.Infos[:0]
- count = 0
- }
- }
- }
- ssAckMsg.Final = true
- ssAckMsg.Begin = begin
- ssAckMsg.End = end
- model.ServiceReplay(ev, ssAckMsg)
- }
|