Files
jx-callback/business/partner/purchase/ebai/order_afs_ex.go
邹宗楠 60c8e31cc6 1
2024-08-01 15:22:55 +08:00

90 lines
3.6 KiB
Go

package ebai
import (
"encoding/json"
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals/api"
"strings"
)
func (c *PurchaseHandler) makeAfsOrderInfoPartRefund(msg *ebaiapi.CallbackMsg, orderStatus *model.OrderStatus) *model.AfsOrder {
var afsOrder *model.AfsOrder
partRefundData := msg.Data.(*ebaiapi.CBPartRefundInfo)
afsOrder = &model.AfsOrder{
VendorID: model.VendorIDEBAI,
AfsOrderID: orderStatus.VendorOrderID,
VendorOrderID: orderStatus.RefVendorOrderID,
VendorStoreID: "",
StoreID: 0,
AfsCreatedAt: utils.Timestamp2Time(msg.Timestamp),
VendorAppealType: "",
AppealType: model.AfsAppealTypeRefund,
VendorReasonType: partRefundData.ReasonType,
ReasonType: c.convertAfsReasonType(partRefundData.ReasonType),
ReasonDesc: utils.LimitUTF8StringLen(buildFullReason(partRefundData.Reason, partRefundData.AdditionReason), 1024),
ReasonImgList: utils.LimitUTF8StringLen(strings.Join(partRefundData.Photos, ","), 1024),
RefundType: model.AfsTypePartRefund,
VendorOrgCode: msg.Source,
}
for _, sku := range partRefundData.RefundProducts {
orderSku := &model.OrderSkuFinancial{
Count: sku.Number,
VendorSkuID: sku.SkuID,
SkuID: int(utils.Str2Int64WithDefault(sku.CustomSkuID, 0)),
Name: sku.Name,
UserMoney: sku.TotalRefund,
PmSkuSubsidyMoney: sku.ShopEleRefund,
}
afsOrder.SkuUserMoney += orderSku.UserMoney
afsOrder.PmSubsidyMoney += orderSku.PmSubsidyMoney
afsOrder.Skus = append(afsOrder.Skus, orderSku)
}
return afsOrder
}
func (c *PurchaseHandler) makeAfsOrderInfoReverseRefund(msg *ebaiapi.CallbackMsg, orderStatus *model.OrderStatus) (*model.AfsOrder, error) {
var afsOrder *model.AfsOrder
partRefundData := msg.Data.(*ebaiapi.CBOrderReversePush)
afsOrder = &model.AfsOrder{
VendorID: model.VendorIDEBAI,
AfsOrderID: orderStatus.VendorOrderID,
VendorOrderID: orderStatus.RefVendorOrderID,
VendorStoreID: utils.Int2Str(partRefundData.PlatformShopId),
StoreID: 0,
AfsCreatedAt: utils.Timestamp2Time(msg.Timestamp),
VendorAppealType: "",
AppealType: model.AfsAppealTypeRefund,
VendorReasonType: utils.Int2Str(partRefundData.CurReverseEvent.ReasonCode),
ReasonType: c.convertAfsReasonType(utils.Int2Str(partRefundData.CurReverseEvent.ReasonCode)),
ReasonDesc: utils.LimitUTF8StringLen(partRefundData.CurReverseEvent.RefundReasonDesc, 1024),
ReasonImgList: utils.LimitUTF8StringLen(strings.Join(partRefundData.CurReverseEvent.ImageList, ","), 1024),
RefundType: model.AfsTypePartRefund,
VendorOrgCode: msg.Source,
}
// 查询售后列表
refundSku, _, err := api.EbaiAPI.GetReverseOrder(orderStatus.RefVendorOrderID)
if err == nil {
refundSkuList := make([]*ebaiapi.ReverseSkuList, 0, len(refundSku))
refundByte, _ := json.Marshal(refundSku)
if err = json.Unmarshal(refundByte, &refundSkuList); err != nil {
return nil, err
}
for _, sku := range refundSkuList {
orderSku := &model.OrderSkuFinancial{
Count: sku.RefundQuantity,
VendorSkuID: utils.Int64ToStr(sku.PlatformSkuId),
SkuID: utils.Str2Int(sku.CustomSkuId),
Name: sku.SkuName,
UserMoney: int64(sku.RefundUserAmount),
PmSkuSubsidyMoney: int64(sku.DiscountDetail.PlatformDiscountAmount),
}
afsOrder.SkuUserMoney += orderSku.UserMoney
afsOrder.PmSubsidyMoney += orderSku.PmSubsidyMoney
afsOrder.Skus = append(afsOrder.Skus, orderSku)
}
}
return afsOrder, nil
}