小鹏商行
文章目录
小鹏商行 — WEB开发者文档
版本:v1.0.0 | 2026-08-31
一、项目概述
1.1 项目定位
小鹏商行是一个三角洲账号租赁撮合平台,平台作为中间方,为出租方和租用方提供交易撮合、资金托管、纠纷仲裁服务,收取 13% 交易手续费。
1.2 核心原则
| 原则 | 说明 |
|---|---|
| 双向押金 | 出租方与租用方均需缴纳押金,防止毁号/提前收回 |
| 零接触 | 用户之间无法以任何方式获取对方联系方式 |
| 纯结构化信息 | 账号发布仅允许填写表单字段,不上传图片、不输入自由文本 |
| 整号一口价 | 租金按整号计算,与租用时间长短无关 |
| 资金托管 | 押金由平台托管,交易正常结束后按规则分账 |
| 信用评分 | 交易完成后双方互评,累计信用分影响平台权益 |
| AI优先客服 | 每笔交易配备一次 AI 智能客服,不满意转人工 |
二、系统架构
2.1 技术选型
┌─────────────────────────────────────────────────┐
│ web前端 │
│ (原生框架 / Taro / uni-app) │
└─────────────────────┬───────────────────────────┘
│ HTTPS + WebSocket
┌─────────────────────▼───────────────────────────┐
│ API 网关层 │
│ (微信云托管 / 自建 Nginx+Kong) │
└─────────────────────┬───────────────────────────┘
│
┌─────────────────────▼───────────────────────────┐
│ 业务服务层 │
│ ┌──────────┬──────────┬──────────┬──────────┐ │
│ │ 用户服务 │ 交易服务 │ 账号服务 │ 客服服务 │ │
│ └──────────┴──────────┴──────────┴──────────┘ │
└─────────────────────┬───────────────────────────┘
│
┌─────────────────────▼───────────────────────────┐
│ 数据层 │
│ ┌──────────┬──────────┬──────────┬──────────┐ │
│ │ MySQL │ Redis │ COS │ ES │ │
│ └──────────┴──────────┴──────────┴──────────┘ │
└─────────────────────────────────────────────────┘
2.2 推荐技术栈
| 层级 | 技术 | 说明 |
|---|---|---|
| 前端 | 微信原生 + WeUI | 最小包体积,最佳兼容性 |
| 后端 | Node.js / Go | 微信云托管推荐 Node.js |
| 数据库 | MySQL 8.0 | 交易数据强一致性要求 |
| 缓存 | Redis | 会话、热点数据、分布式锁 |
| 文件存储 | 腾讯云 COS | 纠纷证据图片存储 |
| 搜索 | Elasticsearch | 账号列表多条件筛选 |
| 消息推送 | 微信订阅消息 | 扫码/解冻通知推送 |
| AI客服 | 微信对话平台 / 自建 LLM Agent | 智能客服能力 |
| 支付 | 微信支付(收付通) | 分账能力 |
| 管理后台 | Vue3 + Element Plus | 运营管理后台 |
三、功能模块详设
3.1 用户系统
3.1.1 注册/登录
- 仅支持微信一键登录(
wx.login+wx.getUserInfo) - 每个微信 OpenID 绑定唯一账户
- 首次登录自动创建账户,初始化钱包余额为 0,信用分 100
3.1.2 实名认证(必须)
- 出租方和租用方均需完成实名认证后方可进行交易
- 对接微信实名认证接口(首选)或手动输入身份证信息 + 人脸识别
- 未实名用户仅可浏览,不可发布/租赁
3.1.3 钱包系统
钱包余额 = 充值金额 + 交易收入 - 交易支出 - 提现金额
- 支持微信支付充值
- 押金从钱包余额中冻结,非直接扣除
- 交易完成后解冻并结算
3.1.4 信用评分体系
| 分值范围 | 等级 | 权益/限制 |
|---|---|---|
| 90-100 | 优秀 | 押金可降低至租金的 1.5 倍 |
| 70-89 | 良好 | 标准权益 |
| 50-69 | 一般 | 押金至少为租金的 2 倍;发布账号需人工审核 |
| 30-49 | 较差 | 押金至少为租金的 3 倍;限制发布数量 |
| 0-29 | 差 | 冻结交易权限 30 天 |
信用分变动规则:
| 事件 | 分数变动 |
|---|---|
| 正常完成一笔交易 | +2 |
| 获得对方 5 星好评 | +1 |
| 6小时内未响应扫码/解冻 | -10 |
| AI客服判定违约 | -20 |
| 人工客服判定违约 | -30 |
| 账号信息与发布严重不符 | -15 |
| 毁号 | -50(直接冻结) |
3.2 反联系方式泄露机制
核心策略:从源头消除隐患 — 账号发布完全不提供图片上传和自由文本输入。纠纷场景下的证据图片仅限客服后台查看,用户之间不可互相查看对方上传的图片。
3.2.1 各场景图片权限
| 场景 | 能否上传图片 | 谁可见 |
|---|---|---|
| 发布账号 | 不可 | — |
| 租用方结束租号确认 | 可以(游戏截图证明号完好) | 仅平台客服 |
| 出租方纠纷举证 | 可以(证据截图) | 仅平台客服 |
| 站内消息 | 不可 | — |
3.2.2 敏感信息保护清单
| 字段 | 存储方式 | 谁可见 |
|---|---|---|
| 联系电话 | AES-256 加密 | 仅平台后端 |
| 账号密码 | AES-256 加密 | 仅平台后端 |
| 微信号/QQ号 | 不支持填写 | — |
| 自由文本描述 | 不支持填写 | — |
| 纠纷证据图片 | COS私有存储 | 仅客服后台可见 |
| 账号截图 | 不支持上传 | — |
3.2.3 违规处罚
| 违规次数 | 处罚 |
|---|---|
| 第1次 | 警告 + 内容拦截 |
| 第2次 | 冻结账户 24 小时,信用分 -20 |
| 第3次 | 永久封号,已缴纳押金不退 |
3.3 出租流程(出租方)
┌─────────────┐ ┌──────────────┐ ┌─────────────┐ ┌─────────────┐
│ 点击"我要出租" │───▶│ 填写结构化表单 │───▶│ 选择预设标签 │───▶│ 系统自动计算 │
│ │ │ (纯字段选择) │ │ │ │ 租金+比例 │
└─────────────┘ └──────────────┘ └─────────────┘ └──────┬──────┘
│
▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 上架到大厅 │◀───│ 缴纳押金 │◀───│ 确认发布 │◀───│ 用户设定押金 │
│ │ │ (钱包冻结) │ │ │ │ (默认为2倍租金)│
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
3.3.1 账号发布表单(纯结构化字段)
基础信息区
| 字段 | 控件类型 | 校验规则 | 说明 |
|---|---|---|---|
| 游戏大区 | 单选:QQ区 / 微信区 | 必选 | — |
| 账号等级 | 数字输入 | 30-60 | — |
| 游戏段位 | 下拉选择 | 必选 | 见附录C段位表 |
| 能否帐密 | 单选:可提供 / 不可提供 | 必选 | — |
| 账号密码 | 文本输入 | 仅"可提供"时出现,6-30位 | AES-256加密,仅后端可见 |
| 联系电话 | 数字输入 | 11位手机号,必填 | 游戏绑定手机号,仅后台可见 |
| 可以联系的时间 | 时间范围选择器 | 必选 | 每日可接收验证码的时间段 |
| 登录方式 | 单选 | 仅"可提供帐密"时可选:帐密直登 / 扫码登录 / 均可;"不可提供"时固定为扫码登录 | — |
资源数据区
| 字段 | 控件类型 | 校验规则 | 影响比例 |
|---|---|---|---|
| 纯币数量 | 数字输入 | 40-2099(单位:M/百万) | ✓ 核心定价依据 |
| 体力等级 | 数字输入 | 1-10 | ✓ 非满级 → 比例+0.5 |
| 负重等级 | 数字输入 | 1-10 | ✓ 非满级 → 比例+0.5 |
| 保险格子 | 数字输入 | 0-9 | ✓ 非9格 → 比例+0.5 |
弹药与装备区(纳入租金计算)
| 字段 | 控件类型 | 校验规则 | 单价 |
|---|---|---|---|
| AW子弹 | 数字输入 | 0-2000 | 0.7元/发 |
| 其他红弹 | 数字输入 | 0-9999 | 7元/组(60发/组) |
| 6头 | 数字输入 | 0-999 | 2.5元/个 |
| 6甲 | 数字输入 | 0-999 | 2.5元/个 |
| 其他装备 | 多选列表 | 从预设装备列表中选择 | — |
皮肤资产区(影响比例)
| 字段 | 控件类型 | 可选皮肤 |
|---|---|---|
| 刀皮 | 多选卡片 | 赤霄、怜悯、影锋、黑海、北极星、坠星者 |
| 红皮 | 多选卡片 | 蚀金玫瑰、露娜联动皮肤、麦晓雯联动皮肤、麦晓雯水墨云图、威龙凌霄戍卫、吴彦祖 |
| 枪皮(砖皮) | 多选卡片 | KC17、MP7、M250、M7、K416、ASVAL |
出租设定区
| 字段 | 控件类型 | 校验规则 |
|---|---|---|
| 押金金额 | 数字输入 | 由出租方自定,系统默认=租金×2;必须 ≥ 租金。若定太低导致毁号赔偿不足,平台最多返还租用方押金的87% |
注意:租金是整号一口价,与租用天数无关。租用方下单时无需选择天数,租用时长由双方自行约定,平台不做限制。
3.3.2 预设标签系统
用户发布账号时从系统预设标签库中选择 3-8 个标签。
标签库
| 分类 | 可选标签 |
|---|---|
| 资产评级 | 💰富哥号 💎土豪号 🪙小资号 💸平民号 |
| 装备充裕度 | 🔫满配6套 🛡多6头6甲 🎯高红弹 💣满配AW弹 |
| 皮肤亮点 | 🔪多刀皮 🔴满红皮 🖌砖皮丰富 🌟赤霄 🌟怜悯 |
| 数据表现 | 🏆高段位 ⭐满级号 |
| 便利性 | 📱可帐密登录 🔓可扫码登录 ⏰时间灵活 🕐全天可租 |
3.3.3 租金定价算法
租金 = 纯币租金 + 装备折价,与租用时间无关。比例格式
1:N表示 1元 = N万纯币。
比例计算规则
初始比例:1:40
皮肤递减(各类型独立,累加生效):
刀皮 1款→-1 2款及以上→-1.5
红皮 1款→-1 2款及以上→-1.5
枪皮 1款→-1 2款及以上→-1.5
属性惩罚(非满配则比例增加→租金降低):
体力等级 < 10 → +0.5
负重等级 < 10 → +0.5
保险格子 < 9 → +0.5
封底:1:35
装备折价
| 装备 | 单价 | 计算方式 |
|---|---|---|
| AW子弹 | 0.7元/发 | × 数量 |
| 其他红弹 | 7元/组 | × ceil(数量÷60) |
| 6头 | 2.5元/个 | × 数量 |
| 6甲 | 2.5元/个 | × 数量 |
计算代码
function calculateRatio(accountData, skinCounts) {
let ratio = 40;
if (skinCounts.knife === 1) ratio -= 1;
else if (skinCounts.knife >= 2) ratio -= 1.5;
if (skinCounts.redSkin === 1) ratio -= 1;
else if (skinCounts.redSkin >= 2) ratio -= 1.5;
if (skinCounts.gunSkin === 1) ratio -= 1;
else if (skinCounts.gunSkin >= 2) ratio -= 1.5;
if (accountData.staminaLevel < 10) ratio += 0.5;
if (accountData.weightLevel < 10) ratio += 0.5;
if (accountData.insuranceSlots < 9) ratio += 0.5;
return Math.max(ratio, 35);
}
function calculateCoinRent(coinsInMillion, ratio) {
const coins = coinsInMillion * 1000000;
return Math.round(coins / (ratio * 10000) * 100) / 100;
}
function calculateEquipValue(data) {
let v = 0;
v += data.awBullets * 0.7;
v += Math.ceil(data.otherRedBullets / 60) * 7;
v += data.helmet6 * 2.5;
v += data.armor6 * 2.5;
return Math.round(v * 100) / 100;
}
计算示例
纯币3500M | 2刀皮+2红皮+1枪皮 | 体力10/负重10/保险9 | AW×200 红弹×180(3组) 6头×10 6甲×10
ratio = 40 - 1.5 - 1.5 - 1 = 36
纯币租金 = 35,000,000 / 360,000 = 97.22元
装备折价 = 200×0.7 + 3×7 + 10×2.5 + 10×2.5 = 211元
总租金 = 308.22元 → 出租方得 268.15元,平台得 40.07元
3.3.4 押金规则
| 规则 | 说明 |
|---|---|
| 设定方式 | 出租方自行设定 |
| 系统默认值 | 租金 × 2 |
| 下限 | ≥ 租金 |
| 上限 | ≤ 出租方钱包余额 |
| 毁号风控 | 租用方毁号时,平台最多将租用方押金的 87% 赔偿给出租方。若押金定太低导致赔偿不足,差额出租方自行承担 |
3.4 租用流程(租用方)
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│ 大厅浏览筛选 │───▶│ 查看账号详情 │───▶│ 确认租用 │───▶│ 支付押金 │
│ │ │ (含比例/租金) │ │ │ │ (钱包冻结) │
└─────────────┘ └─────────────┘ └─────────────┘ └──────┬───────┘
│
▼
┌─────────────┐ ┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ 结束租号 │◀───│ 进行游戏 │◀───│ 获取登录凭证 │◀───│ 系统发号 │
│(上传图+确认) │ │ │ │ (帐密/扫码) │ │ │
└──────┬──────┘ └─────────────┘ └──────────────┘ └─────────────┘
│
▼
进入"待确认"阶段
3.4.1 支付后取消
- 租用方支付押金后 20 分钟内可以无条件取消,押金全额退还
- 超过 20 分钟后不可主动取消,需等待出租结束或走纠纷流程
3.4.2 大厅筛选条件
| 筛选维度 | 控件类型 |
|---|---|
| 游戏大区 | 单选:全部 / QQ / 微信 |
| 段位范围 | 双滑块 |
| 租金范围 | 双滑块(元) |
| 纯币范围 | 双滑块(M) |
| 皮肤标签 | 多选徽章 |
| 资产标签 | 多选徽章 |
| 登录方式 | 多选 |
| 信用分下限 | 滑块(0-100) |
| 可用时间段 | 时间范围选择器 |
| 排序方式 | 租金从低到高 / 纯币从高到低 / 信用分从高到低 / 最新发布 |
3.5 登录与解冻流程
3.5.1 模式一:帐密直登
出租方提供帐密 → 平台解密 → 凭证页展示 → 租用方登录。租期结束凭证自动失效。
3.5.2 模式二:扫码登录
租用方点击"需要扫码登录"
→ 平台推送订阅消息给出租方
→ 出租方打开小程序处理
→ 若出租方 6小时内 不响应 → 租用方可取消订单,退还全部押金,出租方信用分 -10
3.5.3 解冻流程
租用方点击"需要解冻"
→ 平台推送订阅消息给出租方
→ 出租方完成解冻
→ 同样适用 6小时超时 规则
3.5.4 出租方不响应处罚
| 超时 | 处罚 |
|---|---|
| 6小时内未响应扫码/解冻请求 | 租用方可取消,押金全额退还 |
| 信用分 | -10 |
| 累计3次 | 限制发布权限 30 天 |
3.6 交易结束与确认流程
租用方点击"结束租号"
│
▼
┌──────────────────────────────────┐
│ 租用方上传游戏截图(证明号完好) │
│ 点击"确认结束" │
└──────────────┬───────────────────┘
│
▼
订单进入"待确认"状态
│
┌──────────┼──────────┐
▼ ▼
出租方确认无误 出租方有异议
│ │
▼ ▼
┌──────────┐ ┌──────────────┐
│ 双方互评 │ │ 出租方上传证据 │
│ 自动分账 │ │ 进入纠纷流程 │
└──────────┘ └──────────────┘
3.6.1 结束租号 — 租用方操作
- 租用方点击"结束租号"
- 必须上传至少 1 张游戏截图(展示账号当前状态——纯币余额、装备、皮肤等),最多9张
- 点击"确认结束"
- 订单进入"待确认"状态,通知出租方
3.6.2 出租方确认
- 出租方查看租用方上传的截图
- 确认无误 → 点击"确认完成" → 进入分账 + 互评
- 有异议 → 点击"有异议" → 出租方上传自己的证据截图 → 进入 AI 客服纠纷流程
3.6.3 互评系统
双方都确认完成后,进入互评:
┌────────────────────────────────────┐
│ 请为本次交易对方评分 │
│ │
│ ⭐⭐⭐⭐⭐ (5星) │
│ │
│ 评价标签(多选): │
│ □ 响应及时 □ 账号与描述一致 │
│ □ 沟通顺畅 □ 值得信赖 │
│ □ 响应慢 □ 账号与描述不符 │
│ │
│ [提交评价] [跳过] │
└────────────────────────────────────┘
| 规则 | 说明 |
|---|---|
| 评价非强制 | 可跳过 |
| 评价匿名 | 对方看不到是谁评的 |
| 信用分挂钩 | 获5星好评 → +1分;获负面标签 → -2分 |
| 评价时间窗口 | 交易完成后 7 天内可评 |
3.7 交易生命周期(完整)
┌──────────┐
│ 待出租 │ ← 出租方发布,押金冻结
└────┬─────┘
│ 租用方下单+支付押金
▼
┌──────────┐
│ 进行中 │ ← 发号→登录→游戏
└────┬─────┘
│ 租用方结束租号+上传截图
▼
┌──────────┐
│ 待确认 │
└────┬─────┘
│
┌────────────┼────────────┐
▼ ▼
双方确认完成 一方有异议
│ (上传证据)
▼ ▼
┌──────────┐ ┌──────────┐
│ 互评 │ │ AI客服介入│
│ 分账 │ └────┬─────┘
└──────────┘ │
┌──────────┼──────────┐
▼ ▼
AI解决 AI未解决
│ │
▼ ▼
分账/退款 ┌──────────┐
│ 人工客服 │
│ 仲裁处理 │
└──────────┘
3.7.1 退款与取消汇总
| 场景 | 结果 |
|---|---|
| 租用方支付押金后 20 分钟内取消 | 全额退还押金 |
| 出租方 6 小时不响应扫码/解冻 | 租用方可取消,全额退押金,出租方信用分 -10 |
| 出租方主动下架未出租的账号 | 解冻押金,退还 |
| 双方确认完成 | 正常分账(87%/13%) |
| AI/人工判定毁号 | 租用方押金的87%赔出租方 |
| AI/人工判定出租方违约 | 退还租用方全部押金,扣除出租方押金 |
3.8 AI 智能客服系统
3.8.1 触发条件
- 每笔交易自动获得 1 次 AI 客服会话额度
- 出租方在"待确认"阶段点击"有异议"
- 系统自动创建 AI 客服会话,同时附带双方上传的证据图片
3.8.2 AI 客服能力
| 能力 | 说明 |
|---|---|
| 读取交易快照 | 订单详情、账号发布时的数据 |
| 证据图片分析 | 对双方上传的截图做对比分析(纯币数量变化、装备增减等) |
| 纠纷分类 | 毁号 / 提前收回 / 账号不符 / 登录问题 / 其他 |
| 自动判责 | 规则引擎 + 证据对比 |
| 小额裁决 | 争议额 < 50元可直接执行 |
3.8.3 转人工条件
- 用户明确要求
- AI 置信度 < 70% 连续 3 轮
- 争议金额 > 200 元
- 涉及账号被盗等严重问题
- 会话超过 20 轮未解决
3.8.4 AI 客服 Prompt
你是"小K",游戏账号租赁平台AI客服。
规则:
- 出租方租期内收回账号 → 全额退租用方押金,扣出租方全部押金
- 租用方毁号(开挂/删装备/恶意消耗)→ 租用方押金87%赔出租方
- 账号信息与发布不符 → 退租用方,扣出租方50%押金
- 登录/解冻6小时不响应 → 租用方可取消,出租方信用分-10
- 双方有过错 → 按过错比例分摊
- 证据不足 → 转人工
四、数据库设计
4.1 ER 图(核心表)
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ user │ │ account │ │ order │ │ rating │
├──────────┤ ├──────────┤ ├──────────┤ ├──────────┤
│ id │ │ id │ │ id │ │ id │
│ credit │ │ owner_id │ │ account_id│ │ order_id │
│ ... │ │ rent │ │ renter_id │ │ score │
└──────────┘ │ ... │ │ status │ │ tags │
└──────────┘ │ ... │ └──────────┘
└──────────┘
┌──────────┐ ┌──────────┐ ┌──────────────┐
│ dispute │ │ evidence │ │ login_request│
├──────────┤ ├──────────┤ ├──────────────┤
│ id │ │ id │ │ id │
│ order_id │ │ dispute_id│ │ order_id │
│ status │ │ type │ │ request_type │
│ ... │ │ url │ │ status │
└──────────┘ │ uploader │ └──────────────┘
└──────────┘
4.2 核心表 SQL
-- ========================
-- 用户表
-- ========================
CREATE TABLE `user` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`open_id` VARCHAR(64) NOT NULL UNIQUE COMMENT '微信OpenID',
`union_id` VARCHAR(64) DEFAULT NULL,
`nickname` VARCHAR(64) NOT NULL,
`avatar_url` VARCHAR(512) DEFAULT NULL,
`real_name` VARCHAR(32) DEFAULT NULL,
`id_card` VARCHAR(256) DEFAULT NULL COMMENT 'AES加密',
`is_verified` TINYINT NOT NULL DEFAULT 0,
`balance` INT NOT NULL DEFAULT 0 COMMENT '钱包余额(分)',
`frozen_balance` INT NOT NULL DEFAULT 0 COMMENT '冻结金额(分)',
`credit_score` INT NOT NULL DEFAULT 100 COMMENT '信用分 0-100',
`subscribe_times` INT NOT NULL DEFAULT 0,
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '1正常 2冻结 3封禁',
`violation_count` INT NOT NULL DEFAULT 0,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX `idx_open_id` (`open_id`),
INDEX `idx_status` (`status`),
INDEX `idx_credit` (`credit_score`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ========================
-- 账号表
-- ========================
CREATE TABLE `account` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`owner_id` BIGINT UNSIGNED NOT NULL,
`game_zone` ENUM('qq','wechat') NOT NULL,
`level` INT NOT NULL COMMENT '30-60',
`rank` VARCHAR(32) NOT NULL,
`can_password` TINYINT NOT NULL DEFAULT 0,
`account_name` VARCHAR(256) DEFAULT NULL COMMENT 'AES加密',
`account_password` VARCHAR(256) DEFAULT NULL COMMENT 'AES加密',
`login_mode` ENUM('password','qrcode','both') NOT NULL DEFAULT 'qrcode',
`contact_phone` VARCHAR(256) DEFAULT NULL COMMENT 'AES加密,仅后端可见',
`available_from` TIME NOT NULL,
`available_to` TIME NOT NULL,
`coins` INT NOT NULL DEFAULT 0 COMMENT '纯币(单位M), 40-2099',
`stamina_level` INT NOT NULL DEFAULT 0 COMMENT '1-10',
`weight_level` INT NOT NULL DEFAULT 0 COMMENT '1-10',
`insurance_slots` INT NOT NULL DEFAULT 0 COMMENT '0-9',
`aw_bullets` INT NOT NULL DEFAULT 0 COMMENT '0-2000',
`other_red_bullets` INT NOT NULL DEFAULT 0,
`helmet_6` INT NOT NULL DEFAULT 0,
`armor_6` INT NOT NULL DEFAULT 0,
`other_equipment` JSON DEFAULT NULL,
`ratio` DECIMAL(4,1) NOT NULL,
`coin_rent` INT NOT NULL COMMENT '纯币租金(分)',
`equip_value` INT NOT NULL COMMENT '装备折价(分)',
`rent` INT NOT NULL COMMENT '总租金(分)',
`deposit` INT NOT NULL COMMENT '出租方押金(分)',
`status` ENUM('pending','listed','rented','offline') NOT NULL DEFAULT 'pending',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX `idx_owner` (`owner_id`),
INDEX `idx_status_zone` (`status`, `game_zone`),
INDEX `idx_rent` (`rent`),
INDEX `idx_coins` (`coins`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ========================
-- 账号-皮肤关联表
-- ========================
CREATE TABLE `account_skin` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`account_id` BIGINT UNSIGNED NOT NULL,
`skin_id` VARCHAR(32) NOT NULL,
`skin_type` ENUM('knife','red_skin','gun_skin') NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`account_id`) REFERENCES `account`(`id`) ON DELETE CASCADE,
INDEX `idx_account` (`account_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ========================
-- 账号-标签关联表
-- ========================
CREATE TABLE `account_tag` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`account_id` BIGINT UNSIGNED NOT NULL,
`tag_code` VARCHAR(32) NOT NULL,
FOREIGN KEY (`account_id`) REFERENCES `account`(`id`) ON DELETE CASCADE,
INDEX `idx_account` (`account_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ========================
-- 皮肤预设库
-- ========================
CREATE TABLE `skin_library` (
`id` VARCHAR(32) PRIMARY KEY,
`name` VARCHAR(64) NOT NULL,
`type` ENUM('knife','red_skin','gun_skin') NOT NULL,
`is_active` TINYINT NOT NULL DEFAULT 1,
`sort_order` INT NOT NULL DEFAULT 0,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `skin_library` (`id`, `name`, `type`, `sort_order`) VALUES
('knife_chixiao', '赤霄', 'knife', 1),
('knife_lianmin', '怜悯', 'knife', 2),
('knife_yingfeng', '影锋', 'knife', 3),
('knife_heihai', '黑海', 'knife', 4),
('knife_beijixing', '北极星', 'knife', 5),
('knife_zhuixingzhe', '坠星者', 'knife', 6),
('red_shijinmeigui', '蚀金玫瑰', 'red_skin', 1),
('red_luna', '露娜联动皮肤', 'red_skin', 2),
('red_maixiaowen1', '麦晓雯联动皮肤', 'red_skin', 3),
('red_maixiaowen2', '麦晓雯水墨云图', 'red_skin', 4),
('red_weilong', '威龙凌霄戍卫', 'red_skin', 5),
('red_wuyanzu', '吴彦祖', 'red_skin', 6),
('gun_kc17', 'KC17', 'gun_skin', 1),
('gun_mp7', 'MP7', 'gun_skin', 2),
('gun_m250', 'M250', 'gun_skin', 3),
('gun_m7', 'M7', 'gun_skin', 4),
('gun_k416', 'K416', 'gun_skin', 5),
('gun_asval', 'ASVAL', 'gun_skin', 6);
-- ========================
-- 标签预设库
-- ========================
CREATE TABLE `tag_library` (
`code` VARCHAR(32) PRIMARY KEY,
`name` VARCHAR(32) NOT NULL,
`category` VARCHAR(32) NOT NULL,
`icon` VARCHAR(8) DEFAULT NULL,
`color` VARCHAR(7) NOT NULL DEFAULT '#1890FF',
`auto_rule` JSON DEFAULT NULL,
`is_active` TINYINT NOT NULL DEFAULT 1,
`sort_order` INT NOT NULL DEFAULT 0,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ========================
-- 订单表
-- ========================
CREATE TABLE `order` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`order_no` VARCHAR(32) NOT NULL UNIQUE,
`account_id` BIGINT UNSIGNED NOT NULL,
`owner_id` BIGINT UNSIGNED NOT NULL,
`renter_id` BIGINT UNSIGNED NOT NULL,
`ratio` DECIMAL(4,1) NOT NULL,
`coin_rent` INT NOT NULL COMMENT '纯币租金(分)',
`equip_value` INT NOT NULL COMMENT '装备折价(分)',
`total_rent` INT NOT NULL COMMENT '总租金(分)',
`owner_deposit` INT NOT NULL,
`renter_deposit` INT NOT NULL,
`platform_fee` INT NOT NULL COMMENT '平台手续费(分)',
`login_mode` ENUM('password','qrcode') NOT NULL,
`status` ENUM('pending','active','confirming','done','disputed','cancelled') NOT NULL DEFAULT 'pending',
`cancel_reason` VARCHAR(200) DEFAULT NULL COMMENT '取消原因',
`owner_frozen_id` BIGINT UNSIGNED DEFAULT NULL,
`renter_frozen_id` BIGINT UNSIGNED DEFAULT NULL,
`start_time` DATETIME DEFAULT NULL,
`end_time` DATETIME DEFAULT NULL,
`owner_confirm_at` DATETIME DEFAULT NULL,
`renter_confirm_at` DATETIME DEFAULT NULL,
`ai_session_id` BIGINT UNSIGNED DEFAULT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX `idx_owner` (`owner_id`),
INDEX `idx_renter` (`renter_id`),
INDEX `idx_status` (`status`),
INDEX `idx_created` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ========================
-- 证据/图片表(统一管理结束确认图+纠纷证据图)
-- ========================
CREATE TABLE `evidence` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`order_id` BIGINT UNSIGNED NOT NULL,
`dispute_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '纠纷ID(纠纷证据时关联)',
`uploader_id` BIGINT UNSIGNED NOT NULL COMMENT '上传者',
`scene` ENUM('end_confirm','dispute') NOT NULL COMMENT '场景:结束确认/纠纷举证',
`url` VARCHAR(512) NOT NULL COMMENT 'COS私有存储URL',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`order_id`) REFERENCES `order`(`id`),
INDEX `idx_order` (`order_id`),
INDEX `idx_dispute` (`dispute_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ========================
-- 评价表
-- ========================
CREATE TABLE `rating` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`order_id` BIGINT UNSIGNED NOT NULL,
`from_user_id` BIGINT UNSIGNED NOT NULL COMMENT '评价方',
`to_user_id` BIGINT UNSIGNED NOT NULL COMMENT '被评价方',
`score` TINYINT NOT NULL COMMENT '1-5星',
`tags` JSON DEFAULT NULL COMMENT '评价标签列表',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`order_id`) REFERENCES `order`(`id`),
UNIQUE KEY `uk_order_from` (`order_id`, `from_user_id`),
INDEX `idx_to_user` (`to_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ========================
-- 登录/解冻请求表
-- ========================
CREATE TABLE `login_request` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`order_id` BIGINT UNSIGNED NOT NULL,
`request_type` ENUM('scan_login','unfreeze') NOT NULL,
`status` ENUM('pending','processing','completed','timeout','cancelled') NOT NULL DEFAULT 'pending',
`notify_sent_at` DATETIME DEFAULT NULL,
`responded_at` DATETIME DEFAULT NULL,
`expire_at` DATETIME DEFAULT NULL COMMENT '超时=创建后6小时',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`order_id`) REFERENCES `order`(`id`),
INDEX `idx_order` (`order_id`),
INDEX `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ========================
-- 钱包流水表
-- ========================
CREATE TABLE `wallet_transaction` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`user_id` BIGINT UNSIGNED NOT NULL,
`type` ENUM('recharge','freeze','unfreeze','deduct','income','withdraw','refund') NOT NULL,
`amount` INT NOT NULL COMMENT '(分)正=入账 负=出账',
`balance_before` INT NOT NULL,
`balance_after` INT NOT NULL,
`order_id` BIGINT UNSIGNED DEFAULT NULL,
`remark` VARCHAR(200) DEFAULT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
INDEX `idx_user` (`user_id`),
INDEX `idx_order` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ========================
-- 纠纷表
-- ========================
CREATE TABLE `dispute` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`order_id` BIGINT UNSIGNED NOT NULL,
`initiator` ENUM('owner','renter') NOT NULL,
`dispute_type` ENUM('account_damage','early_recall','overtime','mismatch','login_issue','other') NOT NULL,
`description` VARCHAR(500) NOT NULL,
`status` ENUM('ai_processing','ai_resolved','escalated','resolved') NOT NULL DEFAULT 'ai_processing',
`ai_result` JSON DEFAULT NULL,
`human_result` JSON DEFAULT NULL,
`final_owner_amount` INT DEFAULT NULL,
`final_renter_amount` INT DEFAULT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`resolved_at` DATETIME DEFAULT NULL,
FOREIGN KEY (`order_id`) REFERENCES `order`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ========================
-- AI客服会话表
-- ========================
CREATE TABLE `ai_session` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`order_id` BIGINT UNSIGNED NOT NULL,
`status` ENUM('active','resolved','escalated','expired') NOT NULL DEFAULT 'active',
`chat_log` JSON DEFAULT NULL,
`ai_judgment` JSON DEFAULT NULL,
`confidence` DECIMAL(3,2) DEFAULT NULL,
`turn_count` INT NOT NULL DEFAULT 0,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`order_id`) REFERENCES `order`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ========================
-- 人工客服工单表
-- ========================
CREATE TABLE `support_ticket` (
`id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`dispute_id` BIGINT UNSIGNED NOT NULL,
`ai_session_id` BIGINT UNSIGNED NOT NULL,
`assignee_id` BIGINT UNSIGNED DEFAULT NULL,
`status` ENUM('pending','processing','resolved','closed') NOT NULL DEFAULT 'pending',
`resolution` VARCHAR(1000) DEFAULT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`resolved_at` DATETIME DEFAULT NULL,
FOREIGN KEY (`dispute_id`) REFERENCES `dispute`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
五、API 接口设计
5.1 接口规范
- Base URL:
https://api.aikun.com/v1 - 认证方式: Bearer Token (JWT)
- 金额单位:分
- 纯币单位:M(百万)
- 请求/响应格式: JSON
5.2 核心接口列表
5.2.1 用户模块
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /user/login |
微信登录 |
| POST | /user/verify |
实名认证 |
| GET | /user/profile |
个人信息(含信用分) |
| GET | /user/wallet |
钱包余额 |
| POST | /user/wallet/recharge |
充值 |
| GET | /user/wallet/transactions |
钱包流水 |
| POST | /user/subscribe |
授权订阅消息 |
| GET | /user/ratings |
查看某用户的评价记录 |
5.2.2 系统数据模块
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /system/ranks |
段位枚举 |
| GET | /system/skins |
皮肤库 |
| GET | /system/tags |
标签库 |
| GET | /system/equipment-list |
预设装备列表 |
5.2.3 账号模块
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /account/create |
发布账号 |
| PUT | /account/:id |
修改账号 |
| DELETE | /account/:id |
下架(解冻押金) |
| GET | /account/:id |
账号详情 |
| GET | /account/list |
大厅列表 |
| GET | /account/my-list |
我发布的账号 |
5.2.4 订单模块
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /order/create |
创建订单 |
| POST | /order/:id/pay |
支付押金 |
| POST | /order/:id/cancel |
取消订单(20分钟内/6小时超时) |
| GET | /order/:id/credential |
获取登录凭证 |
| POST | /order/:id/request-scan |
请求扫码登录 |
| POST | /order/:id/request-unfreeze |
请求解冻 |
| POST | /order/:id/owner-handle-request |
出租方处理请求 |
| POST | /order/:id/end-rental |
租用方结束租号(上传截图+确认) |
| POST | /order/:id/owner-confirm |
出租方确认完成 |
| POST | /order/:id/owner-dispute |
出租方发起异议(上传证据) |
| POST | /order/:id/rate |
提交评价 |
| GET | /order/:id |
订单详情 |
| GET | /order/my-orders |
我的订单列表 |
5.2.5 客服模块
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /cs/ai/start |
开启AI客服会话 |
| WS | /cs/ai/chat/:sessionId |
AI客服对话 |
| POST | /cs/ai/terminate |
结束AI会话 |
| POST | /cs/escalate |
转人工客服 |
5.3 关键接口示例
POST /order/:id/end-rental — 租用方结束租号
// Request (multipart/form-data)
{
"images": ["file1.png", "file2.png"] // 至少1张游戏截图
}
// Response
{
"code": 0,
"data": {
"order_id": 20001,
"status": "confirming",
"message": "已提交结束确认,等待出租方确认"
}
}
POST /order/:id/owner-dispute — 出租方发起异议
// Request (multipart/form-data)
{
"dispute_type": "account_damage",
"description": "账号的AW子弹少了50发,6头少了3个",
"images": ["evidence1.png", "evidence2.png"]
}
// Response
{
"code": 0,
"data": {
"dispute_id": 30001,
"ai_session_id": 40001,
"status": "ai_processing"
}
}
POST /order/:id/rate — 提交评价
// Request
{
"score": 5,
"tags": ["responsive", "accurate"]
}
// Response
{
"code": 0,
"data": { "message": "评价成功" }
}
六、前端页面结构
6.1 页面路由
├── pages/
│ ├── index/ # 大厅首页
│ ├── account/
│ │ ├── detail/ # 账号详情(含出租方信用分)
│ │ ├── publish/ # 发布账号(纯表单)
│ │ └── my-list/ # 我发布的账号
│ ├── order/
│ │ ├── confirm/ # 确认订单
│ │ ├── detail/ # 订单详情
│ │ ├── credential/ # 登录凭证页
│ │ ├── end-rental/ # 结束租号(上传截图+确认)
│ │ ├── dispute/ # 纠纷处理(上传证据+AI对话)
│ │ ├── rate/ # 评价页
│ │ └── my-orders/ # 我的订单列表
│ ├── user/
│ │ ├── center/ # 个人中心(含信用分)
│ │ ├── wallet/ # 我的钱包
│ │ ├── verify/ # 实名认证
│ │ ├── ratings/ # 评价记录
│ │ └── settings/ # 设置
│ └── cs/
│ ├── ai-chat/ # AI客服对话
│ └── ticket/ # 人工工单详情
6.2 大厅列表卡片 UI
┌──────────────────────────────────────────┐
│ │ 黑鹰 · QQ区 ¥308.22 │
│ │ 💰富哥号 🔪多刀皮 📱可帐密 │
│ │ 纯币3500M │ 比例1:36 │ Lv.60 │
│ │ 刀皮: 赤霄 怜悯 │
│ │ 红皮: 蚀金玫瑰 露娜联动 │
│ │ 砖皮: K416 │
│ │ AW×200 红弹×3组 6头×10 6甲×10 │
│ │ 🔒押金¥616 ⭐信用100 🕐08-02 │
└──────────────────────────────────────────┘
6.3 结束租号页(租用方)
┌──────────────────────────────────────────┐
│ 结束租号 — AK2026050700001 │
├──────────────────────────────────────────┤
│ 请上传游戏截图(证明账号完好) │
│ ┌────┐ ┌────┐ ┌────┐ │
│ │ + │ │ 📷 │ │ │ │
│ └────┘ └────┘ └────┘ │
│ (至少上传1张,最多9张) │
│ │
│ 上传要求: │
│ · 需包含纯币余额页面截图 │
│ · 需包含装备/皮肤页面截图 │
│ │
│ ⚠️ 请确认账号状态与租用时一致 │
│ │
│ ┌──────────────────────────────────┐ │
│ │ 确认结束租号 │ │
│ └──────────────────────────────────┘ │
└──────────────────────────────────────────┘
七、运营管理后台
7.1 总体架构
┌─────────────────────────────────────────────────┐
│ Vue3 + Element Plus │
│ 管理后台前端 │
└─────────────────────┬───────────────────────────┘
│ 独立API (/admin/v1)
┌─────────────────────▼───────────────────────────┐
│ 后台API服务(可共用业务服务) │
│ ┌──────────┬──────────┬──────────┬──────────┐ │
│ │ 用户管理 │ 账号审核 │ 订单监控 │ 纠纷仲裁 │ │
│ └──────────┴──────────┴──────────┴──────────┘ │
│ ┌──────────┬──────────┬──────────┬──────────┐ │
│ │ 财务对账 │ 配置管理 │ 数据看板 │ 操作日志 │ │
│ └──────────┴──────────┴──────────┴──────────┘ │
└─────────────────────────────────────────────────┘
7.2 功能模块
7.2.1 用户管理
| 功能 | 说明 |
|---|---|
| 用户列表 | 搜索(昵称/手机号/ID)、筛选(状态/信用分范围)、排序 |
| 用户详情 | 基本信息、实名状态、钱包、信用分变动历史、交易记录 |
| 冻结/解封 | 手动冻结/解封用户,填写原因(记录操作日志) |
| 信用分调整 | 手动加减信用分(需审批) |
7.2.2 账号审核
| 功能 | 说明 |
|---|---|
| 审核队列 | 信用分 < 50 的用户发布账号需人工审核 |
| 异常标记 | 自动检测异常值(偏离均值 3σ),标红提醒 |
| 强制下架 | 违规账号强制下架,附带原因 |
| 审核通过/驳回 | 驳回时需填写原因,通知用户修改 |
7.2.3 订单监控
| 功能 | 说明 |
|---|---|
| 实时订单列表 | 按状态筛选、搜索订单号/用户 |
| 异常订单标记 | 长期未确认、多次扫码请求超时等 |
| 订单详情 | 完整订单信息 + 结束确认截图 + 纠纷记录 |
| 强制介入 | 特殊情况手动结束订单、手动分账/退款 |
7.2.4 纠纷仲裁(人工客服工作台)
┌─────────────────────────────────────────────────┐
│ 工单 #TK001 [处理中] 客服:张三 │
├─────────────────────────────────────────────────┤
│ 左侧:AI会话记录 右侧:工单信息 │
│ ┌──────────────────┐ ┌────────────────────┐ │
│ │ AI: 经分析... │ │ 订单号: AK2026... │ │
│ │ 用户: 我不同意 │ │ 纠纷类型: 毁号 │ │
│ │ AI: 建议转人工 │ │ 争议金额: ¥211 │ │
│ │ ... │ │ │ │
│ └──────────────────┘ │ [租用方截图] │ │
│ │ [出租方截图] │ │
│ │ │ │
│ │ 裁决: │ │
│ │ ○ 租用方全责 │ │
│ │ ○ 出租方全责 │ │
│ │ ○ 双方分摊: [ ]% │ │
│ │ │ │
│ │ [提交裁决] │ │
│ └────────────────────┘ │
└─────────────────────────────────────────────────┘
| 功能 | 说明 |
|---|---|
| 工单队列 | 待处理/处理中/已解决 |
| 证据查看 | 查看双方上传的所有截图(仅后台可见) |
| AI辅助 | 展示AI分析结果和建议,辅助人工判断 |
| 裁决执行 | 裁决后自动执行分账/退款 |
| 工单分配 | 按客服负载自动分配或手动指派 |
7.2.5 财务管理
| 功能 | 说明 |
|---|---|
| 交易流水 | 所有钱包交易记录,支持导出 |
| 平台收入 | 手续费汇总,按日/周/月统计 |
| 对账报表 | 每日自动对账,异常差额告警 |
| 提现审核 | 用户提现审批(大额 > 500元人工审核) |
| 退款操作 | 特殊情况手动退款(需二级审批) |
7.2.6 系统配置
| 配置项 | 说明 |
|---|---|
| 定价参数 | 基础比例(40)、封底比例(35)、皮肤递减值、属性惩罚值、装备单价 |
| 规则参数 | 平台手续费率(13%)、取消窗口(20分钟)、扫码超时(6小时)、AI会话上限(20轮) |
| 皮肤库管理 | 增删改皮肤(上下架、排序) |
| 标签库管理 | 增删改标签、调整自动推荐规则 |
| 装备列表 | 管理"其他装备"多选项 |
7.2.7 数据看板
| 指标 | 说明 |
|---|---|
| 核心指标 | 今日交易额、今日订单数、平台收入、活跃用户数 |
| 趋势图 | 交易额/订单数 按日/周/月折线图 |
| 纠纷率 | 纠纷订单占比、AI解决率、人工解决率 |
| 用户分析 | 新注册、实名率、信用分分布 |
| 热门账号 | 上架最多的大区、段位分布、平均租金 |
7.2.8 操作日志
所有后台操作(冻结用户、强制下架、手动分账等)记录日志:操作人、操作时间、操作类型、操作内容、IP。
7.3 后台权限模型
| 角色 | 权限范围 |
|---|---|
| 超级管理员 | 全部权限 + 系统配置 |
| 客服人员 | 纠纷仲裁、用户查看、订单查看 |
| 财务人员 | 财务对账、提现审核、退款操作 |
| 运营人员 | 账号审核、皮肤/标签库管理、数据看板 |
八、安全设计
8.1 资金安全
| 措施 | 说明 |
|---|---|
| 分布式锁 | 资金操作加 Redis 锁 |
| 流水不可逆 | wallet_transaction 仅 INSERT |
| 对账机制 | 每日自动对账 |
| 提现审核 | 大额手动审批 |
| 退款二级审批 | 后台手动退款需两人确认 |
8.2 账号信息安全
| 措施 | 说明 |
|---|---|
| 帐密/电话 AES-256 加密 | 密钥仅后端持有 |
| 凭证页防截屏 | 可选 |
| 凭证过期自动失效 | — |
| 证据图片 COS 私有存储 | 仅客服后台可查看 |
| 零自由文本 | 杜绝夹带联系方式 |
九、开发路线图
Phase 1 — MVP(4-6周)
| 周次 | 内容 |
|---|---|
| 第1周 | 项目搭建、用户登录、实名认证 |
| 第2周 | 皮肤库+标签库初始化、账号发布表单、比例定价算法+装备折价 |
| 第3周 | 大厅列表、账号详情 |
| 第4周 | 订单创建、押金支付、登录凭证页、取消/超时机制 |
| 第5周 | 结束租号(上传截图+确认)、分账、纠纷入口 |
| 第6周 | 测试、修Bug、内测上线 |
Phase 2 — 客服+信用(2-3周)
| 周次 | 内容 |
|---|---|
| 第7周 | AI客服对话 + WebSocket |
| 第8周 | AI判责规则引擎、互评系统 |
| 第9周 | 人工客服工单、后台纠纷仲裁界面 |
Phase 3 — 管理后台+优化(3-4周)
| 周次 | 内容 |
|---|---|
| 第10周 | 后台框架搭建、用户管理、账号审核 |
| 第11周 | 订单监控、财务对账、系统配置 |
| 第12周 | 数据看板、操作日志、权限体系 |
| 第13周 | 全面测试、优化、正式上线 |
十、附录
A. 状态码规范
| 状态码 | 说明 |
|---|---|
| 0 | 成功 |
| 1001 | 参数错误 |
| 1002 | 未登录 |
| 1003 | 未实名认证 |
| 1004 | 余额不足 |
| 1005 | 账号状态异常 |
| 1006 | 订单状态不允许此操作 |
| 1007 | 敏感信息拦截 |
| 1008 | AI客服次数已用完 |
| 1009 | 数值超出合理范围 |
| 1010 | 凭证已失效 |
| 1011 | 登录请求超时 |
| 1012 | 取消时间窗口已过 |
| 1013 | 信用分不足 |
| 2001 | 服务器内部错误 |
B. 枚举值定义
账号状态: pending / listed / rented / offline
订单状态: pending / active / confirming / done / disputed / cancelled
纠纷状态: ai_processing / ai_resolved / escalated / resolved
纠纷类型: account_damage / early_recall / overtime / mismatch / login_issue / other
登录方式: password / qrcode / both
证据场景: end_confirm(结束确认) / dispute(纠纷举证)
皮肤类型: knife / red_skin / gun_skin
钱包流水: recharge / freeze / unfreeze / deduct / income / withdraw / refund
C. 段位枚举
| 编码 | 显示名 |
|---|---|
bronze |
青铜 |
silver |
白银 |
gold |
黄金 |
platinum |
铂金 |
diamond |
钻石 |
black_eagle |
黑鹰 |
delta_peak |
三角洲巅峰 |
D. 皮肤预设清单
| 类型 | 皮肤 |
|---|---|
| 刀皮 | 赤霄、怜悯、影锋、黑海、北极星、坠星者 |
| 红皮 | 蚀金玫瑰、露娜联动皮肤、麦晓雯联动皮肤、麦晓雯水墨云图、威龙凌霄戍卫、吴彦祖 |
| 枪皮 | KC17、MP7、M250、M7、K416、ASVAL |
E. 评价标签
| 正面标签 | 负面标签 |
|---|---|
| 响应及时 | 响应慢 |
| 账号与描述一致 | 账号与描述不符 |
| 沟通顺畅 | 态度差 |
| 值得信赖 | 不靠谱 |
文章作者
上次更新 2026-08-31