12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- --[[
- Descripttion:邮件服务
- version:
- Author: Neo,Huang
- Date: 2022-08-17 16:04:20
- LastEditors: Neo,Huang
- LastEditTime: 2022-08-20 15:18:25
- --]]
- local timer = require("timer")
- local baseService = require("baseService")
- local util_mail = require("utils.util_mail")
- local lib_game_mysql = require("lib_game_mysql")
- local bagData = require("data.bag")
- local timerDelExpireMail = nil
- local timerExpireMail = nil
- local CMD = {}
- -- 清理过期邮件
- -- 过期后保留30天 - 永久邮件保留
- local function l_del_expire_mail()
- -- 全服/渠道邮件且有过期时间要马上删除
- local currTime = skynet_time()
- local sql =
- string.format(
- "delete from mdl_mail where (uid=0 or uid=-1) and expireTime >0 and expireTime < %s;",
- tostring(currTime)
- )
- local ret = lib_game_mysql:query(sql)
- -- 删除保留邮件
- local expireTime = currTime - 3600 * 24 * 30
- sql = string.format("delete from mdl_mail where expireTime >0 and expireTime < %s;", tostring(expireTime))
- ret = lib_game_mysql:query(sql)
- log.info("l_del_expire_mail sql[%s] ret[%s]", tostring(sql), tostring(ret))
- end
- -- 过期且有物品未领取
- local function l_expire_items_mail()
- local currTime = skynet_time()
- local sql =
- string.format(
- "SELECT * FROM `mdl_mail` WHERE expireTime < %s and JSON_LENGTH(items) > 0 limit 100;",
- tostring(currTime)
- )
- local ret = lib_game_mysql:query(sql)
- if ret.errno and ret.errno > 0 then
- log.error("l_expire_items_mail 获取过期物品邮件列表失败 ret[%s] sql[%s]", tostring(ret), tostring(sql))
- return
- end
- if not is_empty(ret) then
- for k, v in ipairs(ret) do
- local id = tonumber(v.id)
- local uid = tonumber(v.uid)
- -- 玩家邮件且未领取
- if not is_robot(uid) and not util_mail:user_is_awarded_mail(uid, id) then
- util_mail:user_add_award_mail(uid, id)
- -- 发放邮件物品
- local items = cjson_decode(v.items)
- local keyEvent = string.format("mail-expire-award-%s", tostring(id))
- bagData:add_items(uid, items, keyEvent)
- end
- end
- end
- end
- function CMD.onStart()
- timerDelExpireMail = timer.timeOut(60, l_del_expire_mail)
- timerExpireMail = timer.timeOut(60, l_expire_items_mail)
- end
- function CMD.onStop()
- -- 取消定时器
- timerDelExpireMail.func = nil
- timerExpireMail.func = nil
- end
- baseService.start(CMD, ".mailCenter", true)
|