Files
hfb_sys/docs/project-plan.md
yml2213 3631e70321 实现结账流程:替换旧归还逻辑为完整结账-修正-争议流程
- 新增 order_checkouts 表,支持结账明细(消耗/押金扣除/退回/号主入账)
- 租客发起结账 → 号主确认 → 已完成(正常路径)
- 号主修改结账 → 租客确认修正 → 已完成(修正路径)
- 结账阶段任一方发起争议 → 后台仲裁 → 已完成/已关闭/异常(争议路径)
- 争议模块适配结账争议类型,仲裁结果新增 mark_abnormal
- 超时任务适配新的 pending_checkout_confirm 状态
- 前端结账明细面板、发起结账/确认/修正/拒绝表单全部实现
- 移除旧的 SubmitReturn/ConfirmReturn 接口
2026-05-24 02:17:36 +08:00

32 KiB

哈夫币租号平台项目计划

1. 项目定位与业务边界

本项目是面向《三角洲行动》账号租赁场景的前后端分离平台,核心能力包括手机号登录、实名认证、号主发布租号、租客下单、账号交接、租期归还、押金结算、纠纷仲裁和后台审核管理。

哈夫币在本系统中只被定义为游戏账号内资产,不是平台自发行虚拟币,不提供平台内铸币、转赠、交易、提现或链上能力。平台只记录账号资产描述、租赁订单、押金、租金、结算流水和纠纷处理结果。

一期不做自动上号器、不自动改密、不强制踢下线、不绕过游戏安全机制,也不开发外挂、盗号、破解、规避封禁等能力。账号租赁可能涉及游戏官方协议、账号安全、未成年人保护、支付合规和纠纷处理风险,上线前需要补充用户协议、隐私政策、交易规则和合规评估。

2. 技术栈与开发部署方式

前端技术栈:

  • Vue 3
  • TypeScript
  • Vite
  • Element Plus
  • Pinia
  • Vue Router
  • Axios

后端技术栈:

  • Go
  • Gin
  • GORM
  • MySQL 8
  • Redis
  • JWT
  • Casbin
  • Zap 或 Zerolog
  • Viper

开源借鉴策略:

  • 项目路线为借鉴成熟开源后台的通用工程能力,租号业务核心从头自研。
  • 可重点参考 gin-vue-admingo-admin 这类 Go/Vue 后台项目的 JWT、Casbin、RBAC、菜单权限、Swagger、GORM 分层、配置管理、日志、文件上传和基础 CRUD 组织方式。
  • 不直接二开租号源码,不把未知项目的交易、资金和风控逻辑作为基础。
  • 不直接接入未知质量的租号系统源码,不复用不可信的订单、资金、押金、交接或仲裁逻辑。
  • 必须自研的核心模块包括租号发布、订单状态机、账号交接、押金冻结、资金流水、纠纷仲裁、风控规则和哈夫币资产快照。
  • 后台 UI 布局、菜单管理、权限管理可以参考开源项目;用户端体验、号主端流程和租号业务页面从头设计。

文件存储:

  • 开发环境使用 MinIO。
  • 生产环境使用阿里云 OSS 或腾讯云 COS。
  • 文件主要用于账号资产截图、租赁前后凭证、纠纷证据、后台公告图片、实名认证服务回执或材料引用。
  • 一期不要求平台长期保存身份证原图,实名认证资料优先交由第三方实名服务处理。

开发方式:

  • 本机直接运行 Go 后端,便于调试和热重载。
  • 本机直接运行 Vue 前端,便于页面开发。
  • Docker Compose 启动 MySQL、Redis、MinIO。
  • 后端可使用 air 做本地热重载。
  • 前端使用 pnpm dev 本地开发。

生产部署:

  • 后端构建 Docker 镜像部署。
  • 前端构建静态资源后由 Nginx 托管。
  • MySQL 生产优先使用云数据库。
  • Redis 生产优先使用云 Redis。
  • 文件存储生产使用 OSS/COS。
  • Nginx 负责 HTTPS、静态资源、反向代理和基础限流。

3. 三角洲行动特有规则

