Merge branch 'jdshop' of https://e.coding.net/rosydev/jx-callback into jdshop
This commit is contained in:
@@ -771,7 +771,6 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
|
|||||||
_, err := updateStoreSku(dao.GetDB(), vendorID, successList, model.SyncFlagNewMask)
|
_, err := updateStoreSku(dao.GetDB(), vendorID, successList, model.SyncFlagNewMask)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
globals.SugarLogger.Debugf("20.sth wrong on updateStoreSku: %v", err)
|
globals.SugarLogger.Debugf("20.sth wrong on updateStoreSku: %v", err)
|
||||||
//return nil, 0, err
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil, len(successList), err
|
return nil, len(successList), err
|
||||||
|
|||||||
@@ -36,18 +36,19 @@ func (c *PurchaseHandler) isAfsMsg(orderStatus string, orderId string, orderCall
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
case tao_vegetable.OrderStatusRefundSuccess:
|
case tao_vegetable.OrderStatusRefundSuccess:
|
||||||
success := orderCallback.(*tao_vegetable.RefundOrderFinish)
|
return true
|
||||||
param := &request591.AlibabaWdkOrderRefundGetRequest{
|
//success := orderCallback.(*tao_vegetable.RefundOrderFinish)
|
||||||
OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
|
//param := &request591.AlibabaWdkOrderRefundGetRequest{
|
||||||
ShopId: nil,
|
// OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)),
|
||||||
StoreId: utils.String2Pointer(success.StoreId),
|
// ShopId: nil,
|
||||||
RefundIds: &[]int64{utils.Str2Int64(success.BizSubRefundId)},
|
// StoreId: utils.String2Pointer(success.StoreId),
|
||||||
}
|
// RefundIds: &[]int64{utils.Str2Int64(success.BizSubRefundId)},
|
||||||
refundAfs, _ := getAPI("", 0, success.StoreId).QueryAfsOrderDetail(param)
|
//}
|
||||||
globals.SugarLogger.Debugf("==============refundAfs.Orders : %s", utils.Format4Output(refundAfs.Orders != nil, false))
|
//refundAfs, _ := getAPI("", 0, success.StoreId).QueryAfsOrderDetail(param)
|
||||||
if refundAfs.Orders != nil {
|
//globals.SugarLogger.Debugf("==============refundAfs.Orders : %s", utils.Format4Output(refundAfs.Orders != nil, false))
|
||||||
return true
|
//if refundAfs.Orders != nil {
|
||||||
}
|
// return true
|
||||||
|
//}
|
||||||
case tao_vegetable.OrderStatusOnSaleCancel:
|
case tao_vegetable.OrderStatusOnSaleCancel:
|
||||||
order, _ := partner.CurOrderManager.LoadOrder(orderId, model.VendorIDTaoVegetable)
|
order, _ := partner.CurOrderManager.LoadOrder(orderId, model.VendorIDTaoVegetable)
|
||||||
if order != nil {
|
if order != nil {
|
||||||
@@ -70,22 +71,25 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
|
|||||||
var err error
|
var err error
|
||||||
var db = dao.GetDB()
|
var db = dao.GetDB()
|
||||||
orderStatus := c.callbackAfsMsg2Status(status, msg)
|
orderStatus := c.callbackAfsMsg2Status(status, msg)
|
||||||
needCallNew := orderStatus.Status == model.AfsOrderStatusWait4Approve || orderStatus.Status == model.AfsOrderStatusNew
|
//needCallNew := orderStatus.Status == model.AfsOrderStatusWait4Approve || orderStatus.Status == model.AfsOrderStatusNew
|
||||||
if !needCallNew {
|
//if !needCallNew {
|
||||||
_, err := partner.CurOrderManager.LoadAfsOrder(orderStatus.VendorOrderID, orderStatus.VendorID)
|
// _, err := partner.CurOrderManager.LoadAfsOrder(orderStatus.VendorOrderID, orderStatus.VendorID)
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
if dao.IsNoRowsError(err) {
|
// if dao.IsNoRowsError(err) {
|
||||||
needCallNew = true
|
// needCallNew = true
|
||||||
} else {
|
// } else {
|
||||||
return tao_vegetable.CallBackResultInfo(err)
|
// return tao_vegetable.CallBackResultInfo(err)
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
if needCallNew && orderStatus.Status == model.AfsOrderStatusOnSaleAfs {
|
//if needCallNew && orderStatus.Status == model.AfsOrderStatusOnSaleAfs {
|
||||||
needCallNew = false
|
// needCallNew = false
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
// 用户取消售后
|
||||||
|
switch status {
|
||||||
|
case tao_vegetable.OrderStatusApplyAfs:
|
||||||
|
|
||||||
if needCallNew {
|
|
||||||
refundData := msg.(*tao_vegetable.UserApplyRefundCallBack)
|
refundData := msg.(*tao_vegetable.UserApplyRefundCallBack)
|
||||||
var afsOrder *model.AfsOrder
|
var afsOrder *model.AfsOrder
|
||||||
var api = getAPI("", 0, refundData.StoreId)
|
var api = getAPI("", 0, refundData.StoreId)
|
||||||
@@ -181,150 +185,146 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
|
|||||||
}
|
}
|
||||||
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
|
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
|
||||||
}
|
}
|
||||||
} else {
|
case tao_vegetable.OrderStatusCancelAfs:
|
||||||
// 用户取消售后
|
// 删除售后单
|
||||||
switch status {
|
afsOrder, err := dao.GetAfsOrders(db, model.VendorIDTaoVegetable, orderStatus.RefVendorOrderID, orderStatus.VendorOrderID)
|
||||||
case tao_vegetable.OrderStatusCancelAfs:
|
if err != nil || afsOrder == nil {
|
||||||
// 删除售后单
|
globals.SugarLogger.Debugf("用户取消售后单,获取之前生成的售后单失败")
|
||||||
afsOrder, err := dao.GetAfsOrders(db, model.VendorIDTaoVegetable, orderStatus.RefVendorOrderID, orderStatus.VendorOrderID)
|
return tao_vegetable.CallBackResultInfo(err)
|
||||||
if err != nil || afsOrder == nil {
|
|
||||||
globals.SugarLogger.Debugf("用户取消售后单,获取之前生成的售后单失败")
|
|
||||||
return tao_vegetable.CallBackResultInfo(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
cancelMsg := msg.(*tao_vegetable.UserCancelRefundApply)
|
|
||||||
for _, v := range afsOrder {
|
|
||||||
// 商家驳回,会发出用户撤销的回调通知,不管他
|
|
||||||
if v.AfsOrderID == cancelMsg.RefundId && v.Flag == model.AfsOrderFlagRefuseUserRefund {
|
|
||||||
return tao_vegetable.CallBackResultInfo(nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 用户撤销未处理的售后订单
|
|
||||||
if v.AfsOrderID == cancelMsg.RefundId && v.Flag == 0 {
|
|
||||||
// 下面处理用户撤销售后
|
|
||||||
if err = utils.CallFuncLogError(func() error {
|
|
||||||
_, err = dao.DeleteEntity(db, v, "VendorOrderID", "VendorID")
|
|
||||||
return err
|
|
||||||
}, "SaveAfsOrder delete AfsOrder, afsOrderID:%s", v.AfsOrderID); err != nil {
|
|
||||||
return tao_vegetable.CallBackResultInfo(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除售后商品
|
|
||||||
if err = utils.CallFuncLogError(func() error {
|
|
||||||
_, err = dao.DeleteEntity(db, &model.OrderSkuFinancial{
|
|
||||||
VendorOrderID: v.VendorOrderID,
|
|
||||||
VendorID: v.VendorID,
|
|
||||||
IsAfsOrder: 1,
|
|
||||||
}, "VendorOrderID", "VendorID", "IsAfsOrder")
|
|
||||||
return err
|
|
||||||
}, "SaveAfsOrder delete OrderSkuFinancial, afsOrderID:%s", v.AfsOrderID); err != nil {
|
|
||||||
return tao_vegetable.CallBackResultInfo(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 业务上规定的是打包之后不能取消,但是如果配送超过了预计送达时间1-2小时,
|
|
||||||
// c端的取消按钮会自动打开,让用户操作取消,但是如果你没接这个接口,用户申请取消了,
|
|
||||||
// 你这边没有响应那么就不会退钱给用户,就会造成客诉。为什么不接售中取消呢
|
|
||||||
case tao_vegetable.OrderStatusOnSaleCancel:
|
|
||||||
onSaleMsg := msg.(*tao_vegetable.OnSaleCancel)
|
|
||||||
var afsOrder *model.AfsOrder
|
|
||||||
var api = getAPI("", 0, onSaleMsg.PartCancelRequest.StoreId)
|
|
||||||
queryOrderDetailParam := &request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{
|
|
||||||
StoreId: utils.String2Pointer(onSaleMsg.PartCancelRequest.StoreId),
|
|
||||||
BizOrderId: utils.Int64ToPointer(onSaleMsg.PartCancelRequest.BizOrderId),
|
|
||||||
}}
|
|
||||||
orderDetail, err := api.QueryOrderDetail(queryOrderDetailParam)
|
|
||||||
if err != nil {
|
|
||||||
return tao_vegetable.CallBackResultInfo(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
afsOrder = &model.AfsOrder{
|
|
||||||
VendorID: model.VendorIDTaoVegetable,
|
|
||||||
AfsOrderID: orderStatus.VendorOrderID,
|
|
||||||
VendorOrderID: orderStatus.RefVendorOrderID,
|
|
||||||
VendorStoreID: onSaleMsg.PartCancelRequest.StoreId,
|
|
||||||
StoreID: 0,
|
|
||||||
AfsCreatedAt: orderStatus.StatusTime,
|
|
||||||
VendorAppealType: status, // 原始售后方式
|
|
||||||
AppealType: model.AfsAppealTypeUserCancel, // 淘宝这个接口下发的只有用户取消
|
|
||||||
VendorReasonType: tao_vegetable.OrderStatusOnSaleCancel,
|
|
||||||
ReasonType: 0,
|
|
||||||
ReasonDesc: "售中取消:订单未打包,或者长时间为送到!响应成功直接退款",
|
|
||||||
VendorOrgCode: api.GetVendorOrgCode(),
|
|
||||||
}
|
|
||||||
afsOrder.FreightUserMoney = 0 // 订单运费
|
|
||||||
afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用
|
|
||||||
afsOrder.BoxMoney = 0 // 餐盒费
|
|
||||||
afsOrder.TongchengFreightMoney = 0 // 同城配送费
|
|
||||||
afsOrder.SkuBoxMoney = 0 // 商品包装费
|
|
||||||
afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态
|
|
||||||
|
|
||||||
ifAfsTypeFullRefund := false
|
|
||||||
var refundFee int64 = 0
|
|
||||||
for _, v := range *orderDetail.SubOrderResponseList {
|
|
||||||
for _, v2 := range onSaleMsg.PartCancelRequest.SubOrders {
|
|
||||||
if *v.BizSubOrderId == v2.BizSubOrderId {
|
|
||||||
orderSku := &model.OrderSkuFinancial{
|
|
||||||
Count: utils.Float64TwoInt(*v.BuySaleQuantity),
|
|
||||||
VendorSkuID: *v.SkuCode,
|
|
||||||
SkuID: utils.Str2Int(*v.SkuCode),
|
|
||||||
Name: *v.SkuName,
|
|
||||||
UserMoney: *v.OriginalFee,
|
|
||||||
PmSkuSubsidyMoney: *v.DiscountPlatformFee, // 平台补贴商品
|
|
||||||
VendorOrderID: orderStatus.VendorOrderID,
|
|
||||||
VendorSubOrderID: *v.OutSubOrderId,
|
|
||||||
}
|
|
||||||
afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney
|
|
||||||
afsOrder.Skus = append(afsOrder.Skus, orderSku)
|
|
||||||
refundFee += *v.OriginalFee
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(onSaleMsg.PartCancelRequest.SubOrders) == len(*orderDetail.SubOrderResponseList) {
|
|
||||||
ifAfsTypeFullRefund = true
|
|
||||||
}
|
|
||||||
|
|
||||||
afsOrder.SkuUserMoney += refundFee
|
|
||||||
if ifAfsTypeFullRefund { // 全退
|
|
||||||
afsOrder.RefundType = model.AfsTypeFullRefund
|
|
||||||
afsOrder.SkuUserMoney += *orderDetail.PostFee
|
|
||||||
afsOrder.Skus[len(afsOrder.Skus)-1].UserMoney += *orderDetail.PostFee
|
|
||||||
} else {
|
|
||||||
afsOrder.RefundType = model.AfsTypePartRefund
|
|
||||||
}
|
|
||||||
|
|
||||||
if afsOrder != nil {
|
|
||||||
//直接就来一个新的售后单,并且还是售后完成的
|
|
||||||
afsOrder.AfsFinishedAt = afsOrder.AfsCreatedAt
|
|
||||||
afsOrder.Flag = model.AfsOrderFlagAgreeUserRefund
|
|
||||||
globals.SugarLogger.Debugf("==============onsaleRefund afsOrd: = %s", utils.Format4Output(afsOrder, false))
|
|
||||||
globals.SugarLogger.Debugf("==============onsaleRefund orderStatus: = %s", utils.Format4Output(orderStatus, false))
|
|
||||||
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := partner.CurOrderManager.OnAfsOrderStatusChanged(orderStatus); err == nil {
|
cancelMsg := msg.(*tao_vegetable.UserCancelRefundApply)
|
||||||
skuList, _ := dao.GetSimpleOrderSkus(db, orderStatus.RefVendorOrderID, nil)
|
for _, v := range afsOrder {
|
||||||
totalSkuCount := 0
|
// 商家驳回,会发出用户撤销的回调通知,不管他
|
||||||
for _, v := range skuList {
|
if v.AfsOrderID == cancelMsg.RefundId && v.Flag == model.AfsOrderFlagRefuseUserRefund {
|
||||||
totalSkuCount += v.Count
|
return tao_vegetable.CallBackResultInfo(nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
financialSku, _ := dao.GetOrderRefundSkuList(db, []string{orderStatus.RefVendorOrderID})
|
// 用户撤销未处理的售后订单
|
||||||
refundSkuCount := 0
|
if v.AfsOrderID == cancelMsg.RefundId && v.Flag == 0 {
|
||||||
for _, v := range financialSku {
|
// 下面处理用户撤销售后
|
||||||
refundSkuCount += v.Count
|
if err = utils.CallFuncLogError(func() error {
|
||||||
|
_, err = dao.DeleteEntity(db, v, "VendorOrderID", "VendorID")
|
||||||
|
return err
|
||||||
|
}, "SaveAfsOrder delete AfsOrder, afsOrderID:%s", v.AfsOrderID); err != nil {
|
||||||
|
return tao_vegetable.CallBackResultInfo(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除售后商品
|
||||||
|
if err = utils.CallFuncLogError(func() error {
|
||||||
|
_, err = dao.DeleteEntity(db, &model.OrderSkuFinancial{
|
||||||
|
VendorOrderID: v.VendorOrderID,
|
||||||
|
VendorID: v.VendorID,
|
||||||
|
IsAfsOrder: 1,
|
||||||
|
}, "VendorOrderID", "VendorID", "IsAfsOrder")
|
||||||
|
return err
|
||||||
|
}, "SaveAfsOrder delete OrderSkuFinancial, afsOrderID:%s", v.AfsOrderID); err != nil {
|
||||||
|
return tao_vegetable.CallBackResultInfo(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err == nil && status == tao_vegetable.OrderStatusRefundSuccess && totalSkuCount == refundSkuCount {
|
}
|
||||||
goodsOrder, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, orderStatus.VendorID)
|
// 业务上规定的是打包之后不能取消,但是如果配送超过了预计送达时间1-2小时,
|
||||||
goodsOrder.Status = model.OrderStatusCanceled
|
// c端的取消按钮会自动打开,让用户操作取消,但是如果你没接这个接口,用户申请取消了,
|
||||||
goodsOrder.VendorStatus = orderStatus.VendorStatus
|
// 你这边没有响应那么就不会退钱给用户,就会造成客诉。为什么不接售中取消呢
|
||||||
dao.UpdateEntity(db, goodsOrder, "Status", "VendorStatus")
|
case tao_vegetable.OrderStatusOnSaleCancel:
|
||||||
// 取消三方运单
|
onSaleMsg := msg.(*tao_vegetable.OnSaleCancel)
|
||||||
|
var afsOrder *model.AfsOrder
|
||||||
|
var api = getAPI("", 0, onSaleMsg.PartCancelRequest.StoreId)
|
||||||
|
queryOrderDetailParam := &request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{
|
||||||
|
StoreId: utils.String2Pointer(onSaleMsg.PartCancelRequest.StoreId),
|
||||||
|
BizOrderId: utils.Int64ToPointer(onSaleMsg.PartCancelRequest.BizOrderId),
|
||||||
|
}}
|
||||||
|
orderDetail, err := api.QueryOrderDetail(queryOrderDetailParam)
|
||||||
|
if err != nil {
|
||||||
|
return tao_vegetable.CallBackResultInfo(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
afsOrder = &model.AfsOrder{
|
||||||
|
VendorID: model.VendorIDTaoVegetable,
|
||||||
|
AfsOrderID: onSaleMsg.PartCancelRequest.IdempotentId,
|
||||||
|
VendorOrderID: orderStatus.RefVendorOrderID,
|
||||||
|
VendorStoreID: onSaleMsg.PartCancelRequest.StoreId,
|
||||||
|
StoreID: 0,
|
||||||
|
AfsCreatedAt: orderStatus.StatusTime,
|
||||||
|
VendorAppealType: status, // 原始售后方式
|
||||||
|
AppealType: model.AfsAppealTypeUserCancel, // 淘宝这个接口下发的只有用户取消
|
||||||
|
VendorReasonType: tao_vegetable.OrderStatusOnSaleCancel,
|
||||||
|
ReasonType: 0,
|
||||||
|
ReasonDesc: "售中取消:订单未打包,或者长时间为送到!响应成功直接退款",
|
||||||
|
VendorOrgCode: api.GetVendorOrgCode(),
|
||||||
|
}
|
||||||
|
afsOrder.FreightUserMoney = 0 // 订单运费
|
||||||
|
afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用
|
||||||
|
afsOrder.BoxMoney = 0 // 餐盒费
|
||||||
|
afsOrder.TongchengFreightMoney = 0 // 同城配送费
|
||||||
|
afsOrder.SkuBoxMoney = 0 // 商品包装费
|
||||||
|
afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态
|
||||||
|
|
||||||
|
ifAfsTypeFullRefund := false
|
||||||
|
var refundFee int64 = 0
|
||||||
|
for _, v := range *orderDetail.SubOrderResponseList {
|
||||||
|
for _, v2 := range onSaleMsg.PartCancelRequest.SubOrders {
|
||||||
|
if *v.BizSubOrderId == v2.BizSubOrderId {
|
||||||
|
orderSku := &model.OrderSkuFinancial{
|
||||||
|
Count: utils.Float64TwoInt(*v.BuySaleQuantity),
|
||||||
|
VendorSkuID: *v.SkuCode,
|
||||||
|
SkuID: utils.Str2Int(*v.SkuCode),
|
||||||
|
Name: *v.SkuName,
|
||||||
|
UserMoney: *v.OriginalFee,
|
||||||
|
PmSkuSubsidyMoney: *v.DiscountPlatformFee, // 平台补贴商品
|
||||||
|
VendorOrderID: orderStatus.VendorOrderID,
|
||||||
|
VendorSubOrderID: *v.OutSubOrderId,
|
||||||
|
}
|
||||||
|
afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney
|
||||||
|
afsOrder.Skus = append(afsOrder.Skus, orderSku)
|
||||||
|
refundFee += *v.OriginalFee
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if len(onSaleMsg.PartCancelRequest.SubOrders) == len(*orderDetail.SubOrderResponseList) {
|
||||||
|
ifAfsTypeFullRefund = true
|
||||||
|
}
|
||||||
|
|
||||||
|
afsOrder.SkuUserMoney += refundFee
|
||||||
|
if ifAfsTypeFullRefund { // 全退
|
||||||
|
afsOrder.RefundType = model.AfsTypeFullRefund
|
||||||
|
afsOrder.SkuUserMoney += *orderDetail.PostFee
|
||||||
|
afsOrder.Skus[len(afsOrder.Skus)-1].UserMoney += *orderDetail.PostFee
|
||||||
|
} else {
|
||||||
|
afsOrder.RefundType = model.AfsTypePartRefund
|
||||||
|
}
|
||||||
|
|
||||||
|
if afsOrder != nil {
|
||||||
|
//直接就来一个新的售后单,并且还是售后完成的
|
||||||
|
afsOrder.AfsFinishedAt = afsOrder.AfsCreatedAt
|
||||||
|
afsOrder.Flag = model.AfsOrderFlagAgreeUserRefund
|
||||||
|
globals.SugarLogger.Debugf("==============onsaleRefund afsOrd: = %s", utils.Format4Output(afsOrder, false))
|
||||||
|
globals.SugarLogger.Debugf("==============onsaleRefund orderStatus: = %s", utils.Format4Output(orderStatus, false))
|
||||||
|
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
globals.SugarLogger.Debugf("=============errr : %v", err)
|
|
||||||
|
if err := partner.CurOrderManager.OnAfsOrderStatusChanged(orderStatus); err == nil {
|
||||||
|
skuList, _ := dao.GetSimpleOrderSkus(db, orderStatus.RefVendorOrderID, nil)
|
||||||
|
totalSkuCount := 0
|
||||||
|
for _, v := range skuList {
|
||||||
|
totalSkuCount += v.Count
|
||||||
|
}
|
||||||
|
|
||||||
|
financialSku, _ := dao.GetOrderRefundSkuList(db, []string{orderStatus.RefVendorOrderID})
|
||||||
|
refundSkuCount := 0
|
||||||
|
for _, v := range financialSku {
|
||||||
|
refundSkuCount += v.Count
|
||||||
|
}
|
||||||
|
if err == nil && status == tao_vegetable.OrderStatusRefundSuccess && totalSkuCount == refundSkuCount {
|
||||||
|
goodsOrder, _ := partner.CurOrderManager.LoadOrder(orderStatus.RefVendorOrderID, orderStatus.VendorID)
|
||||||
|
goodsOrder.Status = model.OrderStatusCanceled
|
||||||
|
goodsOrder.VendorStatus = orderStatus.VendorStatus
|
||||||
|
dao.UpdateEntity(db, goodsOrder, "Status", "VendorStatus")
|
||||||
|
// 取消三方运单
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return tao_vegetable.CallBackResultInfo(err)
|
return tao_vegetable.CallBackResultInfo(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -383,15 +383,19 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{})
|
|||||||
StoreId: utils.String2Pointer(refundData.StoreId),
|
StoreId: utils.String2Pointer(refundData.StoreId),
|
||||||
RefundIds: &[]int64{utils.Str2Int64(refundData.BizSubRefundId)},
|
RefundIds: &[]int64{utils.Str2Int64(refundData.BizSubRefundId)},
|
||||||
}
|
}
|
||||||
|
time.Sleep(time.Second * 1)
|
||||||
refundAfs, _ := getAPI("", 0, refundData.StoreId).QueryAfsOrderDetail(param)
|
refundAfs, _ := getAPI("", 0, refundData.StoreId).QueryAfsOrderDetail(param)
|
||||||
orderId := *refundAfs.Orders
|
if refundAfs.Orders == nil {
|
||||||
|
globals.SugarLogger.Debugf("================售中退款成功回调查询售后单为空:")
|
||||||
orderStatus.RefVendorOrderID = utils.Int64ToStr(*orderId[0].OriginParentId)
|
} else {
|
||||||
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusRefundSuccess, "用户售中退款成功")
|
orderId := *refundAfs.Orders
|
||||||
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusRefundSuccess)
|
orderStatus.RefVendorOrderID = utils.Int64ToStr(*orderId[0].OriginParentId)
|
||||||
orderStatus.StatusTime = time.Now()
|
orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusRefundSuccess, "用户售中退款成功")
|
||||||
orderStatus.Remark = fmt.Sprintf("QueryTaoAfsOrderId:%s", refundData.BizSubRefundId)
|
orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusRefundSuccess)
|
||||||
orderStatus.VendorOrderID = orderStatus.RefVendorOrderID
|
orderStatus.StatusTime = time.Now()
|
||||||
|
orderStatus.Remark = fmt.Sprintf("QueryTaoAfsOrderId:%s", refundData.BizSubRefundId)
|
||||||
|
orderStatus.VendorOrderID = utils.Int64ToStr(*orderId[0].RefundOrderId)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -209,8 +209,6 @@ func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, v
|
|||||||
|
|
||||||
func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
failedList, err = p.createOrUpdateStoreSkus(ctx, storeID, vendorStoreID, storeSkuList, true)
|
failedList, err = p.createOrUpdateStoreSkus(ctx, storeID, vendorStoreID, storeSkuList, true)
|
||||||
globals.SugarLogger.Debugf("CreateStoreSkus=====err := %v", err)
|
|
||||||
globals.SugarLogger.Debugf("CreateStoreSkus=====err := %v", failedList)
|
|
||||||
return failedList, err
|
return failedList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -242,12 +240,14 @@ func UpdateTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSync
|
|||||||
updateSkuList := make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
|
updateSkuList := make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
|
||||||
totalCount := len(storeSkuList)
|
totalCount := len(storeSkuList)
|
||||||
for index, v := range storeSkuList {
|
for index, v := range storeSkuList {
|
||||||
|
price := utils.String2Pointer(utils.Float64ToStr(float64(v.VendorPrice) / float64(100)))
|
||||||
updateSku := domain585.AlibabaWdkSkuUpdateSkuDo{
|
updateSku := domain585.AlibabaWdkSkuUpdateSkuDo{
|
||||||
OuCode: utils.String2Pointer(vendorStoreID),
|
OuCode: utils.String2Pointer(vendorStoreID),
|
||||||
SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)),
|
SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)),
|
||||||
SkuName: utils.String2Pointer(v.SkuName),
|
SkuName: utils.String2Pointer(v.SkuName),
|
||||||
MemberPrice: utils.String2Pointer(utils.Float64ToStr(float64(v.UnitPrice) / float64(100))),
|
MemberPrice: price,
|
||||||
SkuPrice: utils.String2Pointer(utils.Float64ToStr(float64(v.UnitPrice) / float64(100))), // 优先使用skuPrice 靠后SalePrice
|
SkuPrice: price, // 优先使用skuPrice 靠后SalePrice
|
||||||
|
SuggestedPrice: price, // 优先使用skuPrice 靠后SalePrice
|
||||||
CategoryCode: utils.String2Pointer(utils.Int2Str(v.CategoryID)),
|
CategoryCode: utils.String2Pointer(utils.Int2Str(v.CategoryID)),
|
||||||
MerchantCatCode: utils.String2Pointer(v.VendorCatID), // 优先使用 靠后 category_code
|
MerchantCatCode: utils.String2Pointer(v.VendorCatID), // 优先使用 靠后 category_code
|
||||||
}
|
}
|
||||||
@@ -285,6 +285,7 @@ func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSku
|
|||||||
vendorSkuIdMap := make(map[string]string, 0)
|
vendorSkuIdMap := make(map[string]string, 0)
|
||||||
|
|
||||||
for index, storeSku := range storeSkuList {
|
for index, storeSku := range storeSkuList {
|
||||||
|
price := utils.String2Pointer(utils.Float64ToStr(utils.Int64ToFloat64(storeSku.VendorPrice) / utils.Int64ToFloat64(100)))
|
||||||
sku := domain585.AlibabaWdkSkuAddSkuDo{
|
sku := domain585.AlibabaWdkSkuAddSkuDo{
|
||||||
Barcodes: utils.String2Pointer(utils.Int2Str(storeSku.SkuID)),
|
Barcodes: utils.String2Pointer(utils.Int2Str(storeSku.SkuID)),
|
||||||
BrandName: utils.String2Pointer(tao_vegetable.CreateSkuBrandName),
|
BrandName: utils.String2Pointer(tao_vegetable.CreateSkuBrandName),
|
||||||
@@ -295,7 +296,7 @@ func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSku
|
|||||||
SkuCode: utils.String2Pointer(utils.Int2Str(storeSku.SkuID)),
|
SkuCode: utils.String2Pointer(utils.Int2Str(storeSku.SkuID)),
|
||||||
SkuName: utils.String2Pointer(storeSku.SkuName),
|
SkuName: utils.String2Pointer(storeSku.SkuName),
|
||||||
StorageType: utils.Int64ToPointer(tao_vegetable.CreateSkuStorageType),
|
StorageType: utils.Int64ToPointer(tao_vegetable.CreateSkuStorageType),
|
||||||
SuggestedPrice: utils.String2Pointer(utils.Float64ToStr(utils.Int64ToFloat64(storeSku.UnitPrice) / utils.Int64ToFloat64(100))),
|
SuggestedPrice: price,
|
||||||
Weight: utils.String2Pointer(utils.Float32ToStr(storeSku.SpecQuality)),
|
Weight: utils.String2Pointer(utils.Float32ToStr(storeSku.SpecQuality)),
|
||||||
ShelfLife: utils.Int64ToPointer(tao_vegetable.CreateShelfLife),
|
ShelfLife: utils.Int64ToPointer(tao_vegetable.CreateShelfLife),
|
||||||
NetContent: utils.String2Pointer(utils.Float32ToStr(storeSku.SpecQuality)),
|
NetContent: utils.String2Pointer(utils.Float32ToStr(storeSku.SpecQuality)),
|
||||||
@@ -309,7 +310,7 @@ func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSku
|
|||||||
//DeliveryUnit: utils.String2Pointer(storeSku.Unit),
|
//DeliveryUnit: utils.String2Pointer(storeSku.Unit),
|
||||||
DeliveryUnit: utils.String2Pointer("份"),
|
DeliveryUnit: utils.String2Pointer("份"),
|
||||||
DeliverySpec: utils.String2Pointer(utils.Int2Str(model.YES)),
|
DeliverySpec: utils.String2Pointer(utils.Int2Str(model.YES)),
|
||||||
MemberPrice: utils.String2Pointer(utils.Float64ToStr(float64(storeSku.UnitPrice) / float64(100))),
|
MemberPrice: price,
|
||||||
Storage: utils.String2Pointer(tao_vegetable.CreateStorage),
|
Storage: utils.String2Pointer(tao_vegetable.CreateStorage),
|
||||||
PickFloatRate: utils.String2Pointer(utils.Int2Str(model.NO)), // ? 0
|
PickFloatRate: utils.String2Pointer(utils.Int2Str(model.NO)), // ? 0
|
||||||
ForbidReceiveDays: utils.Int64ToPointer(tao_vegetable.CreateShelfLife), // ? 7
|
ForbidReceiveDays: utils.Int64ToPointer(tao_vegetable.CreateShelfLife), // ? 7
|
||||||
@@ -322,8 +323,8 @@ func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSku
|
|||||||
PurchaseUnit: utils.String2Pointer("份"), // ? 同上
|
PurchaseUnit: utils.String2Pointer("份"), // ? 同上
|
||||||
LabelStyleType: utils.String2Pointer(tao_vegetable.CreateLabelStyleType), // 库存单位
|
LabelStyleType: utils.String2Pointer(tao_vegetable.CreateLabelStyleType), // 库存单位
|
||||||
ItemTypeNew: utils.Int64ToPointer(tao_vegetable.CreateItemTypeNewVegetable),
|
ItemTypeNew: utils.Int64ToPointer(tao_vegetable.CreateItemTypeNewVegetable),
|
||||||
SkuPrice: utils.String2Pointer(utils.Float64ToStr(float64(storeSku.UnitPrice) / float64(100))), // 优先使用skuPrice 靠后SalePrice
|
SkuPrice: price, // 优先使用skuPrice 靠后SalePrice
|
||||||
Period: utils.Int64ToPointer(tao_vegetable.CreateShelfLife), // 优先使用period 靠后shelf_life
|
Period: utils.Int64ToPointer(tao_vegetable.CreateShelfLife), // 优先使用period 靠后shelf_life
|
||||||
FragileFlag: utils.Int64ToPointer(model.YES),
|
FragileFlag: utils.Int64ToPointer(model.YES),
|
||||||
DeliveryStorage: utils.String2Pointer(tao_vegetable.CreateItemDeliveryStorage),
|
DeliveryStorage: utils.String2Pointer(tao_vegetable.CreateItemDeliveryStorage),
|
||||||
TemporaryFlag: utils.Int64ToPointer(model.NO),
|
TemporaryFlag: utils.Int64ToPointer(model.NO),
|
||||||
@@ -331,6 +332,10 @@ func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSku
|
|||||||
MerchantCatCode: utils.String2Pointer(storeSku.VendorCatID), // 优先使用 靠后 category_code
|
MerchantCatCode: utils.String2Pointer(storeSku.VendorCatID), // 优先使用 靠后 category_code
|
||||||
}
|
}
|
||||||
sku.SkuPicUrls = uploadImg(api, []string{storeSku.ImgOrigin, storeSku.Img, storeSku.Img2, storeSku.Img3, storeSku.Img4, storeSku.Img5, storeSku.DescImg})
|
sku.SkuPicUrls = uploadImg(api, []string{storeSku.ImgOrigin, storeSku.Img, storeSku.Img2, storeSku.Img3, storeSku.Img4, storeSku.Img5, storeSku.DescImg})
|
||||||
|
if sku.SkuPicUrls == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if storeSku.MinOrderCount <= model.YES {
|
if storeSku.MinOrderCount <= model.YES {
|
||||||
sku.PurchaseQuantity = utils.Int64ToPointer(model.YES) // 起购单位
|
sku.PurchaseQuantity = utils.Int64ToPointer(model.YES) // 起购单位
|
||||||
} else {
|
} else {
|
||||||
@@ -524,12 +529,14 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg
|
|||||||
updateSkuList := make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
|
updateSkuList := make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
|
||||||
api := getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID)
|
api := getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID)
|
||||||
for index, v := range storeSkuList {
|
for index, v := range storeSkuList {
|
||||||
|
price := utils.String2Pointer(fmt.Sprintf("%.2f", float64(v.VendorPrice)/float64(100)))
|
||||||
updateSku := domain585.AlibabaWdkSkuUpdateSkuDo{
|
updateSku := domain585.AlibabaWdkSkuUpdateSkuDo{
|
||||||
OuCode: utils.String2Pointer(vendorStoreID),
|
OuCode: utils.String2Pointer(vendorStoreID),
|
||||||
SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)),
|
SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)),
|
||||||
SkuPrice: utils.String2Pointer(fmt.Sprintf("%.2f", (float64(1000)/float64(v.SpecQuality))*(float64(v.JxUnitPrice)/float64(100)))),
|
SkuPrice: price,
|
||||||
CleanSkuMemberPrice: utils.Int64ToPointer(model.YES),
|
CleanSkuMemberPrice: utils.Int64ToPointer(model.YES),
|
||||||
SuggestedPrice: utils.String2Pointer(fmt.Sprintf("%.2f", (float64(1000)/float64(v.SpecQuality))*(float64(v.JxUnitPrice)/float64(100)))),
|
SuggestedPrice: price,
|
||||||
|
MemberPrice: price,
|
||||||
}
|
}
|
||||||
updateSkuList = append(updateSkuList, updateSku)
|
updateSkuList = append(updateSkuList, updateSku)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user