技術架構:mybatis、springboot1.5.X、redis、mysql、quartz、springcloud eureka
交易
1:委託買入
引數:
委託價格、委託數量、委託方式【市價、限價】、價格型別、合約程式碼、合約名稱、使用者的紅包標識
邏輯:
- 引數校驗
- 判斷交易時間是否合乎規定
- 根據合約程式碼獲取該合約最新的行情,判斷委託單的委託型別,設定委託價格
- 計算手續費,抵扣紅包金額,平臺使用者的資金處理【判斷、凍結可用餘額、生成資金記錄】
- 按照一定的權重刷選三方劵商的資訊
- 登入劵商賬號獲取token,得到劵商的資金資訊,判斷可用餘額是否充足
- 傳送委託單資料,獲取三方的委託實體模型【回填的委託單編號和委託單引用】
- 更新委託單的狀態、設定委託單的委託編號和委託引用
- 新增委託單到資料庫
- 將委託單物件存放到redis快取中【下單結束。。。。。】
委託賣出【以什麼樣的委託方式買進了就以什麼樣的委託方式賣出】
引數
委託數量、委託價格、持倉單標識、價格型別
邏輯:
- 引數校驗
- 根據持倉單的標識判斷該持倉是否存在
- 判斷交易時間是否合乎規定
- 根據合約程式碼獲取最新的行情資訊
- 建立委託賣出單物件
- 呼叫service層的方法【引數:委託賣出單、行情、持倉物件】
- 判斷委託方式,獲取委託賣出價格
- 計算手續費,平臺使用者資金處理
- 登入三方劵商的賬戶,獲取token,傳送資料獲取委託實體模型
- 初始化委託賣出單的欄位並修改狀態
- 新增委託賣出單,修改持倉可賣數量
- 將委託賣出單存放到快取中【賣單結束。。。。】
定時器
包含的定時器:1、從資料庫中查詢中處於交易中的委託單【買入和賣出】,加入快取中;2、同步實盤買入委託單任務排程;3、同步實盤賣出委託單任務排程;3、定時查詢劵商下面的委託單資訊存放到快取中;4、定時查詢劵商下面的成交明細並存放到快取中;5、平倉定時通知簡訊和到時間點強制平倉;6、遞延費收取和不足給予簡訊提醒【通知找出一筆點買額度最小盈利最多的直接強制平倉】;7、定時分傭結算