哈夫币填报:

  • 一期不接游戏 API 同步,哈夫币数量由号主手动填报。
  • 号主发布时必须上传租前资产截图,作为哈夫币数量、段位、资产描述和纠纷仲裁依据。
  • game_accounts.haf_coin_amount 表示号主最近一次填报值,不代表实时值。
  • 下单时必须生成订单账号快照,记录哈夫币数量、区服、登录平台、段位、赛季限定资产、账号截图和资产描述。
  • 租赁前后哈夫币差异以订单快照、交接记录、租前租后截图和客服仲裁为准。

安全验证:

  • 如果账号登录需要安全锁、二次验证、手机验证码或设备确认,由号主在交接阶段手动配合。
  • 号主超时未配合安全验证时,租客可取消订单或发起申诉。
  • 平台不保存游戏账号密码,不代收验证码,不绕过游戏登录、二次验证、安全锁或风控机制。

区服与资产:

  • 区服资产默认隔离,商品必须明确区服。
  • 不同区服的哈夫币、段位和资产不合并展示。
  • 跨区服租赁不作为一期核心能力。
  • 赛季限定资产以标签和资产说明形式展示,可作为号主定价和押金建议参考,但一期不参与自动估值。

4. 核心业务模块

用户与认证:

  • 手机号短信验证码登录。
  • JWT 登录态。
  • 用户角色包括租客、号主、管理员相关角色。
  • 支持实名状态、风控状态、冻结状态。

实名认证:

  • 接入阿里云实人认证或腾讯云身份认证。
  • 用户发起认证后,平台记录认证渠道、认证流水号、认证状态和脱敏结果。
  • 未实名用户不能发布租号,后台可配置是否限制未实名租客下单。

租号发布:

  • 号主实名后可发布账号。
  • 发布内容包括游戏、区服、平台、段位、哈夫币数量、账号资产描述、截图、租金、押金、租期范围。
  • 商品发布后进入待审核状态,后台审核通过后才能上架。

订单租赁:

  • 租客选择商品和租期后创建订单。
  • 系统锁定商品库存,避免同一账号被重复出租。
  • 订单流转覆盖待确认、待交接、租赁中、待号主确认结账、待租客确认修正、结账争议中、已完成、已取消、申诉中。

钱包账务:

  • 一期先做账务模型,不直接接真实支付和提现。
  • 系统记录租金、押金、冻结、解冻、扣款、退款、结算等流水。
  • 后续可接微信支付、支付宝支付、人工打款或第三方提现通道。

后台管理:

  • 用户管理。
  • 实名状态查看。
  • 商品审核。
  • 订单管理。
  • 纠纷仲裁。
  • 资金流水。
  • 风控名单。
  • 审计日志。

5. 账号交接与回收流程

一期采用号主手动交接模式,平台不保存游戏账号密码,不托管明文账号凭据。

交接流程:

  1. 租客创建订单,系统校验商品状态、租期、押金和余额账务状态。
  2. 订单确认后,商品进入锁定状态,订单进入待交接。
  3. 号主在订单内提交交接说明,例如登录方式、注意事项、联系说明或外部交接备注。
  4. 租客确认收到账号后,订单进入租赁中,并记录租赁开始时间和预计结束时间。
  5. 租期即将结束时,系统通过站内信和短信提醒租客完成使用并发起结账。
  6. 租客发起结账,填写使用结束说明、消耗金额、哈夫币消耗量和必要证据。
  7. 号主确认账号状态无误后直接完成结算,或修改结账金额后交由租客确认。
  8. 租客同意修正后订单完成;拒绝修正或任一方对交接、使用、结账、资产变化有异议时,订单进入申诉仲裁。

回收边界:

  • 平台不自动修改账号密码。
  • 平台不强制踢下线。
  • 平台不绕过游戏登录、二次验证、安全锁或风控机制。
  • 平台不承诺技术性收回账号,只通过订单规则、押金、证据和仲裁处理争议。

超时机制:

  • 号主待交接超时:订单进入待交接后,默认 30 分钟未提交交接说明,租客可取消订单或发起申诉。
  • 租客确认收号超时:号主提交交接说明后,默认 30 分钟未确认收号,订单进入客服介入,不自动开始租期。
  • 租客结账超时:超过租期结束时间仍未发起结账,系统提醒后进入逾期中,号主可发起申诉。
  • 号主确认结账超时:租客发起结账后,默认 2 小时未确认,订单进入客服复核。
  • 所有超时阈值必须进入 system_configs 管理,后台可调整。

