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() 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 }