| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- package erms2
- import (
- "fmt"
- "mtp2_if/db"
- "mtp2_if/global/app"
- "mtp2_if/global/e"
- "mtp2_if/logger"
- "net/http"
- "time"
- "github.com/gin-gonic/gin"
- )
- // QueryInnerTradeDetailReq 查询内部成交单信息请求参数
- type QueryInnerTradeDetailReq struct {
- AccountID int `form:"accountid" binding:"required"`
- }
- // QueryInnerTradeDetailRsp 内部成交单信息
- type QueryInnerTradeDetailRsp struct {
- Tradeid int64 `json:"tradeid" xorm:"'TRADEID'" binding:"required"` // 成交单号(108+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
- Buyorsell int64 `json:"buyorsell" xorm:"'BUYORSELL'" binding:"required"` // 方向 - 0:买 1:卖
- Orderid int64 `json:"orderid" xorm:"'ORDERID'"` // 委托单号
- Tradedate string `json:"tradedate" xorm:"'TRADEDATE'"` // 交易日(yyyyMMdd)
- Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 账号ID
- Goodsid int64 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID
- Marketid int64 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
- Tradetime time.Time `json:"tradetime" xorm:"'TRADETIME'"` // 成交时间
- Tradeprice float64 `json:"tradeprice" xorm:"'TRADEPRICE'"` // 成交价格
- Tradeqty int64 `json:"tradeqty" xorm:"'TRADEQTY'"` // 成交数量
- Tradeamount float64 `json:"tradeamount" xorm:"'TRADEAMOUNT'"` // 成交金额(账户)
- Closepl float64 `json:"closepl" xorm:"'CLOSEPL'"` // 平仓盈亏(账户)
- Opencharge float64 `json:"opencharge" xorm:"'OPENCHARGE'"` // 建仓手续费(账户)
- Closecharge float64 `json:"closecharge" xorm:"'CLOSECHARGE'"` // 平仓手续费(账户)
- Tradetype int64 `json:"tradetype" xorm:"'TRADETYPE'"` // 成交类别 - 1:正常委托成交 2:风控斩仓成交 3:修正持仓成交 4:管理端斩仓成交
- Channelbuildtype int64 `json:"channelbuildtype" xorm:"'CHANNELBUILDTYPE'"` // 委托单据类型 0:无 1:建仓 2:平仓
- Closetype int64 `json:"closetype" xorm:"'CLOSETYPE'"` // 平仓方式 - 0:无 1:平今 2:平昨
- Hedgeflag int64 `json:"hedgeflag" xorm:"'HEDGEFLAG'"` // 投机套保标志 - 0:无 1:投机 2:套保 3:套利
- Openqty int64 `json:"openqty" xorm:"'OPENQTY'"` // 开仓数量(先建后平操作 需要记录)
- Closeqty int64 `json:"closeqty" xorm:"'CLOSEQTY'"` // 平仓数量(先建后平操作 需要记录)
- Status int64 `json:"status" xorm:"'STATUS'"` // 处理状态 - 1:待处理 2:已处理 3:处理失败
- Isreckoned int64 `json:"isreckoned" xorm:"'ISRECKONED'"` // 是否结算 - 0:未结算 1:已结算
- Openfeealgorithm int64 `json:"openfeealgorithm" xorm:"'OPENFEEALGORITHM'"` // 建仓手续费收取方式 1:比率 2:固定
- Openchargevalue float64 `json:"openchargevalue" xorm:"'OPENCHARGEVALUE'"` // 建仓手续费设置值
- Closefeealgorithm int64 `json:"closefeealgorithm" xorm:"'CLOSEFEEALGORITHM'"` // 平仓手续费收取方式 1:比率 2:固定
- Closechargevalue float64 `json:"closechargevalue" xorm:"'CLOSECHARGEVALUE'"` // 平仓手续费设置值
- Accountcurrencyid int64 `json:"accountcurrencyid" xorm:"'ACCOUNTCURRENCYID'"` // 账户币种ID
- Goodscurrencyid int64 `json:"goodscurrencyid" xorm:"'GOODSCURRENCYID'"` // 商品币种ID
- Curexchangerate float64 `json:"curexchangerate" xorm:"'CUREXCHANGERATE'"` // 当前汇率
- Opencharge2 float64 `json:"opencharge2" xorm:"'OPENCHARGE2'"` // 建仓手续费(商品)
- Closecharge2 float64 `json:"closecharge2" xorm:"'CLOSECHARGE2'"` // 平仓手续费(商品)
- Closepl2 float64 `json:"closepl2" xorm:"'CLOSEPL2'"` // 平仓盈亏(商品)
- Closepl3 float64 `json:"closepl3" xorm:"'CLOSEPL3'"` // 平仓盈亏(账户)(逐笔)
- Closepl4 float64 `json:"closepl4" xorm:"'CLOSEPL4'"` // 平仓盈亏(商品)(逐笔)
- Extenalopenfeealgorithm int64 `json:"extenalopenfeealgorithm" xorm:"'EXTENALOPENFEEALGORITHM'"` // 建仓手续费收取方式(外部配置) 1:比率 2:固定
- Extenalopenchargevalue float64 `json:"extenalopenchargevalue" xorm:"'EXTENALOPENCHARGEVALUE'"` // 建仓手续费设置值
- Extenalclosefeealgorithm int64 `json:"extenalclosefeealgorithm" xorm:"'EXTENALCLOSEFEEALGORITHM'"` // 平仓手续费收取方式 1:比率 2:固定
- Extenalclosechargevalue float64 `json:"extenalclosechargevalue" xorm:"'EXTENALCLOSECHARGEVALUE'"` // 平仓手续费设置值
- Extenalopencharge float64 `json:"extenalopencharge" xorm:"'EXTENALOPENCHARGE'"` // 建仓手续费(商品)(外部)
- Extenalclosecharge float64 `json:"extenalclosecharge" xorm:"'EXTENALCLOSECHARGE'"` // 平仓手续费(商品)(外部)
- Parentaccountid int64 `json:"parentaccountid" xorm:"'PARENTACCOUNTID'"` // 所属母账户
- Relatedouttradeid int64 `json:"relatedouttradeid" xorm:"'RELATEDOUTTRADEID'"` // 关联外部成交单ID
- Asapplyid int64 `json:"asapplyid" xorm:"'ASAPPLYID'" binding:"required"` // 策略申请ID
- Detailtype int64 `json:"detailtype" xorm:"'DETAILTYPE'"` // 明细类型 - 1:套利对冲 2:期货换月 3:期货仓位调整
- Spotcontractid int64 `json:"spotcontractid" xorm:"'SPOTCONTRACTID'"` // 现货合同ID [1:套利对冲 为合同ID,2:期货换月\3:期货仓位调整时为0]
- ASContractno string `json:"ascontractno" xorm:"'ASCONTRACTNO'"` // 策略编号
- Spotcontractno string `json:"spotcontractno" xorm:"'SPOTCONTRACTNO'"` // 现货合同编号
- }
- // QueryInnerTradeDetail 查询内部成交单信息
- // @Summary 查询内部成交单信息
- // @Produce json
- // @Security ApiKeyAuth
- // @Param accountid query int true "资金账户"
- // @Success 200 {object} QueryInnerTradeDetailRsp
- // @Failure 500 {object} app.Response
- // @Router /Erms2/QueryInnerTradeDetail [get]
- // @Tags 风险管理
- func QueryInnerTradeDetail(c *gin.Context) {
- appG := app.Gin{C: c}
- // 获取请求参数
- var req QueryInnerTradeDetailReq
- if err := appG.C.ShouldBindQuery(&req); err != nil {
- logger.GetLogger().Errorf("QueryInnerTradeDetail failed: %s", err.Error())
- appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
- return
- }
- // 查询数据
- engine := db.GetEngine()
- datas := make([]QueryInnerTradeDetailRsp, 0)
- sql := fmt.Sprintf(`select
- t.Tradeid,
- t.Buyorsell,
- t.Orderid,
- t.Tradedate,
- t.Accountid,
- t.Goodsid,
- t.Marketid,
- t.Tradetime,
- t.Tradeprice,
- t.Tradeqty,
- t.Tradeamount,
- t.Closepl,
- t.Opencharge,
- t.Closecharge,
- t.Tradetype,
- t.Channelbuildtype,
- t.Closetype,
- t.Hedgeflag,
- t.Openqty,
- t.Closeqty,
- t.Status,
- t.Isreckoned,
- t.Openfeealgorithm,
- t.Openchargevalue,
- t.Closefeealgorithm,
- t.Closechargevalue,
- t.Accountcurrencyid,
- t.Goodscurrencyid,
- t.Curexchangerate,
- t.Opencharge2,
- t.Closecharge2,
- t.Closepl2,
- t.Closepl3,
- t.Closepl4,
- t.Extenalopenfeealgorithm,
- t.Extenalopenchargevalue,
- t.Extenalclosefeealgorithm,
- t.Extenalclosechargevalue,
- t.Extenalopencharge,
- t.Extenalclosecharge,
- t.Parentaccountid,
- t.Relatedouttradeid,
- ast.Asapplyid,
- ast.Detailtype,
- ast.Spotcontractid,
- asd.ContractNo ASContractno,
- sc.contractno Spotcontractno
- from Hedge_InnerTradeDetail t
- left join ERMS2_ASTradeDetails ast on t.relatedouttradeid = OutTradeID
- left join ERMS2_ArbitrageStrategy asd on ast.asapplyid = asd.asapplyid
- left join ERMS2_SpotContract sc on ast.spotcontractid = sc.spotcontractid
- where t.Accountid = %d`, req.AccountID)
- if err := engine.SQL(sql).Find(&datas); err != nil {
- // 查询失败
- logger.GetLogger().Errorf("QueryInnerTradeDetail failed: %s", err.Error())
- appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
- return
- }
- // 查询成功
- logger.GetLogger().Infof("QueryInnerTradeDetail successed: %v", datas)
- appG.Response(http.StatusOK, e.SUCCESS, datas)
- }
|