package tiktok_store // //import ( // "errors" // "git.rosy.net.cn/baseapi/platformapi/mtpsapi" // shop_getStoreDetail_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_getStoreDetail/request" // superm_createVirtualMobile_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/superm_createVirtualMobile/response" // "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" // "git.rosy.net.cn/baseapi/utils" // "git.rosy.net.cn/jx-callback/business/jxutils" // "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" // "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" // "git.rosy.net.cn/jx-callback/globals/api" // "time" //) // //var ( // curDeliveryHandler *DeliveryHandler //) // //type DeliveryHandler struct { //} // //func init() { // if api.TiktokStore != nil { // curDeliveryHandler = new(DeliveryHandler) // partner.RegisterDeliveryPlatform(curDeliveryHandler, true) // } //} // //func (c *DeliveryHandler) GetVendorID() int { // return model.VendorIDDYPS //} // //func (c *DeliveryHandler) CreateStore(ctx *jxcontext.Context, storeDetail *dao.StoreDetail2) (vendorStoreID string, status int, err error) { // return "", 0, errors.New("抖店暂不支持此操作") //} // //func (c *DeliveryHandler) GetStore(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeDetail *dao.StoreDetail2, err error) { // relInfo, err := dao.GetStoreDetailForDD(dao.GetDB(), storeID, model.VendorIDDD, vendorStoreID, "") // if err != nil { // return nil, errors.New("获取抖音平台账号信息失败,请重试") // } // apiObj := getAPI(relInfo.VendorOrgCode) // if storeInfo, err := apiObj.GetStoreDetail(&shop_getStoreDetail_request.ShopGetStoreDetailParam{ // StoreId: vendorStoreID, // }); err == nil { // storeDetail = &dao.StoreDetail2{ // Store: model.Store{ // Name: storeInfo.StoreDetail.Store.Name, // Tel1: storeInfo.StoreDetail.Store.Contact, // Address: storeInfo.StoreDetail.Store.Address, // Lng: jxutils.StandardCoordinate2Int(utils.Str2Float64(storeInfo.StoreDetail.Store.Longitude)), // Lat: jxutils.StandardCoordinate2Int(utils.Str2Float64(storeInfo.StoreDetail.Store.Latitude)), // }, // VendorID: model.VendorIDDYPS, // VendorStoreID: utils.Int64ToStr(storeInfo.StoreDetail.Store.StoreId), // CourierStatus: int(storeInfo.StoreDetail.Store.State), // } // } else { // globals.SugarLogger.Debugf("GetStoreDetail err %s", err) // } // return storeDetail, err //} // //func (c *DeliveryHandler) IsErrStoreNotExist(err error) bool { // return false //} // //func (c *DeliveryHandler) IsErrStoreExist(err error) bool { // return false //} // //// 呼叫运力并发货 //func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) { // return nil, nil // //relInfo, err := dao.GetStoreDetail(dao.GetDB(), order.JxStoreID, model.VendorIDDD, "") // //if err != nil { // // return nil, errors.New("获取抖音平台账号信息失败,请重试") // //} // //apiObj := getAPI(relInfo.VendorOrgCode) // //if order.VendorID != model.VendorIDDD { // // return nil, errors.New("非抖音平台店铺不可发抖音配送") // //} // //bill = &model.Waybill{ // // VendorOrderID: order.VendorOrderID, // // OrderVendorID: order.VendorID, // // VendorWaybillID: order.VendorOrderID, //抖音配送订单号即运单号 // // WaybillVendorID: model.VendorIDDYPS, // //} // //if dispatcherFee, err := apiObj.GetDispatcherInfo(int64(order.StoreID), order.VendorOrderID, tiktok_api.DispatcherFeeTypeCall); err == nil { // // bill.DesiredFee = dispatcherFee // //} // //if err := apiObj.ShopOrderDispatcher(utils.Str2Int64(order.VendorStoreID), order.VendorOrderID, tiktok_api.DispatcherFeeTypeCall); err != nil { // // return nil, err // //} // //delivery.OnWaybillCreated(bill) // //return bill, nil //} // //func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) { // return nil // //params := make(map[string]interface{}, 0) // //params["vendorOrderID"] = bill.VendorOrderID // //if localOrder, _, err := dao.GetOrders(dao.GetDB(), nil, false, false, "", "", false, []int{0}, false, "", params, 0, 0); err != nil { // // return errors.New("取消运单时,获取平台门店ID失败,请重试") // //} else { // // if err = getAPI(bill.VendorOrgCode).ShopOrderDispatcher(utils.Str2Int64(localOrder[0].VendorStoreID), bill.VendorOrderID, tiktok_api.DispatcherFeeTypeCancel); err != nil { // // return fmt.Errorf("抖音配送取消运力失败:%v", err) // // } // // bill.Status = model.WaybillStatusCanceled // // bill.Remark = cancelReason // // partner.CurOrderManager.OnWaybillStatusChanged(bill) // //} // //return err //} // //func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *partner.WaybillFeeInfo, err error) { // return nil, nil // //relInfo, err := dao.GetStoreDetail(dao.GetDB(), order.JxStoreID, model.VendorIDDD, "") // //if err != nil { // // return nil, errors.New("获取抖音平台账号信息失败,请重试") // //} // //if dispatcherFee, err := getAPI(relInfo.VendorOrgCode).GetDispatcherInfo(utils.Str2Int64(relInfo.VendorStoreID), order.VendorOrderID, tiktok_api.DispatcherFeeTypeCall); err == nil { // // deliveryFeeInfo = &partner.WaybillFeeInfo{} // // deliveryFeeInfo.DeliveryFee = dispatcherFee // //} // //return deliveryFeeInfo, err //} //func getDispatcherFee(storeID int64, vendorOrderID string, dispatcherType int32) int64 { // if relInfo, err := dao.GetStoreDetailForDD(dao.GetDB(), 0, model.VendorIDDD, utils.Int64ToStr(storeID), ""); err != nil { // return 0 // } else { // if dispatcherFee, err := getAPI(relInfo.VendorOrgCode).GetDispatcherInfo(storeID, vendorOrderID, dispatcherType); err == nil { // return 0 // } else { // return dispatcherFee // } // } //} //func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) { // return errors.New("抖店配送暂不支持此操作") //} // //func (c *DeliveryHandler) GetRiderInfo(orderId string, deliveryId int64, mtPeisongId string) (rider *mtpsapi.RiderInfo, err error) { // orderInfo, _, err := dao.GetOrders(dao.GetDB(), []int64{utils.Str2Int64(orderId)}, false, false, "", "", false, []int{0}, false, "", nil, 0, 0) // if err != nil { // return nil, errors.New("获取本地门店账号信息失败,请重试") // } // if waybill, err := getAPI(orderInfo[0].VendorOrgCode).GetShipmentInfo(utils.Str2Int64(orderId), deliveryId, tiktok_api.ShipmentTypeInvoice); err != nil { // return nil, err // } else { // rider = &mtpsapi.RiderInfo{ // OrderId: orderId, // ThirdCarrierOrderId: mtPeisongId, // CourierName: waybill.RiderName, // CourierPhone: waybill.RiderPhone, // LogisticsProviderCode: mtpsapi.DYPsCode, // LogisticsStatus: int(waybill.ShipmentStatus), // LogisticsContext: tiktok_api.ShipmentStatus[waybill.ShipmentStatus], // Latitude: waybill.RiderLatitude, // Longitude: waybill.RiderLongitude, // } // } // globals.SugarLogger.Debugf("DYPS GetRiderInfo rider======%s", utils.Format4Output(rider, false)) // return rider, nil //} // //func CreateVirtualMobile(shopOrderID int64) (*superm_createVirtualMobile_response.SupermCreateVirtualMobileData, error) { // if orderInfo, _, err := dao.GetOrders(dao.GetDB(), []int64{shopOrderID}, false, false, "", "", false, []int{0}, false, "", nil, 0, 0); err != nil { // return nil, errors.New("获取本地门店账号信息失败,请重试") // } else { // if visMobile, err := getAPI(orderInfo[0].VendorOrgCode).CreateVirtualMobile(shopOrderID); err != nil { // return nil, err // } else { // return visMobile, nil // } // } //} // ////订单状态回调 //func OnWaybillMsg(tag, orderId string, data interface{}) (response *tiktok_api.CallbackResponse) { // req := data.(tiktok_api.ShipmentInfoData) // param := &model.Waybill{ // VendorOrderID: utils.Int64ToStr(req.ShopOrderID), // VendorWaybillID: req.TrackNo, // VendorWaybillID2: utils.Int64ToStr(req.AfterSaleID), // WaybillVendorID: model.VendorIDDYPS, // OrderVendorID: model.VendorIDDD, // CourierName: req.RiderName, // CourierMobile: req.RiderPhone, // VendorStatus: utils.Int64ToStr(req.ShipmentStatus), // StatusTime: utils.Str2Time(req.OccurredTime), // Remark: "", // } // if req.OccurredTime == "" { // param.StatusTime = time.Now() // } // dispatcherFee := getDispatcherFee(req.ShopID, utils.Int64ToStr(req.ShopOrderID), tiktok_api.DispatcherFeeTypeCall) // switch req.ShipmentStatus { // case tiktok_api.ShipmentStatusCalling: //1 骑手呼叫中 // param.DesiredFee = dispatcherFee // param.Status = model.WaybillStatusNew //5 待调度 // case tiktok_api.ShipmentStatusReceived: //2 骑手已接单 // param.DesiredFee = dispatcherFee // param.Status = model.WaybillStatusCourierAssigned // param.Remark = req.RiderName + "," + req.RiderPhone // case tiktok_api.ShipmentStatusArrived: //3 骑手已到达取货点 // param.DesiredFee = dispatcherFee // param.Status = model.WaybillStatusCourierArrived //80 到店 // param.Remark = tiktok_api.ShipmentStatus[req.ShipmentStatus] // case tiktok_api.ShipmentStatusDelivering: //4 配送中 // param.Status = model.WaybillStatusDelivering // param.Remark = tiktok_api.ShipmentStatus[req.ShipmentStatus] // case tiktok_api.ShipmentStatusRejected, tiktok_api.ShipmentStatusReturning, tiktok_api.ShipmentStatusReturned: //5 收货人已拒收,6 返回中,7 返回完成 // param.Status = model.WaybillStatusDeliverFailed // param.Remark = tiktok_api.ShipmentStatus[req.ShipmentStatus] // case tiktok_api.ShipmentStatusDelivered: // 8 订单妥投 // param.Status = model.WaybillStatusDelivered // param.Remark = tiktok_api.ShipmentStatus[req.ShipmentStatus] // case tiktok_api.ShipmentStatusCanceled: //9 订单取消 // param.Status = model.WaybillStatusCanceled // param.Remark = tiktok_api.ShipmentStatus[req.ShipmentStatus] // default: // globals.SugarLogger.Warnf("onWaybillMsg unknown shipmentStatus:%v", req.ShipmentStatus) // } // globals.SugarLogger.Debugf("DYPS onWaybillMsg param=====%s", utils.Format4Output(param, false)) // if err := partner.CurOrderManager.OnWaybillStatusChanged(param); err != nil { // return tiktok_api.CallbackResponseErr(false) // } // return tiktok_api.CallbackResponseErr(true) //} // ////以下为辅助函数 //func getAPI(appOrgCode string) (apiObj *tiktok_api.API) { // apiObj = partner.CurAPIManager.GetAPI(model.VendorIDDD, appOrgCode).(*tiktok_api.API) // return apiObj //}