func (this *orderManagerImpl) SmartConfirmOrder(o order.IOrder) error { return nil //todo: 自动确认订单 var err error v := o.GetValue() log.Printf("[ AUTO][OrderSetup]:%s - Confirm \n", v.OrderNo) var sp shop.IShop if biShops == nil { // /pay/return_alipay?out_trade_no=ZY1607375766&request_token=requestToken&result=success&trade_no // =2016070221001004880246862127&sign=75a18ca0d75750ac22fedbbe6468c187&sign_type=MD5 //todo: 拆分订单 biShops = this._merchant.ShopManager().GetBusinessInShops() } if len(biShops) == 1 { sp = biShops[0] } else { sp, err = this.SmartChoiceShop(v.ShippingAddress) if err != nil { //todo: panic("not impl") //order.Suspend("智能分配门店失败!原因:" + err.Error()) return err } } if sp != nil && sp.Type() == shop.TypeOfflineShop { sv := sp.GetValue() //todo: set shop panic("not impl") //order.SetShop(sp.GetDomainId()) err = o.Confirm() //err = order.Process() ofs := sp.(shop.IOfflineShop).GetShopValue() o.AppendLog(&order.OrderLog{ Type: int(order.LogSetup), IsSystem: 1, Message: fmt.Sprintf("自动分配门店:%s,电话:%s", sv.Name, ofs.Tel), }) } return err }
func (this *orderManagerImpl) setupOrder(v *order.Order, conf *merchant.SaleConf, t time.Time, f func(error)) { var err error od := this.CreateOrder(v) dur := time.Duration(t.Unix()-v.CreateTime) * time.Second switch v.State { case order.StatAwaitingPayment: if v.IsPaid == 0 && dur > time.Minute*time.Duration(conf.OrderTimeOutMinute) { //todo: del //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(od) } // 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) { //todo: panic("not impl") //err = order.SignReceived() log.Printf("[ AUTO][OrderSetup]:%s - Received \n", v.OrderNo) if err == nil { //todo: del panic("not impl") //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) } }