技術架構:mybatis、springboot1.5.X、redis、mysql、quartz、springcloud eurekamysql
交易
1:委託買入
參數:
委託價格、委託數量、委託方式【市價、限價】、價格類型、合約代碼、合約名稱、用戶的紅包標識redis
邏輯:
- 參數校驗
- 判斷交易時間是否合乎規定
- 根據合約代碼獲取該合約最新的行情,判斷委託單的委託類型,設置委託價格
- 計算手續費,抵扣紅包金額,平臺用戶的資金處理【判斷、凍結可用餘額、生成資金記錄】
- 按照必定的權重刷選三方劵商的信息
- 登陸劵商帳號獲取token,獲得劵商的資金信息,判斷可用餘額是否充足
- 發送委託單數據,獲取三方的委託實體模型【回填的委託單編號和委託單引用】
- 更新委託單的狀態、設置委託單的委託編號和委託引用
- 添加委託單到數據庫
- 將委託單對象存放到redis緩存中【下單結束。。。。。】
委託賣出【以什麼樣的委託方式買進了就以什麼樣的委託方式賣出】
參數
委託數量、委託價格、持倉單標識、價格類型spring
邏輯:
- 參數校驗
- 根據持倉單的標識判斷該持倉是否存在
- 判斷交易時間是否合乎規定
- 根據合約代碼獲取最新的行情信息
- 建立委託賣出單對象
- 調用service層的方法【參數:委託賣出單、行情、持倉對象】
- 判斷委託方式,獲取委託賣出價格
- 計算手續費,平臺用戶資金處理
- 登陸三方劵商的帳戶,獲取token,發送數據獲取委託實體模型
- 初始化委託賣出單的字段並修改狀態
- 添加委託賣出單,修改持倉可賣數量
- 將委託賣出單存放到緩存中【賣單結束。。。。】
定時器
包含的定時器:一、從數據庫中查詢中處於交易中的委託單【買入和賣出】,加入緩存中;二、同步實盤買入委託單任務調度;三、同步實盤賣出委託單任務調度;三、定時查詢劵商下面的委託單信息存放到緩存中;四、定時查詢劵商下面的成交明細並存放到緩存中;五、平倉定時通知短信和到時間點強制平倉;六、遞延費收取和不足給予短信提醒【通知找出一筆點買額度最小盈利最多的直接強制平倉】;七、定時分傭結算sql