Parcourir la source

各接口增加“TradeMode”字段

zhou.xiaoning il y a 5 ans
Parent
commit
2c44ac09ea
5 fichiers modifiés avec 174 ajouts et 48 suppressions
  1. 40 4
      docs/docs.go
  2. 40 4
      docs/swagger.json
  3. 32 0
      docs/swagger.yaml
  4. 26 4
      models/hsby.go
  5. 36 36
      models/market.go

+ 40 - 4
docs/docs.go

@@ -3764,7 +3764,8 @@ var doc = `{
                 "goodscode",
                 "goodsid",
                 "goodsname",
-                "marketid"
+                "marketid",
+                "trademode"
             ],
             "properties": {
                 "currency": {
@@ -3835,6 +3836,10 @@ var doc = `{
                     "description": "行情最小变动单位 [整数,报价小数位一起使用]",
                     "type": "integer"
                 },
+                "trademode": {
+                    "description": "交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价",
+                    "type": "integer"
+                },
                 "vendorattr": {
                     "description": "供应商附件(多张,逗号分隔)",
                     "type": "string"
@@ -3914,7 +3919,8 @@ var doc = `{
                 "goodscode",
                 "goodsid",
                 "goodsname",
-                "marketid"
+                "marketid",
+                "trademode"
             ],
             "properties": {
                 "currency": {
@@ -3929,6 +3935,10 @@ var doc = `{
                     "description": "报价小数位",
                     "type": "integer"
                 },
+                "enableqty": {
+                    "description": "剩余数量",
+                    "type": "integer"
+                },
                 "endtime": {
                     "description": "预售结束时间",
                     "type": "string"
@@ -3961,6 +3971,10 @@ var doc = `{
                     "description": "介绍图片[多张用逗号分隔]",
                     "type": "string"
                 },
+                "presaledqty": {
+                    "description": "已预售量(预售结束时更新)",
+                    "type": "integer"
+                },
                 "presaleqty": {
                     "description": "预售数量",
                     "type": "integer"
@@ -3981,6 +3995,10 @@ var doc = `{
                     "description": "预售开始时间",
                     "type": "string"
                 },
+                "trademode": {
+                    "description": "交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价",
+                    "type": "integer"
+                },
                 "videourls": {
                     "description": "介绍视频[多张用逗号分隔]",
                     "type": "string"
@@ -3993,7 +4011,8 @@ var doc = `{
                 "goodscode",
                 "goodsid",
                 "goodsname",
-                "marketid"
+                "marketid",
+                "trademode"
             ],
             "properties": {
                 "currency": {
@@ -4016,6 +4035,10 @@ var doc = `{
                     "description": "目的地(省)ID",
                     "type": "integer"
                 },
+                "enableqty": {
+                    "description": "剩余数量",
+                    "type": "integer"
+                },
                 "endtime": {
                     "description": "预售结束时间",
                     "type": "string"
@@ -4056,6 +4079,10 @@ var doc = `{
                     "description": "介绍图片[多张用逗号分隔]",
                     "type": "string"
                 },
+                "presaledqty": {
+                    "description": "已预售量(预售结束时更新)",
+                    "type": "integer"
+                },
                 "presaleqty": {
                     "description": "预售数量",
                     "type": "integer"
@@ -4076,6 +4103,10 @@ var doc = `{
                     "description": "预售开始时间",
                     "type": "string"
                 },
+                "trademode": {
+                    "description": "交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价",
+                    "type": "integer"
+                },
                 "vendorattr": {
                     "description": "供应商附件(多张,逗号分隔)",
                     "type": "string"
@@ -4100,7 +4131,8 @@ var doc = `{
                 "goodscode",
                 "goodsid",
                 "goodsname",
-                "marketid"
+                "marketid",
+                "trademode"
             ],
             "properties": {
                 "currency": {
@@ -4151,6 +4183,10 @@ var doc = `{
                     "description": "行情最小变动单位 [整数,报价小数位一起使用]",
                     "type": "integer"
                 },
+                "trademode": {
+                    "description": "交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价",
+                    "type": "integer"
+                },
                 "videourls": {
                     "description": "介绍视频[多张用逗号分隔]",
                     "type": "string"

+ 40 - 4
docs/swagger.json

@@ -3748,7 +3748,8 @@
                 "goodscode",
                 "goodsid",
                 "goodsname",
-                "marketid"
+                "marketid",
+                "trademode"
             ],
             "properties": {
                 "currency": {
@@ -3819,6 +3820,10 @@
                     "description": "行情最小变动单位 [整数,报价小数位一起使用]",
                     "type": "integer"
                 },
+                "trademode": {
+                    "description": "交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价",
+                    "type": "integer"
+                },
                 "vendorattr": {
                     "description": "供应商附件(多张,逗号分隔)",
                     "type": "string"
@@ -3898,7 +3903,8 @@
                 "goodscode",
                 "goodsid",
                 "goodsname",
-                "marketid"
+                "marketid",
+                "trademode"
             ],
             "properties": {
                 "currency": {
@@ -3913,6 +3919,10 @@
                     "description": "报价小数位",
                     "type": "integer"
                 },
+                "enableqty": {
+                    "description": "剩余数量",
+                    "type": "integer"
+                },
                 "endtime": {
                     "description": "预售结束时间",
                     "type": "string"
@@ -3945,6 +3955,10 @@
                     "description": "介绍图片[多张用逗号分隔]",
                     "type": "string"
                 },
+                "presaledqty": {
+                    "description": "已预售量(预售结束时更新)",
+                    "type": "integer"
+                },
                 "presaleqty": {
                     "description": "预售数量",
                     "type": "integer"
@@ -3965,6 +3979,10 @@
                     "description": "预售开始时间",
                     "type": "string"
                 },
+                "trademode": {
+                    "description": "交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价",
+                    "type": "integer"
+                },
                 "videourls": {
                     "description": "介绍视频[多张用逗号分隔]",
                     "type": "string"
@@ -3977,7 +3995,8 @@
                 "goodscode",
                 "goodsid",
                 "goodsname",
-                "marketid"
+                "marketid",
+                "trademode"
             ],
             "properties": {
                 "currency": {
@@ -4000,6 +4019,10 @@
                     "description": "目的地(省)ID",
                     "type": "integer"
                 },
+                "enableqty": {
+                    "description": "剩余数量",
+                    "type": "integer"
+                },
                 "endtime": {
                     "description": "预售结束时间",
                     "type": "string"
@@ -4040,6 +4063,10 @@
                     "description": "介绍图片[多张用逗号分隔]",
                     "type": "string"
                 },
+                "presaledqty": {
+                    "description": "已预售量(预售结束时更新)",
+                    "type": "integer"
+                },
                 "presaleqty": {
                     "description": "预售数量",
                     "type": "integer"
@@ -4060,6 +4087,10 @@
                     "description": "预售开始时间",
                     "type": "string"
                 },
+                "trademode": {
+                    "description": "交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价",
+                    "type": "integer"
+                },
                 "vendorattr": {
                     "description": "供应商附件(多张,逗号分隔)",
                     "type": "string"
@@ -4084,7 +4115,8 @@
                 "goodscode",
                 "goodsid",
                 "goodsname",
-                "marketid"
+                "marketid",
+                "trademode"
             ],
             "properties": {
                 "currency": {
@@ -4135,6 +4167,10 @@
                     "description": "行情最小变动单位 [整数,报价小数位一起使用]",
                     "type": "integer"
                 },
+                "trademode": {
+                    "description": "交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价",
+                    "type": "integer"
+                },
                 "videourls": {
                     "description": "介绍视频[多张用逗号分隔]",
                     "type": "string"

+ 32 - 0
docs/swagger.yaml

@@ -1323,6 +1323,10 @@ definitions:
       quoteminunit:
         description: 行情最小变动单位 [整数,报价小数位一起使用]
         type: integer
+      trademode:
+        description: 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式
+          21:竞拍-大宗式 22:受托竞价
+        type: integer
       vendorattr:
         description: 供应商附件(多张,逗号分隔)
         type: string
@@ -1340,6 +1344,7 @@ definitions:
     - goodsid
     - goodsname
     - marketid
+    - trademode
     type: object
   models.HsbyMyGoods:
     properties:
@@ -1393,6 +1398,9 @@ definitions:
       decimalplace:
         description: 报价小数位
         type: integer
+      enableqty:
+        description: 剩余数量
+        type: integer
       endtime:
         description: 预售结束时间
         type: string
@@ -1417,6 +1425,9 @@ definitions:
       picurls:
         description: 介绍图片[多张用逗号分隔]
         type: string
+      presaledqty:
+        description: 已预售量(预售结束时更新)
+        type: integer
       presaleqty:
         description: 预售数量
         type: integer
@@ -1432,6 +1443,10 @@ definitions:
       starttime:
         description: 预售开始时间
         type: string
+      trademode:
+        description: 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式
+          21:竞拍-大宗式 22:受托竞价
+        type: integer
       videourls:
         description: 介绍视频[多张用逗号分隔]
         type: string
@@ -1440,6 +1455,7 @@ definitions:
     - goodsid
     - goodsname
     - marketid
+    - trademode
     type: object
   models.HsbyPreGoodsDetail:
     properties:
@@ -1458,6 +1474,9 @@ definitions:
       descprovinceid:
         description: 目的地(省)ID
         type: integer
+      enableqty:
+        description: 剩余数量
+        type: integer
       endtime:
         description: 预售结束时间
         type: string
@@ -1488,6 +1507,9 @@ definitions:
       picurls:
         description: 介绍图片[多张用逗号分隔]
         type: string
+      presaledqty:
+        description: 已预售量(预售结束时更新)
+        type: integer
       presaleqty:
         description: 预售数量
         type: integer
@@ -1503,6 +1525,10 @@ definitions:
       starttime:
         description: 预售开始时间
         type: string
+      trademode:
+        description: 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式
+          21:竞拍-大宗式 22:受托竞价
+        type: integer
       vendorattr:
         description: 供应商附件(多张,逗号分隔)
         type: string
@@ -1520,6 +1546,7 @@ definitions:
     - goodsid
     - goodsname
     - marketid
+    - trademode
     type: object
   models.HsbyTopGoods:
     properties:
@@ -1559,6 +1586,10 @@ definitions:
       quoteminunit:
         description: 行情最小变动单位 [整数,报价小数位一起使用]
         type: integer
+      trademode:
+        description: 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式
+          21:竞拍-大宗式 22:受托竞价
+        type: integer
       videourls:
         description: 介绍视频[多张用逗号分隔]
         type: string
@@ -1567,6 +1598,7 @@ definitions:
     - goodsid
     - goodsname
     - marketid
+    - trademode
     type: object
   models.HybsMyBuyOrderDetail:
     properties:

+ 26 - 4
models/hsby.go

@@ -65,6 +65,8 @@ type HsbyTopGoods struct {
 	Currency     string `json:"currency" xorm:"'CURRENCY'"`         // 货币
 	Currencysign string `json:"currencysign" xorm:"'CURRENCYSIGN'"` // 货币符号
 
+	Trademode int32 `json:"trademode"  xorm:"'TRADEMODE'" binding:"required"` // 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价
+
 	Last    float64 `json:"last" xorm:"-"`    // 现价
 	LotSize float64 `json:"lotsize" xorm:"-"` // 最小变动单位
 }
@@ -85,9 +87,11 @@ func GetHsbyTopGoodses(marketIDs string, descProvinceID, descCityID int) ([]Hsby
 	session := engine.Table("GOODS").
 		Select(`GOODS.*, 
 				HSBY_GOODSEX.HOTINDEX, HSBY_GOODSEX.VIDEOURLS, HSBY_GOODSEX.PICURLS, 
-				ENUMDICITEM.ENUMDICNAME CURRENCY, ENUMDICITEM.PARAM2 CURRENCYSIGN`).
+				ENUMDICITEM.ENUMDICNAME CURRENCY, ENUMDICITEM.PARAM2 CURRENCYSIGN, 
+				MARKET.TRADEMODE`).
 		Join("LEFT", "HSBY_GOODSEX", "HSBY_GOODSEX.GOODSID = GOODS.GOODSID").
 		Join("LEFT", "ENUMDICITEM", "ENUMDICITEM.ENUMITEMNAME = GOODS.CURRENCYID and ENUMDICITEM.ENUMDICCODE = 'currency'").
+		Join("LEFT", "MARKET", "MARKET.MARKETID = GOODS.MARKETID").
 		Where(fmt.Sprintf("GOODS.GOODSSTATUS = 3 and GOODS.MARKETID in (%s)", marketIDs)) // 二级市场只获取 3:上市 状态的商品
 	if descProvinceID > 0 {
 		session = session.And("HSBY_GOODSEX.DESCPROVINCEID = ?", descProvinceID)
@@ -161,6 +165,8 @@ type HsbyListingGoodsDetail struct {
 	Vendorphone string `json:"vendorphone"  xorm:"'VENDORPHONE'"` // 供应商客服电话
 	Vendorattr  string `json:"vendorattr"  xorm:"'VENDORATTR'"`   // 供应商附件(多张,逗号分隔)
 
+	Trademode int32 `json:"trademode"  xorm:"'TRADEMODE'" binding:"required"` // 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价
+
 	Last      float64 `json:"last" xorm:"-"`      // 现价
 	Limitup   float64 `json:"limitup" xorm:"-"`   // 涨停价
 	Limitdown float64 `json:"limitdown" xorm:"-"` // 跌停价
@@ -181,10 +187,12 @@ func GetHsbyListingGoodsDetail(goodsID int) (*HsbyListingGoodsDetail, error) {
 		Select(`GOODS.GOODSID, GOODS.GOODSCODE, GOODS.GOODSNAME, GOODS.DECIMALPLACE, GOODS.MARKETID, GOODS.QUOTEMINUNIT, 
 				HSBY_GOODSEX.HOTINDEX, HSBY_GOODSEX.VIDEOURLS, HSBY_GOODSEX.PICURLS, HSBY_GOODSEX.DESCPROVINCEID, HSBY_GOODSEX.Desccityid, HSBY_GOODSEX.Goodsdesc,
 				ENUMDICITEM.ENUMDICNAME CURRENCY, ENUMDICITEM.PARAM2 CURRENCYSIGN, 
-				HSBY_SUPPLIERINFO.VENDORNAME, HSBY_SUPPLIERINFO.VENDORPHONE, HSBY_SUPPLIERINFO.VENDORATTR`).
+				HSBY_SUPPLIERINFO.VENDORNAME, HSBY_SUPPLIERINFO.VENDORPHONE, HSBY_SUPPLIERINFO.VENDORATTR, 
+				MARKET.TRADEMODE`).
 		Join("LEFT", "HSBY_GOODSEX", "HSBY_GOODSEX.GOODSID = GOODS.GOODSID").
 		Join("LEFT", "ENUMDICITEM", "ENUMDICITEM.ENUMITEMNAME = GOODS.CURRENCYID and ENUMDICITEM.ENUMDICCODE = 'currency'").
 		Join("LEFT", "HSBY_SUPPLIERINFO", "HSBY_SUPPLIERINFO.VENDORID = HSBY_GOODSEX.VENDORID").
+		Join("LEFT", "MARKET", "MARKET.MARKETID = GOODS.MARKETID").
 		Where("GOODS.GOODSID = ?", goodsID)
 	if err := session.Find(&details); err != nil {
 		return nil, err
@@ -490,6 +498,8 @@ type HsbyPreGoods struct {
 	Starttime      time.Time `json:"starttime"  xorm:"'STARTTIME'"`           // 预售开始时间
 	Endtime        time.Time `json:"endtime"  xorm:"'ENDTIME'"`               // 预售结束时间
 	Refprice       float64   `json:"refprice"  xorm:"'REFPRICE'"`             // 参考价格[一口价]
+	Presaledqty    int64     `json:"presaledqty"  xorm:"'PRESALEDQTY'"`       // 已预售量(预售结束时更新)
+	EnableQty      int64     `json:"enableqty" xorm:"ENABLEQTY"`              // 剩余数量
 
 	Currency     string `json:"currency" xorm:"'CURRENCY'"`         // 货币
 	Currencysign string `json:"currencysign" xorm:"'CURRENCYSIGN'"` // 货币符号
@@ -497,6 +507,8 @@ type HsbyPreGoods struct {
 	Videourls string `json:"videourls"  xorm:"'VIDEOURLS'"` // 介绍视频[多张用逗号分隔]
 	Picurls   string `json:"picurls"  xorm:"'PICURLS'"`     // 介绍图片[多张用逗号分隔]
 
+	Trademode int32 `json:"trademode"  xorm:"'TRADEMODE'" binding:"required"` // 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价
+
 	LotSize float64 `json:"lotsize" xorm:"-"` // 最小变动单位
 }
 
@@ -515,11 +527,14 @@ func GetHsbyPreGoodses(marketIDs string, descProvinceID, descCityID int) ([]Hsby
 		Select(`GOODS.*, 
 				CPTRADE_PRESALEGOODSEX.RELATEDGOODSID, CPTRADE_PRESALEGOODSEX.PRESALEQTY, 
 				CPTRADE_PRESALEGOODSEX.STARTTIME, CPTRADE_PRESALEGOODSEX.ENDTIME, CPTRADE_PRESALEGOODSEX.REFPRICE, 
+				CPTRADE_PRESALEGOODSEX.PRESALEDQTY, (CPTRADE_PRESALEGOODSEX.PRESALEQTY - CPTRADE_PRESALEGOODSEX.PRESALEDQTY) ENABLEQTY, 
 				ENUMDICITEM.ENUMDICNAME CURRENCY, ENUMDICITEM.PARAM2 CURRENCYSIGN, 
-				HSBY_GOODSEX.VIDEOURLS, HSBY_GOODSEX.PICURLS`).
+				HSBY_GOODSEX.VIDEOURLS, HSBY_GOODSEX.PICURLS, 
+				MARKET.TRADEMODE`).
 		Join("INNER", "CPTRADE_PRESALEGOODSEX", "CPTRADE_PRESALEGOODSEX.GOODSID = GOODS.GOODSID").
 		Join("LEFT", "ENUMDICITEM", "ENUMDICITEM.ENUMITEMNAME = GOODS.CURRENCYID and ENUMDICITEM.ENUMDICCODE = 'currency'").
 		Join("LEFT", "HSBY_GOODSEX", "HSBY_GOODSEX.GOODSID = CPTRADE_PRESALEGOODSEX.RELATEDGOODSID").
+		Join("LEFT", "MARKET", "MARKET.MARKETID = GOODS.MARKETID").
 		Where(fmt.Sprintf("GOODS.GOODSSTATUS in (2,3) and GOODS.MARKETID in (%s)", marketIDs)) // 一级市场获取 2:未上市 3:上市 状态的商品
 	if descProvinceID > 0 {
 		session = session.And("HSBY_GOODSEX.DESCPROVINCEID = ?", descProvinceID)
@@ -558,6 +573,8 @@ type HsbyPreGoodsDetail struct {
 	Starttime      time.Time `json:"starttime"  xorm:"'STARTTIME'"`           // 预售开始时间
 	Endtime        time.Time `json:"endtime"  xorm:"'ENDTIME'"`               // 预售结束时间
 	Refprice       float64   `json:"refprice"  xorm:"'REFPRICE'"`             // 参考价格[一口价]
+	Presaledqty    int64     `json:"presaledqty"  xorm:"'PRESALEDQTY'"`       // 已预售量(预售结束时更新)
+	EnableQty      int64     `json:"enableqty" xorm:"ENABLEQTY"`              // 剩余数量
 
 	Videourls      string `json:"videourls"  xorm:"'VIDEOURLS'"`           // 介绍视频[多张用逗号分隔]
 	Picurls        string `json:"picurls"  xorm:"'PICURLS'"`               // 介绍图片[多张用逗号分隔]
@@ -573,6 +590,8 @@ type HsbyPreGoodsDetail struct {
 	Vendorphone string `json:"vendorphone"  xorm:"'VENDORPHONE'"` // 供应商客服电话
 	Vendorattr  string `json:"vendorattr"  xorm:"'VENDORATTR'"`   // 供应商附件(多张,逗号分隔)
 
+	Trademode int32 `json:"trademode"  xorm:"'TRADEMODE'" binding:"required"` // 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价
+
 	LotSize float64 `json:"lotsize" xorm:"-"` // 最小变动单位
 }
 
@@ -590,15 +609,18 @@ func GetHsbyPreGoodsDetail(goodsID int) (*HsbyPreGoodsDetail, error) {
 		Select(`GOODS.*, 
 				CPTRADE_PRESALEGOODSEX.RELATEDGOODSID, CPTRADE_PRESALEGOODSEX.PRESALEQTY, 
 				CPTRADE_PRESALEGOODSEX.STARTTIME, CPTRADE_PRESALEGOODSEX.ENDTIME, CPTRADE_PRESALEGOODSEX.REFPRICE, 
+				CPTRADE_PRESALEGOODSEX.PRESALEDQTY, (CPTRADE_PRESALEGOODSEX.PRESALEQTY - CPTRADE_PRESALEGOODSEX.PRESALEDQTY) ENABLEQTY, 
 				HSBY_GOODSEX.VIDEOURLS, HSBY_GOODSEX.PICURLS, HSBY_GOODSEX.DESCPROVINCEID, HSBY_GOODSEX.Desccityid, HSBY_GOODSEX.Goodsdesc,
 				ENUMDICITEM.ENUMDICNAME CURRENCY, ENUMDICITEM.PARAM2 CURRENCYSIGN, 
 				E1.ENUMDICNAME GOODUNIT, 
-				HSBY_SUPPLIERINFO.VENDORNAME, HSBY_SUPPLIERINFO.VENDORPHONE, HSBY_SUPPLIERINFO.VENDORATTR`).
+				HSBY_SUPPLIERINFO.VENDORNAME, HSBY_SUPPLIERINFO.VENDORPHONE, HSBY_SUPPLIERINFO.VENDORATTR, 
+				MARKET.TRADEMODE`).
 		Join("INNER", "CPTRADE_PRESALEGOODSEX", "CPTRADE_PRESALEGOODSEX.GOODSID = GOODS.GOODSID").
 		Join("LEFT", "HSBY_GOODSEX", "HSBY_GOODSEX.GOODSID = CPTRADE_PRESALEGOODSEX.RELATEDGOODSID").
 		Join("LEFT", "ENUMDICITEM", "ENUMDICITEM.ENUMITEMNAME = GOODS.CURRENCYID and ENUMDICITEM.ENUMDICCODE = 'currency'").
 		Join("LEFT", "ENUMDICITEM E1", "E1.ENUMITEMNAME = GOODS.GOODUNITID and E1.ENUMDICCODE = 'goodsunit'").
 		Join("LEFT", "HSBY_SUPPLIERINFO", "HSBY_SUPPLIERINFO.VENDORID = HSBY_GOODSEX.VENDORID").
+		Join("LEFT", "MARKET", "MARKET.MARKETID = GOODS.MARKETID").
 		Where("GOODS.GOODSID = ?", goodsID)
 	if err := session.Find(&details); err != nil {
 		return nil, err

+ 36 - 36
models/market.go

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