func (this *Shopping) setupOrder(v *shopping.ValueOrder, conf *partner.SaleConf, t time.Time, f func(error)) { var err error order := this.CreateOrder(v, nil) dur := time.Duration(t.Unix()-v.CreateTime) * time.Second switch v.Status { case enum.ORDER_WAIT_PAYMENT: if v.IsPaid == 0 && dur > time.Minute*time.Duration(conf.OrderTimeOutMinute) { order.Cancel("超时未付款,系统取消") log.Printf("[ AUTO][OrderSetup]:%s - Payment Timeout\n", v.OrderNo) } case enum.ORDER_WAIT_CONFIRM: if dur > time.Minute*time.Duration(conf.OrderConfirmAfterMinute) { err = this.SmartConfirmOrder(order) } // case enum.ORDER_WAIT_DELIVERY: // if dur > time.Minute*order_process_minute { // err = order.Process() // if ctx.Debug() { // ctx.Log().Printf("[ AUTO][OrderSetup]:%s - Processing \n", v.OrderNo) // } // } // case enum.ORDER_WAIT_RECEIVE: // if dur > time.Hour * conf.OrderTimeOutReceiveHour { // err = order.Deliver() // if ctx.Debug() { // ctx.Log().Printf("[ AUTO][OrderSetup]:%s - Sending \n", v.OrderNo) // } // } case enum.ORDER_WAIT_RECEIVE: if dur > time.Hour*time.Duration(conf.OrderTimeOutReceiveHour) { err = order.SignReceived() log.Printf("[ AUTO][OrderSetup]:%s - Received \n", v.OrderNo) if err == nil { err = order.Complete() log.Printf("[ AUTO][OrderSetup]:%s - Complete \n", v.OrderNo) } } // case enum.ORDER_COMPLETED: // if dur > time.Hour*order_complete_hour { // err = order.Complete() // if ctx.Debug() { // ctx.Log().Printf("[ AUTO][OrderSetup]:%s - Complete \n", v.OrderNo) // } // } } if err != nil { f(err) } }
func (this *Shopping) SmartConfirmOrder(order shopping.IOrder) error { var err error v := order.GetValue() log.Printf("[ AUTO][OrderSetup]:%s - Confirm \n", v.OrderNo) var shop partner.IShop if biShops == nil { biShops = this._partner.GetBusinessInShops() } if len(biShops) == 1 { shop = biShops[0] } else { shop, err = this.SmartChoiceShop(v.DeliverAddress) if err != nil { log.Println(err) order.Suspend("智能分配门店失败!原因:" + err.Error()) return err } } if shop != nil { sv := shop.GetValue() order.SetShop(shop.GetDomainId()) err = order.Confirm() //err = order.Process() order.AppendLog(enum.ORDER_LOG_SETUP, false, fmt.Sprintf( "自动分配门店:%s,电话:%s", sv.Name, sv.Phone)) } return err }