This commit is contained in:
邹宗楠
2024-03-11 10:09:48 +08:00
parent 738f1820d5
commit 73821c40a1
16 changed files with 276 additions and 121 deletions

View File

@@ -131,12 +131,12 @@ func (p *PurchaseHandler) GetOrder4PartRefund(vendorOrderID string) (order *mode
if err1 == nil {
order = p.Map2Order(result1)
if err2 == nil {
order.Skus = p.partRefund2OrderDetailSkuList(utils.Interface2String(result2["order_id"]), result2["order_detail"])
order.Skus = p.partRefund2OrderDetailSkuList(utils.Interface2String(result2["order_id"]), result2["reverse_order_list"])
giftSkus, discountMoney := getZengSkus(vendorOrderID, result1)
order.DiscountMoney = discountMoney
order.Skus = append(order.Skus, giftSkus...)
order.ActualPayPrice = utils.MustInterface2Int64(result2["user_fee"])
order.TotalShopMoney = utils.MustInterface2Int64(result2["shop_fee"])
order.ActualPayPrice = utils.MustInterface2Int64(result2["remain_user_total_amount"])
order.TotalShopMoney = utils.MustInterface2Int64(result2["merchant_income"])
jxutils.RefreshOrderSkuRelated(order)
} else if err2Ext, ok := err2.(*utils.ErrorWithCode); !ok || err2Ext.IntCode() != ebaiapi.ErrOrderIsNotPartRefund {
err = err2
@@ -170,27 +170,31 @@ func getZengSkus(orderID string, orderMan map[string]interface{}) (skus []*model
}
func (p *PurchaseHandler) partRefund2OrderDetailSkuList(orderID string, orderDetail2 interface{}) (skuList []*model.OrderSku) {
orderDetail := orderDetail2.([]interface{})
for _, product2 := range orderDetail {
refundDetail := orderDetail2.([]interface{})
refundSkuList := refundDetail[len(refundDetail)-1].(map[string]interface{})["sub_reverse_order_list"].([]interface{})
for _, product2 := range refundSkuList {
product := product2.(map[string]interface{})
skuName := product["name"].(string)
_, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(skuName)
number := int(utils.MustInterface2Int64(product["number"]))
sku := &model.OrderSku{
VendorOrderID: orderID,
VendorID: model.VendorIDEBAI,
Count: number,
SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(product[ebaiapi.KeyCustomSkuID]), 0)),
VendorSkuID: utils.Interface2String(product[ebaiapi.KeySkuID]),
SkuName: skuName,
// Weight: int(utils.Interface2Int64WithDefault(product["total_weight"], 0)) / number, // 退单这里的total_weight有BUG这里的total_weight还是没有退单时的值
VendorPrice: utils.MustInterface2Int64(product["product_price"]),
if product["virtual_type"] == ebaiapi.OrderVirtualType {
skuName := product["sku_name"].(string)
_, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(skuName)
number := int(utils.MustInterface2Int64(product["apply_quantity"]))
sku := &model.OrderSku{
VendorOrderID: orderID,
VendorID: model.VendorIDEBAI,
Count: number,
SkuID: int(utils.Str2Int64WithDefault(utils.Interface2String(product[ebaiapi.KeyCustomSkuID]), 0)),
VendorSkuID: utils.Interface2String(product["platform_sku_id"]),
SkuName: skuName,
Weight: int(utils.Interface2Int64WithDefault(product["refund_weight"], 0)) / number, // 退单这里的total_weight有BUG这里的total_weight还是没有退单时的值
VendorPrice: utils.MustInterface2Int64(product["refund_user_amount"]),
}
//sku.SalePrice, _, sku.StoreSubName = getSkuSalePrice(product)
sku.SalePrice = utils.Interface2Int64WithDefault(product["discount_detail"].(map[string]interface{})["total_price"], 0)
if sku.Weight == 0 {
sku.Weight = jxutils.FormatSkuWeight(specQuality, specUnit) // 订单信息里没有重量,只有名字里尝试找
}
skuList = append(skuList, sku)
}
sku.SalePrice, _, sku.StoreSubName = getSkuSalePrice(product)
if sku.Weight == 0 {
sku.Weight = jxutils.FormatSkuWeight(specQuality, specUnit) // 订单信息里没有重量,只有名字里尝试找
}
skuList = append(skuList, sku)
}
return skuList
}
@@ -440,7 +444,30 @@ func (p *PurchaseHandler) trySyncCancelStatus(vendorOrderID string) (err error)
func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) {
// todo 饿百转商家自送后,没有确认送达的概念,空操作
if globals.EnableEbaiStoreWrite && order.WaybillVendorID > 100 {
err = api.EbaiAPI.OrderComplete(order.VendorOrderID, userName)
param2 := &ebaiapi.PushRiderInfo{
DistributorId: 201,
OrderId: order.VendorOrderID,
State: 21,
SelfStatus: ebaiapi.OrderDeliveryStatusSendOver,
SelfStatusDesc: "自配送送达",
DistributorInfoDTO: ebaiapi.DistributorInfoDTO{
DistributorTypeId: "99999",
DistributorName: "商家自行配送",
},
}
bills, _ := dao.GetWaybills(dao.GetDB(), order.VendorOrderID, nil)
for _, v := range bills {
if v.Status == model.WaybillStatusDelivered || v.Status == model.WaybillStatusFailed {
param2.Knight = ebaiapi.Knight{
Id: utils.Str2Int64(order.VendorOrderID),
Name: v.CourierName,
Phone: v.CourierMobile,
}
break
}
}
err = api.EbaiAPI.OrderselfDeliveryStateSync2(param2)
}
return err
}
@@ -448,7 +475,18 @@ func (p *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName
// 完全自送的门店表示开始配送
func (p *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) {
if globals.EnableEbaiStoreWrite {
err = api.EbaiAPI.OrderselfDeliveryStateSync(order.VendorOrderID, userName)
param2 := &ebaiapi.PushRiderInfo{
DistributorId: 201,
OrderId: order.VendorOrderID,
State: 21,
SelfStatus: 1,
SelfStatusDesc: "生成自配送运单",
DistributorInfoDTO: ebaiapi.DistributorInfoDTO{
DistributorTypeId: "99999",
DistributorName: "商家自行配送",
},
}
err = api.EbaiAPI.OrderselfDeliveryStateSync2(param2)
}
if err == nil {
// 饿百不会发送配送中,模拟发送
@@ -460,7 +498,30 @@ func (p *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userNam
// 完全自送的门店表示配送完成
func (p *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) {
if globals.EnableEbaiStoreWrite {
err = api.EbaiAPI.OrderComplete(order.VendorOrderID, userName)
param2 := &ebaiapi.PushRiderInfo{
DistributorId: 201,
OrderId: order.VendorOrderID,
State: 21,
SelfStatus: ebaiapi.OrderDeliveryStatusSendOver,
SelfStatusDesc: "自配送送达",
DistributorInfoDTO: ebaiapi.DistributorInfoDTO{
DistributorTypeId: "99999",
DistributorName: "商家自行配送",
},
}
bills, _ := dao.GetWaybills(dao.GetDB(), order.VendorOrderID, nil)
for _, v := range bills {
if v.Status == model.WaybillStatusDelivered || v.Status == model.WaybillStatusFailed {
param2.Knight = ebaiapi.Knight{
Id: utils.Str2Int64(order.VendorOrderID),
Name: v.CourierName,
Phone: v.CourierMobile,
}
break
}
}
err = api.EbaiAPI.OrderselfDeliveryStateSync2(param2)
}
return err
}