订单状态机:

From To 触发者 条件
待确认 待交接 系统 订单确认,商品锁定,账务校验通过
待确认 已取消 租客/系统 租客主动取消或确认超时
待交接 待收号确认 号主 号主提交交接说明
待交接 已取消 租客 号主交接超时且未进入申诉
待交接 申诉中 租客/号主 交接争议或安全验证无法完成
待收号确认 租赁中 租客 租客确认收到账号并可正常登录
待收号确认 申诉中 租客/系统 租客确认超时、无法登录或描述不符
租赁中 逾期中 系统 超过租期结束时间仍未发起结账
租赁中 待号主确认结账 租客 租客发起结账和租后凭证
逾期中 待号主确认结账 租客 租客补交结账申请
逾期中 申诉中 号主/系统 逾期未归还或疑似资产损失
待号主确认结账 已完成 号主 号主确认结账
待号主确认结账 待租客确认修正 号主 号主修改结账金额
待租客确认修正 已完成 租客 租客同意修正结账
待号主确认结账 结账争议中 任一方 发起结账争议
待租客确认修正 结账争议中 任一方 发起结账争议
结账争议中 已完成/已关闭/异常 客服 后台仲裁
申诉中 已完成 客服 仲裁为正常完成或部分扣款后完成
申诉中 已取消 客服 仲裁为订单取消和退款
申诉中 已关闭 客服 仲裁为异常关闭、冻结用户或冻结商品

终态规则:

  • 已完成已取消已关闭 为终态,普通业务流程不能逆转。
  • 终态订单如需调整,只能通过后台复核流程生成新的资金流水和审计日志,不能直接改旧流水。
  • 申诉中 会冻结相关押金和结算金额,直到客服仲裁。

6. 押金、价格与结算模型

定价模型:

  • 租金由号主自主设置。
  • 支持按小时、按天、按周配置价格。
  • 平台可在后续提供建议价,但一期不强制。
  • 商品需配置最短租期和最长租期。

押金模型:

  • 押金由号主设置,平台校验最低押金。
  • 最低押金可根据账号估值、哈夫币数量、稀有资产、租期长度、号主历史纠纷率、租客风险等级给出动态建议。
  • 一期先实现规则化最低押金,动态建议可后续迭代。
  • 押金不足以覆盖损失时,订单进入人工仲裁,不自动产生超额扣款。

账务模型:

  • 一期先做平台内账务,不接真实支付和提现。
  • 钱包流水采用不可变账本设计。
  • 余额可通过流水汇总或账户余额表事务更新获得。
  • 每笔余额变化必须有业务单据来源,例如订单、押金、仲裁、退款、结算。
  • 平台抽成比例、号主结算周期、提现门槛作为系统配置项预留。

结算规则:

  • 正常完成订单后,租金按平台抽成规则分账给号主。
  • 押金在双方结账确认或客服仲裁后释放给租客。
  • 如发生资产损失、无法登录、封号或超时归还,可由客服仲裁后扣除部分或全部押金。
  • 如号主虚假描述、超时未交接或账号无法使用,可裁定全额或部分退款。
  • 仲裁导致的扣款、退款、赔付必须生成资金流水和审计日志。

7. 纠纷仲裁规则

纠纷类型:

  • 无法登录。
  • 账号描述不符。
  • 哈夫币数量争议。
  • 账号资产损失。
  • 账号封禁或异常。
  • 号主超时未交接。
  • 租客超时未归还。
  • 交接凭证争议。
  • 退款、押金、赔付争议。

证据要求:

  • 租前账号资产截图。
  • 租后账号资产截图。
  • 哈夫币数量截图。
  • 系统订单时间线。
  • 交接记录。
  • 站内沟通记录。
  • 第三方沟通截图。
  • 游戏内异常或封禁截图。

仲裁流程:

  1. 任一方在订单详情发起申诉。
  2. 订单进入申诉中,相关押金和结算金额保持冻结。
  3. 双方在限定时间内补充证据。
  4. 客服查看订单、交接、截图、聊天和资金流水。
  5. 客服选择裁决结果并填写裁决说明。
  6. 系统根据裁决结果调整订单状态和资金流水。
  7. 双方收到站内信,关键结果可短信通知。

