|
|
@@ -354,14 +354,17 @@ func GetHsbyBuyMyOrderDetails(accountIDs string, myBuyStatus int) ([]HybsMyBuyOr
|
|
|
engine := db.GetEngine()
|
|
|
// 委托状态
|
|
|
orderStatus := "0" // 单据状态,为0的时候查询全部
|
|
|
- marketID := 0 // 我的订单包括一二级市场的单据,目前暂时由服务直接报相关类型的第一个市场
|
|
|
+ marketIDs := "" // 我的订单包括一二级市场的单据
|
|
|
switch myBuyStatus {
|
|
|
case 1: // 抢购中 (一级市场)
|
|
|
// 获取市场ID
|
|
|
for _, v := range markets {
|
|
|
if v.Trademode == 71 { // 预售挂牌
|
|
|
- marketID = int(v.Marketid)
|
|
|
- break
|
|
|
+ if len(marketIDs) == 0 {
|
|
|
+ marketIDs = strconv.Itoa(int(v.Marketid))
|
|
|
+ } else {
|
|
|
+ marketIDs += "," + strconv.Itoa(int(v.Marketid))
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
orderStatus = "3,7"
|
|
|
@@ -369,16 +372,32 @@ func GetHsbyBuyMyOrderDetails(accountIDs string, myBuyStatus int) ([]HybsMyBuyOr
|
|
|
// 获取市场ID
|
|
|
for _, v := range markets {
|
|
|
if v.Trademode == 16 { // 挂牌点选
|
|
|
- marketID = int(v.Marketid)
|
|
|
- break
|
|
|
+ if len(marketIDs) == 0 {
|
|
|
+ marketIDs = strconv.Itoa(int(v.Marketid))
|
|
|
+ } else {
|
|
|
+ marketIDs += "," + strconv.Itoa(int(v.Marketid))
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
orderStatus = "3,7"
|
|
|
case 3: // 已完成
|
|
|
orderStatus = "8,9"
|
|
|
}
|
|
|
+ // 默认取 TradeMode = 16 or 71 的市场
|
|
|
+ if len(marketIDs) == 0 {
|
|
|
+ for _, v := range markets {
|
|
|
+ if v.Trademode == 16 || v.Trademode == 71 {
|
|
|
+ if len(marketIDs) == 0 {
|
|
|
+ marketIDs = strconv.Itoa(int(v.Marketid))
|
|
|
+ } else {
|
|
|
+ marketIDs += "," + strconv.Itoa(int(v.Marketid))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
hybsMyBuyOrderDetails := make([]HybsMyBuyOrderDetail, 0)
|
|
|
+ // "我的订单"都是买委托
|
|
|
session := engine.Table("TRADE_ORDERDETAIL").
|
|
|
Select(`to_char(TRADE_ORDERDETAIL.ORDERID) ORDERID, TRADE_ORDERDETAIL.*,
|
|
|
GOODS.GOODSCODE, GOODS.GOODSNAME, GOODS.DECIMALPLACE, GOODS.AGREEUNIT,
|
|
|
@@ -391,11 +410,8 @@ func GetHsbyBuyMyOrderDetails(accountIDs string, myBuyStatus int) ([]HybsMyBuyOr
|
|
|
Join("LEFT", "ENUMDICITEM", "GOODS.CURRENCYID = ENUMDICITEM.ENUMITEMNAME and ENUMDICITEM.ENUMDICCODE = 'currency'").
|
|
|
Join("LEFT", "MARKET", "MARKET.MARKETID = TRADE_ORDERDETAIL.MARKETID").
|
|
|
Join("LEFT", "HSBY_SUPPLIERINFO", "HSBY_SUPPLIERINFO.VENDORID = HSBY_GOODSEX.VENDORID").
|
|
|
- Where(fmt.Sprintf("TRADE_ORDERDETAIL.ACCOUNTID in (%s)", accountIDs))
|
|
|
- // 是否过滤市场(抢购中、求购中)
|
|
|
- if marketID > 0 {
|
|
|
- session = session.And("TRADE_ORDERDETAIL.MARKETID = ?", marketID)
|
|
|
- }
|
|
|
+ Where(fmt.Sprintf("TRADE_ORDERDETAIL.BUYORSELL = 0 and TRADE_ORDERDETAIL.ACCOUNTID in (%s)", accountIDs)).
|
|
|
+ And(fmt.Sprintf("TRADE_ORDERDETAIL.MARKETID in (%s)", marketIDs))
|
|
|
// 是否过滤状态(抢购中、求购中、已完成)
|
|
|
if orderStatus != "0" {
|
|
|
session = session.And(fmt.Sprintf("TRADE_ORDERDETAIL.ORDERSTATUS in (%s)", orderStatus))
|
|
|
@@ -644,6 +660,209 @@ func GetHsbyPreGoodsDetail(goodsID int) (*HsbyPreGoodsDetail, error) {
|
|
|
return &preGoodsDetail, nil
|
|
|
}
|
|
|
|
|
|
-// type HsbyMyParcel struct {
|
|
|
-// Tradegoodspickup `xorm:"extends"`
|
|
|
-// }
|
|
|
+// HsbySellMyDetail "我的闲置"单据信息(已发布 - 二级市场卖挂,3:委托成功、7:部分成交; 已完成 - 二级市场成交单,包括历史数据)
|
|
|
+type HsbySellMyDetail struct {
|
|
|
+ Orderid string `json:"orderid" xorm:"'ORDERID'" binding:"required"` // 单号(已发布 - 委托单号;已完成 - 成交单号)
|
|
|
+ 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:卖
|
|
|
+ Price float64 `json:"price" xorm:"'PRICE'"` // 价格
|
|
|
+ Qty int64 `json:"qty" xorm:"'QTY'" binding:"required"` // 数量
|
|
|
+ Time time.Time `json:"time" xorm:"'TIME'" binding:"required"` // 时间
|
|
|
+ Amount float64 `json:"amount" xorm:"'AMOUNT'"` // 金额 = 价格 * 数量 * 合约单位
|
|
|
+
|
|
|
+ Goodscode string `json:"goodscode" xorm:"'GOODSCODE'" binding:"required"` // 商品代码(内部)
|
|
|
+ Goodsname string `json:"goodsname" xorm:"'GOODSNAME'" binding:"required"` // 商品名称
|
|
|
+ Decimalplace int64 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 报价小数位
|
|
|
+ Agreeunit float64 `json:"agreeunit" xorm:"'AGREEUNIT'"` // 合约单位
|
|
|
+
|
|
|
+ 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'"` // 货币符号
|
|
|
+}
|
|
|
+
|
|
|
+// GetHsbySellMyOrderDetails 获取"我的闲置 - 已发布"单据信息
|
|
|
+// 输入 accountIDs string 资金账户列表
|
|
|
+// 输出 []HsbySellMyDetail "我的闲置 - 已发布"单据信息
|
|
|
+// 输出 error error
|
|
|
+func GetHsbySellMyOrderDetails(accountIDs string) ([]HsbySellMyDetail, error) {
|
|
|
+ // 获取市场信息
|
|
|
+ markets, err := GetMarkets()
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ engine := db.GetEngine()
|
|
|
+ marketIDs := "" // 我的订单包括一二级市场的单据
|
|
|
+ // 默认取 TradeMode = 16 or 71 的市场
|
|
|
+ for _, v := range markets {
|
|
|
+ if v.Trademode == 16 || v.Trademode == 71 {
|
|
|
+ if len(marketIDs) == 0 {
|
|
|
+ marketIDs = strconv.Itoa(int(v.Marketid))
|
|
|
+ } else {
|
|
|
+ marketIDs += "," + strconv.Itoa(int(v.Marketid))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ orderDetails := make([]HsbySellMyDetail, 0)
|
|
|
+ // “我的闲置 - 已发布”都是卖挂委托
|
|
|
+ session := engine.Table("TRADE_ORDERDETAIL").
|
|
|
+ Select(`to_char(TRADE_ORDERDETAIL.ORDERID) ORDERID,
|
|
|
+ TRADE_ORDERDETAIL.MARKETID, TRADE_ORDERDETAIL.GOODSID, TRADE_ORDERDETAIL.ACCOUNTID, TRADE_ORDERDETAIL.BUYORSELL,
|
|
|
+ TRADE_ORDERDETAIL.ORDERPRICE PRICE, TRADE_ORDERDETAIL.ORDERQTY QTY, TRADE_ORDERDETAIL.ORDERTIME TIME,
|
|
|
+ (TRADE_ORDERDETAIL.ORDERPRICE * TRADE_ORDERDETAIL.ORDERQTY * GOODS.AGREEUNIT) AMOUNT,
|
|
|
+ GOODS.GOODSCODE, GOODS.GOODSNAME, GOODS.DECIMALPLACE, GOODS.AGREEUNIT,
|
|
|
+ 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(fmt.Sprintf(`TRADE_ORDERDETAIL.BUYORSELL = 1 and TRADE_ORDERDETAIL.LISTINGSELECTTYPE = 1 and (TRADE_ORDERDETAIL.ORDERSTATUS = 3 or TRADE_ORDERDETAIL.ORDERSTATUS = 7)
|
|
|
+ and TRADE_ORDERDETAIL.ACCOUNTID in (%s)`, accountIDs)).
|
|
|
+ And(fmt.Sprintf("TRADE_ORDERDETAIL.MARKETID in (%s)", marketIDs))
|
|
|
+ if err := session.Find(&orderDetails); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ return orderDetails, nil
|
|
|
+}
|
|
|
+
|
|
|
+// GetHsbySellMyTradeDetails 获取"我的闲置 - 已完成"单据信息
|
|
|
+// 输入 accountIDs string 资金账户列表
|
|
|
+// 输出 []HsbySellMyDetail "我的闲置 - 已完成"单据信息
|
|
|
+// 输出 error error
|
|
|
+func GetHsbySellMyTradeDetails(accountIDs string) ([]HsbySellMyDetail, error) {
|
|
|
+ // 获取市场信息
|
|
|
+ markets, err := GetMarkets()
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ engine := db.GetEngine()
|
|
|
+ marketIDs := "" // 我的订单包括一二级市场的单据
|
|
|
+ // 默认取 TradeMode = 16 or 71 的市场
|
|
|
+ for _, v := range markets {
|
|
|
+ if v.Trademode == 16 || v.Trademode == 71 {
|
|
|
+ if len(marketIDs) == 0 {
|
|
|
+ marketIDs = strconv.Itoa(int(v.Marketid))
|
|
|
+ } else {
|
|
|
+ marketIDs += "," + strconv.Itoa(int(v.Marketid))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ orders := make([]HsbySellMyDetail, 0)
|
|
|
+
|
|
|
+ // 当前成交单
|
|
|
+ curOrders := make([]HsbySellMyDetail, 0)
|
|
|
+ if err := engine.Table("TRADE_TRADEDETAIL").
|
|
|
+ Select(`to_char(TRADE_TRADEDETAIL.TRADEID) ORDERID,
|
|
|
+ TRADE_TRADEDETAIL.MARKETID, TRADE_TRADEDETAIL.GOODSID, TRADE_TRADEDETAIL.ACCOUNTID, TRADE_TRADEDETAIL.BUYORSELL,
|
|
|
+ TRADE_TRADEDETAIL.TRADEPRICE PRICE, TRADE_TRADEDETAIL.TRADEQTY QTY, TRADE_TRADEDETAIL.TRADETIME TIME, TRADE_TRADEDETAIL.TRADEAMOUNT AMOUNT,
|
|
|
+ GOODS.GOODSCODE, GOODS.GOODSNAME, GOODS.DECIMALPLACE, GOODS.AGREEUNIT,
|
|
|
+ HSBY_GOODSEX.PICURLS,
|
|
|
+ MARKET.TRADEMODE,
|
|
|
+ ENUMDICITEM.PARAM2 CURRENCYSIGN`).
|
|
|
+ Join("LEFT", "GOODS", "GOODS.GOODSID = TRADE_TRADEDETAIL.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_TRADEDETAIL.MARKETID").
|
|
|
+ Where(fmt.Sprintf(`TRADE_TRADEDETAIL.BUYORSELL = 1
|
|
|
+ and TRADE_TRADEDETAIL.ACCOUNTID in (%s)`, accountIDs)).
|
|
|
+ And(fmt.Sprintf("TRADE_TRADEDETAIL.MARKETID in (%s)", marketIDs)).Find(&curOrders); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ if len(curOrders) > 0 {
|
|
|
+ orders = append(orders, curOrders...)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 历史成交单
|
|
|
+ hisOrders := make([]HsbySellMyDetail, 0)
|
|
|
+ if err := engine.Table("HIS_TRADE_TRADEDETAIL").
|
|
|
+ Select(`to_char(HIS_TRADE_TRADEDETAIL.TRADEID) ORDERID,
|
|
|
+ HIS_TRADE_TRADEDETAIL.MARKETID, HIS_TRADE_TRADEDETAIL.GOODSID, HIS_TRADE_TRADEDETAIL.ACCOUNTID, HIS_TRADE_TRADEDETAIL.BUYORSELL,
|
|
|
+ HIS_TRADE_TRADEDETAIL.TRADEPRICE PRICE, HIS_TRADE_TRADEDETAIL.TRADEQTY QTY, HIS_TRADE_TRADEDETAIL.TRADETIME TIME, HIS_TRADE_TRADEDETAIL.TRADEAMOUNT AMOUNT,
|
|
|
+ GOODS.GOODSCODE, GOODS.GOODSNAME, GOODS.DECIMALPLACE, GOODS.AGREEUNIT,
|
|
|
+ HSBY_GOODSEX.PICURLS,
|
|
|
+ MARKET.TRADEMODE,
|
|
|
+ ENUMDICITEM.PARAM2 CURRENCYSIGN`).
|
|
|
+ Join("LEFT", "GOODS", "GOODS.GOODSID = HIS_TRADE_TRADEDETAIL.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 = HIS_TRADE_TRADEDETAIL.MARKETID").
|
|
|
+ Where(fmt.Sprintf(`HIS_TRADE_TRADEDETAIL.BUYORSELL = 1 and HIS_TRADE_TRADEDETAIL.ISVALIDDATA = 1
|
|
|
+ and HIS_TRADE_TRADEDETAIL.ACCOUNTID in (%s)`, accountIDs)).
|
|
|
+ And(fmt.Sprintf("HIS_TRADE_TRADEDETAIL.MARKETID in (%s)", marketIDs)).Find(&hisOrders); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ if len(hisOrders) > 0 {
|
|
|
+ orders = append(orders, hisOrders...)
|
|
|
+ }
|
|
|
+
|
|
|
+ return orders, nil
|
|
|
+}
|
|
|
+
|
|
|
+// HsbyMyPackage 我的包裹信息
|
|
|
+type HsbyMyPackage struct {
|
|
|
+ Takeorderid string `json:"takeorderid" xorm:"'TAKEORDERID'" binding:"required"` // 提货单号(905+Unix秒时间戳(10位)+xxxxxx)
|
|
|
+ Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 账户ID
|
|
|
+ Goodsid int64 `json:"goodsid" xorm:"'GOODSID'"` // 商品ID
|
|
|
+ Userid int64 `json:"userid" xorm:"'USERID'"` // 用户ID
|
|
|
+ Qty float64 `json:"qty" xorm:"'QTY'"` // 提货数量
|
|
|
+ Reqtime time.Time `json:"reqtime" xorm:"'REQTIME'"` // 更新时间
|
|
|
+ Recivername string `json:"recivername" xorm:"'RECIVERNAME'"` // 提货人姓名
|
|
|
+ Cardtypeid int32 `json:"cardtypeid" xorm:"'CARDTYPEID'"` // 提货人证件类型
|
|
|
+ Cardnum string `json:"cardnum" xorm:"'CARDNUM'"` // 提货人证件号码
|
|
|
+ Phonenum string `json:"phonenum" xorm:"'PHONENUM'"` // 提货人联系方式
|
|
|
+ Takemode int32 `json:"takemode" xorm:"'TAKEMODE'"` // 提货方式 - 2:自提 3:配送
|
|
|
+ Address string `json:"address" xorm:"'ADDRESS'"` // 提货人详细地址
|
|
|
+ Takeremark string `json:"takeremark" xorm:"'TAKEREMARK'"` // 提货备注
|
|
|
+ Takeorderstatus int32 `json:"takeorderstatus" xorm:"'TAKEORDERSTATUS'"` // 提货状态 - 1:待发货 2:已发货 3:已收货
|
|
|
+ Auditer int32 `json:"auditer" xorm:"'AUDITER'"` // 审核人
|
|
|
+ Audittime time.Time `json:"audittime" xorm:"'AUDITTIME'"` // 审核时间
|
|
|
+ Checkremark string `json:"checkremark" xorm:"'CHECKREMARK'"` // 审核备注
|
|
|
+ Tradedate string `json:"tradedate" xorm:"'TRADEDATE'"` // 交易日(yyyyMMdd)
|
|
|
+ Marketid int32 `json:"marketid" xorm:"'MARKETID'"` // 市场ID
|
|
|
+ Handlestatus int32 `json:"handlestatus" xorm:"'HANDLESTATUS'"` // 处理状态
|
|
|
+ Amount float64 `json:"amount" xorm:"'AMOUNT'"` // 提货金额
|
|
|
+ Averageprice float64 `json:"averageprice" xorm:"'AVERAGEPRICE'"` // 均价
|
|
|
+
|
|
|
+ Goodscode string `json:"goodscode" xorm:"'GOODSCODE'" binding:"required"` // 商品代码(内部)
|
|
|
+ Goodsname string `json:"goodsname" xorm:"'GOODSNAME'" binding:"required"` // 商品名称
|
|
|
+ Decimalplace int64 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 报价小数位
|
|
|
+ Agreeunit float64 `json:"agreeunit" xorm:"'AGREEUNIT'"` // 合约单位
|
|
|
+
|
|
|
+ Picurls string `json:"picurls" xorm:"'PICURLS'"` // 介绍图片[多张用逗号分隔]
|
|
|
+
|
|
|
+ Currencysign string `json:"currencysign" xorm:"'CURRENCYSIGN'"` // 货币符号
|
|
|
+}
|
|
|
+
|
|
|
+// GetHsbyMyPackages 获取我的包裹信息
|
|
|
+// 输入 accountIDs string 资金账户列表
|
|
|
+// 输出 []HsbyMyPackage 我的包裹信息
|
|
|
+// 输出 error error
|
|
|
+func GetHsbyMyPackages(accountIDs string) ([]HsbyMyPackage, error) {
|
|
|
+ engine := db.GetEngine()
|
|
|
+
|
|
|
+ myPackages := make([]HsbyMyPackage, 0)
|
|
|
+ if err := engine.Table("TRADE_GOODSPICKUP").
|
|
|
+ Select(`to_char(TRADE_GOODSPICKUP.TAKEORDERID) TAKEORDERID, TRADE_GOODSPICKUP.*,
|
|
|
+ (TRADE_GOODSPICKUP.AMOUNT/TRADE_GOODSPICKUP.QTY/GOODS.AGREEUNIT) AVERAGEPRICE,
|
|
|
+ GOODS.GOODSCODE, GOODS.GOODSNAME, GOODS.DECIMALPLACE, GOODS.AGREEUNIT,
|
|
|
+ HSBY_GOODSEX.PICURLS,
|
|
|
+ ENUMDICITEM.PARAM2 CURRENCYSIGN`).
|
|
|
+ Join("LEFT", "GOODS", "GOODS.GOODSID = TRADE_GOODSPICKUP.GOODSID").
|
|
|
+ Join("LEFT", "HSBY_GOODSEX", "HSBY_GOODSEX.GOODSID = GOODS.GOODSID").
|
|
|
+ Join("LEFT", "ENUMDICITEM", "GOODS.CURRENCYID = ENUMDICITEM.ENUMITEMNAME and ENUMDICITEM.ENUMDICCODE = 'currency'").
|
|
|
+ Where(fmt.Sprintf("TRADE_GOODSPICKUP.ACCOUNTID in (%s)", accountIDs)).Find(&myPackages); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ return myPackages, nil
|
|
|
+}
|