You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
5.4 KiB
Lua
148 lines
5.4 KiB
Lua
local skynet = require "skynet"
|
|
local redishelper = require "redishelper"
|
|
local mongohelper = require "mongohelper"
|
|
local keysutils = require "keysutils"
|
|
local settings = require "settings"
|
|
local dateutils = require "dateutils"
|
|
local utils = require "utils"
|
|
local skynet_node_name = ...
|
|
require "skynet.manager"
|
|
local CMD = {}
|
|
|
|
|
|
|
|
--获取我的好友
|
|
function CMD.loadfriends(uid)
|
|
local ret = mongohelper.find(settings.friend_mongodb_key.tname, settings.friend_mongodb_key.cname, {uid=uid})
|
|
local friends = {}
|
|
for i,v in ipairs(ret) do
|
|
table.insert(friends, {friendid = v.friendid, status = v.status})
|
|
end
|
|
return friends
|
|
end
|
|
|
|
|
|
function CMD.loadfriendapply(uid)
|
|
local ret = mongohelper.find(settings.friend_apply_mongodb_key.tname, settings.friend_apply_mongodb_key.cname, {friendid=uid, status=0})
|
|
local temps = {}
|
|
for i,v in ipairs(ret) do
|
|
table.insert(temps, v.uid)
|
|
end
|
|
return temps
|
|
end
|
|
|
|
|
|
--申请添加好友
|
|
function CMD.apply(myid, friendid)
|
|
return mongohelper.insert(settings.friend_apply_mongodb_key.tname, settings.friend_apply_mongodb_key.cname, {uid=myid, friendid=friendid, status=0, created_at=dateutils.get_datetime()})
|
|
end
|
|
|
|
function CMD.checkapply(myid, friendid)
|
|
return mongohelper.findOne(settings.friend_apply_mongodb_key.tname, settings.friend_apply_mongodb_key.cname, {uid=myid, friendid=friendid, status=0})
|
|
end
|
|
|
|
--获取申请添加好友
|
|
function CMD.loadapply(myid)
|
|
local ret = mongohelper.find(settings.friend_apply_mongodb_key.tname, settings.friend_apply_mongodb_key.cname, {uid=myid, status=0})
|
|
local temps = {}
|
|
for i,v in ipairs(ret) do
|
|
table.insert(temps, v)
|
|
end
|
|
return temps
|
|
end
|
|
|
|
--同意填加好友
|
|
function CMD.agree(myid, friendid, status)
|
|
mongohelper.upsert(settings.friend_apply_mongodb_key.tname, settings.friend_apply_mongodb_key.cname, {["$set"]={status=status, updated_at=dateutils.get_datetime()}}, {
|
|
['$or'] = {
|
|
{uid=friendid, friendid=myid, status=0},
|
|
{uid=myid, friendid=friendid, status=0}
|
|
}
|
|
})
|
|
return "ok"
|
|
end
|
|
|
|
|
|
function CMD.opagree(myid, status)
|
|
return mongohelper.upsert(settings.friend_apply_mongodb_key.tname, settings.friend_apply_mongodb_key.cname, {["$set"]={status=status, updated_at=dateutils.get_datetime()}}, {friendid=myid, status=0})
|
|
end
|
|
|
|
--添加好友
|
|
function CMD.addfriend(myid, friendid)
|
|
return mongohelper.batch_insert(
|
|
settings.friend_mongodb_key.tname,
|
|
settings.friend_mongodb_key.cname,
|
|
{
|
|
{uid=myid, friendid=friendid, status=0, created_at=dateutils.get_datetime()},
|
|
{uid=friendid, friendid=myid, status=0, created_at=dateutils.get_datetime()}
|
|
}
|
|
)
|
|
end
|
|
|
|
--拉黑好友
|
|
function CMD.black(myid, friendid)
|
|
return mongohelper.upsert(settings.friend_mongodb_key.tname, settings.friend_mongodb_key.cname, {["$set"]={status=1, uid=myid, friendid=friendid, updated_at=dateutils.get_datetime()}}, {uid=myid, friendid=friendid, status=0})
|
|
end
|
|
|
|
--取消拉黑好友
|
|
function CMD.delblack(myid, friendid)
|
|
return mongohelper.upsert(settings.friend_mongodb_key.tname, settings.friend_mongodb_key.cname, {["$set"]={status=0, uid=myid, friendid=friendid, updated_at=dateutils.get_datetime()}}, {uid=myid, friendid=friendid, status=1})
|
|
end
|
|
|
|
--删除好友
|
|
function CMD.delete(myid, friendid)
|
|
return mongohelper.del(settings.friend_mongodb_key.tname, settings.friend_mongodb_key.cname, {uid=myid, friendid=friendid})
|
|
end
|
|
|
|
|
|
function CMD.getrefreshtime(uid)
|
|
local k = keysutils.friend_refreshtime_key(settings.appname, uid)
|
|
return redishelper.exec("get", uid, k)
|
|
end
|
|
|
|
function CMD.updaterefreshtime(uid)
|
|
local k = keysutils.friend_refreshtime_key(settings.appname, uid)
|
|
return redishelper.exec("set", uid, k, os.time())
|
|
end
|
|
|
|
|
|
function CMD.loadfriendcoin(uid)
|
|
local k1 = keysutils.friend_give_coin(settings.appname, uid, dateutils.getday())
|
|
local res1 = redishelper.exec("zrange", uid, k1, 0, -1 , "WITHSCORES")
|
|
local k2 = keysutils.friend_receive_coin(settings.appname, uid, dateutils.getday())
|
|
local res2 = redishelper.exec("zrange", uid, k2, 0, -1 , "WITHSCORES")
|
|
return utils.redis_pack(res1), utils.redis_pack(res2)
|
|
end
|
|
|
|
|
|
local give_scripts = [[
|
|
redis.call('zadd', ARGV[1], 1, ARGV[4])
|
|
redis.call('expire', ARGV[1], tonumber(ARGV[6]))
|
|
redis.call('zadd', ARGV[2], ARGV[5], ARGV[3])
|
|
redis.call('expire', ARGV[2], tonumber(ARGV[6]))
|
|
return "ok"
|
|
]]
|
|
|
|
function CMD.givecoin(giveid, receiveid, coin)
|
|
local k1 = keysutils.friend_give_coin(settings.appname, giveid, dateutils.getday())
|
|
local k2 = keysutils.friend_receive_coin(settings.appname, receiveid, dateutils.getday())
|
|
local ex = dateutils.getdayex(os.time())
|
|
return redishelper.exec("eval", giveid, give_scripts, 6, "k1", "k2","giveid", "receiveid", "coin", "ex", k1, k2, giveid, receiveid, coin, ex)
|
|
end
|
|
|
|
function CMD.receivecoin(receiveid, giveid)
|
|
local k = keysutils.friend_receive_coin(settings.appname, receiveid, dateutils.getday())
|
|
return redishelper.exec("zadd", receiveid, k, 0, giveid)
|
|
end
|
|
|
|
|
|
skynet.start(function()
|
|
-- local ok = mongohelper.del(settings.friend_apply_mongodb_key.tname, settings.friend_apply_mongodb_key.cname, {uid=434026, friendid=831962})
|
|
-- DEBUG(" agree del ok = ", ok)
|
|
skynet.dispatch("lua", function(_, _, command, ...)
|
|
local f = assert(CMD[command])
|
|
skynet.retpack(f(...))
|
|
end)
|
|
skynet.register('.' .. SERVICE_NAME)
|
|
end)
|