裁决结果:

  • 全额退款。
  • 部分退款。
  • 释放押金。
  • 扣除部分押金。
  • 扣除全部押金。
  • 赔付号主。
  • 订单关闭。
  • 商品冻结。
  • 用户冻结。
  • 进入二次复核。

8. 消息通知机制

一期采用站内信加关键节点短信。

站内信场景:

  • 商品审核通过或拒绝。
  • 租客下单。
  • 订单进入待交接。
  • 号主提交交接说明。
  • 租客确认收号。
  • 租期即将结束。
  • 租客发起结账。
  • 号主确认或修改结账。
  • 租客确认或拒绝修正结账。
  • 订单完成结算。
  • 发起申诉。
  • 仲裁结果。
  • 账户冻结或解冻。

短信场景:

  • 登录验证码。
  • 租期即将到期。
  • 订单申诉被受理。
  • 仲裁结果。
  • 高风险账号安全提醒。

扩展方向:

  • 后续可增加 WebSocket 或 SSE,实现订单状态和客服消息实时推送。
  • 短信必须做手机号、IP、设备、场景维度限流,防止短信轰炸。

9. 数据库设计概要

核心关系:

  • 一个用户可以同时是租客和号主。
  • 一个用户最多对应一条当前实名信息。
  • 一个号主可以发布多个游戏账号。
  • 一个游戏账号同一时间只能有一个上架商品或一个有效租赁订单。
  • 一个租赁商品关联一个游戏账号。
  • 一个订单关联一个租客、一个号主、一个商品和一个游戏账号快照。
  • 一个订单可以有多条交接记录、通知、审计日志和纠纷证据。
  • 资金流水只追加,不覆盖。
  • 后台管理员和角色为多对多关系,角色和权限为多对多关系。
  • 可调业务阈值统一放入 system_configs,例如最低押金、交接超时、归还超时、短信限流和实名下单开关。

核心表:

users

  • id
  • phone
  • nickname
  • avatar_url
  • realname_status
  • risk_status
  • credit_score
  • status
  • last_login_at
  • created_at
  • updated_at

user_realname

  • id
  • user_id
  • provider
  • provider_order_no
  • status
  • masked_name
  • masked_id_no
  • verified_at
  • fail_reason
  • created_at
  • updated_at

game_accounts

  • id
  • owner_id
  • game_name
  • server_region
  • login_platform
  • title
  • description
  • rank_level
  • haf_coin_amount
  • asset_summary
  • season_tags
  • screenshot_urls
  • status
  • created_at
  • updated_at

说明:haf_coin_amount 是号主最近一次填报值,不代表实时值;订单创建时必须写入 rental_orders.account_snapshot

rental_listings

  • id
  • account_id
  • owner_id
  • price_hourly
  • price_daily
  • price_weekly
  • deposit_amount
  • min_rent_hours
  • max_rent_hours
  • status
  • review_status
  • review_reason
  • published_at
  • created_at
  • updated_at

rental_orders

  • id
  • order_no
  • listing_id
  • account_id
  • owner_id
  • renter_id
  • rent_start_at
  • rent_end_at
  • rent_hours
  • rent_amount
  • deposit_amount
  • platform_fee
  • account_snapshot
  • status
  • handoff_status
  • settlement_status
  • owner_settled_at
  • settled_at
  • created_at
  • updated_at

handoff_records

  • id
  • order_id
  • from_user_id
  • to_user_id
  • type
  • content
  • attachment_urls
  • confirmed_by_renter_at
  • confirmed_by_owner_at
  • created_at

wallet_accounts

  • id
  • user_id
  • available_balance
  • frozen_balance
  • status
  • created_at
  • updated_at

wallet_ledger

  • id
  • ledger_no
  • user_id
  • order_id
  • direction
  • amount
  • balance_after
  • balance_type
  • biz_type
  • biz_no
  • remark
  • created_at

说明:balance_after 记录本次流水发生后对应余额类型的余额,用于审计和对账。

disputes

  • id
  • order_id
  • initiator_id
  • target_user_id
  • type
  • status
  • description
  • evidence_urls
  • arbitration_result
  • arbitration_remark
  • handled_by
  • handled_at
  • created_at
  • updated_at

notifications

  • id
  • user_id
  • type
  • title
  • content
  • biz_type
  • biz_id
  • read_at
  • created_at

