diff --git a/business/model/const.go b/business/model/const.go index be7314774..1ae19706c 100644 --- a/business/model/const.go +++ b/business/model/const.go @@ -346,15 +346,15 @@ const ( ) const ( - RiderGetOrder = "骑手接单" - RiderToStore = "骑手到店" - RiderGetOrderDelivering = "骑手配送中" - RiderGetOrderDelivered = "骑手配送完成" - RiderGetOrderCanceled = "骑手取消" + RiderGetOrder = "骑手 %s (%s) 已接单" + RiderToStore = "骑手 %s (%s) 已到店" + RiderGetOrderDelivering = "骑手 %s (%s) 配送中" + RiderGetOrderDelivered = "骑手 %s (%s) 已送达" + RiderGetOrderCanceled = "骑手 %s (%s) 已取消" RiderGetOrderDeliverFailed = "骑手配送异常" RiderGetOrderDeliverOther = "其他待处理信息" RiderWaitRider = "待接单,正在分配骑手" - RiderWaitGetGoods = "已经分配骑手,待取货" + RiderWaitGetGoods = "骑手 %s (%s) 已接单" ) const ( diff --git a/business/model/dao/store.go b/business/model/dao/store.go index c689db040..afedda874 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -2,7 +2,9 @@ package dao import ( "errors" + "fmt" "sort" + "strings" "time" "git.rosy.net.cn/baseapi/utils" @@ -1582,42 +1584,41 @@ func QueryStoreBindInfo(storeID int) (*model.FreightTemplate, error) { //向FreightTemplate 插入数据 func InsertIntoFreightTemplate(storeID int, vendorStoreID string, templateID, warehouseID, fenceID, tradeLimitID int64) error { var ( - sqlStr = []string{} + sqlStr []string tStr = "" - sqlParams = []interface{}{} + sqlParams []interface{} ) if storeID == 0 && utils.Str2Int(vendorStoreID) == 0 { return errors.New("storeID,vendorStoreID 必传") } - if _, err := ExecuteSQL(GetDB(), "SELECT COUNT(*) FROM freight_template a WHERE a.store_id = ? AND a.vendor_store_id = ?", storeID, vendorStoreID); err != nil { - if _, err := ExecuteSQL(GetDB(), "INSERT INTO freight_template (store_id,vendor_store_id,created_at,updated_at) VALUES (?,?,?,?)", storeID, vendorStoreID, time.Now(), time.Now()); err != nil { - return err - } - } + + sql := `UPDATE freight_template a SET ` + if templateID != 0 { - sqlStr = append(sqlStr, " UPDATE freight_template a SET a.template_id = ? ") - sqlParams = append(sqlParams, templateID) + templateIDSql := ` a.template_id = ? ` + sqlParams = append(sqlParams, templateIDSql) + sqlStr = append(sqlStr, sql) } if warehouseID != 0 { - sqlStr = append(sqlStr, " UPDATE freight_template a SET a.warehouse_id = ? ") - sqlParams = append(sqlParams, warehouseID) + warehouseIDSql := ` a.warehouse_id = ? ` + sqlParams = append(sqlParams, warehouseIDSql) + sqlStr = append(sqlStr, sql) } if fenceID != 0 { - sqlStr = append(sqlStr, " UPDATE freight_template a SET a.fence_id = ? ") - sqlParams = append(sqlParams, fenceID) + fenceIDSql := ` a.fence_id = ?` + sqlParams = append(sqlParams, fenceIDSql) + sqlStr = append(sqlStr, sql) } if tradeLimitID != 0 { - sqlStr = append(sqlStr, " UPDATE freight_template a SET a.fence_id = ? ") - sqlParams = append(sqlParams, tradeLimitID) + sql += ` a.fence_id = ? ` + sqlParams = append(sqlParams, templateID) + sqlStr = append(sqlStr, sql) } tStr = "WHERE a.store_id = ? AND a.vendor_store_id = ?" - sqlParams = append(sqlParams, storeID, vendorStoreID) - for _, v := range sqlStr { - v += tStr - if _, err := ExecuteSQL(GetDB(), v, sqlParams); err != nil { - return err - } - v = "" - } - return nil + + tStr2 := sql + strings.Join(sqlStr, ",") + tStr + + _, err := ExecuteSQL(GetDB(), tStr2, sqlParams...) + fmt.Println(tStr2) + return err } diff --git a/business/partner/delivery/dada/waybill.go b/business/partner/delivery/dada/waybill.go index 2207c53b5..75c67ae9b 100644 --- a/business/partner/delivery/dada/waybill.go +++ b/business/partner/delivery/dada/waybill.go @@ -97,7 +97,56 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap order.Status = model.WaybillStatusUnknown } err := dadaapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), utils.Int2Str(order.Status)) - defer delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新 + defer func(order *model.Waybill) { + delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新 + }(order) + if order.OrderVendorID == model.VendorIDDD { + result := &mtpsapi.RiderInfo{ + OrderId: order.VendorOrderID, + ThirdCarrierOrderId: order.VendorOrderID, + CourierName: order.CourierName, + CourierPhone: order.CourierMobile, + LogisticsProviderCode: "10002", + LogisticsStatus: order.Status, + OpCode: "", + } + switch order.Status { + case dadaapi.OrderStatusWaitingForAccept: // 待接单,召唤骑手 + result.LogisticsStatus = model.WaybillStatusNew + result.LogisticsContext = model.RiderWaitRider + case dadaapi.OrderStatusAccepted: // 待取货 + result.LogisticsStatus = model.WaybillStatusCourierAssigned // 分配骑手 + result.LogisticsContext = model.RiderWaitGetGoods + case dadaapi.OrderStatusDelivering: // 配送中 + result.LogisticsStatus = model.WaybillStatusDelivering + result.LogisticsContext = model.RiderGetOrderDelivering + case dadaapi.OrderStatusFinished: // 完成 + result.LogisticsStatus = model.WaybillStatusDelivered + result.LogisticsContext = model.RiderGetOrderDelivered + case dadaapi.OrderStatusCanceled: // 取消 + result.LogisticsStatus = model.WaybillStatusCanceled + result.LogisticsContext = model.RiderGetOrderCanceled + case 8: // 指派单,不处理 + result.LogisticsStatus = 0 + result.LogisticsContext = model.RiderGetOrderDeliverOther + case 9: // 配送异常返回值 + result.LogisticsStatus = model.WaybillStatusDeliverFailed + result.LogisticsContext = model.RiderGetOrderDeliverFailed + case 10: // 妥投异常之物品返回完成 - 不处理 + result.LogisticsStatus = 0 + result.LogisticsContext = model.RiderGetOrderDeliverOther + case dadaapi.OrderStatusReturningInOrder: // 骑手到店 + result.LogisticsStatus = model.WaybillStatusCourierArrived + result.LogisticsContext = model.RiderToStore + case dadaapi.OrderStatusAddOrderFailed: // 创建达达运单失败 - 不处理 + result.LogisticsStatus = model.WaybillStatusFailed + result.LogisticsContext = model.RiderGetOrderDeliverOther + default: + result.LogisticsStatus = 0 + result.LogisticsContext = model.RiderGetOrderDeliverOther + } + delivery.PullTiktokRiderInfo(result) + } return err } diff --git a/business/partner/delivery/rider.go b/business/partner/delivery/rider.go index 797358d12..c28c970eb 100644 --- a/business/partner/delivery/rider.go +++ b/business/partner/delivery/rider.go @@ -86,17 +86,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { riderInfo.CourierName = "石锋" riderInfo.CourierPhone = "18048531223" riderInfo.LogisticsProviderCode = "10017" - if wayBillStatus == model.WaybillStatusNew { - riderInfo.LogisticsStatus = model.WaybillStatusNew - riderInfo.LogisticsContext = "呼叫骑手,新建运单" - } else if wayBillStatus == model.WaybillStatusCanceled { - riderInfo.LogisticsStatus = model.WaybillStatusCanceled - riderInfo.LogisticsContext = "取消骑手" - } else { - riderInfo.LogisticsStatus = model.WaybillStatusDeliverFailed - riderInfo.LogisticsContext = "配送异常,等待恢复" - } - } riderInfo.ThirdCarrierOrderId = v.VendorWaybillID @@ -131,14 +120,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { continue } - if v.VendorID == model.VendorIDDD && (riderInfo.LogisticsStatus == 100 || riderInfo.LogisticsStatus == 0 || riderInfo.LogisticsStatus == 20) { - riderInfo.CourierName = "" - riderInfo.CourierPhone = "" - } - if riderInfo.LogisticsStatus != 22 && riderInfo.LogisticsStatus != 120 && riderInfo.LogisticsStatus != 0 { - riderInfo.LogisticsContext += fmt.Sprintf("[%s:%s]", riderInfo.CourierName, riderInfo.CourierPhone) - } - if riderInfo.Longitude == "" { riderInfo.Longitude = utils.Float64ToStr(utils.Int2Float64(v.ConsigneeLng) / 1000000) } @@ -162,15 +143,6 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { case model.VendorIDJDShop: // 京东商城 case model.VendorIDWSC: // 微盟微商城 case model.VendorIDDD: // 抖店小时达 - // 呼叫骑手的时候推送发货 - // 抖店由于发配送时运单id已经固定了,我们系统在重新发货,或者运单号发生改变时去推送信息时.抖店只识别第一个运单号所以在这儿修改成发单时的第一个运单号! - riderInfo.ThirdCarrierOrderId = riderInfo.OrderId - paramsMap := utils.Struct2Map(riderInfo, "", true) - if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil { - if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorStoreID, paramsMap); err != nil { - globals.SugarLogger.Errorf("Error pushing tiktok rider information :%s--%s--%v", riderInfo.OrderId, riderInfo.ThirdCarrierOrderId, err) - } - } default: globals.SugarLogger.Errorf("Order source error, non system order") return @@ -179,6 +151,57 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { return } +func PullTiktokRiderInfo(riderInfo *mtpsapi.RiderInfo) { + switch riderInfo.LogisticsStatus { + case 5: // 呼叫骑手 + riderInfo.LogisticsStatus = 0 + riderInfo.OpCode = tiktok_api.TiktokLogisticsStatusCALLRIDER + case 12: // 骑手接单 + riderInfo.LogisticsStatus = 12 + riderInfo.OpCode = tiktok_api.TiktokLogisticsORDERRECEIVED + case 15: // 到店 + riderInfo.LogisticsStatus = 15 + riderInfo.OpCode = tiktok_api.TiktokLogisticsRIDERARRIVED + case 20: //配送中 + riderInfo.LogisticsStatus = 20 + riderInfo.OpCode = tiktok_api.TiktokLogisticsRIDERPICKUP + case 110: // 完成 + riderInfo.LogisticsStatus = 40 + riderInfo.OpCode = tiktok_api.TiktokLogisticsDELIVERED + case 105: // 完成 + riderInfo.LogisticsStatus = 40 + riderInfo.OpCode = tiktok_api.TiktokLogisticsDELIVERED + case 115: // 取消 + riderInfo.CourierName = "" + riderInfo.CourierPhone = "" + riderInfo.LogisticsStatus = 100 + riderInfo.OpCode = tiktok_api.TiktokLogisticsCANCELDELIVERY + case 22, 0, 120: // 异常配送 + riderInfo.LogisticsStatus = 22 + riderInfo.OpCode = tiktok_api.TiktokLogisticsINDDELIVERYEXCEPTION + } + + if riderInfo.CourierPhone == "" { + riderInfo.CourierPhone = "18981810000" + } + if riderInfo.CourierName == "" { + riderInfo.CourierName = "暂无" + } + + if riderInfo.LogisticsStatus != 22 && riderInfo.LogisticsStatus != 120 && riderInfo.LogisticsStatus != 0 { + riderInfo.LogisticsContext += fmt.Sprintf("[%s:%s]", riderInfo.CourierName, riderInfo.CourierPhone) + } + + // 呼叫骑手的时候推送发货 + // 抖店由于发配送时运单id已经固定了,我们系统在重新发货,或者运单号发生改变时去推送信息时.抖店只识别第一个运单号所以在这儿修改成发单时的第一个运单号! + paramsMap := utils.Struct2Map(riderInfo, "", true) + if handler := partner.GetPurchaseOrderHandlerFromVendorID(model.VendorIDDD); handler != nil { + if err := handler.GetOrderRider("", "", paramsMap); err != nil { + globals.SugarLogger.Errorf("PullTiktokRiderInfo Err %s", err.Error()) + } + } +} + //将以过期订单状态为配送中的订单修改为完成状态 func UpdateOrder2Complete() { sql := `UPDATE goods_order g SET g.status=110 WHERE g.status=20 AND g.order_created_at < ?` @@ -266,7 +289,10 @@ func UpdateFakeWayBillToTiktok() { continue } - riderInfo.LogisticsContext += fmt.Sprintf("[%s:%s]", riderInfo.CourierName, riderInfo.CourierPhone) + if riderInfo.LogisticsContext != model.RiderGetOrderDeliverFailed && riderInfo.LogisticsContext != model.RiderGetOrderDeliverOther && riderInfo.LogisticsContext != model.RiderWaitRider { + riderInfo.LogisticsContext = fmt.Sprintf(riderInfo.LogisticsContext, riderInfo.CourierName, riderInfo.CourierPhone) + } + // 推送骑手信息 paramsMap := utils.Struct2Map(riderInfo, "", true) if handler := partner.GetPurchaseOrderHandlerFromVendorID(model.VendorIDDD); handler != nil { diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index 3f355e37d..f83ac31c5 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -60,6 +60,7 @@ var ( ) func (c *PurchaseHandler) OnOrderMsg(a *jdapi.API, msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { + globals.SugarLogger.Debug("===================京东订单 := %s", utils.Format4Output(msg, false)) primaryID := msg.BillID primaryID += utils.Int64ToStr(time.Now().Unix()) jxutils.CallMsgHandler(func() { @@ -203,8 +204,10 @@ func (c *PurchaseHandler) getOrder(a *jdapi.API, orderID string) (order *model.G switch taskIndex { case 0: orderMap, err = a.QuerySingleOrder(orderID) + globals.SugarLogger.Debugf("===========================new order order Mao%s", utils.Format4Output(orderMap, false)) if err == nil { order = c.Map2Order(orderMap) + globals.SugarLogger.Debugf("===========================new really order Mao%s", utils.Format4Output(order, false)) if configs, err := dao.QueryConfigs(dao.GetDB(), "jdStorePageCookie", model.ConfigTypeCookie, ""); err == nil { //a.SetJdCookie(configs[0].Value) a.SetCookieWithStr(configs[0].Value) diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index 8dbd3f6a7..bbba3fe26 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -453,8 +453,8 @@ func CreateFreightTemplate(storeCode int) (int64, error) { }} param.Columns = columns } else { - param.Template.TemplateName += "固定运费模板" param.Columns = nil + param.Template.TemplateName += "固定运费模板" } globals.SugarLogger.Debugf("param.Template.TemplateName===============%s", param.Template.TemplateName) resp, err := getAPI(storeDetail.VendorOrgCode, storeCode, storeDetail.VendorStoreID).FreightTemplateCreate(param) diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 248f8ef41..6d3343834 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -133,7 +133,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI Weight: utils.Int2Float64(storeSku.Weight), DeliveryDelayDay: tiktokShop.DeliveryDelayDayToDay, PresellType: tiktokShop.SendGoodsTypeNow, - Supply7dayReturn: 0, // 是否支持7天无理由,0不支持,1支持,2支持(拆封后不支持) + Supply7dayReturn: 2, // 是否支持7天无理由,0不支持,1支持,2支持(拆封后不支持) Mobile: storeDetail.Tel1, Commit: true, Specs: "重量|" + utils.Float64ToStr(float64(storeSku.SpecQuality)) + storeSku.SpecUnit, @@ -392,7 +392,7 @@ func GetDeliveryTemp(api *tiktokShop.API, vendorStoreID string, storeDetail *dao productProvince := utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[0:2]) tempDetail := &freightTemplate_create_request.FreightTemplateCreateParam{ Template: &freightTemplate_create_request.Template{ - TemplateName: storeDetail.Name + "_" + utils.Int64ToStr(rand.Int63n(int64(storeDetail.ID))) + "_", + TemplateName: storeDetail.Name + utils.Int64ToStr(rand.Int63n(int64(storeDetail.ID))), ProductProvince: productProvince, ProductCity: int64(storeDetail.CityCode), CalculateType: 2, @@ -445,6 +445,7 @@ func GetDeliveryTemp(api *tiktokShop.API, vendorStoreID string, storeDetail *dao return 0, err } freightId = temp.TemplateId + dao.InsertIntoFreightTemplate(storeDetail.Store.ID, storeDetail.VendorStoreID, freightId, 0, 0, 0) } globals.SugarLogger.Debugf("freightId =last %d", freightId) return freightId, nil