dc9d814f
zhouhaihai
邮件
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
local _M = {}
local tarr2tab = table.array2Table
local function loadEmails(roleId)
local emails = {}
local rds = string.format(R_EMAIL, roleId)
local ids = redisproxy:lrange(rds, 0, EMAIL_LIMIT - 1)
local redret = redisproxy:pipelining(function (red)
for _, id in ipairs(ids) do
red:hgetall(string.format("email:%d:%s", roleId, id))
end
end)
for index, id in ipairs(ids) do
local email = require("models.Email").new({key = string.format("email:%d:%s", roleId, id)})
if email:load(tarr2tab(redret[index])) then
table.insert(emails, email)
end
end
return emails
end
function _M.listRpc(agent, data)
local role = agent.role
local roleId = role:getProperty("id")
local now = skynet.timex()
local result = {}
local mid = role:getProperty("sid")
local globalEmail = redisproxy:hget("autoincrement_set", "email")
globalEmail = tonum(globalEmail)
local emailSync = role:getProperty("emailSync")
if globalEmail > emailSync then
role:setProperty("emailSync", globalEmail)
emailSync = math.max(emailSync + 1, globalEmail - EMAIL_LIMIT + 1)
local result = redisproxy:pipelining(function (red)
for id = emailSync, globalEmail do
red:hgetall(string.format("globalEmail:%s", id))
end
end)
local count = 1
for _, data in ipairs(result) do
local email = tarr2tab(data)
|
62ed4275
liuzujun
添加新的延時類型郵件
|
43
44
45
46
47
48
49
50
51
|
-- 0 需要判斷創角時間小於郵件創建時間 1 只需要在時間段內登陸即可領取
local delayType = tonum(email.delayType)
local flag = false
if delayType == 1 then
flag = skynet.timex() > tonum(email.createtime)
else
flag = tonum(email.createtime) > role:getProperty("ctime")
end
if flag and ( not email.mid or tonum(email.mid) == mid )
|
dc9d814f
zhouhaihai
邮件
|
52
|
and ( not email.endtime or tonum(email.endtime) > now )then
|
1fc9c12a
zhouhaihai
or
|
53
|
local time = math.max(tonum(email.timestamp, 0) , tonum(email.createtime))
|
dc9d814f
zhouhaihai
邮件
|
54
55
56
57
58
|
redisproxy:insertEmail({
roleId = roleId,
emailId = 0,
createtime = time,
title = email.title,
|
eb4b0152
zhouhaihai
邮件增加 stitle
|
59
|
stitle = email.stitle,
|
dc9d814f
zhouhaihai
邮件
|
60
61
62
|
content = email.content,
attachments = email.attachments
})
|
f22a33af
zhouhaihai
自己的日志
|
63
|
role:mylog("mail_action", {desc = "get_global", key1 = email.title, key2 = email.attachments})
|
dc9d814f
zhouhaihai
邮件
|
64
65
66
67
68
69
70
71
72
|
end
end
end
local emails = loadEmails(roleId)
for _, email in ipairs(emails) do
table.insert(result, email:data())
end
|
94edf97b
zhouhaihai
邮件
|
73
|
SendPacket(actionCodes.Email_listRpc, MsgPack.pack({list = result}))
|
dc9d814f
zhouhaihai
邮件
|
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
return true
end
local function getEmailAttachments( email )
if email:getProperty("status") == 2 then
return ""
end
local attachments = email:getProperty("attachments")
if attachments:len() == 0 then
local rewardPms = email:getProperty("rewardPms")
local emailData = csvdb["emailCsv"][email:getProperty("emailId")]
if emailData then
attachments = emailData.attachment:format(table.unpack(rewardPms))
end
end
return attachments
end
function _M.drawAllAttachRpc(agent, data)
local role = agent.role
local roleId = role:getProperty("id")
|
7bb30dca
zhouhaihai
修改发奖
|
96
|
local reward, change = {}
|
dc9d814f
zhouhaihai
邮件
|
97
98
99
|
local ids = {}
local emails = loadEmails(roleId)
|
39bcd7ca
zhouhaihai
LOG
|
100
101
102
103
104
|
for _, email in ipairs(emails) do
local attachments = getEmailAttachments(email)
if attachments ~= "" then
email:setProperty("status", 2)
email:log(role, 2)
|
a3e69a31
zhouhaihai
缺了 id 来源
|
105
|
ids[email:getProperty("id")] = 1
|
39bcd7ca
zhouhaihai
LOG
|
106
107
|
for key, v in pairs(attachments:toNumMap()) do
reward[key] = (reward[key] or 0) + v
|
dc9d814f
zhouhaihai
邮件
|
108
|
end
|
f22a33af
zhouhaihai
自己的日志
|
109
|
role:mylog("mail_action", {desc = "draw_attach", int1 = email:getProperty("emailId"), key1 = email:getProperty("title"), key2 = attachments})
|
dc9d814f
zhouhaihai
邮件
|
110
|
end
|
39bcd7ca
zhouhaihai
LOG
|
111
|
end
|
7bb30dca
zhouhaihai
修改发奖
|
112
113
|
reward, change = role:award(reward, {log = {desc = "draw_attach"}})
SendPacket(actionCodes.Email_drawAllAttachRpc, MsgPack.pack({ids = ids, reward = reward, change = change}))
|
dc9d814f
zhouhaihai
邮件
|
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
return true
end
function _M.drawAttachRpc(agent, data)
local role = agent.role
local roleId = role:getProperty("id")
local msg = MsgPack.unpack(data)
local id = msg.id
local rds = string.format(R_EMAIL_ITEM, roleId, id)
local email = require("models.Email").new({key = rds})
if not email:load() then return end
local attachments = getEmailAttachments(email)
if attachments == "" then return end
|
b8b1c164
liuzujun
扭蛋活动,万能碎片bug
|
131
|
local reward, change = role:award(attachments, {log = {desc = "draw_attach", int1 = id}})
|
39bcd7ca
zhouhaihai
LOG
|
132
133
|
email:setProperty("status", 2)
email:log(role, 2)
|
7bb30dca
zhouhaihai
修改发奖
|
134
|
SendPacket(actionCodes.Email_drawAttachRpc, MsgPack.pack({reward = reward, change = change}))
|
f22a33af
zhouhaihai
自己的日志
|
135
|
role:mylog("mail_action", {desc = "draw_attach", int1 = id, key1 = email:getProperty("title"), key2 = attachments})
|
dc9d814f
zhouhaihai
邮件
|
136
137
138
139
140
141
142
143
144
145
|
return true
end
function _M.checkRpc(agent, data)
local role = agent.role
local roleId = role:getProperty("id")
local msg = MsgPack.unpack(data)
local id = msg.id
|
44baeb7a
zhouhaihai
漏掉了 bug
|
146
147
|
local emailRds = string.format("email:%d:%s", roleId, id)
local email = require("models.Email").new({key = emailRds})
|
39bcd7ca
zhouhaihai
LOG
|
148
|
if not email:load() then return end
|
dc9d814f
zhouhaihai
邮件
|
149
|
|
44baeb7a
zhouhaihai
漏掉了 bug
|
150
|
email:setProperty("status", 1)
|
39bcd7ca
zhouhaihai
LOG
|
151
|
email:log(role, 1)
|
f22a33af
zhouhaihai
自己的日志
|
152
|
role:mylog("mail_action", {desc = "check_mail", int1 = id})
|
dc9d814f
zhouhaihai
邮件
|
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
|
SendPacket(actionCodes.Email_checkRpc, '')
return true
end
function _M.delRpc(agent, data)
local role = agent.role
local roleId = role:getProperty("id")
local rds = string.format(R_EMAIL, roleId)
local ids = redisproxy:lrange(rds, 0, EMAIL_LIMIT - 1)
local now = skynet.timex()
local result = {}
local emailSet = csvdb["emailCsv"]
redisproxy:pipelining(function (red)
for _, id in ipairs(ids) do
local emailRds = string.format("email:%d:%s", roleId, id)
local email = require("models.Email").new({key = emailRds})
if email:load() then
local status = email:getProperty("status")
local attachments = email:getProperty("attachments")
local emailData = emailSet[email:getProperty("emailId")]
if emailData and attachments:len() == 0 then
attachments = emailData.attachment
end
if status == 2 or (status == 1 and attachments:len() == 0) then
|
39bcd7ca
zhouhaihai
LOG
|
180
|
email:log(role, 3)
|
dc9d814f
zhouhaihai
邮件
|
181
182
183
184
185
186
187
|
red:lrem(rds, 0, id)
red:del(emailRds)
result[tonum(id)] = 1
end
end
end
end)
|
f22a33af
zhouhaihai
自己的日志
|
188
189
190
|
for delId, _ in ipairs(result) do
role:mylog("mail_action", {desc = "del_mail", int1 = delId})
end
|
dc9d814f
zhouhaihai
邮件
|
191
192
193
194
195
|
SendPacket(actionCodes.Email_delRpc, MsgPack.pack({result = result}))
return true
end
return _M
|