|
|
@@ -1,6 +1,7 @@
|
|
|
package models
|
|
|
|
|
|
import (
|
|
|
+ "fmt"
|
|
|
"mtp2_if/db"
|
|
|
"mtp2_if/utils"
|
|
|
"time"
|
|
|
@@ -23,6 +24,11 @@ type Hsbygoodsex struct {
|
|
|
Picurls string `json:"picurls" xorm:"'PICURLS'"` // 介绍图片[多张用逗号分隔]
|
|
|
}
|
|
|
|
|
|
+// TableName is HSBY_GOODSEX
|
|
|
+func (Hsbygoodsex) TableName() string {
|
|
|
+ return "HSBY_GOODSEX"
|
|
|
+}
|
|
|
+
|
|
|
// Hsbysupplierinfo 供应商表
|
|
|
type Hsbysupplierinfo struct {
|
|
|
Vendorid int32 `json:"vendorid" xorm:"'VENDORID'" binding:"required"` // 供应商ID(SEQ_HSBY_SUPPLIERINFO)
|
|
|
@@ -41,11 +47,6 @@ func (Hsbysupplierinfo) TableName() string {
|
|
|
return "HSBY_SUPPLIERINFO"
|
|
|
}
|
|
|
|
|
|
-// TableName is HSBY_GOODSEX
|
|
|
-func (Hsbygoodsex) TableName() string {
|
|
|
- return "HSBY_GOODSEX"
|
|
|
-}
|
|
|
-
|
|
|
// HsbyTopGoods 热门商品列表
|
|
|
type HsbyTopGoods struct {
|
|
|
Goodsid int64 `json:"goodsid" xorm:"'GOODSID'" binding:"required"` // 商品ID(自增ID SEQ_GOODS)
|
|
|
@@ -276,3 +277,118 @@ func GetHsbyGoodsOrderDetails(goodsID int) ([]HsbyGoodsOrderDetail, []HsbyGoodsO
|
|
|
|
|
|
return sellOrderDetails, buyOrderDetails, nil
|
|
|
}
|
|
|
+
|
|
|
+// HybsMyBuyOrderDetail 我的订单(一二级市场的买方向委托单)
|
|
|
+type HybsMyBuyOrderDetail struct {
|
|
|
+ Orderid int64 `json:"orderid" xorm:"'ORDERID'" binding:"required"` // 委托单号(100+Unix秒时间戳(10位)+2位(MarketServiceID)+xxxx)
|
|
|
+ Marketid int32 `json:"marketid" xorm:"'MARKETID'" binding:"required"` // 市场ID
|
|
|
+ Goodsid int32 `json:"goodsid" xorm:"'GOODSID'" binding:"required"` // 商品ID
|
|
|
+ Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'" binding:"required"` // 账户ID[报价币种]
|
|
|
+ Buyorsell int32 `json:"buyorsell" xorm:"'BUYORSELL'" binding:"required"` // 买卖 - 0:买 1:卖
|
|
|
+ Orderqty int64 `json:"orderqty" xorm:"'ORDERQTY'" binding:"required"` // 委托数量
|
|
|
+ Tradeqty int64 `json:"tradeqty" xorm:"'TRADEQTY'"` // 成交数量
|
|
|
+ Cancelqty int64 `json:"cancelqty" xorm:"'CANCELQTY'"` // 撤单数量
|
|
|
+ Ordertime time.Time `json:"ordertime" xorm:"'ORDERTIME'" binding:"required"` // 委托时间
|
|
|
+ Listingselecttype int32 `json:"listingselecttype" xorm:"'LISTINGSELECTTYPE'"` // 挂牌点选类型 - 1:挂牌 2:摘牌 3:先摘后挂
|
|
|
+ Orderstatus int32 `json:"orderstatus" xorm:"'ORDERSTATUS'"` // 委托状态 - 1: 委托请求 2:待冻结 3:委托成功 4: 委托失败 5:配对成功 6: 已撤销 7:部分成交 8:已成交 9:部成部撤 10:成交失败 11:已拒绝 12:经过摘牌(先摘后挂专用-先摘后挂已摘过) 13:冻结成功(通道交易专用) 14:通道已撤 15:通道部成部撤 16:成交失败违约(荷兰式竞拍专用)
|
|
|
+
|
|
|
+ Goodsname string `json:"goodsname" xorm:"'GOODSNAME'" binding:"required"` // 商品名称
|
|
|
+ Decimalplace int64 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 报价小数位
|
|
|
+
|
|
|
+ Picurls string `json:"picurls" xorm:"'PICURLS'"` // 介绍图片[多张用逗号分隔]
|
|
|
+
|
|
|
+ Trademode uint32 `json:"trademode" xorm:"'TRADEMODE'" binding:"required"` // 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价
|
|
|
+
|
|
|
+ Currencysign string `json:"currencysign" xorm:"'CURRENCYSIGN'"` // 货币符号
|
|
|
+
|
|
|
+ MyBuyStatus int `json:"mybuystatus" xorm:"-"` // "我的订单"显示状态- 1:抢购中 2:求购中 3:已完成 4:已撤消 5:委托失败
|
|
|
+}
|
|
|
+
|
|
|
+// GetHsbyBuyMyOrderDetails 获取“我的订单”数据(包括一二级市场)
|
|
|
+// 输入 accountID int 资金账户
|
|
|
+// 输入 myBuyStatus int "我的订单"状态, 1:抢购中 2:求购中 3:已完成
|
|
|
+// 输出 []HybsMyBuyOrderDetail “我的订单”数据
|
|
|
+// 输出 error error
|
|
|
+func GetHsbyBuyMyOrderDetails(accountID, myBuyStatus int) ([]HybsMyBuyOrderDetail, error) {
|
|
|
+ engine := db.GetEngine()
|
|
|
+
|
|
|
+ // 获取市场信息
|
|
|
+ markets, err := GetMarkets()
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 委托状态
|
|
|
+ orderStatus := "0" // 单据状态,为0的时候查询全部
|
|
|
+ marketID := 0 // 我的订单包括一二级市场的单据,目前暂时由服务直接报相关类型的第一个市场
|
|
|
+ switch myBuyStatus {
|
|
|
+ case 1: // 抢购中 (一级市场)
|
|
|
+ // 获取市场ID
|
|
|
+ for _, v := range markets {
|
|
|
+ if v.Trademode == 71 { // 预售挂牌
|
|
|
+ marketID = int(v.Marketid)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ orderStatus = "3,7"
|
|
|
+ case 2: // 求购中(二级市场)
|
|
|
+ // 获取市场ID
|
|
|
+ for _, v := range markets {
|
|
|
+ if v.Trademode == 16 { // 挂牌点选
|
|
|
+ marketID = int(v.Marketid)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ orderStatus = "3,7"
|
|
|
+ case 3: // 已完成
|
|
|
+ orderStatus = "8,9"
|
|
|
+ }
|
|
|
+
|
|
|
+ hybsMyBuyOrderDetails := make([]HybsMyBuyOrderDetail, 0)
|
|
|
+ session := engine.Table("TRADE_ORDERDETAIL").
|
|
|
+ Select(`TRADE_ORDERDETAIL.*,
|
|
|
+ GOODS.GOODSNAME, GOODS.DECIMALPLACE,
|
|
|
+ HSBY_GOODSEX.PICURLS,
|
|
|
+ MARKET.TRADEMODE,
|
|
|
+ ENUMDICITEM.PARAM2 CURRENCYSIGN`).
|
|
|
+ Join("LEFT", "GOODS", "GOODS.GOODSID = TRADE_ORDERDETAIL.GOODSID").
|
|
|
+ Join("LEFT", "HSBY_GOODSEX", "HSBY_GOODSEX.GOODSID = GOODS.GOODSID").
|
|
|
+ Join("LEFT", "ENUMDICITEM", "GOODS.CURRENCYID = ENUMDICITEM.ENUMITEMNAME and ENUMDICITEM.ENUMDICCODE = 'currency'").
|
|
|
+ Join("LEFT", "MARKET", "MARKET.MARKETID = TRADE_ORDERDETAIL.MARKETID").
|
|
|
+ Where("TRADE_ORDERDETAIL.ACCOUNTID = ?", accountID)
|
|
|
+ // 是否过滤市场(抢购中、求购中)
|
|
|
+ if marketID > 0 {
|
|
|
+ session = session.And("TRADE_ORDERDETAIL.MARKETID = ?", marketID)
|
|
|
+ }
|
|
|
+ // 是否过滤状态(抢购中、求购中、已完成)
|
|
|
+ if orderStatus != "0" {
|
|
|
+ session = session.And(fmt.Sprintf("TRADE_ORDERDETAIL.ORDERSTATUS in (%s)", orderStatus))
|
|
|
+ }
|
|
|
+ if err := session.Find(&hybsMyBuyOrderDetails); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置“我的订单”显示状态
|
|
|
+ for i := range hybsMyBuyOrderDetails {
|
|
|
+ detail := &hybsMyBuyOrderDetails[i]
|
|
|
+
|
|
|
+ if detail.Trademode == 71 && (detail.Orderstatus == 3 || detail.Orderstatus == 7) {
|
|
|
+ // 抢购中
|
|
|
+ detail.MyBuyStatus = 1
|
|
|
+ } else if detail.Trademode == 16 && (detail.Orderstatus == 3 || detail.Orderstatus == 7) {
|
|
|
+ // 求购中
|
|
|
+ detail.MyBuyStatus = 2
|
|
|
+ } else if detail.Orderstatus == 8 || detail.Orderstatus == 9 {
|
|
|
+ // 已完成
|
|
|
+ detail.MyBuyStatus = 3
|
|
|
+ } else if detail.Orderstatus == 6 {
|
|
|
+ // 已撤销
|
|
|
+ detail.MyBuyStatus = 4
|
|
|
+ } else if detail.Orderstatus == 4 {
|
|
|
+ // 委托失败
|
|
|
+ detail.MyBuyStatus = 5
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return hybsMyBuyOrderDetails, nil
|
|
|
+}
|