CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
数据存储邮件系统

【数据存储】邮件附件的托管存储:附件与正文分离

2026-09-21 06:48 作者:996 技术组 0 阅读 996引擎Lua教程传奇脚本数据存储邮件系统

实战应用:用在哪里

邮件的正文是文本,附件是资产:一把裁决放在附件里,附件的数据安全等级必须对标装备本体。附件与正文分离存储的设计,让正文的高频读写不牵连附件的低频高价值读写,安全的颗粒度由此细分。

分离存储

lua
---发送邮件:正文入库,附件独立登记
function Mail.sendWithAttach(toId, title, memo, items)
    local mailId = Mail.insertBody(toId, title, memo)
    if items and #items > 0 then
        for _, it in ipairs(items) do
            AttachRepo.deposit(mailId, it)
        end
    end
    return mailId
end

---附件托管:物品转托管对象
function AttachRepo.deposit(mailId, item)
    attachRepo[#attachRepo + 1] = {
        mailId = mailId, item = item.id, n = item.n,
        bind = item.bind, state = "holding",
    }
end

正文表存标题与内容,附件表独立登记物品的完整快照(ID、数量、绑定、强化等级)。附件在托管期间脱离流通体系,任何人无法通过常规手段取走,领取时从托管仓转出进背包。

领取与对账

lua
function AttachRepo.claim(attachId, actor)
    local rec = attachRepo[attachId]
    if rec.state ~= "holding" then return false, "附件已领取" end
    if not actor:HasBagBlank() then return false, "背包已满" end
    rec.state = "claimed"
    giveitem(actor, rec.item, rec.n, rec.bind, "邮件附件")
    QF_LogAttach(attachId, actor:GetUserId(), rec.item)
    return true
end

领取的状态机三态:holding、claimed、expired。过期未领的附件延长 7 天并推送提醒,二次过期按价值走补偿邮件。附件的对账每日跑:holding 状态的每一件都必须能在托管仓里找到实物,账实不符即冻结邮件系统排查。

验证与监控

托管仓的存量与领取流水的差额日报,领取失败的重试次数与原因分类统计。

踩坑记录

附件的物品快照曾经只存物品 ID 不存强化等级,+7 武器的附件领取后变成白板,快照字段的补全让历史受损的 37 件装备逐一修复。领取的并发曾经出现双人同领一附件,状态机的原子更新(先占位再发货)堵住了口子。

上线要点

附件托管的存储独立于邮件正文表,正文可以清理归档而附件必须保留到领取或过期。领取接口的幂等标记防止重复点击的双发。附件的价值分级:高价值附件的领取要求二次确认弹窗,弹窗的文案显示物品全名与数量。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

工具链稳定性

【工具链】崩溃上报:Lua 错误的自动收集与聚合

实战应用:用在哪里 玩家客户端闪退,开发者却毫不知情——这是没有崩溃上报的常态。Lua 层的错误自动收集:每个报错打包成事件…

2026-09-21 06:48 996 技术组 · 0 阅读
安全加密社交系统

【安全加密】举报取证链:截图、日志与处置流转

实战应用:用在哪里 玩家举报外挂与骗子,客服处理的难点不是判断而是取证:说了什么、什么时间、有没有交易记录。举报取证链把玩家…

2026-09-21 06:48 996 技术组 · 0 阅读
性能调优界面UI

【性能调优】列表控件的虚拟化:千条邮件的流畅滚动

实战应用:用在哪里 老玩家的邮箱里躺着上千封邮件,列表控件如果真的创建一千个条目,滚动直接掉到个位数帧率。列表虚拟化只创建可…

2026-09-21 06:48 996 技术组 · 0 阅读
后端接口养成系统

【后端接口】天赋树:三系天赋的加点与洗点消耗

实战应用:用在哪里 天赋树给满级玩家继续投入的理由:攻击系、防御系、通用系三条支线各 20 层,加点消耗天赋点,洗点返还点数…

2026-09-21 06:48 996 技术组 · 0 阅读
实战案例交易系统

【实战案例】拍卖行的三小时拉锯:一场竞价的复盘

实战应用:用在哪里 一把攻击上限 28 的修罗挂进拍卖行,起拍 800 万,两个行会的土豪从晚上八点掐到十一点。三小时的拉锯…

2026-09-21 06:48 996 技术组 · 0 阅读
数据存储邮件系统

【数据存储】邮件附件的托管存储:附件与正文分离

实战应用:用在哪里 邮件的正文是文本,附件是资产:一把裁决放在附件里,附件的数据安全等级必须对标装备本体。附件与正文分离存储…

2026-09-21 06:48 996 技术组 · 0 阅读