行会仓库的领用没有审批流程:普通成员直接取走高级装备,会长发现时已经无法追回。领用审批流封装:普通物品直接领用、高价值物品需副会长以上审批,审批结果通知申请人,超时未审批自动拒绝——既保护资产又不过度阻塞正常需求。
审批流与超时拒绝:领用申请、审批校验、超时处理。示例代码如下:
local VALUE_LINE = 100000
local pending = {}
local function requestItem(actorName, itemId, value)
if value < VALUE_LINE then
giveitem(getplayerbyname(actorName), itemId, 1, 1, "仓库直领")
return true
end
local id = "AP" .. os.time()
pending[id] = { item = itemId, by = actorName,
value = value, ts = os.time() }
sendmsg(nil, 1, actorName .. " 申请领用 " .. itemId .. ",等待审批。")
return id
end
local function approveItem(id, approver)
local req = pending[id]
if req == nil then
return false
end
if os.time() - req.ts > 86400 then
pending[id] = nil
sendmsg(nil, 1, "申请超时已自动拒绝。")
return false
end
giveitem(getplayerbyname(req.by), req.item, 1, 1, "审批领用")
pending[id] = nil
sendmsg(nil, 1, req.by .. " 的领用申请已批准。")
return true
end
超时清理示例代码如下:
local function cleanExpired()
local now = os.time()
for id, req in pairs(pending) do
if now - req.ts > 86400 then
pending[id] = nil
end
end
end
requestItem 按价值线分流:低于 10 万金币直接发放,高于则创建审批单进入 pending 表。approveItem 校验审批时效(24 小时超时自动拒绝),通过后从仓库发放绑定物品。cleanExpired 周期清理过期申请防止 pending 表膨胀。
领用审批踩过三个坑:一是审批人和申请人可以是同一个人(会长自己审批自己的申请),审批人必须与申请人不同;二是超时自动拒绝后申请人没有收到通知,拒绝时同步发邮件告知;三是高价值线的定价标准由会长单方面决定,价值线应由系统按市场价自动计算。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、一行代码拆解:score = 3000 - used 10 —— 副本评分的全部骨架:基础分减去用时惩罚,分数…
【语法】 一、隐蔽陷阱:Lua 没有四舍五入函数,math.floor(2.5) 得 2 恒向负无穷取整——正数的四舍五入要…
【游戏】 一、业务场景:攻城战开打,会长世界喊话等人集合耽误 8 分钟,守军早已布防;集结令上线——会长发起,在线成员一键传…
【语法】 一、抛坑提问:乱序编号 {100, 4, 200, 1, 3, 2} 里最长连续段是 1 到 4 长度 4——排序…
【语法】 一、抛坑提问:统计第 1 到第 10 项,写 for i = 1, t - 1 少算一个,写 for i = 1,…
【游戏】 一、一行代码拆解:if old and old = actor then kick(old) end —— 顶号的…