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.
253 lines
10 KiB
Lua
253 lines
10 KiB
Lua
local skynet = require "skynet"
|
|
local mongohelper = require "mongohelper"
|
|
local keysutils = require "keysutils"
|
|
local dateutils = require "dateutils"
|
|
local utils = require "utils"
|
|
local redis = require 'skynet.db.redis'
|
|
local mongo = require 'skynet.db.mongo'
|
|
local settings = require "settings"
|
|
local maillogic = require "maillogic"
|
|
local cjson = require "cjson"
|
|
local redishelper = require "redishelper"
|
|
local skynet_node_name = ...
|
|
require "skynet.manager"
|
|
require "functions"
|
|
|
|
local CMD = {}
|
|
|
|
local buy_scripts = [[
|
|
redis.call('zincrby', ARGV[1], ARGV[3], ARGV[2])
|
|
redis.call('expire', ARGV[1], ARGV[4])
|
|
return "ok"
|
|
]]
|
|
|
|
local receive_scripts = [[
|
|
redis.call('zadd', ARGV[1], 1, ARGV[2])
|
|
redis.call('expire', ARGV[1], ARGV[3])
|
|
return "ok"
|
|
]]
|
|
|
|
local score_scripts = [[
|
|
redis.call('incrby', ARGV[1], ARGV[2])
|
|
redis.call('expire', ARGV[1], ARGV[3])
|
|
return "ok"
|
|
]]
|
|
|
|
local pattern = "(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)"
|
|
|
|
function CMD.loadallconfig(serverid)
|
|
local server = mongohelper.findOne(settings.server_item_mongodb_key.tname, settings.server_item_mongodb_key.cname, {_id=serverid})
|
|
local activity_id = server.activity_id or 0
|
|
local config = mongohelper.find(settings.activity_config_mongodb_key.tname, settings.activity_config_mongodb_key.cname)
|
|
for k,v in ipairs(config) do
|
|
local s = dateutils.get_timestamp_by_datetime(v.start_time, pattern)
|
|
local e = dateutils.get_timestamp_by_datetime(v.end_time, pattern)
|
|
if os.time() >= s and os.time() < e then
|
|
v.status = 1
|
|
else
|
|
v.status = 0
|
|
end
|
|
if activity_id == v._id then
|
|
local timestamp = dateutils.get_timestamp_by_datetime(server.activity_end_time, pattern)
|
|
if os.time() > timestamp then
|
|
v.status = 1
|
|
end
|
|
end
|
|
end
|
|
return config
|
|
end
|
|
|
|
function CMD.loadconfig(id)
|
|
local res = mongohelper.findOne(settings.activity_config_mongodb_key.tname, settings.activity_config_mongodb_key.cname, {_id=id})
|
|
return res
|
|
end
|
|
|
|
function CMD.loadheishi(uid)
|
|
local k = keysutils.user_week_buy_heishi_key(settings.appname, uid, dateutils.get_weekno())
|
|
local res = redishelper.exec("zrange", uid, k, 0, -1, "WITHSCORES")
|
|
return utils.redis_pack(res)
|
|
end
|
|
|
|
|
|
function CMD.loadbaoxiang(uid)
|
|
local k = keysutils.user_week_buy_baoxiang_key(settings.appname, uid, dateutils.get_weekno())
|
|
local res = redishelper.exec("zrange", uid, k, 0, -1, "WITHSCORES")
|
|
local t1 = utils.redis_pack(res)
|
|
|
|
local k = keysutils.user_week_receivebuy_baoxiang_key(settings.appname, uid, dateutils.get_weekno())
|
|
local res = redishelper.exec("zrange", uid, k, 0, -1, "WITHSCORES")
|
|
local t2 = utils.redis_pack(res)
|
|
|
|
local k = keysutils.user_week_receive_baoxiang_key(settings.appname, uid, dateutils.get_weekno())
|
|
local res = redishelper.exec("zrange", uid, k, 0, -1, "WITHSCORES")
|
|
local t3 = utils.redis_pack(res)
|
|
|
|
local k = keysutils.user_week_baoxiang_score_key(settings.appname, uid, dateutils.get_weekno())
|
|
local t4 = redishelper.exec("get", uid, k) or 0
|
|
|
|
return t1, t2, t3, t4
|
|
end
|
|
|
|
|
|
function CMD.loadzhaomu(uid)
|
|
local k = keysutils.user_week_buy_zhaomu_key(settings.appname, uid, dateutils.get_weekno())
|
|
local res = redishelper.exec("zrange", uid, k, 0, -1, "WITHSCORES")
|
|
local t1 = utils.redis_pack(res)
|
|
|
|
local k = keysutils.user_week_receivebuy_zhaomu_key(settings.appname, uid, dateutils.get_weekno())
|
|
local res = redishelper.exec("zrange", uid, k, 0, -1, "WITHSCORES")
|
|
local t2 = utils.redis_pack(res)
|
|
|
|
local k = keysutils.user_week_receive_zhaomu_key(settings.appname, uid, dateutils.get_weekno())
|
|
local res = redishelper.exec("zrange", uid, k, 0, -1, "WITHSCORES")
|
|
local t3 = utils.redis_pack(res)
|
|
|
|
local k = keysutils.user_week_zhaomu_score_key(settings.appname, uid, dateutils.get_weekno())
|
|
local t4 = redishelper.exec("get", uid, k) or 0
|
|
return t1, t2, t3, t4
|
|
end
|
|
|
|
function CMD.loadduanwu(uid)
|
|
local k = keysutils.user_buy_duanwu_key(settings.appname, uid, dateutils.getyear())
|
|
local res = redishelper.exec("zrange", uid, k, 0, -1, "WITHSCORES")
|
|
local t1 = utils.redis_pack(res)
|
|
|
|
local k = keysutils.user_receivebuy_duanwu_key(settings.appname, uid, dateutils.getyear())
|
|
local res = redishelper.exec("zrange", uid, k, 0, -1, "WITHSCORES")
|
|
local t2 = utils.redis_pack(res)
|
|
|
|
local k = keysutils.user_receive_duanwu_key(settings.appname, uid, dateutils.getyear())
|
|
local res = redishelper.exec("zrange", uid, k, 0, -1, "WITHSCORES")
|
|
local t3 = utils.redis_pack(res)
|
|
|
|
local k = keysutils.user_duanwu_score_key(settings.appname, uid, dateutils.getyear())
|
|
local t4 = redishelper.exec("get", uid, k) or 0
|
|
|
|
local k = keysutils.user_duihuan_duanwu_key(settings.appname, uid, dateutils.getyear())
|
|
local res = redishelper.exec("zrange", uid, k, 0, -1, "WITHSCORES")
|
|
local t5 = utils.redis_pack(res)
|
|
return t1, t2, t3, t4, t5
|
|
end
|
|
|
|
|
|
function CMD.buyheishi(uid, id, num)
|
|
local k = keysutils.user_week_buy_heishi_key(settings.appname, uid, dateutils.get_weekno())
|
|
local overtime = dateutils.oneweekend(os.time() + 7*86400)
|
|
local ex = overtime - os.time()
|
|
return redishelper.exec("eval", uid, buy_scripts, 4, "k", "id", "num", "ex", k, id, num, ex)
|
|
end
|
|
|
|
|
|
function CMD.buybaoxiang(uid, id, num)
|
|
local k = keysutils.user_week_buy_baoxiang_key(settings.appname, uid, dateutils.get_weekno())
|
|
local overtime = dateutils.oneweekend(os.time() + 7*86400)
|
|
local ex = overtime - os.time()
|
|
return redishelper.exec("eval", uid, buy_scripts, 4, "k", "id", "num", "ex", k, id, num, ex)
|
|
end
|
|
|
|
|
|
function CMD.receivebuybaoxiang(uid, id, num)
|
|
local k = keysutils.user_week_receivebuy_baoxiang_key(settings.appname, uid, dateutils.get_weekno())
|
|
local overtime = dateutils.oneweekend(os.time() + 7*86400)
|
|
local ex = overtime - os.time()
|
|
return redishelper.exec("eval", uid, buy_scripts, 4, "k", "id", "num", "ex", k, id, num, ex)
|
|
end
|
|
|
|
|
|
function CMD.incrbaoxiangscore(uid, score)
|
|
score = checkint(score)
|
|
local k = keysutils.user_week_baoxiang_score_key(settings.appname, uid, dateutils.get_weekno())
|
|
local overtime = dateutils.oneweekend(os.time() + 7*86400)
|
|
local ex = overtime - os.time()
|
|
return redishelper.exec("eval", uid, score_scripts, 3, "k", "score", "ex", k, score, ex)
|
|
end
|
|
|
|
|
|
function CMD.receivebaoxiang(uid, id)
|
|
local k = keysutils.user_week_receive_baoxiang_key(settings.appname, uid, dateutils.get_weekno())
|
|
local overtime = dateutils.oneweekend(os.time() + 7*86400)
|
|
local ex = overtime - os.time()
|
|
return redishelper.exec("eval", uid, receive_scripts, 3, "k", "id", "ex", k, id, ex)
|
|
end
|
|
|
|
|
|
function CMD.buyzhaomu(uid, id, num)
|
|
local k = keysutils.user_week_buy_zhaomu_key(settings.appname, uid, dateutils.get_weekno())
|
|
local overtime = dateutils.oneweekend(os.time() + 7*86400)
|
|
local ex = overtime - os.time()
|
|
return redishelper.exec("eval", uid, buy_scripts, 4, "k", "id", "num", "ex", k, id, num, ex)
|
|
end
|
|
|
|
|
|
function CMD.buyduanwu(uid, id, num)
|
|
local k = keysutils.user_buy_duanwu_key(settings.appname, uid, dateutils.getyear())
|
|
local overtime = dateutils.oneweekend(os.time() + 30*86400)
|
|
local ex = overtime - os.time()
|
|
return redishelper.exec("eval", uid, buy_scripts, 4, "k", "id", "num", "ex", k, id, num, ex)
|
|
end
|
|
|
|
function CMD.incrzhaomuscore(uid, score)
|
|
score = checkint(score)
|
|
local k = keysutils.user_week_zhaomu_score_key(settings.appname, uid, dateutils.get_weekno())
|
|
local overtime = dateutils.oneweekend(os.time() + 7*86400)
|
|
local ex = overtime - os.time()
|
|
return redishelper.exec("eval", uid, score_scripts, 3, "k", "score", "ex", k, score, ex)
|
|
end
|
|
|
|
function CMD.incrduanwuscore(uid, score)
|
|
score = checkint(score)
|
|
local k = keysutils.user_duanwu_score_key(settings.appname, uid, dateutils.getyear())
|
|
local overtime = dateutils.oneweekend(os.time() + 7*86400)
|
|
local ex = overtime - os.time()
|
|
return redishelper.exec("eval", uid, score_scripts, 3, "k", "score", "ex", k, score, ex)
|
|
end
|
|
|
|
function CMD.receivebuyzhaomu(uid, id, num)
|
|
local k = keysutils.user_week_receivebuy_zhaomu_key(settings.appname, uid, dateutils.get_weekno())
|
|
local overtime = dateutils.oneweekend(os.time() + 7*86400)
|
|
local ex = overtime - os.time()
|
|
return redishelper.exec("eval", uid, buy_scripts, 4, "k", "id", "num", "ex", k, id, num, ex)
|
|
end
|
|
|
|
|
|
function CMD.receivezhaomu(uid, id)
|
|
local k = keysutils.user_week_receive_zhaomu_key(settings.appname, uid, dateutils.get_weekno())
|
|
local overtime = dateutils.oneweekend(os.time() + 7*86400)
|
|
local ex = overtime - os.time()
|
|
return redishelper.exec("eval", uid, receive_scripts, 3, "k", "id", "ex", k, id, ex)
|
|
end
|
|
|
|
|
|
function CMD.receivebuyduanwu(uid, id, num)
|
|
local k = keysutils.user_receivebuy_duanwu_key(settings.appname, uid, dateutils.getyear())
|
|
local overtime = dateutils.oneweekend(os.time() + 30*86400)
|
|
local ex = overtime - os.time()
|
|
return redishelper.exec("eval", uid, buy_scripts, 4, "k", "id", "num", "ex", k, id, num, ex)
|
|
end
|
|
|
|
|
|
function CMD.receiveduanwu(uid, id)
|
|
local k = keysutils.user_receive_duanwu_key(settings.appname, uid, dateutils.getyear())
|
|
local overtime = dateutils.oneweekend(os.time() + 30*86400)
|
|
local ex = overtime - os.time()
|
|
return redishelper.exec("eval", uid, receive_scripts, 3, "k", "id", "ex", k, id, ex)
|
|
end
|
|
|
|
function CMD.duihuanduanwu(uid, id, num)
|
|
local k = keysutils.user_duihuan_duanwu_key(settings.appname, uid, dateutils.getyear())
|
|
local overtime = dateutils.oneweekend(os.time() + 30*86400)
|
|
local ex = overtime - os.time()
|
|
return redishelper.exec("eval", uid, buy_scripts, 4, "k", "id", "num", "ex", k, id, num, ex)
|
|
end
|
|
|
|
skynet.start(function()
|
|
-- local c = CMD.loadallconfig()
|
|
-- DEBUG("loadallconfig = ", DUMP(c))
|
|
-- mongohelper.batch_insert(settings.activity_config_mongodb_key.tname, settings.activity_config_mongodb_key.cname, {{_id=1, name="江湖黑市", status=1}, {_id=2, name="宝箱活动", status=1}, {_id=3, name="招募活动", status=1}})
|
|
skynet.dispatch("lua", function(_, _, command, ...)
|
|
local f = assert(CMD[command])
|
|
skynet.retpack(f(...))
|
|
end)
|
|
skynet.register('.' .. SERVICE_NAME)
|
|
end)
|