Procházet zdrojové kódy

1、接口 /Mine/QueryMineTradeGoodsDeliveryOfflines 增加 tradeid 出参;
2、接口 /User/LoginQuery 市场信息增加 riskcontrolmode 出参。

zhouxnsz před 1 rokem
rodič
revize
0019118273

+ 2 - 2
controllers/common/common.go

@@ -179,8 +179,8 @@ func QueryImageConfigs(c *gin.Context) {
 		if item.Urltype == 2 {
 			if i, err := strconv.Atoi(v.URL); err == nil {
 				if market, _ := models.GetMarketByGoodsID(i); market != nil {
-					item.MarketID = int(market.Marketid)
-					item.TradeMode = int(market.Trademode)
+					item.MarketID = int(market.MARKETID)
+					item.TradeMode = int(market.TRADEMODE)
 				}
 			}
 

+ 2 - 2
controllers/ermcp/qryOrder.go

@@ -304,7 +304,7 @@ func QueryErmcpTradePosition(c *gin.Context) {
 					appG.Response(http.StatusBadRequest, e.ERROR_GET_MARKET_FAILED, nil)
 					return
 				}
-				item.Marketid = int64(market.Marketid)
+				item.Marketid = int64(market.MARKETID)
 				// 获取对应商品信息
 				goods, err := models.GetGoods(int(v.Goodsid))
 				if err != nil {
@@ -410,7 +410,7 @@ func QueryErmcpTradePosition(c *gin.Context) {
 					appG.Response(http.StatusBadRequest, e.ERROR_GET_MARKET_FAILED, nil)
 					return
 				}
-				item.Marketid = int64(market.Marketid)
+				item.Marketid = int64(market.MARKETID)
 				// 获取对应商品信息
 				goods, err := models.GetGoods(int(v.Goodsid))
 				if err != nil {

+ 1 - 1
controllers/market/market.go

@@ -61,7 +61,7 @@ func QueryMarketRun(c *gin.Context) {
 			appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
 			return
 		}
-		if market.Markettype != 2 {
+		if market.MARKETTYPE != 2 {
 			continue
 		}
 

+ 7 - 7
controllers/quote/history.go

@@ -145,7 +145,7 @@ func QueryHistoryDatas(c *gin.Context) {
 			return
 		}
 
-		logger.GetLogger().Debugf("[checkTiks] goodscode[%v] trademode[%v]", req.GoodsCode, market.Trademode)
+		logger.GetLogger().Debugf("[checkTiks] goodscode[%v] trademode[%v]", req.GoodsCode, market.TRADEMODE)
 
 		// 获取目标品种交易日
 		// FIXME: - 由于mtp2.0目前未同步外部交易所品种的当前交易日,
@@ -153,7 +153,7 @@ func QueryHistoryDatas(c *gin.Context) {
 		//          取统一的交易日,后期应要求服务端同步外部数据
 		// 2021.06.30 业务更新:15、97和99市场的行情交易日要从商品盘面中获取
 		quoteTradeDate := ""
-		if market.Trademode == 15 || market.Trademode == 97 || market.Trademode == 99 {
+		if market.TRADEMODE == 15 || market.TRADEMODE == 97 || market.TRADEMODE == 99 {
 			if quoteDays, err := models.GetQuoteDays("'" + req.GoodsCode + "'"); err == nil {
 				if len(quoteDays) > 0 {
 					quoteTradeDate = time.Unix(quoteDays[0].Exchangedate, 0).Format("20060102")
@@ -161,7 +161,7 @@ func QueryHistoryDatas(c *gin.Context) {
 				}
 			}
 		} else {
-			if marketRun, err := models.GetMarketRun(int(market.Marketid)); err == nil {
+			if marketRun, err := models.GetMarketRun(int(market.MARKETID)); err == nil {
 				quoteTradeDate = marketRun.Tradedate2
 				logger.GetLogger().Debugf("[checkTiks] get quoteTradeDate[%v] = marketRun.Tradedate2", quoteTradeDate)
 			}
@@ -468,14 +468,14 @@ func QueryTSData(c *gin.Context) {
 	//          取统一的交易日,后期应要求服务端同步外部数据
 	// 2021.06.30 业务更新:15、97和99市场的行情交易日要从商品盘面中获取
 	quoteTradeDate := ""
-	if market.Trademode == 15 || market.Trademode == 97 || market.Trademode == 99 {
+	if market.TRADEMODE == 15 || market.TRADEMODE == 97 || market.TRADEMODE == 99 {
 		if quoteDays, err := models.GetQuoteDays("'" + req.GoodsCode + "'"); err == nil {
 			if len(quoteDays) > 0 {
 				quoteTradeDate = time.Unix(quoteDays[0].Exchangedate, 0).Format("20060102")
 			}
 		}
 	} else {
-		if marketRun, err := models.GetMarketRun(int(market.Marketid)); err == nil {
+		if marketRun, err := models.GetMarketRun(int(market.MARKETID)); err == nil {
 			quoteTradeDate = marketRun.Tradedate2
 		}
 	}
@@ -489,7 +489,7 @@ func QueryTSData(c *gin.Context) {
 	// 获取目标品种的开休市计划
 	var runSteps []map[string]interface{}
 	// 通道交易外部市场开休市计划表 - QuoteSourceGroupRunStep; 其它市场的 - MarketRunStepDetail
-	if market.Trademode == 15 || market.Trademode == 97 || market.Trademode == 99 {
+	if market.TRADEMODE == 15 || market.TRADEMODE == 97 || market.TRADEMODE == 99 {
 		// 外部市场
 		sourceRunSteps, err := models.FindQuoteSourceGroupRunSteps(*goods)
 		if err != nil {
@@ -510,7 +510,7 @@ func QueryTSData(c *gin.Context) {
 	}
 	// 非外部市场或外部市场没有配置QuoteSourceGroupRunStep表数据的情况下,都从MarketRunStepDetail中获取数据
 	if len(runSteps) == 0 {
-		sourceRunSteps, err := models.FindMarketRunStepDetails(int(market.Marketid))
+		sourceRunSteps, err := models.FindMarketRunStepDetails(int(market.MARKETID))
 		if err != nil {
 			logger.GetLogger().Errorf("QueryTSData failed: %s", err.Error())
 			appG.Response(http.StatusBadRequest, e.ERROR_GET_RUNSTEP_FAILED, nil)

+ 1 - 1
controllers/user/user.go

@@ -313,7 +313,7 @@ func LoginQuery(c *gin.Context) {
 	if len(rsp.Markets) > 0 {
 		marketIDs := make([]int, 0)
 		for _, v := range rsp.Markets {
-			marketIDs = append(marketIDs, int(v.Marketid))
+			marketIDs = append(marketIDs, int(v.MARKETID))
 		}
 		goodsgroups, err := models.GetGoodsgroupInMarketIDs(marketIDs)
 		if err != nil {

+ 12 - 12
docs/docs.go

@@ -43232,17 +43232,9 @@ const docTemplate = `{
         },
         "models.Market": {
             "type": "object",
-            "required": [
-                "marketid",
-                "marketstatus",
-                "openmethod",
-                "reckonpricealgorithm",
-                "trademode",
-                "tradeproperty"
-            ],
             "properties": {
                 "auctionwrtype": {
-                    "description": "竞拍仓单类型 - 1:无仓单 2:有仓单 3;有无仓单均可",
+                    "description": "仓单类型(现货交易) - 1:无仓单 2:有仓单 3;有无仓单均可",
                     "type": "integer"
                 },
                 "canacceptquote": {
@@ -43250,7 +43242,7 @@ const docTemplate = `{
                     "type": "integer"
                 },
                 "cangoodsexercise": {
-                    "description": "[期权]是否可现货行权- 0:否 1:是",
+                    "description": "[期权]是否可现货行权- 0:否 1:是 \\ 是否交收",
                     "type": "integer"
                 },
                 "cangoodsexercisetype": {
@@ -43310,7 +43302,7 @@ const docTemplate = `{
                     "type": "integer"
                 },
                 "haswr": {
-                    "description": "[竞拍]是否需要仓单 -  0:不需要  1:需要-作废",
+                    "description": "[竞拍]是否需要仓单 -  0:不需要  1:需要- 作废",
                     "type": "integer"
                 },
                 "isdeductmargin": {
@@ -43366,7 +43358,7 @@ const docTemplate = `{
                     "type": "integer"
                 },
                 "matchermode": {
-                    "description": "指定对手模式[仓单贸易模式专用] - 1:任意对手",
+                    "description": "指定对手模式[仓单贸易模式专用] - 1:任意对手 - 作废",
                     "type": "integer"
                 },
                 "openmethod": {
@@ -43421,6 +43413,10 @@ const docTemplate = `{
                     "description": "结算时间[通道交易-对冲](HH:mm)",
                     "type": "string"
                 },
+                "riskcontrolmode": {
+                    "description": "风控方式(52模式) 1:按单风控 2:按账户风控",
+                    "type": "integer"
+                },
                 "roleprioritytype": {
                     "description": "角色优先类型 - 1:无 2:报价商优先 3:非报价商优先 [16:挂牌点选]",
                     "type": "integer"
@@ -43910,6 +43906,10 @@ const docTemplate = `{
                     "description": "申请交易日",
                     "type": "string"
                 },
+                "tradeid": {
+                    "description": "成交单号(10-线下交收)",
+                    "type": "string"
+                },
                 "userid": {
                     "description": "申请用户ID",
                     "type": "integer"

+ 12 - 12
docs/swagger.json

@@ -43223,17 +43223,9 @@
         },
         "models.Market": {
             "type": "object",
-            "required": [
-                "marketid",
-                "marketstatus",
-                "openmethod",
-                "reckonpricealgorithm",
-                "trademode",
-                "tradeproperty"
-            ],
             "properties": {
                 "auctionwrtype": {
-                    "description": "竞拍仓单类型 - 1:无仓单 2:有仓单 3;有无仓单均可",
+                    "description": "仓单类型(现货交易) - 1:无仓单 2:有仓单 3;有无仓单均可",
                     "type": "integer"
                 },
                 "canacceptquote": {
@@ -43241,7 +43233,7 @@
                     "type": "integer"
                 },
                 "cangoodsexercise": {
-                    "description": "[期权]是否可现货行权- 0:否 1:是",
+                    "description": "[期权]是否可现货行权- 0:否 1:是 \\ 是否交收",
                     "type": "integer"
                 },
                 "cangoodsexercisetype": {
@@ -43301,7 +43293,7 @@
                     "type": "integer"
                 },
                 "haswr": {
-                    "description": "[竞拍]是否需要仓单 -  0:不需要  1:需要-作废",
+                    "description": "[竞拍]是否需要仓单 -  0:不需要  1:需要- 作废",
                     "type": "integer"
                 },
                 "isdeductmargin": {
@@ -43357,7 +43349,7 @@
                     "type": "integer"
                 },
                 "matchermode": {
-                    "description": "指定对手模式[仓单贸易模式专用] - 1:任意对手",
+                    "description": "指定对手模式[仓单贸易模式专用] - 1:任意对手 - 作废",
                     "type": "integer"
                 },
                 "openmethod": {
@@ -43412,6 +43404,10 @@
                     "description": "结算时间[通道交易-对冲](HH:mm)",
                     "type": "string"
                 },
+                "riskcontrolmode": {
+                    "description": "风控方式(52模式) 1:按单风控 2:按账户风控",
+                    "type": "integer"
+                },
                 "roleprioritytype": {
                     "description": "角色优先类型 - 1:无 2:报价商优先 3:非报价商优先 [16:挂牌点选]",
                     "type": "integer"
@@ -43901,6 +43897,10 @@
                     "description": "申请交易日",
                     "type": "string"
                 },
+                "tradeid": {
+                    "description": "成交单号(10-线下交收)",
+                    "type": "string"
+                },
                 "userid": {
                     "description": "申请用户ID",
                     "type": "integer"

+ 10 - 11
docs/swagger.yaml

@@ -14564,13 +14564,13 @@ definitions:
   models.Market:
     properties:
       auctionwrtype:
-        description: 竞拍仓单类型 - 1:无仓单 2:有仓单 3;有无仓单均可
+        description: 仓单类型(现货交易) - 1:无仓单 2:有仓单 3;有无仓单均可
         type: integer
       canacceptquote:
         description: 确认行权是否接收行情 - 0:不接受 1:接受 [可确认权的挂牌期权市场可配置]
         type: integer
       cangoodsexercise:
-        description: '[期权]是否可现货行权- 0:否 1:是'
+        description: '[期权]是否可现货行权- 0:否 1:是 \ 是否交收'
         type: integer
       cangoodsexercisetype:
         description: 可现货行权期权类型 - 1:认购 2认沽 3:认购认沽 [CanGoodsExercise = 1时可设置]
@@ -14615,7 +14615,7 @@ definitions:
         description: 是否交易授信[做市收益权] - 0:不授信 1:授信
         type: integer
       haswr:
-        description: '[竞拍]是否需要仓单 -  0:不需要  1:需要-作废'
+        description: '[竞拍]是否需要仓单 -  0:不需要  1:需要- 作废'
         type: integer
       isdeductmargin:
         description: 竞拍违约是否扣除保证金[竞拍-降价式] - 0:不扣 1:扣除
@@ -14658,7 +14658,7 @@ definitions:
         description: 市场类型- 1:非交易服务 2:交易服务
         type: integer
       matchermode:
-        description: 指定对手模式[仓单贸易模式专用] - 1:任意对手
+        description: 指定对手模式[仓单贸易模式专用] - 1:任意对手 - 作废
         type: integer
       openmethod:
         description: 开盘模式 - 0 自动 1手动
@@ -14700,6 +14700,9 @@ definitions:
       reckontime:
         description: 结算时间[通道交易-对冲](HH:mm)
         type: string
+      riskcontrolmode:
+        description: 风控方式(52模式) 1:按单风控 2:按账户风控
+        type: integer
       roleprioritytype:
         description: 角色优先类型 - 1:无 2:报价商优先 3:非报价商优先 [16:挂牌点选]
         type: integer
@@ -14723,13 +14726,6 @@ definitions:
       updatereckonpriceinterval:
         description: 输入结算价时长(分钟) [1:手工输入(自动)]
         type: integer
-    required:
-    - marketid
-    - marketstatus
-    - openmethod
-    - reckonpricealgorithm
-    - trademode
-    - tradeproperty
     type: object
   models.Marketcalendar:
     properties:
@@ -15073,6 +15069,9 @@ definitions:
       reqtradedate:
         description: 申请交易日
         type: string
+      tradeid:
+        description: 成交单号(10-线下交收)
+        type: string
       userid:
         description: 申请用户ID
         type: integer

+ 3 - 3
models/common.go

@@ -436,9 +436,9 @@ func GetQuoteMenu(loginID int) ([]QuotePrimaryMenu, error) {
 			for mi, mv := range markets {
 				quoteSecondaryMenu := QuoteSecondaryMenu{
 					Index:         mi,
-					MarketID:      int(mv.Marketid),
-					TradeMode:     int(mv.Trademode),
-					MenuTitle:     mv.Marketname,
+					MarketID:      int(mv.MARKETID),
+					TradeMode:     int(mv.TRADEMODE),
+					MenuTitle:     mv.MARKETNAME,
 					GoodsGroupIDs: make([]int, 0),
 				}
 				quotePrimaryMenu.SubMenus = append(quotePrimaryMenu.SubMenus, quoteSecondaryMenu)

+ 1 - 1
models/ermcpGoods.go

@@ -116,7 +116,7 @@ func GetErmcpGoodses(userid int64, lastUpdateTime string, loginID int64) ([]Ermc
 
 		// 构建市场ID列表
 		for _, market := range markets {
-			ids = append(ids, int(market.Marketid))
+			ids = append(ids, int(market.MARKETID))
 		}
 	}
 

+ 2 - 2
models/goods.go

@@ -189,11 +189,11 @@ func GetGoodsByLoginID(loginID int, marketIDs string) ([]Goods, error) {
 	reqIDs := fmt.Sprintf(",%s,", marketIDs)
 	for _, market := range markets {
 		if len(marketIDs) > 0 {
-			if !strings.Contains(reqIDs, fmt.Sprintf(",%d,", market.Marketid)) {
+			if !strings.Contains(reqIDs, fmt.Sprintf(",%d,", market.MARKETID)) {
 				continue
 			}
 		}
-		ids = append(ids, int(market.Marketid))
+		ids = append(ids, int(market.MARKETID))
 	}
 
 	// 获取对应商品信息

+ 18 - 18
models/hsby.go

@@ -590,11 +590,11 @@ func GetHsbyBuyMyOrderDetails(accountIDs string, myBuyStatus int) ([]HybsMyBuyOr
 	// 默认取 TradeMode = 16 or 71 的市场
 	if len(marketIDs) == 0 {
 		for _, v := range markets {
-			if v.Trademode == 16 || v.Trademode == 71 || v.Trademode == 70 {
+			if v.TRADEMODE == 16 || v.TRADEMODE == 71 || v.TRADEMODE == 70 {
 				if len(marketIDs) == 0 {
-					marketIDs = strconv.Itoa(int(v.Marketid))
+					marketIDs = strconv.Itoa(int(v.MARKETID))
 				} else {
-					marketIDs += "," + strconv.Itoa(int(v.Marketid))
+					marketIDs += "," + strconv.Itoa(int(v.MARKETID))
 				}
 			}
 		}
@@ -998,11 +998,11 @@ func GetHsbySellMyOrderDetails(accountIDs string) ([]HsbySellMyDetail, error) {
 	engine := db.GetEngine()
 	marketIDs := "" // 我的闲置-发布中: 二级市场卖挂牌、三级商城
 	for _, v := range markets {
-		if v.Trademode == 16 || v.Trademode == 70 {
+		if v.TRADEMODE == 16 || v.TRADEMODE == 70 {
 			if len(marketIDs) == 0 {
-				marketIDs = strconv.Itoa(int(v.Marketid))
+				marketIDs = strconv.Itoa(int(v.MARKETID))
 			} else {
-				marketIDs += "," + strconv.Itoa(int(v.Marketid))
+				marketIDs += "," + strconv.Itoa(int(v.MARKETID))
 			}
 		}
 	}
@@ -1050,11 +1050,11 @@ func GetHsbySellMyTradeDetails(accountIDs string) ([]HsbySellMyDetail, error) {
 	marketIDs := "" // 我的闲置-发布中: 二级市场卖方向成交单(包括历史成交单)
 	// 默认取 TradeMode = 16
 	for _, v := range markets {
-		if v.Trademode == 16 || v.Trademode == 70 {
+		if v.TRADEMODE == 16 || v.TRADEMODE == 70 {
 			if len(marketIDs) == 0 {
-				marketIDs = strconv.Itoa(int(v.Marketid))
+				marketIDs = strconv.Itoa(int(v.MARKETID))
 			} else {
-				marketIDs += "," + strconv.Itoa(int(v.Marketid))
+				marketIDs += "," + strconv.Itoa(int(v.MARKETID))
 			}
 		}
 	}
@@ -1283,11 +1283,11 @@ func GetHsbyBuyMyTradeDetails(accountIDs string) ([]HsbyBuyMyTradeDetail, error)
 	marketIDs := "" // 我的订单包括一二级市场卖方向成交单(包括历史成交单)
 	// 默认取 TradeMode = 16
 	for _, v := range markets {
-		if v.Trademode == 16 || v.Trademode == 71 || v.Trademode == 70 {
+		if v.TRADEMODE == 16 || v.TRADEMODE == 71 || v.TRADEMODE == 70 {
 			if len(marketIDs) == 0 {
-				marketIDs = strconv.Itoa(int(v.Marketid))
+				marketIDs = strconv.Itoa(int(v.MARKETID))
 			} else {
-				marketIDs += "," + strconv.Itoa(int(v.Marketid))
+				marketIDs += "," + strconv.Itoa(int(v.MARKETID))
 			}
 		}
 	}
@@ -1408,11 +1408,11 @@ func GetHsbyBuyMyPayOrders(accountIDs string, buyOrderID, sellOrderID int) ([]Hs
 	marketIDs := "" // 我的订单包括一二级市场卖方向成交单
 	// 默认取 TradeMode = 16
 	for _, v := range markets {
-		if v.Trademode == 16 || v.Trademode == 71 || v.Trademode == 70 {
+		if v.TRADEMODE == 16 || v.TRADEMODE == 71 || v.TRADEMODE == 70 {
 			if len(marketIDs) == 0 {
-				marketIDs = strconv.Itoa(int(v.Marketid))
+				marketIDs = strconv.Itoa(int(v.MARKETID))
 			} else {
-				marketIDs += "," + strconv.Itoa(int(v.Marketid))
+				marketIDs += "," + strconv.Itoa(int(v.MARKETID))
 			}
 		}
 	}
@@ -1512,11 +1512,11 @@ func GetHsbySellCollectionOrders(accountIDs string) ([]HsbySellCollectionOrder,
 	engine := db.GetEngine()
 	marketIDs := ""
 	for _, v := range markets {
-		if v.Trademode == 16 || v.Trademode == 70 {
+		if v.TRADEMODE == 16 || v.TRADEMODE == 70 {
 			if len(marketIDs) == 0 {
-				marketIDs = strconv.Itoa(int(v.Marketid))
+				marketIDs = strconv.Itoa(int(v.MARKETID))
 			} else {
-				marketIDs += "," + strconv.Itoa(int(v.Marketid))
+				marketIDs += "," + strconv.Itoa(int(v.MARKETID))
 			}
 		}
 	}

+ 53 - 52
models/market.go

@@ -9,58 +9,59 @@ import (
 
 // Market 市场表
 type Market struct {
-	Marketid                  int32   `json:"marketid"  xorm:"'MARKETID'" binding:"required"`                         // 市场ID正常5位,前三位固定:两位表示交易模式, 一位表示交易属性(1:收益权,2:所有权) 其它特殊市场:0-系统 1-交割服务 2-账户服务3-履约服务 4-仓单服务 5-积分服务 6-银行服务
-	Marketname                string  `json:"marketname"  xorm:"'MARKETNAME'"`                                        // 市场名称
-	Exchareaid                int32   `json:"exchareaid"  xorm:"'EXCHAREAID'"`                                        // 所属交易所,可以没有
-	Markettype                int32   `json:"markettype"  xorm:"'MARKETTYPE'"`                                        // 市场类型- 1:非交易服务 2:交易服务
-	Trademode                 int32   `json:"trademode"  xorm:"'TRADEMODE'" binding:"required"`                       // 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价
-	Tradeproperty             int32   `json:"tradeproperty"  xorm:"'TRADEPROPERTY'" binding:"required"`               // 交易属性 -  1:收益权(可做空) 2:所有权(不可做空) 3:期权 4:现货 5:参考行情 6:通道交易 7:币交易 8:场外期权
-	Openmethod                int32   `json:"openmethod"  xorm:"'OPENMETHOD'" binding:"required"`                     // 开盘模式 - 0 自动 1手动
-	Reckonpricealgorithm      int32   `json:"reckonpricealgorithm"  xorm:"'RECKONPRICEALGORITHM'" binding:"required"` // 结算价算法: 1:最后多少笔成交价加权平均 2:最后多少秒成交价加权平均 3:全天加权平均 4:最后一口价 5.买一价 6.卖一价 7.买一卖一均价 8.外部结算价
-	Reckonpriceparam          int32   `json:"reckonpriceparam"  xorm:"'RECKONPRICEPARAM'"`                            // 结算价参数
-	Marketstatus              int32   `json:"marketstatus"  xorm:"'MARKETSTATUS'" binding:"required"`                 // 生效状态(ValidStatus枚举): 1:待生效 2:正常 3:注销
-	Marketserviceid           int32   `json:"marketserviceid"  xorm:"'MARKETSERVICEID'"`                              // 市场服务ID
-	Marginformula             int32   `json:"marginformula"  xorm:"'MARGINFORMULA'"`                                  // 持仓保证金公式 - 1:双边收 2:净头寸收 3:大小边差异收 4:大边收 5:卖持仓收(仅期权)
-	Performancetempid         int64   `json:"performancetempid"  xorm:"'PERFORMANCETEMPID'"`                          // 履约计划模板ID - 作废
-	Clearinterval             int32   `json:"clearinterval"  xorm:"'CLEARINTERVAL'"`                                  // 待开市间隔(交易市场开盘前多久发市场待开市信号(单位分钟))
-	Matchermode               int32   `json:"matchermode"  xorm:"'MATCHERMODE'"`                                      // 指定对手模式[仓单贸易模式专用] - 1:任意对手
-	Reckonorder               int32   `json:"reckonorder"  xorm:"'RECKONORDER'"`                                      // 结算顺序
-	Canpreexercise            int32   `json:"canpreexercise"  xorm:"'CANPREEXERCISE'"`                                //  [期权]是否可预申报- 0:否 1:是
-	Cangoodsexercise          int32   `json:"cangoodsexercise"  xorm:"'CANGOODSEXERCISE'"`                            //  [期权]是否可现货行权- 0:否 1:是
-	Goodstype                 int32   `json:"goodstype"  xorm:"'GOODSTYPE'"`                                          // 商品类型 - 1:交易商品 2:仓单商品
-	Roleprioritytype          int32   `json:"roleprioritytype"  xorm:"'ROLEPRIORITYTYPE'"`                            // 角色优先类型 - 1:无 2:报价商优先 3:非报价商优先 [16:挂牌点选]
-	Isrecordsource            int32   `json:"isrecordsource"  xorm:"'ISRECORDSOURCE'"`                                // 是否记录成交源 - 0:不记录 1:记录 [所有权]
-	Marginformula2            int32   `json:"marginformula2"  xorm:"'MARGINFORMULA2'"`                                // 持仓保证金公式(仅受托竞价) - 1:双边收 2:净头寸收 3:大小边差异收 4:大边收 5:卖持仓收(仅期权)
-	Haswr                     int32   `json:"haswr"  xorm:"'HASWR'"`                                                  // [竞拍]是否需要仓单 -  0:不需要  1:需要-作废
-	Premiumquotemode          int32   `json:"premiumquotemode"  xorm:"'PREMIUMQUOTEMODE'"`                            // 权利金报价方式 - 1:自动 2:手动
-	Cangoodsexercisetype      int32   `json:"cangoodsexercisetype"  xorm:"'CANGOODSEXERCISETYPE'"`                    // 可现货行权期权类型 - 1:认购 2认沽 3:认购认沽 [CanGoodsExercise = 1时可设置]
-	Canacceptquote            int32   `json:"canacceptquote"  xorm:"'CANACCEPTQUOTE'"`                                // 确认行权是否接收行情 - 0:不接受 1:接受 [可确认权的挂牌期权市场可配置]
-	Canmutistage              int32   `json:"canmutistage"  xorm:"'CANMUTISTAGE'"`                                    // 是否可多段运行 – 0:不可 1:可 [挂牌期权]
-	Isdeductmargin            int32   `json:"isdeductmargin"  xorm:"'ISDEDUCTMARGIN'"`                                // 竞拍违约是否扣除保证金[竞拍-降价式] - 0:不扣 1:扣除
-	Canmanualquotestrike      int32   `json:"canmanualquotestrike"  xorm:"'CANMANUALQUOTESTRIKE'"`                    // 是否可手动报行权价- 0:否 1:是 [期权]
-	Tradetype                 int32   `json:"tradetype"  xorm:"'TRADETYPE'"`                                          // 下单方式[通道交易] - 1:直接转单 2:净头寸下单
-	Pendingflag               int32   `json:"pendingflag"  xorm:"'PENDINGFLAG'"`                                      // 待开市时间标识[通道交易-对冲] -  0:当日 1:上日
-	Pendingtime               string  `json:"pendingtime"  xorm:"'PENDINGTIME'"`                                      // 待开市时间[通道交易-对冲](HH:mm)
-	Reckontime                string  `json:"reckontime"  xorm:"'RECKONTIME'"`                                        // 结算时间[通道交易-对冲](HH:mm)
-	Hastradecredit            int32   `json:"hastradecredit"  xorm:"'HASTRADECREDIT'"`                                // 是否交易授信[做市收益权] - 0:不授信 1:授信
-	Contracttmp               string  `json:"contracttmp"  xorm:"'CONTRACTTMP'"`                                      // 合同模板[荷兰式][竞价式][仓单贸易]
-	Hasrebate                 int32   `json:"hasrebate"  xorm:"'HASREBATE'"`                                          // 是否返利[竞价式]  0:不返,1:返利 -- 根据系统参数088显示或隐藏
-	Rebateratio               float64 `json:"rebateratio"  xorm:"'REBATERATIO'"`                                      // 返利比率[竞价式]
-	Otcuserid                 int64   `json:"otcuserid"  xorm:"'OTCUSERID'"`                                          // 场外期权做市商[场外期权]
-	Outersynctime             string  `json:"outersynctime"  xorm:"'OUTERSYNCTIME'"`                                  // 外部同步时间点(h24:mi:ss)[场外期权]
-	Auctionwrtype             int32   `json:"auctionwrtype"  xorm:"'AUCTIONWRTYPE'"`                                  // 竞拍仓单类型 - 1:无仓单 2:有仓单 3;有无仓单均可
-	Isreleasemargin           int32   `json:"isreleasemargin"  xorm:"'ISRELEASEMARGIN'"`                              // 成交参与保证金是否释放[竞价式] - 0:不释放 1释放
-	Selllistingauditflag      int32   `json:"selllistingauditflag"  xorm:"'SELLLISTINGAUDITFLAG'"`                    // 卖挂牌是否需要审核(仓单贸易) - 0:不需要 1:需要
-	Trademarkettype           int32   `json:"trademarkettype"  xorm:"'TRADEMARKETTYPE'"`                              // 交易市场类型 - 1:合约市场 2:外部市场 3:仓单市场
-	PAYLATERFLAG              int32   `json:"paylaterflag" xorm:"PAYLATERFLAG"`                                       // 是否支持后付 - 0:不支持 1;支持 - [挂牌点选 所有权、预售挂牌支持]
-	ISUPDATERECKONPRICE       int32   `json:"isupdatereckonprice" xorm:"ISUPDATERECKONPRICE"`                         // 输入结算价标识 - 0:系统生成 1:手工输入(自动) 2:手工输入(手动)
-	UPDATERECKONPRICEINTERVAL int32   `json:"updatereckonpriceinterval" xorm:"UPDATERECKONPRICEINTERVAL"`             // 输入结算价时长(分钟) [1:手工输入(自动)]
-	FINANCEMARKETID           int32   `json:"financemarketid" xorm:"FINANCEMARKETID"`                                 // 融资回购市场ID [仓单贸易]
-	FORCECLOSEMODE            int32   `json:"forceclosemode" xorm:"FORCECLOSEMODE"`                                   // 定期强平方式 - 1:到期结 2:日结 3:周结 4:月结  [收益权] 枚举-forceCloseMode
-	FORCECLOSEVALUE           int64   `json:"forceclosevalue" xorm:"FORCECLOSEVALUE"`                                 // 定期强平参数 [收益权](周结、月结)
-	DELIVERYMODE              int32   `json:"deliverymode" xorm:"DELIVERYMODE"`                                       // 交收方式(50模式) 1:配对交收 2:强平日交收
-	ISDELIVERYSELLERCANAPPLY  int32   `json:"isdeliverysellercanapply" xorm:"ISDELIVERYSELLERCANAPPLY"`               // 卖方是否可申请交收(50模式 - DeliveryMode = 2时) - 0:否 1:是
-	ISDELIVERYBUYERPAYONLINE  int32   `json:"isdeliverybuyerpayonline" xorm:"ISDELIVERYBUYERPAYONLINE"`               // 交收买方是否线上支付(50模式) - 0:否 1:是
+	MARKETID                  int32   `json:"marketid" xorm:"MARKETID"`                                   // 市场ID正常5位,前三位固定:两位表示交易模式, 一位表示交易属性(1:收益权,2:所有权) 其它特殊市场:0-系统 1-交割服务 2-账户服务3-履约服务 4-仓单服务 5-积分服务 6-银行服务
+	MARKETNAME                string  `json:"marketname" xorm:"MARKETNAME"`                               // 市场名称
+	EXCHAREAID                int32   `json:"exchareaid" xorm:"EXCHAREAID"`                               // 所属交易所,可以没有
+	MARKETTYPE                int32   `json:"markettype" xorm:"MARKETTYPE"`                               // 市场类型- 1:非交易服务 2:交易服务
+	TRADEMODE                 int32   `json:"trademode" xorm:"TRADEMODE"`                                 // 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价
+	TRADEPROPERTY             int32   `json:"tradeproperty" xorm:"TRADEPROPERTY"`                         // 交易属性 -  1:收益权(可做空) 2:所有权(不可做空) 3:期权 4:现货 5:参考行情 6:通道交易 7:币交易 8:场外期权
+	OPENMETHOD                int32   `json:"openmethod" xorm:"OPENMETHOD"`                               // 开盘模式 - 0 自动 1手动
+	RECKONPRICEALGORITHM      int32   `json:"reckonpricealgorithm" xorm:"RECKONPRICEALGORITHM"`           // 结算价算法: 1:最后多少笔成交价加权平均 2:最后多少秒成交价加权平均 3:全天加权平均 4:最后一口价 5.买一价 6.卖一价 7.买一卖一均价 8.外部结算价
+	RECKONPRICEPARAM          int32   `json:"reckonpriceparam" xorm:"RECKONPRICEPARAM"`                   // 结算价参数
+	MARKETSTATUS              int32   `json:"marketstatus" xorm:"MARKETSTATUS"`                           // 生效状态(ValidStatus枚举): 1:待生效 2:正常 3:注销
+	MARKETSERVICEID           int32   `json:"marketserviceid" xorm:"MARKETSERVICEID"`                     // 市场服务ID
+	MARGINFORMULA             int32   `json:"marginformula" xorm:"MARGINFORMULA"`                         // 持仓保证金公式 - 1:双边收 2:净头寸收 3:大小边差异收 4:大边收 5:卖持仓收(仅期权)
+	PERFORMANCETEMPID         int64   `json:"performancetempid" xorm:"PERFORMANCETEMPID"`                 // 履约计划模板ID - 作废
+	CLEARINTERVAL             int32   `json:"clearinterval" xorm:"CLEARINTERVAL"`                         // 待开市间隔(交易市场开盘前多久发市场待开市信号(单位分钟))
+	MATCHERMODE               int32   `json:"matchermode" xorm:"MATCHERMODE"`                             // 指定对手模式[仓单贸易模式专用] - 1:任意对手 - 作废
+	RECKONORDER               int32   `json:"reckonorder" xorm:"RECKONORDER"`                             // 结算顺序
+	CANPREEXERCISE            int32   `json:"canpreexercise" xorm:"CANPREEXERCISE"`                       //  [期权]是否可预申报- 0:否 1:是
+	CANGOODSEXERCISE          int32   `json:"cangoodsexercise" xorm:"CANGOODSEXERCISE"`                   //  [期权]是否可现货行权- 0:否 1:是 \ 是否交收
+	GOODSTYPE                 int32   `json:"goodstype" xorm:"GOODSTYPE"`                                 // 商品类型 - 1:交易商品 2:仓单商品
+	ROLEPRIORITYTYPE          int32   `json:"roleprioritytype" xorm:"ROLEPRIORITYTYPE"`                   // 角色优先类型 - 1:无 2:报价商优先 3:非报价商优先 [16:挂牌点选]
+	ISRECORDSOURCE            int32   `json:"isrecordsource" xorm:"ISRECORDSOURCE"`                       // 是否记录成交源 - 0:不记录 1:记录 [所有权]
+	MARGINFORMULA2            int32   `json:"marginformula2" xorm:"MARGINFORMULA2"`                       // 持仓保证金公式(仅受托竞价) - 1:双边收 2:净头寸收 3:大小边差异收 4:大边收 5:卖持仓收(仅期权)
+	HASWR                     int32   `json:"haswr" xorm:"HASWR"`                                         // [竞拍]是否需要仓单 -  0:不需要  1:需要- 作废
+	PREMIUMQUOTEMODE          int32   `json:"premiumquotemode" xorm:"PREMIUMQUOTEMODE"`                   // 权利金报价方式 - 1:自动 2:手动
+	CANGOODSEXERCISETYPE      int32   `json:"cangoodsexercisetype" xorm:"CANGOODSEXERCISETYPE"`           // 可现货行权期权类型 - 1:认购 2认沽 3:认购认沽 [CanGoodsExercise = 1时可设置]
+	CANACCEPTQUOTE            int32   `json:"canacceptquote" xorm:"CANACCEPTQUOTE"`                       // 确认行权是否接收行情 - 0:不接受 1:接受 [可确认权的挂牌期权市场可配置]
+	CANMUTISTAGE              int32   `json:"canmutistage" xorm:"CANMUTISTAGE"`                           // 是否可多段运行 – 0:不可 1:可 [挂牌期权]
+	ISDEDUCTMARGIN            int32   `json:"isdeductmargin" xorm:"ISDEDUCTMARGIN"`                       // 竞拍违约是否扣除保证金[竞拍-降价式] - 0:不扣 1:扣除
+	CANMANUALQUOTESTRIKE      int32   `json:"canmanualquotestrike" xorm:"CANMANUALQUOTESTRIKE"`           // 是否可手动报行权价- 0:否 1:是 [期权]
+	TRADETYPE                 int32   `json:"tradetype" xorm:"TRADETYPE"`                                 // 下单方式[通道交易] - 1:直接转单 2:净头寸下单
+	PENDINGFLAG               int32   `json:"pendingflag" xorm:"PENDINGFLAG"`                             // 待开市时间标识[通道交易-对冲] -  0:当日 1:上日
+	PENDINGTIME               string  `json:"pendingtime" xorm:"PENDINGTIME"`                             // 待开市时间[通道交易-对冲](HH:mm)
+	RECKONTIME                string  `json:"reckontime" xorm:"RECKONTIME"`                               // 结算时间[通道交易-对冲](HH:mm)
+	HASTRADECREDIT            int32   `json:"hastradecredit" xorm:"HASTRADECREDIT"`                       // 是否交易授信[做市收益权] - 0:不授信 1:授信
+	CONTRACTTMP               string  `json:"contracttmp" xorm:"CONTRACTTMP"`                             // 合同模板[荷兰式][竞价式][仓单贸易]
+	HASREBATE                 int32   `json:"hasrebate" xorm:"HASREBATE"`                                 // 是否返利[竞价式]  0:不返,1:返利 -- 根据系统参数088显示或隐藏
+	REBATERATIO               float64 `json:"rebateratio" xorm:"REBATERATIO"`                             // 返利比率[竞价式]
+	OTCUSERID                 int64   `json:"otcuserid" xorm:"OTCUSERID"`                                 // 场外期权做市商[场外期权]
+	OUTERSYNCTIME             string  `json:"outersynctime" xorm:"OUTERSYNCTIME"`                         // 外部同步时间点(h24:mi:ss)[场外期权]
+	AUCTIONWRTYPE             int32   `json:"auctionwrtype" xorm:"AUCTIONWRTYPE"`                         // 仓单类型(现货交易) - 1:无仓单 2:有仓单 3;有无仓单均可
+	ISRELEASEMARGIN           int32   `json:"isreleasemargin" xorm:"ISRELEASEMARGIN"`                     // 成交参与保证金是否释放[竞价式] - 0:不释放 1释放
+	SELLLISTINGAUDITFLAG      int32   `json:"selllistingauditflag" xorm:"SELLLISTINGAUDITFLAG"`           // 卖挂牌是否需要审核(仓单贸易) - 0:不需要 1:需要
+	TRADEMARKETTYPE           int32   `json:"trademarkettype" xorm:"TRADEMARKETTYPE"`                     // 交易市场类型 - 1:合约市场 2:外部市场 3:仓单市场
+	PAYLATERFLAG              int32   `json:"paylaterflag" xorm:"PAYLATERFLAG"`                           // 是否支持后付 - 0:不支持 1;支持 - [挂牌点选 所有权、预售挂牌支持]
+	ISUPDATERECKONPRICE       int32   `json:"isupdatereckonprice" xorm:"ISUPDATERECKONPRICE"`             // 输入结算价标识 - 0:系统生成 1:手工输入(自动) 2:手工输入(手动)
+	UPDATERECKONPRICEINTERVAL int32   `json:"updatereckonpriceinterval" xorm:"UPDATERECKONPRICEINTERVAL"` // 输入结算价时长(分钟) [1:手工输入(自动)]
+	FINANCEMARKETID           int32   `json:"financemarketid" xorm:"FINANCEMARKETID"`                     // 融资回购市场ID [仓单贸易]
+	FORCECLOSEMODE            int32   `json:"forceclosemode" xorm:"FORCECLOSEMODE"`                       // 定期强平方式 - 1:到期结 2:日结 3:周结 4:月结  [收益权] 枚举-forceCloseMode
+	FORCECLOSEVALUE           int64   `json:"forceclosevalue" xorm:"FORCECLOSEVALUE"`                     // 定期强平参数 [收益权](周结、月结)
+	DELIVERYMODE              int32   `json:"deliverymode" xorm:"DELIVERYMODE"`                           // 交收方式(50模式) 1:配对交收 2:强平日交收
+	ISDELIVERYSELLERCANAPPLY  int32   `json:"isdeliverysellercanapply" xorm:"ISDELIVERYSELLERCANAPPLY"`   // 卖方是否可申请交收(50模式 - DeliveryMode = 2时) - 0:否 1:是
+	ISDELIVERYBUYERPAYONLINE  int32   `json:"isdeliverybuyerpayonline" xorm:"ISDELIVERYBUYERPAYONLINE"`   // 交收买方是否线上支付(50模式) - 0:否 1:是
+	RISKCONTROLMODE           int32   `json:"riskcontrolmode" xorm:"RISKCONTROLMODE"`                     // 风控方式(52模式) 1:按单风控 2:按账户风控
 }
 
 // TableName is MARKET

+ 4 - 2
models/mine.go

@@ -976,6 +976,7 @@ type MineTradeGoodsDeliveryOffline struct {
 	DELIVERYAMOUNT  float64   `json:"deliveryamount" xorm:"DELIVERYAMOUNT"`                  // 交收货款
 	CLOSETIME       time.Time `json:"closetime" xorm:"CLOSETIME"`                            // 完成时间
 	CLOSETRADEDATE  string    `json:"closetradedate" xorm:"CLOSETRADEDATE"`                  // 完成交易日
+	TRADEID         string    `json:"tradeid" xorm:"TRADEID"`                                // 成交单号(10-线下交收)
 
 	GOODSCODE        string `json:"goodscode" xorm:"GOODSCODE"`               // 期货合约代码(内部)
 	GOODSNAME        string `json:"goodsname" xorm:"GOODSNAME"`               // 期货合约名称
@@ -1022,8 +1023,9 @@ func (r *MineTradeGoodsDeliveryOffline) buildSql() string {
        t.deliveryprice,
        t.deliveryamount,
        t.closetime,
-       t.closetradedate
-
+       t.closetradedate,
+	   to_char(t.tradeid) TRADEID
+	   
   from Trade_GoodsDeliveryOffLine t
 
   left join goods g