audit_logs

  • id
  • actor_type
  • actor_id
  • action
  • biz_type
  • biz_id
  • ip
  • user_agent
  • detail
  • created_at

admin_users

  • id
  • username
  • password_hash
  • nickname
  • status
  • last_login_at
  • created_at
  • updated_at

roles

  • id
  • code
  • name
  • description
  • created_at
  • updated_at

permissions

  • id
  • code
  • name
  • resource
  • action
  • created_at
  • updated_at

admin_user_roles

  • id
  • admin_user_id
  • role_id
  • created_at

role_permissions

  • id
  • role_id
  • permission_id
  • created_at

system_configs

  • id
  • key
  • value
  • description
  • updated_by
  • created_at
  • updated_at

索引策略:

  • users.phone 唯一索引。
  • game_accounts.owner_id 普通索引。
  • game_accounts.game_name, server_region, login_platform 组合索引。
  • rental_listings.status, review_status, price_hourly 组合索引。
  • rental_orders.order_no 唯一索引。
  • rental_orders.renter_id, status 组合索引。
  • rental_orders.owner_id, status 组合索引。
  • wallet_ledger.user_id, created_at 组合索引。
  • wallet_ledger.ledger_no 唯一索引。
  • disputes.order_id 普通索引。
  • notifications.user_id, read_at, created_at 组合索引。
  • audit_logs.actor_id, created_at 组合索引。
  • admin_user_roles.admin_user_id, role_id 唯一索引。
  • role_permissions.role_id, permission_id 唯一索引。
  • system_configs.key 唯一索引。

10. API 接口规划

用户认证:

  • POST /api/auth/sms/send:发送短信验证码。
  • POST /api/auth/sms/login:手机号验证码登录。
  • POST /api/auth/refresh:刷新 Token。
  • POST /api/auth/logout:退出登录。

实名认证:

  • POST /api/realname/start:发起实名认证。
  • GET /api/realname/status:查询实名状态。
  • POST /api/realname/callback:实名认证服务回调。

租号发布:

  • GET /api/listings:租号列表。
  • GET /api/listings/{id}:租号详情。
  • POST /api/listings:创建发布。
  • PUT /api/listings/{id}:修改发布。
  • POST /api/listings/{id}/submit-review:提交审核。
  • DELETE /api/listings/{id}:下架发布。

订单:

  • POST /api/orders:创建订单。
  • GET /api/orders:订单列表。
  • GET /api/orders/{id}:订单详情。
  • POST /api/orders/{id}/cancel:取消订单。
  • POST /api/orders/{id}/confirm-receive:租客确认收号。
  • POST /api/orders/{id}/checkout:租客发起结账。
  • POST /api/orders/{id}/checkout/confirm:号主确认结账。
  • POST /api/orders/{id}/checkout/counter:号主修改结账。
  • POST /api/orders/{id}/checkout/accept:租客同意修正结账。
  • POST /api/orders/{id}/dispute:发起申诉。

交接:

  • POST /api/orders/{id}/handoff:号主提交交接说明。
  • GET /api/orders/{id}/handoff-records:查看交接记录。

钱包:

  • GET /api/wallet/balance:查询余额。
  • GET /api/wallet/ledger:查询流水。
  • POST /api/wallet/withdraw:提现申请预留接口。

通知:

  • GET /api/notifications:站内信列表。
  • POST /api/notifications/{id}/read:标记已读。

后台:

  • POST /api/admin/auth/login:后台登录。
  • POST /api/admin/auth/logout:后台退出。
  • GET /api/admin/me:当前管理员信息。
  • GET /api/admin/dashboard:后台仪表盘。
  • GET /api/admin/users:用户列表。
  • POST /api/admin/users/{id}/freeze:冻结用户。
  • POST /api/admin/users/{id}/unfreeze:解冻用户。
  • GET /api/admin/listings/pending:待审核商品。
  • POST /api/admin/listings/{id}/approve:审核通过。
  • POST /api/admin/listings/{id}/reject:审核拒绝。
  • GET /api/admin/orders:订单列表。
  • GET /api/admin/disputes:纠纷列表。
  • POST /api/admin/disputes/{id}/arbitrate:纠纷仲裁。
  • GET /api/admin/wallet/ledger:资金流水。
  • GET /api/admin/system-configs:系统配置列表。
  • PUT /api/admin/system-configs/{key}:更新系统配置。
  • GET /api/admin/audit-logs:审计日志。

