insertEmail.lua 1.1 KB
local EMAIL_LIMIT = KEYS[1]
local roleId = KEYS[2]
local emailId = KEYS[3] or 0
local createTime = KEYS[4]
local con = KEYS[5] or cmsgpack.pack({})
local att = KEYS[6] or cmsgpack.pack({})
local title = KEYS[7] or ""
local content = KEYS[8] or ""
local attachments = KEYS[9] or ""


-- local roleInfo = redis.call("HGET", string.format("role:%d", roleId), "delete")

-- if tonumber(roleInfo) == 1 then return end

local id = redis.call("HINCRBY", string.format("role:%d:autoincr", roleId), "email", 1)
redis.call("LPUSH", string.format("role:%d:emailIds", roleId), id)
local deleteIds = redis.call("LRANGE", string.format("role:%d:emailIds", roleId), EMAIL_LIMIT, -1)
for _, deleteId in ipairs(deleteIds) do
	redis.call("DEL", string.format("email:%d:%d", roleId, deleteId))
end

redis.call("LTRIM", string.format("role:%d:emailIds", roleId), 0, EMAIL_LIMIT - 1)
redis.call("HMSET", string.format("email:%d:%d", roleId, id), 
	"id", tostring(id), 
	"emailId", emailId,
	"status", "0", 
	"createtime", createTime,
	"contentPms", con, 
	"rewardPms", att, 
	"title", title, 
	"content", content, 
	"attachments", attachments
)