技术架构:mybatis、springboot1.5.X、redis、mysql、quartz、springcloud eurekamysql
交易
1:委托买入
参数:
委托价格、委托数量、委托方式【市价、限价】、价格类型、合约代码、合约名称、用户的红包标识redis
逻辑:
- 参数校验
- 判断交易时间是否合乎规定
- 根据合约代码获取该合约最新的行情,判断委托单的委托类型,设置委托价格
- 计算手续费,抵扣红包金额,平台用户的资金处理【判断、冻结可用余额、生成资金记录】
- 按照必定的权重刷选三方劵商的信息
- 登陆劵商帐号获取token,获得劵商的资金信息,判断可用余额是否充足
- 发送委托单数据,获取三方的委托实体模型【回填的委托单编号和委托单引用】
- 更新委托单的状态、设置委托单的委托编号和委托引用
- 添加委托单到数据库
- 将委托单对象存放到redis缓存中【下单结束。。。。。】
委托卖出【以什么样的委托方式买进了就以什么样的委托方式卖出】
参数
委托数量、委托价格、持仓单标识、价格类型spring
逻辑:
- 参数校验
- 根据持仓单的标识判断该持仓是否存在
- 判断交易时间是否合乎规定
- 根据合约代码获取最新的行情信息
- 建立委托卖出单对象
- 调用service层的方法【参数:委托卖出单、行情、持仓对象】
- 判断委托方式,获取委托卖出价格
- 计算手续费,平台用户资金处理
- 登陆三方劵商的帐户,获取token,发送数据获取委托实体模型
- 初始化委托卖出单的字段并修改状态
- 添加委托卖出单,修改持仓可卖数量
- 将委托卖出单存放到缓存中【卖单结束。。。。】
定时器
包含的定时器:一、从数据库中查询中处于交易中的委托单【买入和卖出】,加入缓存中;二、同步实盘买入委托单任务调度;三、同步实盘卖出委托单任务调度;三、定时查询劵商下面的委托单信息存放到缓存中;四、定时查询劵商下面的成交明细并存放到缓存中;五、平仓定时通知短信和到时间点强制平仓;六、递延费收取和不足给予短信提醒【通知找出一笔点买额度最小盈利最多的直接强制平仓】;七、定时分佣结算sql