概览

运营管理 控制台

用户ID 是玩家账号编号,整站通用。充值、流水表里另有「充值ID / 流水ID」,那是这一条记录自己的编号,不是另一个用户。「协议同意」记录该用户同意的协议版本与时间;bot: 开头是排行榜虚拟人,dev: 开头是开发期测试账号,两者都没有同意记录。

充值ID 是这笔订单的编号;用户ID 是付款玩家的账号编号。关键词支持「微信支付订单号」,也就是用户微信账单里显示的那串交易单号。

这张表是下单就有记录,「充值」表是微信回调成功入账后才有记录。 所以掉单(用户付了钱、回调没到、积分没加)只能在这里看到:「已入账」那列是「否」。 绝大多数「否」是用户打开支付后自己放弃了,属于正常。分辨的办法是点该行的 查单补单:会去问微信这笔的真实状态,确认微信已收款就自动补积分, 没收款就只告诉你状态、不动账。这个操作是幂等的,点多少次都只会加一次积分。

流水ID 是这一条积分变动的编号;用户ID 是发生变动的那个玩家。

单选题结构:q 题干(可与 qImage 二选一或并存)· opts 2~10 项(后台填几个,1v1 / 好友 PK / 无尽挑战就展示几个;每项可与 optImages 同下标 URL 配对)· correct 为正确下标(从 0 起)。可选 questionType:mc_text 纯文字、mc_image 配图/图示题、mc_mixed 图文混合(理化/工科等)。科目/难度在「② 科目/难度/程度」维护,同一处还要把每个难度归进简单 / 困难 / 地狱三档程度,否则只有活动专场抽得到它;保存后小程序活动专场 / 1v1 / 好友 PK / 无尽挑战均从本题库随机抽题。网络图 URL 须在小程序后台配置downloadFile 合法域名。问答题等非本结构请删改;逐题维护可用「④ 已保存题库」或「⑤ 完整 JSON」。

共 0 题 · 当前筛选 0 题

上传 Word 文档

直接选 .docx 文件,可一次选多份。解析在服务器上完成:题目里的图片会自动存下来, 老公式编辑器留下的图也会转成小程序能显示的格式。题干和选项都一样的题会自动合并,不会重复入库。
旧的 .doc 不支持,请先在 Word 里「另存为」成 .docx。多选题(答案是两个以上字母)会跳过,本游戏是单选。

来源卷自动用文件名,可按卷筛选,不用手填。

题库浏览 · 共 0 题

这里读的是服务器上真正在用的题库,按页取,几万道也不卡。上面几个分区(①~⑤)是老的整份读写方式,题目多了会很慢,逐题微调时才用。

两个按钮都只作用于当前筛选出来的这批题,都没有撤销,建议先备份数据库。

批量打乱选项:把选项顺序随机重排,正确答案跟着它那句话走。 用来解决答案挤在 A、B 导致玩家蒙对率偏高。点了会先告诉你会动多少题,确认后才真改。 判断题、按大小排好的数值题会自动跳过,「以上都正确」这类会留在最后一项。

批量删除:把筛选出来的题从题库里删掉, 常用于「某份 Word 传错了,整卷删掉重传」——这时把「来源卷」选成那一份即可。 必须至少选一个筛选条件(防止一不小心删光整个题库), 并且要手动输入题数才会执行。

与小程序 utils/badge-config.js 对齐:id、name / desc、nameEn / descEn(英文界面)、unlockKey(须与 quiz-outcome.js 中 safeSet 一致,并登记 badge-unlock-keys.js)、sortOrder(数字越小越靠前)、rarity(common/rare/epic/legendary)、category(展示标签)、img / imgVersion(换图时更新版本可破缓存)。
上传图标后请把 API 域名配进小程序「下载文件合法域名」。

高级:完整 JSON(与上方表格双向同步)

无尽挑战结算页,出战宠物会用一朵云随机说其中一句。按出战宠物分别取话,所以每只都要留足条数,只配两三条会让同一只玩家反复看到同一句。
只写温暖鼓励,不要调侃:傲娇、嘴硬、「就这?」「别得意」这类腔调一句都不要。玩家是刚结束一局、正在看自己成绩时读到这句话,任何一点居高临下都会读成嘲讽,成绩差的那一局尤其明显。夸奖、陪伴、道谢、邀约都行,评判不行。
不要写具体题数:同一句要在答对 3 题和答对 80 题时都不尴尬,题数就在旁边的大号数字里,宠物再报一遍是废话;写死「太厉害了」在只答对 1 题时同样会变味。
单条不超过 24 字,建议压在 14 字以内——云里一行装 8 个字,14 字正好两行,再长会折成三行,读起来就不像一句话了。
某只宠物被删空时,服务端会回落到出厂文案,不会出现宠物站在那里不说话。

高级:完整 JSON(与上方表格双向同步)
小程序首页 ·「活动专场」对照说明
后台表单字段 小程序里的展示位置
在首页展示(勾选) 控制该活动卡片是否出现在专场;不勾选则整块不出现。
活动名称 卡片主标题(大字)。
首页卡片左侧配图 卡片左侧方图;可上传或填外链;不配置则用小程序默认粉圈图。
首页入口按钮文案 / 按钮图标 卡片右侧蓝色胶囊按钮上的文字;图标支持后台上传(写入 /ops/activity-icons/)或填外链;不配置则小程序用默认图标。
展示说明 标题下方灰色正文段落(规则与玩法说明)。
积分倍率 说明下面的一行积分规则:小程序按 ±2000×倍率自动算出数字展示。
开始 / 结束时间 卡片上不写字;仅在档期之内的活动会出现在专场。
答题回合数 卡片不写题数;用户点按钮进入后,该局出题数量。
题目标签 卡片不写;与题库题目 tags 一致时优先抽该标签试题。
抽题科目(多选) 卡片不写;与题库 subject 一致时只从这些科目中随机抽题(并集)。不选则不限科目。
抽题难度(多选) 卡片不写;与题库 difficulty(难度词典中的 id)一致时只从这些难度中随机抽题(并集)。不选则不限难度。可与科目、题目标签叠加。
活动标识(id) 用户看不见;用于接口与排序,勿随意改已上线 id。

专场内卡片从上到下顺序与本页每条左侧的上移 / 下移一致。保存后小程序须能访问 /ops/activities.json(见下方「说明」)。常规首页「1v1 PK」仍为 ±2000,不受此处倍率影响。

高级:完整 JSON(与上方表单双向同步,供技术同事排查)

小程序转发、分享到朋友圈时,会从这里的图里随机抽一张当封面(答题中、结果页、排行榜、匹配中、宠物/卡牌/勋章除外)。
建议至少放 2 张,比例约 5:4(例如 500×400),jpg / png / webp,单张不超过 2MB。
新图会存到服务器 /ops/share/。以前用宝塔直接放到 ops 根目录、文件名是 share-friend-pk-* 的旧图也会列在这里,可以删掉或继续留着。