|
|
@@ -7,6 +7,7 @@ import (
|
|
|
"mtp2_if/db"
|
|
|
"mtp2_if/utils"
|
|
|
"strconv"
|
|
|
+ "strings"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
|
@@ -25,6 +26,8 @@ type Hsbygoodsex struct {
|
|
|
Memberratio float64 `json:"memberratio" xorm:"'MEMBERRATIO'"` // 会员货款比例 [71]
|
|
|
Videourls string `json:"videourls" xorm:"'VIDEOURLS'"` // 介绍视频[多张用逗号分隔]
|
|
|
Picurls string `json:"picurls" xorm:"'PICURLS'"` // 介绍图片[多张用逗号分隔]
|
|
|
+ Goodsprice float64 `json:"goodsprice" xorm:"'GOODSPRICE'"` // 商品价格
|
|
|
+ Categoryid int32 `json:"categoryid" xorm:"'CATEGORYID'"` // 类别ID(WRCATEGORY)
|
|
|
}
|
|
|
|
|
|
// TableName is HSBY_GOODSEX
|
|
|
@@ -77,6 +80,52 @@ func (Tradepayorder) TableName() string {
|
|
|
return "TRADE_PAYORDER"
|
|
|
}
|
|
|
|
|
|
+// Coupontype 优惠券类型表
|
|
|
+type Coupontype struct {
|
|
|
+ Coupontypeid int32 `json:"coupontypeid" xorm:"'COUPONTYPEID'" binding:"required"` // 优惠券类型ID - SEQ_COUPONTYPE
|
|
|
+ Areauserid int64 `json:"areauserid" xorm:"'AREAUSERID'"` // 所属机构
|
|
|
+ Couponname string `json:"couponname" xorm:"'COUPONNAME'"` // 优惠券名称
|
|
|
+ Couponcategroy int32 `json:"couponcategroy" xorm:"'COUPONCATEGROY'"` // 种类 - 1:现金券 2:折扣券 3:折扣券(单张)
|
|
|
+ Conditionvalue float64 `json:"conditionvalue" xorm:"'CONDITIONVALUE'"` // 条件阈值(可为0)
|
|
|
+ Couponvalue float64 `json:"couponvalue" xorm:"'COUPONVALUE'"` // 面值[1:现金券 - 抵扣值 2:折扣券-折扣值]
|
|
|
+ Limitedflag int32 `json:"limitedflag" xorm:"'LIMITEDFLAG'"` // 是否指定商品 - 0:不限 1:限制
|
|
|
+ Limitedgoodsids string `json:"limitedgoodsids" xorm:"'LIMITEDGOODSIDS'"` // 指定商品IDs[逗号分隔,前后加逗号]
|
|
|
+ Isgeneral int32 `json:"isgeneral" xorm:"'ISGENERAL'"` // 是否通用券 - 0:否 1:是
|
|
|
+ Userscope string `json:"userscope" xorm:"'USERSCOPE'"` // 卖家范围(用户ID,逗号分隔,前后加逗号) [IsGeneral =0时使用]
|
|
|
+ Qty int64 `json:"qty" xorm:"'QTY'"` // 数量
|
|
|
+ Curqty int64 `json:"curqty" xorm:"'CURQTY'"` // 剩余数量
|
|
|
+ Createtime time.Time `json:"createtime" xorm:"'CREATETIME'"` // 创建时间
|
|
|
+ Creatorid int64 `json:"creatorid" xorm:"'CREATORID'"` // 创建人
|
|
|
+ Modifierid int64 `json:"modifierid" xorm:"'MODIFIERID'"` // 修改人
|
|
|
+ Modifytime time.Time `json:"modifytime" xorm:"'MODIFYTIME'"` // 修改时间
|
|
|
+ Usedqty int64 `json:"usedqty" xorm:"'USEDQTY'"` // 使用量
|
|
|
+ Isvalid int32 `json:"isvalid" xorm:"'ISVALID'"` // 是否有效 - 0:无效 1:有效
|
|
|
+ Expiredqty int64 `json:"expiredqty" xorm:"'EXPIREDQTY'"` // 失效量
|
|
|
+}
|
|
|
+
|
|
|
+// TableName is COUPONTYPE
|
|
|
+func (Coupontype) TableName() string {
|
|
|
+ return "COUPONTYPE"
|
|
|
+}
|
|
|
+
|
|
|
+// Couponposition 优惠券头寸表 - 导历史(期末为0的清除)
|
|
|
+type Couponposition struct {
|
|
|
+ Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'" binding:"required"` // 资金账户ID
|
|
|
+ Coupontypeid int32 `json:"coupontypeid" xorm:"'COUPONTYPEID'" binding:"required"` // 优惠券类型ID
|
|
|
+ Userid int64 `json:"userid" xorm:"'USERID'"` // 用户ID
|
|
|
+ Oriqty int64 `json:"oriqty" xorm:"'ORIQTY'"` // 期初数量
|
|
|
+ Orifreezeqty int64 `json:"orifreezeqty" xorm:"'ORIFREEZEQTY'"` // 期初冻结数量
|
|
|
+ Curqty int64 `json:"curqty" xorm:"'CURQTY'"` // 期末数量
|
|
|
+ Curfreezeqty int64 `json:"curfreezeqty" xorm:"'CURFREEZEQTY'"` // 期末冻结数量
|
|
|
+ Todayincrease int64 `json:"todayincrease" xorm:"'TODAYINCREASE'"` // 今日增加
|
|
|
+ Todaydecrease int64 `json:"todaydecrease" xorm:"'TODAYDECREASE'"` // 今日减少
|
|
|
+}
|
|
|
+
|
|
|
+// TableName is COUPONPOSITION
|
|
|
+func (Couponposition) TableName() string {
|
|
|
+ return "COUPONPOSITION"
|
|
|
+}
|
|
|
+
|
|
|
// HsbyTopGoods 热卖商品(二级市场挂牌点选)
|
|
|
type HsbyTopGoods struct {
|
|
|
Goodsid int64 `json:"goodsid" xorm:"'GOODSID'" binding:"required"` // 商品ID(自增ID SEQ_GOODS)
|
|
|
@@ -112,6 +161,7 @@ func GetHsbyTopGoodses(marketIDs string, descProvinceID, descCityID int) ([]Hsby
|
|
|
|
|
|
topGoodses := make([]HsbyTopGoods, 0)
|
|
|
// 获取挂牌商品信息,以及扩展表信息
|
|
|
+ // 与商城不一样的是,挂牌点选以商品表作为主表,同一商品可有多个委托单
|
|
|
session := engine.Table("GOODS").
|
|
|
Select(`GOODS.*,
|
|
|
HSBY_GOODSEX.HOTINDEX, HSBY_GOODSEX.VIDEOURLS, HSBY_GOODSEX.PICURLS,
|
|
|
@@ -848,7 +898,7 @@ func GetHsbySellMyTradeDetails(accountIDs string) ([]HsbySellMyDetail, error) {
|
|
|
Join("LEFT", "ENUMDICITEM", "GOODS.CURRENCYID = ENUMDICITEM.ENUMITEMNAME and ENUMDICITEM.ENUMDICCODE = 'currency'").
|
|
|
Join("LEFT", "MARKET", "MARKET.MARKETID = TRADE_TRADEDETAIL.MARKETID").
|
|
|
Join("LEFT", "HSBY_SUPPLIERINFO", "HSBY_SUPPLIERINFO.VENDORID = HSBY_GOODSEX.VENDORID").
|
|
|
- Where(fmt.Sprintf(`TRADE_TRADEDETAIL.BUYORSELL = 1
|
|
|
+ Where(fmt.Sprintf(`TRADE_TRADEDETAIL.BUYORSELL = 1 and TRADE_TRADEDETAIL.TRADETYPE = 1
|
|
|
and TRADE_TRADEDETAIL.ACCOUNTID in (%s)`, accountIDs)).
|
|
|
And(fmt.Sprintf("TRADE_TRADEDETAIL.MARKETID in (%s)", marketIDs)).Find(&curOrders); err != nil {
|
|
|
return nil, err
|
|
|
@@ -874,7 +924,7 @@ func GetHsbySellMyTradeDetails(accountIDs string) ([]HsbySellMyDetail, error) {
|
|
|
Join("LEFT", "ENUMDICITEM", "GOODS.CURRENCYID = ENUMDICITEM.ENUMITEMNAME and ENUMDICITEM.ENUMDICCODE = 'currency'").
|
|
|
Join("LEFT", "MARKET", "MARKET.MARKETID = HIS_TRADE_TRADEDETAIL.MARKETID").
|
|
|
Join("LEFT", "HSBY_SUPPLIERINFO", "HSBY_SUPPLIERINFO.VENDORID = HSBY_GOODSEX.VENDORID").
|
|
|
- Where(fmt.Sprintf(`HIS_TRADE_TRADEDETAIL.BUYORSELL = 1 and HIS_TRADE_TRADEDETAIL.ISVALIDDATA = 1
|
|
|
+ Where(fmt.Sprintf(`HIS_TRADE_TRADEDETAIL.BUYORSELL = 1 and HIS_TRADE_TRADEDETAIL.TRADETYPE = 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
|
|
|
@@ -1075,7 +1125,7 @@ func GetHsbyBuyMyTradeDetails(accountIDs string) ([]HsbyBuyMyTradeDetail, error)
|
|
|
Join("LEFT", "MARKET", "MARKET.MARKETID = TRADE_TRADEDETAIL.MARKETID").
|
|
|
Join("LEFT", "HSBY_SUPPLIERINFO HS1", "HS1.VENDORID = HG1.VENDORID").
|
|
|
Join("LEFT", "HSBY_SUPPLIERINFO HS2", "HS2.VENDORID = HG2.VENDORID").
|
|
|
- Where(fmt.Sprintf(`TRADE_TRADEDETAIL.BUYORSELL = 0
|
|
|
+ Where(fmt.Sprintf(`TRADE_TRADEDETAIL.BUYORSELL = 0 and TRADE_TRADEDETAIL.TRADETYPE = 1
|
|
|
and TRADE_TRADEDETAIL.ACCOUNTID in (%s)`, accountIDs)).
|
|
|
And(fmt.Sprintf("TRADE_TRADEDETAIL.MARKETID in (%s)", marketIDs)).Find(&curOrders); err != nil {
|
|
|
return nil, err
|
|
|
@@ -1103,7 +1153,7 @@ func GetHsbyBuyMyTradeDetails(accountIDs string) ([]HsbyBuyMyTradeDetail, error)
|
|
|
Join("LEFT", "MARKET", "MARKET.MARKETID = HIS_TRADE_TRADEDETAIL.MARKETID").
|
|
|
Join("LEFT", "HSBY_SUPPLIERINFO HS1", "HS1.VENDORID = HG1.VENDORID").
|
|
|
Join("LEFT", "HSBY_SUPPLIERINFO HS2", "HS2.VENDORID = HG2.VENDORID").
|
|
|
- Where(fmt.Sprintf(`HIS_TRADE_TRADEDETAIL.BUYORSELL = 0 and HIS_TRADE_TRADEDETAIL.ISVALIDDATA = 1
|
|
|
+ Where(fmt.Sprintf(`HIS_TRADE_TRADEDETAIL.BUYORSELL = 0 and HIS_TRADE_TRADEDETAIL.TRADETYPE = 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
|
|
|
@@ -1206,9 +1256,10 @@ func GetHsbyBuyMyPayOrders(accountIDs string, buyOrderID, sellOrderID int) ([]Hs
|
|
|
|
|
|
// HsbyMarketInfo 海商报业相关市场信息
|
|
|
type HsbyMarketInfo 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'"` // 市场名称
|
|
|
- Trademode int32 `json:"trademode" xorm:"'TRADEMODE'" binding:"required"` // 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价
|
|
|
+ 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'"` // 市场名称
|
|
|
+ Trademode int32 `json:"trademode" xorm:"'TRADEMODE'" binding:"required"` // 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价
|
|
|
+ Marketstatus int32 `json:"marketstatus" xorm:"'MARKETSTATUS'" binding:"required"` // 生效状态(ValidStatus枚举): 1:待生效 2:正常 3:注销
|
|
|
}
|
|
|
|
|
|
// GetHsbyMarketInfos 获取海商报业相关市场信息
|
|
|
@@ -1297,3 +1348,129 @@ func GetHsbySellCollectionOrders(accountIDs string) ([]HsbySellCollectionOrder,
|
|
|
|
|
|
return orders, nil
|
|
|
}
|
|
|
+
|
|
|
+// HsbyMarketGoods 特卖商城商品(三级市场商场)
|
|
|
+type HsbyMarketGoods struct {
|
|
|
+ Orderid string `json:"orderid" xorm:"'ORDERIDSTR'" 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:卖
|
|
|
+ Orderprice float64 `json:"orderprice" xorm:"'ORDERPRICE'"` // 委托价格
|
|
|
+ Orderqty int64 `json:"orderqty" xorm:"'ORDERQTY'" binding:"required"` // 委托数量
|
|
|
+ Tradeqty int64 `json:"tradeqty" xorm:"'TRADEQTY'"` // 成交数量
|
|
|
+ Cancelqty int64 `json:"cancelqty" xorm:"'CANCELQTY'"` // 撤单数量
|
|
|
+ Orderstatus int32 `json:"orderstatus" xorm:"'ORDERSTATUS'"` // 委托状态 - 1: 委托请求 2:待冻结 3:委托成功 4: 委托失败 5:配对成功 6: 已撤销 7:部分成交 8:已成交 9:部成部撤 10:成交失败 11:已拒绝 12:经过摘牌(先摘后挂专用-先摘后挂已摘过) 13:冻结成功(通道交易专用) 14:通道已撤 15:通道部成部撤 16:成交失败违约(荷兰式竞拍专用)
|
|
|
+
|
|
|
+ Goodscode string `json:"goodscode" xorm:"'GOODSCODE'" binding:"required"` // 商品代码(内部)
|
|
|
+ Goodsname string `json:"goodsname" xorm:"'GOODSNAME'" binding:"required"` // 商品名称
|
|
|
+ Decimalplace int64 `json:"decimalplace" xorm:"'DECIMALPLACE'"` // 报价小数位
|
|
|
+ Quoteminunit int64 `json:"quoteminunit" xorm:"'QUOTEMINUNIT'"` // 行情最小变动单位 [整数,报价小数位一起使用]
|
|
|
+ Agreeunit float64 `json:"agreeunit" xorm:"'AGREEUNIT'"` // 合约单位
|
|
|
+
|
|
|
+ Hotindex int32 `json:"hotindex" xorm:"'HOTINDEX'"` // 景点热度
|
|
|
+ Videourls string `json:"videourls" xorm:"'VIDEOURLS'"` // 介绍视频[多张用逗号分隔]
|
|
|
+ Picurls string `json:"picurls" xorm:"'PICURLS'"` // 介绍图片[多张用逗号分隔]
|
|
|
+ Categoryid int32 `json:"categoryid" xorm:"'CATEGORYID'"` // 类别ID(WRCATEGORY)
|
|
|
+
|
|
|
+ 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:受托竞价
|
|
|
+
|
|
|
+ HasCoupon bool `json:"hascoupon" xorm:"-"` // 是否可用优惠卷
|
|
|
+}
|
|
|
+
|
|
|
+// GetHsbyMarketGoodses 获取商城商品列表(三级商城)
|
|
|
+func GetHsbyMarketGoodses(marketIDs string, accountID, categoryID int) ([]HsbyMarketGoods, error) {
|
|
|
+ engine := db.GetEngine()
|
|
|
+
|
|
|
+ orders := make([]HsbyMarketGoods, 0)
|
|
|
+ // 与挂牌点选不一样的是商城是以委托单为主表;已经卖完的委托单不显示
|
|
|
+ session := engine.Table("TRADE_ORDERDETAIL T").
|
|
|
+ Select(`to_char(T.ORDERID) ORDERIDSTR, T.*,
|
|
|
+ G.GOODSCODE, G.GOODSNAME, G.DECIMALPLACE, G.QUOTEMINUNIT, G.AGREEUNIT,
|
|
|
+ GX.HOTINDEX, GX.VIDEOURLS, GX.PICURLS, GX.CATEGORYID,
|
|
|
+ ENUMDICITEM.ENUMDICNAME CURRENCY, ENUMDICITEM.PARAM2 CURRENCYSIGN,
|
|
|
+ M.TRADEMODE`).
|
|
|
+ Join("LEFT", "GOODS G", "G.GOODSID = T.GOODSID").
|
|
|
+ Join("LEFT", "HSBY_GOODSEX GX", "GX.GOODSID = T.GOODSID").
|
|
|
+ Join("LEFT", "ENUMDICITEM E", "E.ENUMITEMNAME = G.CURRENCYID and E.ENUMDICCODE = 'currency'").
|
|
|
+ Join("LEFT", "MARKET M", "M.MARKETID = T.MARKETID").
|
|
|
+ Where(fmt.Sprintf("T.MARKETID in (%s)", marketIDs)).
|
|
|
+ And("T.ORDERSTATUS in (3,7) and T.BUYORSELL = 1 and (T.ORDERQTY - T.TRADEQTY - T.CANCELQTY) > 0")
|
|
|
+ if categoryID != 0 {
|
|
|
+ session = session.And("GX.CATEGORYID = ?", categoryID)
|
|
|
+ }
|
|
|
+ if err := session.Find(&orders); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取当前账户的优惠卷
|
|
|
+ type myCouponPosition struct {
|
|
|
+ Accountid int64 `json:"accountid" xorm:"'ACCOUNTID'" binding:"required"` // 资金账户ID
|
|
|
+ Coupontypeid int32 `json:"coupontypeid" xorm:"'COUPONTYPEID'" binding:"required"` // 优惠券类型ID
|
|
|
+ Curqty int64 `json:"curqty" xorm:"'CURQTY'"` // 期末数量
|
|
|
+ Curfreezeqty int64 `json:"curfreezeqty" xorm:"'CURFREEZEQTY'"` // 期末冻结数量
|
|
|
+
|
|
|
+ Limitedflag int32 `json:"limitedflag" xorm:"'LIMITEDFLAG'"` // 是否指定商品 - 0:不限 1:限制
|
|
|
+ Limitedgoodsids string `json:"limitedgoodsids" xorm:"'LIMITEDGOODSIDS'"` // 指定商品IDs[逗号分隔,前后加逗号]
|
|
|
+ Isgeneral int32 `json:"isgeneral" xorm:"'ISGENERAL'"` // 是否通用券 - 0:否 1:是
|
|
|
+ Userscope string `json:"userscope" xorm:"'USERSCOPE'"` // 卖家范围(用户ID,逗号分隔,前后加逗号) [IsGeneral =0时使用]
|
|
|
+ }
|
|
|
+ myCouponPositions := make([]myCouponPosition, 0)
|
|
|
+ if accountID != 0 {
|
|
|
+ if err := engine.Table("COUPONPOSITION C").
|
|
|
+ Select(`C.ACCOUNTID, C.COUPONTYPEID, C.CURQTY, C.CURFREEZEQTY,
|
|
|
+ CT.LIMITEDFLAG, CT.LIMITEDGOODSIDS, CT.ISGENERAL, CT.USERSCOPE`).
|
|
|
+ Join("INNER", "COUPONTYPE CT", "CT.COUPONTYPEID = C.COUPONTYPEID").
|
|
|
+ Where("C.ACCOUNTID = ?", accountID).Find(&myCouponPositions); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 是否有优惠卷可用
|
|
|
+ if len(orders) > 0 && len(myCouponPositions) > 0 {
|
|
|
+ for _, coupon := range myCouponPositions {
|
|
|
+ if coupon.Limitedflag == 0 && coupon.Isgeneral == 1 {
|
|
|
+ // 有不指定商品的通用卷则所有委托单都可以用卷
|
|
|
+ for i := range orders {
|
|
|
+ order := &orders[i]
|
|
|
+ order.HasCoupon = true
|
|
|
+ }
|
|
|
+ break
|
|
|
+ } else {
|
|
|
+ for i := range orders {
|
|
|
+ order := &orders[i]
|
|
|
+ tmpGoodsID := fmt.Sprintf(",%d,", order.Goodsid)
|
|
|
+ tmpAccountID := fmt.Sprintf(",%d,", order.Accountid)
|
|
|
+
|
|
|
+ // 优惠卷是否可用于商品
|
|
|
+ isRightGoods := false
|
|
|
+ if coupon.Limitedflag == 0 {
|
|
|
+ isRightGoods = true
|
|
|
+ } else {
|
|
|
+ if strings.Contains(coupon.Limitedgoodsids, tmpGoodsID) {
|
|
|
+ isRightGoods = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 优惠卷是否可用于卖家
|
|
|
+ isRightAccount := false
|
|
|
+ if coupon.Isgeneral == 1 {
|
|
|
+ isRightAccount = true
|
|
|
+ } else {
|
|
|
+ if strings.Contains(coupon.Userscope, tmpAccountID) {
|
|
|
+ isRightAccount = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if isRightGoods && isRightAccount {
|
|
|
+ order.HasCoupon = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return orders, nil
|
|
|
+}
|