委托系统
子工程与入口
coinex-entrust 分为 entrust-api 与 entrust-provider。代表性源码:
entrust-provider/src/main/java/com/exch/entrust/dubbo/EntrustApiImpl.javaentrust-provider/src/main/java/com/exch/entrust/service/impl/EntrustCreateService.javaentrust-provider/src/main/java/com/exch/entrust/service/impl/EntrustTxService.javaentrust-provider/src/main/java/com/exch/entrust/remote/MatchingEngineService.java
路径相对于 coinex-entrust。
创建流程:已读取顺序
EntrustApiImpl.saveEntrust
→ EntrustCreateService.saveEntrust
→ 参数与用户状态
→ 交易对状态、开盘时间与特殊交易限制
→ 市价价格处理、涨跌幅、精度、价格及数量
→ 用户可用余额检查
→ 本地引擎可接单检查(适用时)
→ 三方下单分支(非本地配置)
→ 构建并保存委托
→ 调用账户可用转冻结
→ afterEntrustCreated
→ 若 isEnterMatching:调用旧撮合桥接
→ 返回委托标识
账户侧调用可见 executeUserTotalToFrozenV1。事务注解覆盖范围、账户超时补偿和消息后置处理还需继续验证。
关键断点
MatchingEngineService.enterMatching 虽完成金额放大与类型转换等外围工作,但最终构造订单及 RPC 发送块被注释;cancelOrder 内也没有生效的发送语句。它们被调用不等于撮合引擎收到消息。
撤单流程
EntrustApiImpl.cancelEntrust 委派给 EntrustTxService。后者可见委托查询、交易配置、本地撤单桥接、三方查单撤单和账户回退相关调用,具体分支分别核对。不能把方法内出现的多个调用串成每次必经顺序。
查询流程
当前委托查询在 API 实现中指定 NO_TRADE、SOME_TRADE 等状态;历史委托和成交明细由不同查询服务负责。coinex-match 的 MatchingEntrustService 提供撮合缓存查询,不替代全部业务历史记录。
验证场景
参数精度、余额不足、引擎未就绪、外部下单成功后本地失败、部分成交撤单、重复撤单及账户回退失败。联调先确认有效提交入口,避免用返回委托 ID 代替撮合成功证据。
账户模型与完成时点
旧委托创建后的账户冻结与撮合服务自持账户缓存的冻结应分开理解,不能直接拼成同一订单的连续扣减。账户超时补偿、身份覆盖、旧消费者状态与撤单剩余冻结计算已在主流程逐步展开。