11. 安全与风控

认证安全:

  • 短信验证码存 Redis,设置过期时间。
  • 验证码一次性使用。
  • 限制手机号、IP、设备、场景维度发送频率。
  • 登录失败、验证码错误、异常设备需要计入风控。

接口安全:

  • 所有写接口校验 JWT。
  • 后台接口使用 Casbin 做 RBAC 权限控制。
  • 关键写操作防重复提交。
  • 金额、状态流转、订单归属必须由后端校验。
  • 所有 SQL 通过 ORM 参数化,禁止拼接用户输入。

业务风控:

  • 检测同一用户、同一设备、同一 IP 的异常注册和下单。
  • 检测号主自己租自己或关联账号刷单。
  • 检测重复发布同一账号。
  • 检测频繁取消、频繁申诉、频繁仲裁失败用户。
  • 检测高价值账号低押金异常发布。
  • 检测短时间大量短信请求。

账号安全:

  • 平台不保存游戏账号明文密码。
  • 交接说明和证据只对订单相关用户和管理员可见。
  • 敏感字段脱敏展示。
  • 实名信息加密存储。
  • 账号截图和纠纷证据使用私有文件访问,避免公开 URL 长期暴露。

审计要求:

  • 登录、实名、发布、审核、下单、交接、归还、申诉、仲裁、冻结、退款、结算都写审计日志。
  • 后台管理员的每次裁决必须记录操作者、时间、IP、说明和变更前后关键状态。

12. 后台管理

后台角色:

  • 超级管理员:拥有全部权限。
  • 审核员:处理商品审核和资料审核。
  • 客服:处理订单、交接问题和纠纷。
  • 财务:查看流水、处理结算和提现预留。
  • 风控:处理冻结、黑名单和异常用户。

后台功能:

  • 仪表盘:用户数、商品数、订单数、待审核、待仲裁、流水概览。
  • 用户管理:查看用户、实名状态、风险状态、冻结/解冻。
  • 商品审核:查看账号资产、截图、价格、押金、审核通过/拒绝。
  • 订单管理:查看订单时间线、交接记录、资金状态。
  • 仲裁中心:查看纠纷、证据、双方说明,执行裁决。
  • 资金流水:查看租金、押金、冻结、解冻、扣款、退款、结算。
  • 通知管理:查看站内信发送记录和短信发送记录。
  • 系统配置:管理交接超时、归还超时、短信限流、最低押金、平台抽成和实名下单开关。
  • 审计日志:查看管理员操作和高风险业务操作。

13. 前端页面与路由规划

用户端页面:

  • /:首页,展示推荐租号、热门区服和平台公告。
  • /listings:租号列表,支持区服、平台、价格、押金、段位、哈夫币数量筛选。
  • /listings/:id:租号详情,展示账号资产、租金、押金、租期、号主信用和风险提示。
  • /orders/create:下单页,选择租期并确认租金、押金和规则。
  • /orders:我的订单。
  • /orders/:id:订单详情,展示状态机时间线、交接记录、归还入口和申诉入口。
  • /wallet:钱包余额和流水。
  • /notifications:站内信。
  • /realname:实名认证。

号主端页面:

  • /seller/listings:我的发布。
  • /seller/listings/create:发布租号。
  • /seller/listings/:id/edit:编辑发布。
  • /seller/handoffs:交接管理。
  • /seller/disputes:纠纷处理。
  • /seller/earnings:收益流水。

后台端页面:

  • /admin/dashboard:仪表盘。
  • /admin/users:用户管理。
  • /admin/listings/review:商品审核。
  • /admin/orders:订单管理。
  • /admin/disputes:仲裁中心。
  • /admin/wallet-ledger:资金流水。
  • /admin/system-configs:系统配置。
  • /admin/audit-logs:审计日志。

