156 lines
5.3 KiB
Go
156 lines
5.3 KiB
Go
package orderman
|
|
|
|
import (
|
|
"time"
|
|
|
|
"git.rosy.net.cn/jx-callback/business/model"
|
|
"git.rosy.net.cn/jx-callback/globals"
|
|
|
|
"github.com/astaxie/beego/orm"
|
|
)
|
|
|
|
const (
|
|
maxLastHours = 7 * 24 // 最多只能查询7天内的订单数据
|
|
defLastHours = 2 * 24 // 缺省是两天内的订单
|
|
defPageSize = 50
|
|
)
|
|
|
|
func (c *OrderManager) GetStoreOrderInfo(storeID string, lastHours int, fromStatus, toStatus, offset, pageSize int) (orders []*model.GoodsOrderExt, err error) {
|
|
globals.SugarLogger.Debugf("GetStoreOrderInfo storeID:%s", storeID)
|
|
if lastHours > maxLastHours {
|
|
lastHours = maxLastHours
|
|
} else if lastHours == 0 {
|
|
lastHours = defLastHours
|
|
}
|
|
if toStatus == 0 {
|
|
toStatus = fromStatus
|
|
}
|
|
if offset < 0 {
|
|
offset = 0
|
|
}
|
|
if pageSize == 0 {
|
|
pageSize = defPageSize
|
|
}
|
|
|
|
db := orm.NewOrm()
|
|
_, err = db.Raw(`
|
|
SELECT t1.*, t2.status waybill_status, t2.courier_name, t2.courier_mobile
|
|
FROM goods_order t1
|
|
LEFT JOIN waybill t2 ON t1.vendor_waybill_id = t2.vendor_waybill_id AND t1.waybill_vendor_id = t2.waybill_vendor_id
|
|
WHERE IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) = ?
|
|
AND t1.order_created_at >= ?
|
|
AND t1.Status >= ? AND t1.Status <= ?
|
|
ORDER BY t1.status, t1.order_created_at
|
|
LIMIT ? OFFSET ?
|
|
`, storeID, time.Now().Add(-time.Duration(lastHours)*time.Hour), fromStatus, toStatus, pageSize, offset).QueryRows(&orders)
|
|
if err == nil {
|
|
return orders, nil
|
|
}
|
|
globals.SugarLogger.Infof("GetStoreOrderInfo storeID:%s failed with error:%v", storeID, err)
|
|
return nil, err
|
|
}
|
|
|
|
func (c *OrderManager) GetStoreOrderCountInfo(storeID string, lastHours int) (countInfo []*model.GoodsOrderCountInfo, err error) {
|
|
globals.SugarLogger.Debugf("GetStoreOrderCountInfo storeID:%s", storeID)
|
|
if lastHours > maxLastHours {
|
|
lastHours = maxLastHours
|
|
} else if lastHours == 0 {
|
|
lastHours = defLastHours
|
|
}
|
|
|
|
db := orm.NewOrm()
|
|
_, err = db.Raw(`
|
|
SELECT t1.status, COUNT(*) count
|
|
FROM goods_order t1
|
|
WHERE IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) = ?
|
|
AND t1.order_created_at >= ?
|
|
GROUP BY 1
|
|
ORDER BY 1
|
|
`, storeID, time.Now().Add(-time.Duration(lastHours)*time.Hour)).QueryRows(&countInfo)
|
|
if err == nil {
|
|
return countInfo, nil
|
|
}
|
|
globals.SugarLogger.Infof("GetStoreOrderCountInfo storeID:%s failed with error:%v", storeID, err)
|
|
return nil, err
|
|
}
|
|
|
|
func (c *OrderManager) GetOrderSkuInfo(vendorOrderID string, vendorID int) (skus []*model.OrderSkuExt, err error) {
|
|
globals.SugarLogger.Debugf("GetOrderSkuInfo orderID:%s", vendorOrderID)
|
|
db := orm.NewOrm()
|
|
var num int64
|
|
// 为了显示图片,非正规的使用导出表
|
|
if vendorID == model.VendorIDELM {
|
|
num, err = db.Raw(`
|
|
SELECT t1.*, IF(t3.img IS NULL OR t3.img = '', t4.col_imageUrl, t3.img) image
|
|
FROM order_sku t1
|
|
LEFT JOIN jx_sku t2 ON IF(t1.jx_sku_id != 0, t1.jx_sku_id, t1.sku_id) = t2.id
|
|
LEFT JOIN jx_sku_name t3 ON t2.nameid = t3.id
|
|
LEFT JOIN ede_skus t4 ON t1.vendor_sku_id = t4.col_id
|
|
WHERE vendor_order_id = ? AND vendor_id = ?
|
|
ORDER BY t1.sku_name
|
|
`, vendorOrderID, vendorID).QueryRows(&skus)
|
|
} else if vendorID == model.VendorIDJD {
|
|
num, err = db.Raw(`
|
|
SELECT t1.*, IF(t3.img IS NULL OR t3.img = '', t4.image, t3.img) image
|
|
FROM order_sku t1
|
|
LEFT JOIN jx_sku t2 ON IF(t1.jx_sku_id != 0, t1.jx_sku_id, t1.sku_id) = t2.id
|
|
LEFT JOIN jx_sku_name t3 ON t2.nameid = t3.id
|
|
LEFT JOIN jde_sku_infos t4 ON t1.vendor_sku_id = t4.skuId
|
|
WHERE vendor_order_id = ? AND vendor_id = ?
|
|
ORDER BY t1.sku_name
|
|
`, vendorOrderID, vendorID).QueryRows(&skus)
|
|
}
|
|
|
|
if err != nil || num == 0 {
|
|
num, err = db.Raw(`
|
|
SELECT t1.*, t3.img image
|
|
FROM order_sku t1
|
|
LEFT JOIN jx_sku t2 ON IF(t1.jx_sku_id != 0, t1.jx_sku_id, t1.sku_id) = t2.id
|
|
LEFT JOIN jx_sku_name t3 ON t2.nameid = t3.id
|
|
WHERE vendor_order_id = ? AND vendor_id = ?
|
|
ORDER BY t1.sku_name
|
|
`, vendorOrderID, vendorID).QueryRows(&skus)
|
|
}
|
|
if err == nil && num > 0 {
|
|
return skus, nil
|
|
}
|
|
if err == nil {
|
|
err = ErrCanNotFindOrder
|
|
globals.SugarLogger.Infof("GetOrderSkuInfo orderID:%s vendorID:%d can not find order, num:%d", vendorOrderID, vendorID, num)
|
|
} else {
|
|
globals.SugarLogger.Infof("GetOrderSkuInfo orderID:%s vendorID:%d failed with error:%v", vendorOrderID, vendorID, err)
|
|
}
|
|
return nil, err
|
|
}
|
|
|
|
func (c *OrderManager) GetOrderInfo(vendorOrderID string, vendorID int) (order *model.GoodsOrderExt, err error) {
|
|
globals.SugarLogger.Debugf("GetOrderInfo orderID:%s", vendorOrderID)
|
|
db := orm.NewOrm()
|
|
err = db.Raw(`
|
|
SELECT t1.*, t2.status waybill_status, t2.courier_name, t2.courier_mobile
|
|
FROM goods_order t1
|
|
LEFT JOIN waybill t2 ON t1.vendor_waybill_id = t2.vendor_waybill_id AND t1.waybill_vendor_id = t2.waybill_vendor_id
|
|
WHERE t1.vendor_order_id = ? AND vendor_id = ?
|
|
`, vendorOrderID, vendorID).QueryRow(&order)
|
|
if err == nil {
|
|
return order, nil
|
|
}
|
|
globals.SugarLogger.Infof("GetOrderInfo orderID:%s failed with error:%v", vendorOrderID, err)
|
|
return nil, err
|
|
}
|
|
|
|
func (c *OrderManager) GetOrderWaybillInfo(vendorOrderID string, vendorID int) (bills *[]model.Waybill, err error) {
|
|
globals.SugarLogger.Debugf("GetOrderWaybillInfo orderID:%s", vendorOrderID)
|
|
db := orm.NewOrm()
|
|
_, err = db.Raw(`
|
|
SELECT t1.*
|
|
FROM waybill t1
|
|
WHERE t1.vendor_order_id = ? AND order_vendor_id = ?
|
|
`, vendorOrderID, vendorID).QueryRows(&bills)
|
|
if err == nil {
|
|
return bills, nil
|
|
}
|
|
globals.SugarLogger.Infof("GetOrderWaybillInfo orderID:%s failed with error:%v", vendorOrderID, err)
|
|
return nil, err
|
|
}
|