2024-12-14 19:09:06 +08:00
|
|
|
|
package ws
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
2025-03-05 20:52:20 +08:00
|
|
|
|
. "gitea.zjmud.xyz/phyer/v5sdkgo/ws/wImpl"
|
2024-12-14 19:09:06 +08:00
|
|
|
|
"log"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
/*
|
2024-12-16 11:41:20 +08:00
|
|
|
|
websocket交易 通用请求
|
|
|
|
|
参数说明:
|
|
|
|
|
|
|
|
|
|
evtId:封装的事件类型
|
|
|
|
|
id: 请求ID
|
|
|
|
|
op: 请求参数op
|
|
|
|
|
params: 请求参数
|
|
|
|
|
timeOut: 超时时间
|
2024-12-14 19:09:06 +08:00
|
|
|
|
*/
|
|
|
|
|
func (a *WsClient) jrpcReq(evtId Event, op string, id string, params []map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
|
|
|
|
res = true
|
|
|
|
|
tm := 5000
|
|
|
|
|
if len(timeOut) != 0 {
|
|
|
|
|
tm = timeOut[0]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
req := &JRPCReq{
|
|
|
|
|
Id: id,
|
|
|
|
|
Op: op,
|
|
|
|
|
Args: params,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
detail = &ProcessDetail{
|
|
|
|
|
EndPoint: a.WsEndPoint,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ctx := context.Background()
|
|
|
|
|
ctx, cancel := context.WithTimeout(ctx, time.Duration(tm)*time.Millisecond)
|
|
|
|
|
defer cancel()
|
|
|
|
|
ctx = context.WithValue(ctx, "detail", detail)
|
|
|
|
|
|
|
|
|
|
msg, err := a.process(ctx, evtId, req)
|
|
|
|
|
if err != nil {
|
|
|
|
|
res = false
|
|
|
|
|
log.Println("处理请求失败!", req, err)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
detail.Data = msg
|
|
|
|
|
|
|
|
|
|
res, err = checkResult(req, msg)
|
|
|
|
|
if err != nil {
|
|
|
|
|
res = false
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2024-12-16 11:41:20 +08:00
|
|
|
|
单个下单
|
|
|
|
|
参数说明:
|
|
|
|
|
|
|
|
|
|
id: 请求ID
|
|
|
|
|
params: 请求参数
|
|
|
|
|
timeOut: 超时时间
|
2024-12-14 19:09:06 +08:00
|
|
|
|
*/
|
|
|
|
|
func (a *WsClient) PlaceOrder(id string, param map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
|
|
|
|
op := "order"
|
|
|
|
|
evtId := EVENT_PLACE_ORDER
|
|
|
|
|
|
|
|
|
|
var args []map[string]interface{}
|
|
|
|
|
args = append(args, param)
|
|
|
|
|
|
|
|
|
|
return a.jrpcReq(evtId, op, id, args, timeOut...)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2024-12-16 11:41:20 +08:00
|
|
|
|
批量下单
|
|
|
|
|
参数说明:
|
|
|
|
|
|
|
|
|
|
id: 请求ID
|
|
|
|
|
params: 请求参数
|
|
|
|
|
timeOut: 超时时间
|
2024-12-14 19:09:06 +08:00
|
|
|
|
*/
|
|
|
|
|
func (a *WsClient) BatchPlaceOrders(id string, params []map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
|
|
|
|
|
|
|
|
|
op := "batch-orders"
|
|
|
|
|
evtId := EVENT_PLACE_BATCH_ORDERS
|
|
|
|
|
return a.jrpcReq(evtId, op, id, params, timeOut...)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2024-12-16 11:41:20 +08:00
|
|
|
|
单个撤单
|
|
|
|
|
参数说明:
|
|
|
|
|
|
|
|
|
|
id: 请求ID
|
|
|
|
|
params: 请求参数
|
|
|
|
|
timeOut: 超时时间
|
2024-12-14 19:09:06 +08:00
|
|
|
|
*/
|
|
|
|
|
func (a *WsClient) CancelOrder(id string, param map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
|
|
|
|
|
|
|
|
|
op := "cancel-order"
|
|
|
|
|
evtId := EVENT_CANCEL_ORDER
|
|
|
|
|
|
|
|
|
|
var args []map[string]interface{}
|
|
|
|
|
args = append(args, param)
|
|
|
|
|
|
|
|
|
|
return a.jrpcReq(evtId, op, id, args, timeOut...)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2024-12-16 11:41:20 +08:00
|
|
|
|
批量撤单
|
|
|
|
|
参数说明:
|
|
|
|
|
|
|
|
|
|
id: 请求ID
|
|
|
|
|
params: 请求参数
|
|
|
|
|
timeOut: 超时时间
|
2024-12-14 19:09:06 +08:00
|
|
|
|
*/
|
|
|
|
|
func (a *WsClient) BatchCancelOrders(id string, params []map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
|
|
|
|
|
|
|
|
|
op := "batch-cancel-orders"
|
|
|
|
|
evtId := EVENT_CANCEL_BATCH_ORDERS
|
|
|
|
|
return a.jrpcReq(evtId, op, id, params, timeOut...)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2024-12-16 11:41:20 +08:00
|
|
|
|
单个改单
|
|
|
|
|
参数说明:
|
|
|
|
|
|
|
|
|
|
id: 请求ID
|
|
|
|
|
params: 请求参数
|
|
|
|
|
timeOut: 超时时间
|
2024-12-14 19:09:06 +08:00
|
|
|
|
*/
|
|
|
|
|
func (a *WsClient) AmendOrder(id string, param map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
|
|
|
|
|
|
|
|
|
op := "amend-order"
|
|
|
|
|
evtId := EVENT_AMEND_ORDER
|
|
|
|
|
|
|
|
|
|
var args []map[string]interface{}
|
|
|
|
|
args = append(args, param)
|
|
|
|
|
|
|
|
|
|
return a.jrpcReq(evtId, op, id, args, timeOut...)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2024-12-16 11:41:20 +08:00
|
|
|
|
批量改单
|
|
|
|
|
参数说明:
|
|
|
|
|
|
|
|
|
|
id: 请求ID
|
|
|
|
|
params: 请求参数
|
|
|
|
|
timeOut: 超时时间
|
2024-12-14 19:09:06 +08:00
|
|
|
|
*/
|
|
|
|
|
func (a *WsClient) BatchAmendOrders(id string, params []map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
|
|
|
|
|
|
|
|
|
op := "batch-amend-orders"
|
|
|
|
|
evtId := EVENT_AMEND_BATCH_ORDERS
|
|
|
|
|
return a.jrpcReq(evtId, op, id, params, timeOut...)
|
|
|
|
|
|
|
|
|
|
}
|