移动端前端分阶段规划:

  • Phase 1:租号交易首页 MVP。参考 https://m.guaishouw.com/ 的移动端信息组织方式,先做简化交易入口,不复制其业务规则和视觉资产。首页覆盖搜索入口、频道入口、交易数据概览、基础排序、租号商品卡片和底部导航,优先保证用户能快速浏览可租账号并进入后续交易链路。
  • Phase 2:筛选排序增强。在 Phase 1 基础上补充区服、平台、价格、押金、段位、哈夫币数量、租期等筛选项,完善综合排序、价格排序、最新上架、热度或成交数据排序,列表筛选结果需与后端查询条件保持一致。
  • Phase 3:详情下单。完善租号详情页、资产截图、租金押金说明、号主信用、风险提示、租期选择和下单确认页,形成从首页卡片到详情再到创建订单的闭环。
  • Phase 4:号主上架。补充移动端号主发布入口,支持账号信息填写、哈夫币手动填报、区服平台选择、资产截图上传、价格押金配置、提交审核和我的发布管理。
  • Phase 5:消息、公告和我的。完善站内信、订单提醒、平台公告、个人中心、实名认证入口、我的订单、钱包流水和号主收益入口,形成租客与号主的日常运营闭环。

前端实现原则:

  • 后台布局、菜单和权限控制可参考开源后台项目。
  • 租客端、号主端的交易体验和业务页面从头实现。
  • 移动端先按简化 MVP 迭代,不提前实现复杂筛选、复杂下单和号主完整工作台,避免和 UI 实现节奏冲突。
  • 路由权限需要区分游客、已登录用户、已实名用户、号主和管理员。

14. 项目目录规划

hfb_sys/
├── backend/
│   ├── cmd/
│   │   └── api/
│   ├── config/
│   ├── internal/
│   │   ├── handler/
│   │   ├── service/
│   │   ├── repo/
│   │   ├── model/
│   │   ├── middleware/
│   │   ├── modules/
│   │   │   ├── auth/
│   │   │   ├── user/
│   │   │   ├── realname/
│   │   │   ├── listing/
│   │   │   ├── order/
│   │   │   ├── wallet/
│   │   │   ├── dispute/
│   │   │   ├── notification/
│   │   │   └── admin/
│   │   └── integrations/
│   │       ├── sms/
│   │       ├── realname/
│   │       └── storage/
│   ├── pkg/
│   └── migrations/
├── frontend/
│   ├── src/
│   │   ├── api/
│   │   ├── router/
│   │   ├── stores/
│   │   ├── views/
│   │   ├── components/
│   │   └── layouts/
│   └── public/
├── deploy/
│   ├── docker-compose.dev.yml
│   ├── docker-compose.prod.yml
│   └── nginx/
├── docs/
│   ├── project-plan.md
│   ├── database.md
│   ├── api.md
│   └── business-rules.md
└── README.md

15. 阶段开发计划

第 0 阶段:项目初始化

  • 创建前后端目录。
  • 初始化 Go 项目。
  • 初始化 Vue 项目。
  • 参考 gin-vue-admingo-admin 的目录分层、RBAC、日志、配置、Swagger 和文件上传实现方式。
  • 配置 Docker Compose 开发环境。
  • 接入 MySQL、Redis、MinIO。
  • 建立基础配置、日志、错误码和响应结构。

第 1 阶段:用户与认证

  • 实现短信验证码发送接口。
  • 实现短信验证码登录。
  • 实现 JWT 鉴权中间件。
  • 实现用户资料查询。
  • 加入短信限流和验证码一次性校验。

第 2 阶段:实名认证

  • 建立实名表和状态流转。
  • 接入实名服务适配器。
  • 实现实名发起、查询、回调。
  • 限制未实名用户发布租号。

第 3 阶段:租号发布与审核

  • 实现游戏账号和发布商品模型。
  • 实现哈夫币手动填报、区服隔离、赛季标签和账号资产截图。
  • 实现发布、修改、下架、提交审核。
  • 实现后台审核通过和拒绝。
  • 实现租号列表、详情和筛选。

第 4 阶段:订单、交接与账务

  • 实现创建订单和账号锁定。
  • 实现订单状态机和合法状态转换校验。
  • 实现订单账号资产快照。
  • 实现号主提交交接说明。
  • 实现租客确认收号。
  • 实现租客发起结账、号主确认或修改结账、租客确认或拒绝修正结账。
  • 实现交接、确认收号、结账逾期、确认结账超时处理。
  • 实现钱包账户、押金冻结、租金流水、结算流水。
  • 预留支付和提现接口。

