From d6dd1d593e04f9d1deb0c70a335977f9b1386796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Fri, 4 Nov 2022 19:39:23 +0800 Subject: [PATCH] 1 --- business/model/const.go | 12 +-- business/model/dao/store.go | 49 ++++++------ business/partner/delivery/dada/waybill.go | 13 +++- business/partner/delivery/rider.go | 16 +++- .../purchase/tiktok_store/store_sku2_utils.go | 76 ++++++------------- 5 files changed, 82 insertions(+), 84 deletions(-) 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..c1b86c3c1 100644 --- a/business/partner/delivery/dada/waybill.go +++ b/business/partner/delivery/dada/waybill.go @@ -97,7 +97,18 @@ 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) // 骑手位置更新 + delivery.PullTiktokRiderInfo(&mtpsapi.RiderInfo{ + OrderId: order.VendorOrderID, + ThirdCarrierOrderId: order.VendorOrderID, + CourierName: order.CourierName, + CourierPhone: order.CourierMobile, + LogisticsProviderCode: "10002", + LogisticsStatus: order.Status, + OpCode: "", + }) + }(order) return err } diff --git a/business/partner/delivery/rider.go b/business/partner/delivery/rider.go index 797358d12..5f5fff57f 100644 --- a/business/partner/delivery/rider.go +++ b/business/partner/delivery/rider.go @@ -179,6 +179,17 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { return } +func PullTiktokRiderInfo(param *mtpsapi.RiderInfo) { + // 呼叫骑手的时候推送发货 + // 抖店由于发配送时运单id已经固定了,我们系统在重新发货,或者运单号发生改变时去推送信息时.抖店只识别第一个运单号所以在这儿修改成发单时的第一个运单号! + paramsMap := utils.Struct2Map(param, "", 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 +277,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/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index 248f8ef41..1115b578b 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -5,7 +5,6 @@ import ( "errors" "fmt" "git.rosy.net.cn/baseapi/platformapi/mtwmapi" - freightTemplate_create_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_create/request" product_addV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_addV2/request" product_detail_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_detail/response" product_editV2_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_editV2/request" @@ -24,7 +23,6 @@ import ( "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/business/partner/putils" "git.rosy.net.cn/jx-callback/globals" - "math/rand" "strings" ) @@ -209,7 +207,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI temp, err := dao.QueryStoreBindInfo(storeDetail.ID) if err != nil || temp == nil || temp.TemplateID == 0 { // 运费模板 - param.FreightId, err = GetDeliveryTemp(api, vendorStoreID, storeDetail) + param.FreightId, err = GetDeliveryTemp(api, vendorStoreID, storeDetail, temp) if err != nil { return nil, err } @@ -384,69 +382,43 @@ func CreateSaleTemp(storeId int64, api *tiktokShop.API) (int64, error) { } // GetDeliveryTemp 获取运费模板id,运费模板不存在则创建 -func GetDeliveryTemp(api *tiktokShop.API, vendorStoreID string, storeDetail *dao.StoreDetail) (int64, error) { +func GetDeliveryTemp(api *tiktokShop.API, vendorStoreID string, storeDetail *dao.StoreDetail, tempObj *model.FreightTemplate) (int64, error) { // 没有模板是查询线上模板 freightId, _ := api.GetStoreBindTemp(utils.Str2Int64(vendorStoreID)) if freightId == 0 { - // 创建门店运费模板 - 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))) + "_", - ProductProvince: productProvince, - ProductCity: int64(storeDetail.CityCode), - CalculateType: 2, - TransferType: 1, // 快递方式-1.快递 目前仅支持1 - RuleType: 1, // 模板类型-0:阶梯计价 1:固定运费 2:卖家包邮 3:货到付款 - FixedAmount: 500, //固定运费 单位:分 - }, - } - Columns := []freightTemplate_create_request.ColumnsItem{ - { - RuleAddress: fmt.Sprintf(`{"%d":{"%s":{"%s":nil}}}`, productProvince, utils.Int2Str(storeDetail.CityCode), utils.Int2Str(storeDetail.DistrictCode)), - IsOverFree: true, - OverAmount: int64(storeDetail.DeliveryFeeDeductionSill), - ProvinceInfos: []freightTemplate_create_request.ProvinceInfosItem{ - { - Id: productProvince, - Children: []freightTemplate_create_request.ChildrenItem_4{ - { - Id: int64(storeDetail.CityCode), - Children: []freightTemplate_create_request.ChildrenItem_5{ - { - Id: int64(storeDetail.DistrictCode), - Children: nil, - }, - }, - }, - }}, - }, - }, - } - // 固定运费模板 - if storeDetail.DeliveryFeeDeductionSill == 0 { - tempDetail.Template.TemplateName += "固定运费模板" - } else { - // 满减运费模板 - tempDetail.Template.TemplateName += "满减运费模板" - tempDetail.Columns = Columns // 满减 - } - temp, err := api.FreightTemplateCreate(tempDetail) + freightId, err := CreateFreightTemplate(storeDetail.Store.ID) if err != nil { return 0, err } - // 绑定门店运费模板 if err = api.BindFreightTemplate(&shop_bindStoreFreight_request.ShopBindStoreFreightParam{ StoreId: utils.Str2Int64(vendorStoreID), - FreightId: temp.TemplateId, + FreightId: freightId, }); err != nil { globals.SugarLogger.Debugf("BindFreightTemplate =err %s", err) return 0, err } - freightId = temp.TemplateId + + // 保存到数据库 + if tempObj == nil { + param := &model.FreightTemplate{ + StoreID: 0, + VendorStoreID: "", + TemplateID: 0, + WarehouseID: 0, + FenceID: "", + TradeLimitID: 0, + } + dao.WrapUpdateULEntity(param, "jxAdmin") + if err := dao.CreateEntity(dao.GetDB(), param); err != nil { + globals.SugarLogger.Debugf("==================err %s", err.Error()) + } + } else { + if err := dao.InsertIntoFreightTemplate(storeDetail.Store.ID, storeDetail.VendorStoreID, freightId, 0, 0, 0); err != nil { + globals.SugarLogger.Debugf("==================err %s", err.Error()) + } + } } - globals.SugarLogger.Debugf("freightId =last %d", freightId) return freightId, nil }