# gameplayer **Repository Path**: labm/gameplayer ## Basic Information - **Project Name**: gameplayer - **Description**: ceshiyong. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-25 - **Last Updated**: 2026-06-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 优搭子 GamePlayer 微信小程序(云开发)——寻找游戏搭子、在线选人、下单支付的陪玩平台。 ## 功能与权限 三种角色,按角色分流「我的」页菜单: | 角色 | 能力 | |------|------| | **管理员 admin** | 主播管理(增删改,改=改价格)、设置默认价格阶梯、查看全部订单 | | **主播 streamer** | 总收入统计、我的订单(作为主播)、修改信息(头像/图集/语音/擅长游戏/在线状态) | | **普通用户 user** | 我的订单、经常陪伴(收藏) | 公共能力:首页推荐轮播 + 双列瀑布流主播列表、主播详情页(图集/语音试听/擅长游戏/收藏/立即下单)、下单与**模拟支付**。 ## 技术栈 - 云开发:云数据库 + 云存储 + 云函数 - 单业务云函数 `cloudfunctions/api`,统一 `event.action` 分发,后端按角色鉴权 - 登录:openid 静默登录 + 手动授权头像昵称(chooseAvatar + nickname) ## 首次部署步骤 ### 1. 云环境 云环境 ID 已写入 `miniprogram/app.js`(`cloud1-d6gzve8x1c88c881c`)与 `envList.js`。 ### 2. 部署云函数 在微信开发者工具中,右键 `cloudfunctions/api` → **上传并部署:云端安装依赖**。 > 旧的 `cloudfunctions/quickstartFunctions` 已废弃,请右键删除。 ### 3. 创建数据库集合 在云开发控制台 → 数据库,新建以下集合(权限设为「仅创建者可读写」,写操作均走云函数): - `users` 用户(_openid, nick, avatar, role) - `streamers` 主播资料 - `orders` 订单 - `favorites` 收藏 - `priceConfig` 默认价格阶梯(可留空,云函数会返回内置默认值) ### 4. 设置第一个管理员 1. 在开发者工具运行小程序,完成登录授权(首页会静默创建 user 记录)。 2. 打开「我的」页,复制「我的ID」(即你的 openid)。 3. 回到云开发控制台 → `users` 集合,找到你的记录,把 `role` 字段改为 `admin`。 4. 重新进入小程序「我的」页(下拉或重进),即出现管理后台菜单。 ### 5. 把用户升级为主播 - 方式 A(管理员操作):管理后台 → 主播管理 → 新增 → 粘贴对应用户的 openid。 - 方式 B:在云函数中调用 `auth.assignRole`(admin 权限)。 ## 价格体系 采用「全局配置 + 主播档位」模型: - **管理员**在「设置价格阶梯」配置每个游戏的 **3 档价格**(如 入门/进阶/金牌),可增删游戏、改档位名与价格。 - **管理员**在「主播管理 → 改价」给每个主播**分配档位**,并选择该主播**提供的游戏**(增删)。 - **主播**在「修改信息」里自行**增删自己提供的游戏**(价格按其档位自动计算,不可改价)。 - 下单价格 = `所选游戏在主播档位上的价格`,由云函数按 `priceConfig + 主播 priceLevel` 计算,前端不可篡改。 - 内置默认配置见 `cloudfunctions/api/lib/db.js` 的 `DEFAULT_PRICE_CONFIG`。 首页「游戏分类」自动取自所有主播实际提供的游戏,与主播设置的价格相匹配。 ## 管理员订单数据中心(全平台聚合) 入口:「我的(管理员)→ 订单数据中心」。能力: - **平台流水概览**:累计流水、今日流水/订单、总订单 - **每日订单趋势**:近 14 天流水/单量柱状图(可切换) - **订单状态分布**:待支付/待服务/进行中/已完成/已取消 - **主播流水榜**:按总流水排名,显示今日/本月/总/订单数 - **单主播流水**:点主播进入,查看日/月/累计流水 + 近 30 天日趋势 ### 云函数 - `stats.admin` 总览;`stats.adminDaily` 每日趋势 - `stats.adminStreamers` 主播流水榜;`stats.streamerRevenue` 单主播日/月流水 ### 开发需求计划(数据模块迭代路线) 1. ✅ v1 基础聚合:总览 + 每日趋势 + 主播榜 + 单主播流水(已完成) 2. ✅ v2 时间筛选:日期区间选择(今日/近7/14/30天/本月/自定义)、主播按天/月聚合(已完成) 3. ✅ v2 导出:订单 CSV 导出(云函数生成带 BOM,下载并用表格打开)(已完成) 4. ✅ v3 打赏并入流水:主播收入/平台流水/主播榜均含打赏;主播收益含订单+打赏(已完成) 5. ✅ v3 提现对账与抽成:平台抽成配置、主播可提现余额、提现申请、管理员审核(通过/拒绝/打款)(已完成) 6. ⏳ v4 大屏与告警:关键指标看板、日流水异常波动提醒、提现到账通知 ## 支付说明(真实微信支付 · APIv2) 采用 **APIv2 + 查单确认** 方案:客户端下单 → 云函数 `order.pay` 调微信统一下单 → 客户端 `wx.requestPayment` 调起支付 → 支付成功后云函数 `order.confirmPay` 调查单接口验证并标记已支付。无需配置公开回调地址。 ### 配置商户凭证(必填) 1. 登录微信支付商户平台,确认已开通 **JSAPI 支付**,记下: - 商户号 `mch_id` - APIv2 密钥(32 位,商户平台「账户中心 → 账户API安全」设置) 2. 在微信开发者工具 → 云开发控制台 → 云函数 `api` → **配置 → 环境变量**,添加: - `MCH_ID` = 你的商户号 - `MCH_KEY` = 你的 APIv2 密钥 - (可选)`APP_ID` = 小程序 appid,留空则自动取调用者 appid 3. 保存后重新部署 `api` 云函数。 > ⚠️ 凭证属敏感信息,仅写入云函数环境变量,切勿提交到代码仓库。 ### 最低版本与权限 - 小程序需在管理后台「微信支付」处绑定商户号。 - 云函数 Node 运行时需支持 `https`/`crypto`(云开发默认 Node 12+,已满足)。 ### 相关文件 - `cloudfunctions/api/lib/wxpay.js` 统一下单/查单(纯 Node 内置模块实现) - `cloudfunctions/api/lib/order.js` 中 `pay` / `confirmPay` - `miniprogram/utils/pay.js` 前端支付流程封装 ### 切回模拟支付(可选) 如未取得商户号需临时测试:把 `miniprogram/utils/pay.js` 的 `startPay` 临时改为直接调 `order.confirmPay` 的占位逻辑即可,业务流程不变。 ## 目录结构 ``` cloudfunctions/api/ 业务云函数(auth/streamer/price/order/favorite/stats) miniprogram/ pages/ index/ 首页(轮播 + 瀑布流) streamer-detail/ 主播详情 order-confirm/ pay-result/ 下单与支付结果 mine/ 我的(角色分流) admin/ streamers | price-config | orders streamer/ income | orders | profile user/ orders | favorites components/ streamer-card | order-card | empty utils/ api | login | util ``` ## 参考文档 - [小程序云开发](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html)