application\api 是 SDK 侧的对外接口模块,覆盖客户端 SDK、游戏 CP、聚合渠道、支付渠道、推广页和专项活动。
从业务职责看,它不是一个单一 API 模块,而是多个业务中台能力混在同一模块下:
| 目录 | 当前职责 | Go 迁移建议 |
|---|---|---|
controller |
HTTP 控制器,包含根控制器、v1、v2、mlbb |
拆到 internal/http/handler,按业务域分 handler |
controller\Api.php |
API 公共协议、验签、登录校验、响应加密、设备/区服保存 | 拆成 middleware + auth service + response codec |
service |
支付通知、聚合通知、道具发放、专项福利、MLBB 礼包 | 拆成 domain service,不要依赖 HTTP 全局输入 |
complex |
聚合渠道适配器 | 抽象为 ComplexAdapter 注册表,按渠道实现 |
library\mlbb |
MLBB 相关 SDK/抽奖算法 | 拆入 internal/module/mlbb 或独立活动模块 |
validate |
ThinkPHP 表单校验 | Go 中改为 request DTO + validator |
view |
推广页、支付成功页、账号安全页等 HTML | 如 Go 只做 API,可迁移到前端/静态服务;若保留页面,另设 web handler |
多数继承 app\api\controller\Api 的接口会走以下流程:
initDevice
device 或 body device 识别设备来源。1=PC、2=Android、3=iOS、4=H5。php://input 读取密文。Env::get('aes_key') 执行 AES-128-ECB 解密。qmapidebug=true 时允许明文参数。appid。cy_app 对应模型 App 查询 id/appkey/client_appkey/gameid。sign 字段。key=value 拼接,追加 client_appkey。api_debug=false 时签名失败拒绝。channel_id,使用配置 initial_channel_id。imeil 和 token。token => imeil。auth_code 解出 userid|username|gameid|sub_username|token_random|sdk。token|sdk|userid|gameid => token_random。userid/gameid/username/token/sub_username/member_channel_id 注入 $this->input。jsonResult 会把正数 code 映射成 1,非正数映射成 0,并保留 err_code。Go 迁移时应把上面 7 步拆为独立中间件,避免 handler 直接操作全局请求。
application\route.php 中域名别名大致把以下入口映射到 api:
sdkapi、t 映射到 api。devsdkapi、devt 在开发环境映射到 api。POST mp/get_wxmp_code -> Api/ThreePlatform/getWxAuthCodePOST mp/get_order_info -> Api/ThreePlatform/getOrderInfoPOST mp/get_pay -> Api/ThreePlatform/getPayGET mp/get_article_list -> Api/ThreePlatform/getArticleListGET mp/get_article_info -> Api/ThreePlatform/getArticleInfoGET mlbb/:code -> Api/Index/mlbbDownloadPOST /gh/get_role -> Api/JhApi/getRolePOST /gh/get_sub -> Api/JhApi/getSubListPOST /gh/channel_data_summary -> Api/JhApi/getChannelDataSummaryPOST /gh/channel_data_summary_v2 -> Api/JhApi/getChannelDataSummaryV2POST /gh/get_pay_list -> Api/JhApi/getPayListPOST /gh/get_sub_user_list -> Api/JhApi/getSubUserListGET /game/detail -> Api/Game/detail除了显式路由,ThinkPHP 默认还支持类似 sdkapi/v1/login/index、sdkapi/v2/user/userInfo 的模块/控制器/方法访问方式。Go 迁移时需要先从 nginx/access log 或客户端 SDK 配置确认真实使用路径。
主要代码:
controller\Api.phpapi\common.phpapi\config.php职责:
Go 建议:
internal/protocol/codec:AES、JSON、响应封装。internal/protocol/sign:客户端签名算法。internal/auth/session:Token decode、Redis 校验、用户上下文。internal/module/game_role:设备和区服角色保存。主要代码:
v1\Login.phpv1\Register.phpv1\SendSms.phpv2\User.phpv2\Forget.phpv2\Captcha.phpv1\PasswordFind.php职责:
cy_members、实名扩展 cy_memberstwo、游戏渠道关系 cy_member_channel_game_rel、子账号 nw_subaccount。Go 建议:
internal/module/account:主账号、登录注册、密码。internal/module/session:token 和 Redis 会话。internal/module/security:短信、验证码、设备校验。internal/module/identity:实名与防沉迷。主要代码:
Game.phpv1\Role.phpv1\Startup.phpv1\CheckUpdate.phpv2\GameVersion.phpv2\GameNotify.php职责:
Go 建议:
internal/module/game:游戏配置、包信息、版本。internal/module/role:角色和区服写入。internal/module/startup:设备启动上报。主要代码:
v1\Pay.phpv1\PayNotify.phpv1\PayNotifyCoin.phpv2\Coin.phpv2\Order.phpservice\PayNotifyService.phpapplication\service\GamePayService.phpapplication\service\MemberCoinService.phpapplication\service\PayService.phpcommon\logic\Pay.phpcommon\logic\PayCallback.php职责:
Go 建议:
internal/module/payment/order:订单状态机和事务。internal/module/payment/provider:第三方支付适配器。internal/module/payment/notify:支付回调验签与归一化。internal/module/payment/asset:平台币、专属币、代金券资产变动。internal/module/payment/callback:CP 发货通知。主要代码:
v1\ComplexLogin.phpv1\ComplexPay.phpv1\ComplexPayNotify.phpv2\Complex.phpv2\ComplexAuthentication.phpservice\NotifyService.phpcomplex\*.php职责:
Go 建议:
internal/module/complex:聚合领域服务。internal/module/complex/adapter:渠道适配器注册表。internal/module/complex/auth:渠道实名。主要代码:
v1\UserCenter.phpv1\UserCenterAuth.phpv1\Identity.phpv1\IsIdentity.phpv1\YhIdentity.phpv2\User.phpapplication\service\CommonService.php职责:
Go 建议:
internal/module/userinternal/module/identityinternal/module/antiaddictioninternal/module/channel_belonging主要代码:
v2\Coupon.phpv1\Gift.phpv2\Gift.phpservice\SpecialService.phpapplication\service\WelfareService.phpcommon\logic\PayCallback::specialCallback职责:
Go 建议:
internal/module/couponinternal/module/giftinternal/module/welfare主要代码:
controller\mlbb\Mlbb.phpcontroller\mlbb\Login.phpcontroller\mlbb\Game.phpcontroller\mlbb\Activity.phpcontroller\mlbb\User.phpcontroller\mlbb\Other.phpservice\mlbb\HandleService.phplibrary\mlbb\LotteryService.php职责:
lr_ 前缀为主。Go 建议:
internal/module/mlbb。主要代码:
ThreePlatform.phpv2\DyGameOpen.phpYqlData.phpJhApi.phpRiskControl.phpv2\PropApi.phpv2\Huge.php职责:
Go 建议:
internal/integration/*。