1
This commit is contained in:
@@ -224,67 +224,70 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
|
||||
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 // 退货状态
|
||||
for _, v := range onSaleMsg.PartCancelRequest.SubOrders {
|
||||
afsOrder = &model.AfsOrder{
|
||||
VendorID: model.VendorIDTaoVegetable,
|
||||
AfsOrderID: utils.Int64ToStr(v.BizSubOrderId),
|
||||
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,
|
||||
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
|
||||
}
|
||||
afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney
|
||||
afsOrder.Skus = append(afsOrder.Skus, orderSku)
|
||||
refundFee += *v.OriginalFee
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(onSaleMsg.PartCancelRequest.SubOrders) == len(*orderDetail.SubOrderResponseList) {
|
||||
ifAfsTypeFullRefund = true
|
||||
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
|
||||
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
|
||||
}
|
||||
case tao_vegetable.OrderStatusRefundSuccess:
|
||||
globals.SugarLogger.Debugf("=========售后成功: %s", utils.Format4Output(msg, false))
|
||||
// 用户退款成功回调,缺货拣货时,送达回触发.此时并没有售后单
|
||||
@@ -292,8 +295,6 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
|
||||
refundSuccess := msg.(*tao_vegetable.RefundOrderFinish)
|
||||
var afsOrder *model.AfsOrder
|
||||
var api = getAPI("", 0, refundSuccess.StoreId)
|
||||
var isCreate = true
|
||||
var outMainRefundIds = make(map[string]int64, 0)
|
||||
detail, err := api.QueryAfsOrderDetail(&request591.AlibabaWdkOrderRefundGetRequest{
|
||||
OrderFrom: utils.Int64ToPointer(tao_vegetable.ChannelCome),
|
||||
ShopId: nil,
|
||||
@@ -303,84 +304,70 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
|
||||
if err != nil {
|
||||
return tao_vegetable.CallBackResultInfo(err)
|
||||
}
|
||||
finalList, _ := dao.GetOrderRefundSkuList(db, []string{refundSuccess.OutMainRefundId})
|
||||
if len(finalList) != model.NO {
|
||||
for _, f := range finalList {
|
||||
for _, a := range *detail.Orders {
|
||||
if f.SkuID == utils.Str2Int(*a.ItemCode) {
|
||||
isCreate = false // 本地已经存在了记录
|
||||
outMainRefundIds[*a.OutMainRefundId] = *a.RefundAmount
|
||||
|
||||
for _, v := range *detail.Orders {
|
||||
afs, _ := partner.CurOrderManager.LoadAfsOrder(utils.Int64ToStr(*v.OriginOrderId), model.VendorIDTaoVegetable)
|
||||
if afs != nil {
|
||||
afsOrder = &model.AfsOrder{
|
||||
VendorID: model.VendorIDTaoVegetable,
|
||||
AfsOrderID: utils.Int64ToStr(*v.OriginOrderId),
|
||||
VendorOrderID: orderStatus.RefVendorOrderID,
|
||||
VendorOrderID2: refundSuccess.BizSubRefundId,
|
||||
VendorStoreID: refundSuccess.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 // 退货状态
|
||||
|
||||
for _, v := range *scarceGoods {
|
||||
var refundFee int64 = 0
|
||||
skuDetail := tao_vegetable.GoodsScarceRefund{}
|
||||
if err := json.Unmarshal([]byte(*v.Attributes), &skuDetail); err != nil {
|
||||
return tao_vegetable.CallBackResultInfo(err)
|
||||
}
|
||||
|
||||
orderSku := &model.OrderSkuFinancial{
|
||||
Count: utils.Float64TwoInt(utils.Str2Float64(*v.RefundQuantity)),
|
||||
VendorSkuID: *v.SkuCode,
|
||||
SkuID: utils.Str2Int(*v.SkuCode),
|
||||
Name: skuDetail.SkuName,
|
||||
UserMoney: *v.RefundAmount,
|
||||
PmSkuSubsidyMoney: 0, // 平台补贴商品
|
||||
VendorOrderID: orderStatus.VendorOrderID,
|
||||
VendorSubOrderID: *v.OutOrderId,
|
||||
}
|
||||
afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney
|
||||
afsOrder.Skus = append(afsOrder.Skus, orderSku)
|
||||
refundFee += *v.RefundAmount
|
||||
|
||||
afsOrder.SkuUserMoney += refundFee
|
||||
afsOrder.RefundType = model.AfsTypePartRefund
|
||||
if afsOrder != nil {
|
||||
//直接就来一个新的售后单,并且还是售后完成的
|
||||
afsOrder.AfsFinishedAt = afsOrder.AfsCreatedAt
|
||||
afsOrder.Flag = model.AfsOrderFlagAgreeUserRefund
|
||||
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 本地已经存在了售后记录,直接修改售后状态,否则创建售后记录
|
||||
if !isCreate {
|
||||
for afsOrderId, afsMoney := range outMainRefundIds {
|
||||
afs, _ := partner.CurOrderManager.LoadAfsOrder(afsOrderId, model.VendorIDTaoVegetable)
|
||||
} else {
|
||||
afs.VendorOrderID2 = refundSuccess.BizSubRefundId
|
||||
afs.AfsFinishedAt = time.Now()
|
||||
afs.Status = model.AfsOrderStatusFinished
|
||||
afs.AfsTotalShopMoney = afsMoney
|
||||
afs.AfsTotalShopMoney = *v.RefundAmount
|
||||
dao.UpdateEntity(db, afs, "VendorOrderID2", "AfsFinishedAt", "Status", "AfsTotalShopMoney")
|
||||
}
|
||||
} else {
|
||||
afsOrder = &model.AfsOrder{
|
||||
VendorID: model.VendorIDTaoVegetable,
|
||||
AfsOrderID: refundSuccess.OutMainRefundId,
|
||||
VendorOrderID: orderStatus.RefVendorOrderID,
|
||||
VendorOrderID2: refundSuccess.BizSubRefundId,
|
||||
VendorStoreID: refundSuccess.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 // 退货状态
|
||||
|
||||
for _, v := range *scarceGoods {
|
||||
var refundFee int64 = 0
|
||||
skuDetail := tao_vegetable.GoodsScarceRefund{}
|
||||
if err := json.Unmarshal([]byte(*v.Attributes), &skuDetail); err != nil {
|
||||
return tao_vegetable.CallBackResultInfo(err)
|
||||
}
|
||||
|
||||
orderSku := &model.OrderSkuFinancial{
|
||||
Count: utils.Float64TwoInt(utils.Str2Float64(*v.RefundQuantity)),
|
||||
VendorSkuID: *v.SkuCode,
|
||||
SkuID: utils.Str2Int(*v.SkuCode),
|
||||
Name: skuDetail.SkuName,
|
||||
UserMoney: *v.RefundAmount,
|
||||
PmSkuSubsidyMoney: 0, // 平台补贴商品
|
||||
VendorOrderID: orderStatus.VendorOrderID,
|
||||
VendorSubOrderID: *v.OutOrderId,
|
||||
}
|
||||
afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney
|
||||
afsOrder.Skus = append(afsOrder.Skus, orderSku)
|
||||
refundFee += *v.RefundAmount
|
||||
|
||||
afsOrder.SkuUserMoney += refundFee
|
||||
afsOrder.RefundType = model.AfsTypePartRefund
|
||||
if afsOrder != nil {
|
||||
//直接就来一个新的售后单,并且还是售后完成的
|
||||
afsOrder.AfsFinishedAt = afsOrder.AfsCreatedAt
|
||||
afsOrder.Flag = model.AfsOrderFlagAgreeUserRefund
|
||||
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
default:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user