一、點買【市價委託】
引數:
股票程式碼:symbol、股票名稱、委託方式:style(2市價)、委託價格:buyPrice、委託數量:buyNum、漲停價、跌停價、持倉時間:holdingTime、止盈線:stopProfitLine、止損線:stopLossLine、抵扣卷id:discountId、槓桿:multiple
複製程式碼
邏輯:
- 引數校驗
- 履約保證金的計算
- 從快取中獲取手動接單和自動接單配置
- 初始化訂單的接單型別【自動接單還需要初始化投資人資訊】
- 將初始化的訂單作為引數,呼叫service層方法
- 履約保證金+交易綜合費,判斷使用者賬戶的可用餘額是否充足
- 若是自動接單,判斷投資人的可用餘額是否充足,登入三方介面獲取token,檢視三方劵商的可用餘額是否充足,傳送委託單資料及token獲取委託訂單model,手動接單則不需要
- 資金處理:凍結履約保證金和交易綜合費,在交易綜合費中扣除抵扣卷,抵扣卷金額大於交易綜合費,則將交易綜合費置為0,抵扣卷直接置為已使用並新增抵扣卷使用記錄。
- 生成資金凍結記錄
- 插入訂單【委託狀態交易中】,手動接單的狀態是匹配中,自動接單的狀態是交易中
- 訂單放入redis佇列中(push、標誌:訂單的字首+委託單的uuid):佇列名稱分為手動和自動的佇列
同步成交定時器設計
- 獲取redis自動接單佇列,通過佇列的名稱彈出(pop)訂單物件
- 將佇列中的訂單物件當做引數,呼叫service層方法
- 校驗訂單的委託狀態:只有交易中的才可以進行同步成交操作。
- 從快取中獲取自動交易訂單的model,判斷返回狀態是已成交還是部分成交。
- 處理扣除資金的流程: 獲取成交時候的。。。。。。【待續】
點賣
描述:類似於期權中的持倉中,在點買中的同步成交系統中生成持倉中的點賣訂單。
平倉:
根據點買規定的持倉時間,建立一個定時器,定時查詢點賣列表,通過根據建立時間與持倉時間,判斷是否到了平倉的時間,需要給會員傳送簡訊提醒平倉的時間到了。若到了時間點還沒有平倉則強制平倉。
追加保證金
保證金不足,簡訊提醒,會員自己手動追加保證金,若沒有追加保證金,不夠則強制平倉。