Commit 5dfc497874aa081fff5f73e3a2d30d32178dbb9f
1 parent
c384626d
好友完善
Showing
2 changed files
with
33 additions
and
27 deletions
Show diff stats
src/actions/FriendAction.lua
| ... | ... | @@ -136,6 +136,7 @@ function _M.applyRpc(agent, data) |
| 136 | 136 | red:hlen(FRIEND_KEY:format(roleId)) |
| 137 | 137 | red:hlen(FRIEND_KEY:format(objectId)) |
| 138 | 138 | end) |
| 139 | + | |
| 139 | 140 | -- 玩家id不存在 |
| 140 | 141 | if not result and redret[1] ~= 1 then |
| 141 | 142 | result = 1 |
| ... | ... | @@ -155,7 +156,7 @@ function _M.applyRpc(agent, data) |
| 155 | 156 | end |
| 156 | 157 | |
| 157 | 158 | -- 你把对方拉黑了 |
| 158 | - if not result and redret[4] == 1 then | |
| 159 | + if not result and redret[5] == 1 then | |
| 159 | 160 | result = 5 |
| 160 | 161 | end |
| 161 | 162 | |
| ... | ... | @@ -280,7 +281,7 @@ function _M.handleApplyRpc(agent, data) |
| 280 | 281 | redisproxy:del(FRIEND_APPLY_KEY:format(roleId)) |
| 281 | 282 | elseif cmd == 3 then -- 一键同意 |
| 282 | 283 | local redret = redisproxy:pipelining(function(red) |
| 283 | - red:zrange(FRIEND_APPLY_KEY:format(roleId)) | |
| 284 | + red:zrange(FRIEND_APPLY_KEY:format(roleId), 0, -1) | |
| 284 | 285 | red:SMEMBERS(FRIEND_POINT:format(roleId)) |
| 285 | 286 | end) |
| 286 | 287 | local allIds = redret[1] |
| ... | ... | @@ -429,6 +430,8 @@ function _M.blockRpc(agent, data) |
| 429 | 430 | red:hdel(FRIEND_KEY:format(objectId), roleId) |
| 430 | 431 | red:sadd(FRIEND_BLACK_KEY:format(roleId), objectId) |
| 431 | 432 | end) |
| 433 | + rpcRole(objectId, "SendPacket", actionCodes.Friend_updateProperty, MsgPack.pack({deleteFriend = 1, roleId = roleId})) | |
| 434 | + | |
| 432 | 435 | end |
| 433 | 436 | elseif cmd == 2 then |
| 434 | 437 | redisproxy:SREM(FRIEND_BLACK_KEY:format(roleId), objectId) |
| ... | ... | @@ -456,6 +459,7 @@ function _M.blockListRpc(agent, data) |
| 456 | 459 | |
| 457 | 460 | })) |
| 458 | 461 | end |
| 462 | + | |
| 459 | 463 | SendPacket(actionCodes.Friend_blockListRpc, MsgPack.pack({list = blockList})) |
| 460 | 464 | return true |
| 461 | 465 | end |
| ... | ... | @@ -588,38 +592,44 @@ function _M.randomRpc(agent, data) |
| 588 | 592 | |
| 589 | 593 | local redret = redisproxy:pipelining(function (red) |
| 590 | 594 | red:hgetall(FRIEND_KEY:format(roleId)) |
| 591 | - red:zrevrange(FRIEND_RECOMMEND, 0, globalCsv.friendRecommendLimit + globalCsv.friendListLimit) | |
| 595 | + red:zrevrange(FRIEND_RECOMMEND, 0, globalCsv.friendRecommendLimit + globalCsv.friendListLimit + 10) --扩充10个 | |
| 596 | + red:SMEMBERS(FRIEND_BLACK_KEY:format(roleId)) | |
| 592 | 597 | end) |
| 593 | - | |
| 594 | - local friends = redret[1] | |
| 598 | + local friends = {} | |
| 599 | + for i = 1, #redret[1], 2 do | |
| 600 | + friends[tonumber(redret[1][i])] = redret[1][i + 1] | |
| 601 | + end | |
| 602 | + | |
| 595 | 603 | local newList = redret[2] |
| 604 | + local hadBlack = formatArray(redret[3]) | |
| 605 | + | |
| 596 | 606 | local needRoleIds = {} |
| 597 | 607 | for _, newId in pairs(newList) do |
| 598 | 608 | local numNewId = tonumber(newId) |
| 599 | - if numNewId ~= roleId and not friends[newId] then | |
| 609 | + if numNewId ~= roleId and not friends[numNewId] and not hadBlack[numNewId] then | |
| 600 | 610 | table.insert(needRoleIds, numNewId) |
| 601 | 611 | end |
| 602 | 612 | end |
| 603 | 613 | |
| 604 | 614 | local randomRoles = {} |
| 605 | - for _, objId in ipairs(needRoleIds) do | |
| 606 | - local online, info = getRoleInfo(objId) | |
| 607 | - local redret = redisproxy:pipelining(function (red) | |
| 615 | + local redret = redisproxy:pipelining(function (red) | |
| 616 | + for _, objId in ipairs(needRoleIds) do | |
| 608 | 617 | red:zscore(FRIEND_APPLY_KEY:format(objId), roleId) |
| 609 | - red:sismember(FRIEND_BLACK_KEY:format(roleId), objId) | |
| 610 | - end) | |
| 611 | - local hadApply = redret[1] and 1 or nil | |
| 612 | - local inBlack = redret[2] == 1 and 1 or nil | |
| 613 | - | |
| 614 | - table.insert(randomRoles, table_merge({ | |
| 615 | - roleId = objId, | |
| 616 | - online = online, | |
| 617 | - hadApply = hadApply, | |
| 618 | - inBlack = inBlack, | |
| 619 | - }, info, { | |
| 620 | - | |
| 621 | - })) | |
| 622 | - if #randomRoles >= globalCsv.friendRecommendLimit then break end | |
| 618 | + end | |
| 619 | + end) | |
| 620 | + for idx, objId in ipairs(needRoleIds) do | |
| 621 | + if not redret[idx] then | |
| 622 | + local online, info = getRoleInfo(objId) | |
| 623 | + table.insert(randomRoles, table_merge({ | |
| 624 | + roleId = objId, | |
| 625 | + online = online, | |
| 626 | + hadApply = hadApply, | |
| 627 | + inBlack = inBlack, | |
| 628 | + }, info, { | |
| 629 | + | |
| 630 | + })) | |
| 631 | + if #randomRoles >= globalCsv.friendRecommendLimit then break end | |
| 632 | + end | |
| 623 | 633 | end |
| 624 | 634 | |
| 625 | 635 | SendPacket(actionCodes.Friend_randomRpc, MsgPack.pack({list = randomRoles})) | ... | ... |
src/models/RoleTask.lua
| ... | ... | @@ -394,10 +394,6 @@ function RoleTask.bind(Role) |
| 394 | 394 | end |
| 395 | 395 | nStatus = math.max(nStatus, n) |
| 396 | 396 | end |
| 397 | - if achiveData.id == 35 then | |
| 398 | - print(nStatus) | |
| 399 | - end | |
| 400 | - | |
| 401 | 397 | if nStatus > curStatus then |
| 402 | 398 | table.insert(change, {type = "achiveT", field = tId, value = nStatus}) |
| 403 | 399 | end | ... | ... |