diff --git a/business/jxcallback/orderman/order_afs.go b/business/jxcallback/orderman/order_afs.go index 530eebc64..e361d0cdc 100644 --- a/business/jxcallback/orderman/order_afs.go +++ b/business/jxcallback/orderman/order_afs.go @@ -351,7 +351,7 @@ func (c *OrderManager) updateAfsOrderOtherInfo(db *dao.DaoDB, afsOrder *model.Af if err = c.updateAfsOrderSkuOtherInfo(db, afsOrder); err == nil { jxutils.RefreshAfsOrderSkuRelated(afsOrder) if afsOrder.RefundType == model.AfsTypeFullRefund && afsOrder.VendorID == model.VendorIDJX && order.DeliveryType != model.OrderDeliveryTypeSelfTake { - afsOrder.SkuUserMoney += order.ActualPayPrice + afsOrder.SkuUserMoney = order.ActualPayPrice } } } diff --git a/business/partner/purchase/jx/phpjx/order_afs.go b/business/partner/purchase/jx/phpjx/order_afs.go index 058b1f0c6..2bf21a1c5 100644 --- a/business/partner/purchase/jx/phpjx/order_afs.go +++ b/business/partner/purchase/jx/phpjx/order_afs.go @@ -1,6 +1,7 @@ package phpjx import ( + "errors" "fmt" "git.rosy.net.cn/jx-callback/business/model/dao" "strings" @@ -8,7 +9,6 @@ import ( "git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/utils" - "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" ) @@ -36,9 +36,9 @@ type Data4AfsOrder struct { } func OnAfsOrderMsg(msg *CallbackMsg) (err error) { - jxutils.CallMsgHandlerAsync(func() { - err = onAfsOrderMsg(msg) - }, jxutils.ComposeUniversalOrderID(msg.ThingID, model.VendorIDJX)) + //jxutils.CallMsgHandlerAsync(func() { + err = onAfsOrderMsg(msg) + //}, jxutils.ComposeUniversalOrderID(msg.ThingID, model.VendorIDJX)) return err } @@ -61,6 +61,22 @@ func CheckOrderSkuCanRefund(db *dao.DaoDB, afsOrder *Data4AfsOrder) error { } } + // 获取用户下单商品列表 + skuList, err := dao.GetSimpleOrderSkus(dao.GetDB(), afsOrder.VendorOrderID, nil) + if err != nil { + return err + } + + var really = make(map[int]bool, 0) + for _, s := range skuList { + really[s.SkuID] = true + } + for _, v := range afsOrder.Skus { + if _, ok := really[utils.Str2Int(v.VendorSkuID)]; !ok { + return fmt.Errorf("商品:[%s],不是购买商品", v.Name) + } + } + return nil } @@ -127,6 +143,12 @@ func buildAfsOrder(msg *CallbackMsg) (outAfsOrder *model.AfsOrder, err error) { if err != nil { return nil, err } + + // 最后一个商品 + if len(skuList) == len(refundFinancial)+len(afsOrder.Skus) { + return nil, errors.New("如需整单退款,请使用整单退,无法分批次整单退款") + } + orderSkuNumber := 0 orderSkuCount := 0 for _, v := range skuList { diff --git a/business/partner/purchase/tiktok_store/order_afs_utils.go b/business/partner/purchase/tiktok_store/order_afs_utils.go index 53f2718ab..e085e067c 100644 --- a/business/partner/purchase/tiktok_store/order_afs_utils.go +++ b/business/partner/purchase/tiktok_store/order_afs_utils.go @@ -186,20 +186,20 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) ( RefVendorOrderID: utils.Int64ToStr(refundOrder.PId), RefVendorID: model.VendorIDDD, VendorStatus: fmt.Sprintf("%s:%s", "order", "refund_success"), - Status: c.GetAfsStatusFromVendorStatus(refundOrder.AftersaleType, tiktokShop.CallbackUpdateRefundOrderMsgTagId), + Status: c.GetAfsStatusFromVendorStatus(int(refundOrder.AftersaleType), tiktokShop.CallbackUpdateRefundOrderMsgTagId), StatusTime: utils.Timestamp2Time(int64(refundOrder.SuccessTime)), } - if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok { + if k, ok := ReasonCodeMap[int(refundOrder.ReasonCode)]; ok { orderMsg.Remark = k } else { - orderMsg.Remark = "退款成功回调,抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode) + orderMsg.Remark = "退款成功回调,抖音reason_code对应reason不足,需要更新.code:" + utils.Int64ToStr(refundOrder.ReasonCode) } if refundOrder.AftersaleId > 0 { orderMsg.VendorOrderID = utils.Int64ToStr(refundOrder.AftersaleId) } else { orderMsg.VendorOrderID = orderMsg.RefVendorOrderID } - vendorOrgCode = refundOrder.ShopId + vendorOrgCode = int(refundOrder.ShopId) orderStatus = orderMsg case tiktokShop.CallbackRefundOrderRefuseMsgTagId: // 拒绝退款消息 refundOrder := msg.(tiktokShop.BusinessNotRefundRefusedData)