---------------------------------------- -- 好友系统DB -- addFriendData 添加好友 -- delFriendData 删除好友 -- getFriendUuids 获得好友列表 ---------------------------------------- local LuaMongo = _G.lua_mongo local DB = require("common.DB") local FriendDefine = require("friend.FriendDefine") local RoleDBLogic = require("role.RoleDBLogic") local DBOpAnd = {uuid1 = nil, uuid2 = nil} local DBOpOr = {["$or"] = {{uuid1=""}, {uuid2=""}}} local DBOpRemove = {_id = nil} local DBOpHeartRemove1 = {uuid1=nil, isGetRedHeart1=nil} local DBOpHeartRemove2 = {uuid2=nil, isGetRedHeart2=nil} function isFriend(uuid1, uuid2) if uuid1 > uuid2 then uuid1, uuid2 = uuid2, uuid1 end DBOpAnd.uuid1 = uuid1 DBOpAnd.uuid2 = uuid2 local data = {} LuaMongo.find(DB.db_friend, DBOpAnd) if not LuaMongo.next(data) then return end return true, data end function addFriendData(uuid1, uuid2) if isFriend(uuid1, uuid2) then return end if uuid1 > uuid2 then uuid1, uuid2 = uuid2, uuid1 end local data = {} data.uuid1 = uuid1 data.uuid2 = uuid2 data.isGetRedHeart1 = nil -- uuid2是否发了爱心给uuid1的状态 1已发未领取 2已发已领取 data.isGetRedHeart2 = nil -- uuid1是否发了爱心给uuid2的状态 1已发未领取 2已发已领取 LuaMongo.insert(DB.db_friend, data) return true, data end function delFriendData(uuid1, uuid2) local pass, data = isFriend(uuid1, uuid2) if not pass then return end DBOpRemove._id = data._id LuaMongo.remove(DB.db_friend, DBOpRemove) return true end function getFriendUuids(uuid) local friendUuidList = {} DBOpOr["$or"][1].uuid1 = uuid DBOpOr["$or"][2].uuid2 = uuid LuaMongo.find(DB.db_friend, DBOpOr) local cnt = 0 while true do local data = {} if not LuaMongo.next(DB.db_friend, data) then break end cnt = cnt + 1 if data.uuid1 ~= uuid then if friendUuidList[cnt] == nil then friendUuidList[cnt] = {} end friendUuidList[cnt].uuid = data.uuid1 friendUuidList[cnt].getStatus = data.isGetRedHeart2 --如果玩家是1号位置 我要看1号位置给2号位置 的赠送信息 那就是2 elseif data.uuid2 ~= uuid then if friendUuidList[cnt] == nil then friendUuidList[cnt] = {} end friendUuidList[cnt].uuid = data.uuid2 friendUuidList[cnt].getStatus = data.isGetRedHeart1 --如果玩家是2号位置 我要看2号位置给1号位置 的赠送信息 那就是1 else assert() end end return cnt, friendUuidList end -- 设置红心领取状态 function setFriendHeart(uuid1, uuid2, status, isgive) local tempTb = {} local tb = {} if uuid1 > uuid2 then uuid1, uuid2 = uuid2, uuid1 if isgive then tb.isGetRedHeart1 = status else tb.isGetRedHeart2 = status end tempTb["$set"] = tb else if isgive then tb.isGetRedHeart2 = status else tb.isGetRedHeart1 = status end tempTb["$set"] = tb end DBOpAnd.uuid1 = uuid1 DBOpAnd.uuid2 = uuid2 LuaMongo.update(DB.db_friend, DBOpAnd, tempTb) end -- 清空红心状态 function delAllFriendHeart(uuid) --== uuid1的数据 清空isGetRetHeart1 local tempTb1 = {} DBOpHeartRemove1.uuid1 = uuid DBOpHeartRemove1.isGetRedHeart1=2 local updatedata1 = {} updatedata1.isGetRedHeart1=1 tempTb1["$unset"] = updatedata1 LuaMongo.update(DB.db_friend, DBOpHeartRemove1, tempTb1) --== uuid2的数据 清空isGetRetHeart2 local tempTb2 = {} DBOpHeartRemove2.uuid2 = uuid DBOpHeartRemove2.isGetRedHeart2=2 local updatedata2 = {} updatedata2.isGetRedHeart2=1 tempTb2["$unset"]=updatedata2 LuaMongo.update(DB.db_friend, DBOpHeartRemove2, tempTb2) end -------------------------部分东西只存内存-------------------------------- local requestList = {} -- uuid1向uuid2申请 function hasRequest(uuid1, uuid2) if not requestList[uuid2] then return end if not requestList[uuid2][uuid1] then return end return true end -- uuid1向uuid2申请 function addRequest(uuid1, uuid2) if not requestList[uuid2] then requestList[uuid2] = {} end if not requestList[uuid2][uuid1] then requestList[uuid2][uuid1] = os.time() end end -- 获得uuid的申请列表 function getRequests(uuid) return requestList[uuid] end -- 删除uuid1向uuid2申请 function delRequest(uuid1, uuid2) if not requestList[uuid2] then return end if not requestList[uuid2][uuid1] then return end requestList[uuid2][uuid1] = nil return true end function haveRequest(uuid) if not requestList[uuid] then return 0 end for k, v in pairs(requestList[uuid]) do if v ~= nil then return 1 end end return 0 end --uuid1是否被uuid2拉黑 function isBlackFriend(uuid1,uuid2) local db = RoleDBLogic.getDb(uuid2,"friendBlack") if not db or not db.friendBlack then return end return db.friendBlack[uuid1] end