涨跌型二元期权:期次与购买流程
核对入口
coinex-contract-option-new-new/contract-option-new-provider/src/main/java/com/exch/contract/optionnew/service/OptionOrderServiceImpl.java 的 add(OptionOrder)。
已读取的处理顺序
- 校验期次 ID、下单金额字段
orderPrice和方向参数,按代码规则调整orderPrice精度。 - 使用用户级
UserLockUtils同步块处理本次购买。 - 优先从 Redis 开放期次列表查找期次;缓存列表不存在时调用期次查询服务。
- 检查用户当前订单及结果弹窗相关缓存,命中时返回对应错误。
- 根据期次 scene 解析交割时间,用
OptionConstants.DELIVERY_TIME_DURATION检查购买截止窗口。 - 确认期次为 OPEN,核对用户、交易配置及
compareOrderVal校验结果。 - 检查商户交易配置是否停止买入,再调用
addOrder(...)。
截止窗口按常量值和使用点核对,不能仅凭“最后 10 秒”的注释认定生产参数。用户级 synchronized 是进程内机制,不能据此宣称跨实例全局防重。
期次、方向与订单分开
OptionPeriodRecord 表示期次,OptionOrder 表示用户订单。方向枚举可见 UP、DOWN、TIE,但某个方向是否能购买还要看交易配置及校验分支,不由枚举存在直接得出。
后续核对
addOrder 后续账户变更、落库与异常回退需要继续追踪对应实现。入口存在事务注解,不代表所有远程调用都被同一事务覆盖。
验证场景
期次不存在、期次不开放、临近截止、用户已有当前订单、商户停买、参数不合法、双实例重复购买、购买后账户处理失败。