This commit is contained in:
vipg
2025-12-19 15:59:24 +08:00
parent 1e281e3487
commit 4fdfb60a70

View File

@@ -14,32 +14,32 @@ import (
type TradingRecordsCreateRequest struct { type TradingRecordsCreateRequest struct {
EventType string `json:"event_type" binding:"required"` // 固定为 "futures_trade" EventType string `json:"event_type" binding:"required"` // 固定为 "futures_trade"
Payload struct { Payload struct {
OpenYear int `json:"open_year" binding:"required,min=1900,max=2100"` OpenYear int `json:"open_year" binding:"required,min=1900,max=2200"` // 开仓时间1900-2200
OpenMonth int `json:"open_month" binding:"required,min=1,max=12"` OpenMonth int `json:"open_month" binding:"required,min=1,max=12"` // 开仓时间1-12
OpenDay int `json:"open_day" binding:"required,min=1,max=31"` OpenDay int `json:"open_day" binding:"required,min=1,max=31"` // 开仓时间1-31
Symbol string `json:"symbol" binding:"required"` Symbol string `json:"symbol" binding:"required"` // 品种代码(如 RB、CU
Contract string `json:"contract" binding:"required"` Contract string `json:"contract" binding:"required"` // 合约代码(如 2505
Direction string `json:"direction" binding:"required,oneof=long short"` Direction string `json:"direction" binding:"required,oneof=long short"` // 交易方向long 多头 / short 空头
OpenPrice float64 `json:"open_price" binding:"required"` OpenPrice float64 `json:"open_price" binding:"required"` // 开仓价格(单位:元)
OpenFee float64 `json:"open_fee" binding:"required,min=0"` OpenFee float64 `json:"open_fee" binding:"required,min=0"` // 开仓手续费≥0
CloseYear int `json:"close_year" binding:"required,min=1900,max=2100"` CloseYear int `json:"close_year" binding:"required,min=1900,max=2100"` // 平仓时间1900-2200
CloseMonth int `json:"close_month" binding:"required,min=1,max=12"` CloseMonth int `json:"close_month" binding:"required,min=1,max=12"` // 平仓时间1-12
CloseDay int `json:"close_day" binding:"required,min=1,max=31"` CloseDay int `json:"close_day" binding:"required,min=1,max=31"` // 平仓时间1-31
ClosePrice float64 `json:"close_price" binding:"required"` ClosePrice float64 `json:"close_price" binding:"required"` // 平仓价格(单位:元)
CloseFee float64 `json:"close_fee" binding:"required,min=0"` CloseFee float64 `json:"close_fee" binding:"required,min=0"` // 平仓手续费≥0
PriceDiff float64 `json:"price_diff" binding:"required"` PriceDiff float64 `json:"price_diff" binding:"required"` // 平仓差价 = ClosePrice - OpenPrice
MinTick float64 `json:"min_tick" binding:"required"` MinTick float64 `json:"min_tick" binding:"required"` // 品种最小跳点(如 1
TickPrice float64 `json:"tick_price" binding:"required"` TickPrice float64 `json:"tick_price" binding:"required"` // 每跳价格(如 10 元)
DiffPnL float64 `json:"diff_pnl" binding:"required"` DiffPnL float64 `json:"diff_pnl" binding:"required"` // 差价盈亏(已考虑方向与跳点)
TotalFee float64 `json:"total_fee" binding:"required,min=0"` TotalFee float64 `json:"total_fee" binding:"required,min=0"` // 手续费合计 = OpenFee + CloseFee≥0
ClosePnL float64 `json:"close_pnl" binding:"required"` ClosePnL float64 `json:"close_pnl" binding:"required"` // 平仓净盈亏 = DiffPnL - TotalFee
} `json:"payload" binding:"required"` } `json:"payload" binding:"required"`
} }
// TradingRecordsCreateResponse 创建响应结构 // TradingRecordsCreateResponse 创建响应结构
type TradingRecordsCreateResponse struct { type TradingRecordsCreateResponse struct {
Success bool `json:"success"` Success bool `json:"success"`
Message string `json:"message"` Message string `json:"message"`
Data TradingRecordsCreateData `json:"data"` Data TradingRecordsCreateData `json:"data"`
} }
@@ -48,8 +48,8 @@ type TradingRecordsCreateData struct {
RecordID string `json:"record_id"` RecordID string `json:"record_id"`
} }
// TradingRecordsCreateHandler 处理交易记录创建逻辑 // CreateHandler 处理交易记录创建逻辑
func TradingRecordsCreateHandler(c *gin.Context) { func CreateHandler(c *gin.Context) {
startTime := time.Now() startTime := time.Now()
reqID := c.Request.Header.Get("X-TradingRecordsRequest-ID") reqID := c.Request.Header.Get("X-TradingRecordsRequest-ID")
if reqID == "" { if reqID == "" {
@@ -118,8 +118,8 @@ func TradingRecordsCreateHandler(c *gin.Context) {
// 插入交易记录 // 插入交易记录
var recordID string var recordID string
err = tx.QueryRow( err = tx.QueryRow(
`INSERT INTO trading_records (event_type, payload, deleted, created_at, updated_at) `INSERT INTO trading_records (event_type, payload)
VALUES ($1, $2, FALSE, NOW(), NOW()) VALUES ($1, $2)
RETURNING id`, RETURNING id`,
req.EventType, req.EventType,
req.Payload, req.Payload,
@@ -166,4 +166,4 @@ func TradingRecordsCreateHandler(c *gin.Context) {
RecordID: recordID, RecordID: recordID,
}, },
}) })
} }