第 5 阶段:纠纷、通知与后台

  • 实现纠纷发起、举证、客服仲裁。
  • 实现站内信通知。
  • 接入关键节点短信通知。
  • 完善后台仪表盘、用户管理、订单管理、资金流水、系统配置、审计日志。

第 6 阶段:测试、风控与部署

  • 补齐单元测试和集成测试。
  • 做并发下单测试。
  • 做越权、重复提交、短信轰炸基础安全测试。
  • 完成 Docker 生产部署配置。
  • 准备上线前用户协议、隐私政策、交易规则和风险提示。

16. 测试计划

文档检查:

  • docs/project-plan.md 是完整项目方案,不再是生成说明。
  • 文档明确写入借鉴开源、自研业务核心的路线。
  • 文档不把直接二开租号源码作为推荐方案。
  • 技术栈统一为 Go 方案,无 Java 或 Spring Boot 推荐残留。
  • MySQL 明确为主数据库。
  • Redis 明确用于验证码、缓存、锁和限流。
  • Docker 方案区分本地开发和生产部署。
  • 哈夫币边界明确,不描述为平台虚拟币。
  • 三角洲行动特有规则有独立章节。
  • 哈夫币数量明确为号主填报和订单快照,不承诺实时同步。
  • 一期账号交接明确为号主手动交接。
  • 交接超时阈值和处理策略明确。
  • 订单状态机有状态转换表。
  • 一期资金模型明确为先做账务,不直接接真实支付提现。
  • 一期通知明确为站内信加关键短信。
  • 数据库概要包含 wallet_ledger.balance_aftersystem_configsowner_settled_ataccount_snapshotadmin_user_rolesrole_permissions
  • 前端路由规划覆盖用户端、号主端和后台端。

功能测试:

  • 短信验证码正确、错误、过期、重复使用。
  • 手机号、IP、设备限流生效。
  • JWT 过期、伪造、缺失时被拒绝。
  • 未实名用户不能发布租号。
  • 实名认证成功、失败、认证中状态流转正确。
  • 商品草稿、待审核、已上架、已下架、审核拒绝状态流转正确。
  • 审核未通过商品不能下单。
  • 同一账号并发下单只能成功一单。
  • 订单待交接、租赁中、待号主确认结账、待租客确认修正、结账争议中、已完成、申诉中状态流转正确。
  • 非法订单状态转换会被拒绝。
  • 交接、收号、结账逾期、确认结账超时会按配置触发取消、申诉、逾期或客服复核。
  • 押金冻结、释放、扣款、退款流水一致。
  • 每笔 wallet_ledger 正确记录 balance_after
  • 租金、平台抽成、号主结算流水一致。
  • 订单结算后正确写入 owner_settled_atsettled_at
  • 纠纷仲裁不同裁决结果正确落账。
  • 站内信和短信在关键节点触发。

安全测试:

  • 普通用户不能访问后台接口。
  • 后台不同角色只能访问授权功能。
  • 用户不能查看他人订单、钱包、交接记录或纠纷证据。
  • SQL 注入、越权访问、重复提交有基础防护。
  • 短信轰炸被限流。
  • 高风险操作全部写入审计日志。

性能与稳定性测试:

  • 租号列表分页和筛选在基础数据量下响应稳定。
  • 并发创建订单时库存锁定正确。
  • 钱包流水在并发结算时不出现负数或重复入账。
  • Redis、MySQL 短暂异常时接口返回可识别错误,不产生脏状态。

17. 风险与合规说明

账号租赁存在天然风险,包括账号找回、账号封禁、虚假描述、资产损失、租客恶意破坏、号主恶意交接、未成年人交易、资金纠纷和平台责任边界不清。

上线前必须补充:

  • 用户协议。
  • 隐私政策。
  • 租号交易规则。
  • 押金与赔付规则。
  • 纠纷仲裁规则。
  • 未成年人保护说明。
  • 实名认证授权说明。
  • 支付和提现合规方案。
  • 游戏官方规则风险评估。

平台规则必须明确:

  • 哈夫币不是平台发行资产。
  • 平台不保证游戏账号不会被官方限制、封禁或找回。
  • 平台不提供绕过游戏安全机制的技术服务。
  • 平台基于订单记录、交接记录、证据和仲裁规则处理争议。
  • 真实支付和提现上线前必须完成资质、风控、对账、发票或税务相关评估。