- paging added for GetStoreOrderInfo.

- GetStoreOrderCountInfo added.
This commit is contained in:
gazebo
2018-08-22 09:41:02 +08:00
parent d44950d6db
commit 0b9189cb87
5 changed files with 89 additions and 10 deletions

View File

@@ -12,19 +12,26 @@ import (
const ( const (
maxLastHours = 2 * 24 // 最多只能查询两天内的订单数据 maxLastHours = 2 * 24 // 最多只能查询两天内的订单数据
defPageSize = 50
) )
var ( var (
ErrCanNotFindOrder = errors.New("找不到相应订单") ErrCanNotFindOrder = errors.New("找不到相应订单")
) )
func (c *OrderManager) GetStoreOrderInfo(storeID string, lastHours int, fromStatus, toStatus int) (orders []*model.GoodsOrderExt, err error) { func (c *OrderManager) GetStoreOrderInfo(storeID string, lastHours int, fromStatus, toStatus, offset, pageSize int) (orders []*model.GoodsOrderExt, err error) {
if lastHours > maxLastHours { if lastHours > maxLastHours {
lastHours = maxLastHours lastHours = maxLastHours
} }
if toStatus == 0 { if toStatus == 0 {
toStatus = fromStatus toStatus = fromStatus
} }
if offset < 0 {
offset = 0
}
if pageSize == 0 {
pageSize = defPageSize
}
db := orm.NewOrm() db := orm.NewOrm()
_, err = db.Raw(` _, err = db.Raw(`
@@ -34,7 +41,8 @@ func (c *OrderManager) GetStoreOrderInfo(storeID string, lastHours int, fromStat
WHERE IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) = ? WHERE IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) = ?
AND t1.order_created_at >= ? AND t1.order_created_at >= ?
AND t1.Status >= ? AND t1.Status <= ? AND t1.Status >= ? AND t1.Status <= ?
`, storeID, time.Now().Add(-time.Duration(lastHours)*time.Hour), fromStatus, toStatus).QueryRows(&orders) LIMIT ? OFFSET ?
`, storeID, time.Now().Add(-time.Duration(lastHours)*time.Hour), fromStatus, toStatus, pageSize, offset).QueryRows(&orders)
if err == nil { if err == nil {
return orders, nil return orders, nil
} }
@@ -42,6 +50,26 @@ func (c *OrderManager) GetStoreOrderInfo(storeID string, lastHours int, fromStat
return nil, err return nil, err
} }
func (c *OrderManager) GetStoreOrderCountInfo(storeID string, lastHours int) (countInfo *model.GoodsOrderCountInfo, err error) {
if lastHours > maxLastHours {
lastHours = maxLastHours
}
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
`, 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) { func (c *OrderManager) GetOrderSkuInfo(vendorOrderID string, vendorID int) (skus []*model.OrderSkuExt, err error) {
db := orm.NewOrm() db := orm.NewOrm()
num, err := db.Raw(` num, err := db.Raw(`

View File

@@ -84,7 +84,9 @@ func (c *BaseScheduler) PickupGoods(order *model.GoodsOrder) (err error) {
}, "PickupGoods orderID:%s", order.VendorOrderID) }, "PickupGoods orderID:%s", order.VendorOrderID)
} }
} else { } else {
err = ErrOrderStatusIsNotSuitable if order.LockStatus != model.OrderStatusUnknown || order.Status < model.OrderStatusAccepted {
err = ErrOrderStatusIsNotSuitable
}
globals.SugarLogger.Infof("PickupGoods orderID:%s, status:%d is not suitable", order.VendorOrderID, order.Status) globals.SugarLogger.Infof("PickupGoods orderID:%s, status:%d is not suitable", order.VendorOrderID, order.Status)
} }
return err return err
@@ -102,7 +104,9 @@ func (c *BaseScheduler) Swtich2SelfDeliver(order *model.GoodsOrder) (err error)
} }
} }
} else { } else {
err = ErrOrderStatusIsNotSuitable if order.LockStatus != model.OrderStatusUnknown || order.Status < model.OrderStatusFinishedPickup {
err = ErrOrderStatusIsNotSuitable
}
globals.SugarLogger.Infof("Swtich2SelfDeliver orderID:%s, status:%d is not suitable", order.VendorOrderID, order.Status) globals.SugarLogger.Infof("Swtich2SelfDeliver orderID:%s, status:%d is not suitable", order.VendorOrderID, order.Status)
} }
return err return err

View File

@@ -478,7 +478,7 @@ func (s *DefScheduler) swtich2SelfDeliverWithRetry(savedOrderInfo *WatchOrderInf
order := savedOrderInfo.order order := savedOrderInfo.order
globals.SugarLogger.Debugf("swtich2SelfDeliverWithRetry orderID:%s", order.VendorOrderID) globals.SugarLogger.Debugf("swtich2SelfDeliverWithRetry orderID:%s", order.VendorOrderID)
if order.WaybillVendorID != order.VendorID { if order.WaybillVendorID != order.VendorID {
if err := s.Swtich2SelfDeliver(order); err != nil && err != scheduler.ErrStatusIsNotOKForOperation { if err := s.Swtich2SelfDeliver(order); err != nil {
globals.SugarLogger.Infof("swtich2SelfDeliverWithRetry failed, bill:%v, err:%v", bill, err) globals.SugarLogger.Infof("swtich2SelfDeliverWithRetry failed, bill:%v, err:%v", bill, err)
if retryCount > 0 { if retryCount > 0 {
time.AfterFunc(duration, func() { time.AfterFunc(duration, func() {

View File

@@ -17,3 +17,8 @@ type OrderSkuExt struct {
OrderSku OrderSku
Image string `json:"image"` Image string `json:"image"`
} }
type GoodsOrderCountInfo struct {
Status int `json:"status"`
Count int `json:"count"`
}

View File

@@ -97,23 +97,65 @@ func (c *OrderController) CreateWaybillOnProviders() {
// @Description 得到门店订单信息 // @Description 得到门店订单信息
// @Param storeID query string true "京西门店ID" // @Param storeID query string true "京西门店ID"
// @Param lastHours query int false "最近多少小时的信息" // @Param lastHours query int false "最近多少小时的信息"
// @Success 200 {object} business.model.CallResult
// @Failure 200 {object} business.model.CallResult
// @router /GetStoreOrderCountInfo [get]
func (c *OrderController) GetStoreOrderCountInfo() {
var (
storeID string
lastHours int
err error
)
storeID = c.GetString("storeID")
lastHours, err1 := c.GetInt("lastHours", 0)
if storeID != "" && err1 == nil {
result, err2 := orderman.FixedOrderManager.GetStoreOrderCountInfo(storeID, lastHours)
if err = err2; err == nil {
c.Data["json"] = &model.CallResult{
Code: "0",
Data: string(utils.MustMarshal(result)),
}
}
}
errMsg := jxutils.Errs2Str("", err1, err)
if storeID == "" {
errMsg += "storeID is empty\n"
}
if errMsg != "" {
c.Data["json"] = &model.CallResult{
Code: "-1",
Desc: errMsg,
}
}
c.ServeJSON()
}
// @Title 得到门店订单状态信息
// @Description 得到门店订单状态信息
// @Param storeID query string true "京西门店ID"
// @Param lastHours query int false "最近多少小时的信息"
// @Param fromStatus query int true "起始状态" // @Param fromStatus query int true "起始状态"
// @Param toStatus query int false "起始状态" // @Param toStatus query int false "起始状态"
// @Param offset query int false "起始状态"
// @Param pageSize query int false "起始状态"
// @Success 200 {object} business.model.CallResult // @Success 200 {object} business.model.CallResult
// @Failure 200 {object} business.model.CallResult // @Failure 200 {object} business.model.CallResult
// @router /GetStoreOrderInfo [get] // @router /GetStoreOrderInfo [get]
func (c *OrderController) GetStoreOrderInfo() { func (c *OrderController) GetStoreOrderInfo() {
var ( var (
storeID string storeID string
lastHours, fromStatus, toStatus int lastHours, fromStatus, toStatus, offset, pageSize int
err error err error
) )
storeID = c.GetString("storeID") storeID = c.GetString("storeID")
lastHours, err1 := c.GetInt("lastHours", 0) lastHours, err1 := c.GetInt("lastHours", 0)
fromStatus, err2 := c.GetInt("fromStatus", 0) fromStatus, err2 := c.GetInt("fromStatus", 0)
toStatus, err3 := c.GetInt("toStatus", 0) toStatus, err3 := c.GetInt("toStatus", 0)
if storeID != "" && err1 == nil && err2 == nil && err3 == nil { offset, err4 := c.GetInt("offset", 0)
result, err2 := orderman.FixedOrderManager.GetStoreOrderInfo(storeID, lastHours, fromStatus, toStatus) pageSize, err5 := c.GetInt("pageSize", 0)
if storeID != "" && err1 == nil && err2 == nil && err3 == nil && err4 == nil && err5 == nil {
result, err2 := orderman.FixedOrderManager.GetStoreOrderInfo(storeID, lastHours, fromStatus, toStatus, offset, pageSize)
if err = err2; err == nil { if err = err2; err == nil {
c.Data["json"] = &model.CallResult{ c.Data["json"] = &model.CallResult{
Code: "0", Code: "0",