package delivery import ( "git.rosy.net.cn/baseapi/platformapi/mtpsapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" "time" ) // 订单骑手信息推送:将获取到的三方配送订单,且订单状态为配送中的订单,将配送人员的信息返回给订单方 // 该方法为定时任务,没五分钟推送一次订单消息,订单状态发生变化时 //配送状态code,如下提供配送状态枚举值, //以及各配送状态对应在C端(用户端)和B端(商家PC端)后台展示的配送状态信息。 //未同步配送状态时(C端:商家已接单;B端:待发配送) //0-配送单发往配送(C端:商家已接单;B端:待骑手接单) //1-已创建配送包裹(C端:商家已接单;B端:待骑手接单) //5-已分配骑手(C端:商家已接单;B端:已分配骑手) //10-骑手已接单(C端:骑手正在赶往商家;B端:待骑手取货) //15-骑手已到店(C端:骑手到店取货中;B端:骑手已到店) //20-骑手已取货(C端:商品配送中/骑手正在送货;B端:骑手已取货) //40-骑手已送达(C端:商品已送达;B端:骑手已送达) //100-配送单已取消(C端:商家已接单;B端:配送已取消) //注:若同步配送状态为“配送单已取消”,接口仍支持继续同步配送状态。 说明:商家如未上传此信息,则平台默认值为20(现已要求必传)。 func GetOrderRiderInfoToPlatform(orderId string) { globals.SugarLogger.Debug("==========GetOrderRiderInfoToPlatform", time.Now()) params := make(map[string]interface{}, 0) params["brandID"] = 0 params["statuss"] = []int{20} params["isDateFinish"] = false params["isIncludeFake"] = true params["mustInvoice"] = false params["adjustCount"] = 0 params["waybillVendorIDs"] = `[101,102,103]` if orderId != "" { // 订单id会忽略其他参数 params["keyword"] = orderId } // 每五分钟查询当前订单信息,待配送状态订单1 orders, _, err := dao.GetOrders(dao.GetDB(), nil, false, true, time.Now().Add(-24*time.Hour).Format("2006-01-02"), time.Now().Format("2006-01-02"), false, nil, false, "", params, 0, 10000) if err != nil { globals.SugarLogger.Errorf("GetOrder err :%v", err) return } for _, v := range orders { globals.SugarLogger.Debug("==========orderId,vendorId,waybillId", v.VendorOrderID, v.VendorID, v.WaybillVendorID) var riderInfo *mtpsapi.RiderInfo if handlerInfo := partner.GetDeliveryPlatformFromVendorID(v.WaybillVendorID); handlerInfo != nil { riderInfo, err = handlerInfo.Handler.GetRiderInfo(v.VendorOrderID, utils.Str2Int64(v.VendorWaybillId2Waybill), v.VendorWaybillID) if err != nil { globals.SugarLogger.Errorf("Get Order waybill rider info err :%v", err) continue } } // 目前只推送美团骑手信息 switch v.VendorID { case model.VendorIDMTWM: // 美团发单 paramsMap := utils.Struct2Map(riderInfo, "", true) if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil { if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorOrderID, paramsMap); err != nil { globals.SugarLogger.Errorf("Error pushing meituan rider information :%v", err) } } case model.VendorIDELM: // 饿了么 case model.VendorIDEBAI: // 饿百发单 case model.VendorIDJD: // 京东发单 case model.VendorIDGD: // 美团发单 case model.VendorIDYB: // 银豹发单 case model.VendorIDJDShop: // 京东商城 case model.VendorIDWSC: // 微盟微商城 default: globals.SugarLogger.Errorf("Order source error, non system order") return } } return } //将以过期订单状态为配送中的订单修改为完成状态 func UpdateOrder2Complete() { sql := `UPDATE goods_order g SET g.status=110 WHERE g.status=20 AND g.order_created_at < ?` sqlParams := []interface{}{ time.Now().AddDate(0, 1, 0), } if num, err := dao.ExecuteSQL(dao.GetDB(), sql, sqlParams); err != nil { globals.SugarLogger.Errorf("Update Order Status 20 To 110 Fail") globals.SugarLogger.Debug("Update Order Status 20 To 110 Time,Count", time.Now(), num) } return }