package jx import ( "fmt" "time" "git.rosy.net.cn/jx-callback/business/partner/purchase/jx/localjx" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/business/partner/purchase/jx/phpjx" ) // 审核售后单申请 func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) { var status int if approveType == partner.AfsApproveTypeRefused { status = model.AfsOrderStatusFailed } else { status = model.AfsOrderStatusFinished } if model.IsAfsOrderJXTemp(order) { err = phpjx.NotifyAfsOrderStatusChanged(order, status) } return err } // 确认收到退货 func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error) { err = fmt.Errorf("京西商城当前不支持ConfirmReceivedReturnGoods") return err } // 发起全款退款 func (c *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) { err = fmt.Errorf("%s不支持售后全额退款,请让买家发起退款", model.VendorChineseNames[model.VendorIDJX]) return err } // 发起部分退款 func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error) { var skuMap = make(map[int]*model.OrderSku) for _, sku := range order.Skus { skuMap[sku.SkuID] = sku } orderStatus := buildOrderStatus(ctx, order, reason) afsOrder := &model.AfsOrder{ VendorID: order.VendorID, AfsOrderID: orderStatus.VendorOrderID, VendorOrderID: orderStatus.RefVendorOrderID, VendorStoreID: order.VendorStoreID, StoreID: order.StoreID, AfsCreatedAt: time.Now(), VendorAppealType: "", AppealType: model.AfsAppealTypeRefund, VendorReasonType: utils.Int2Str(model.AfsReasonNotOthers), ReasonType: model.AfsReasonNotOthers, ReasonDesc: utils.LimitUTF8StringLen(reason, 1024), ReasonImgList: "", RefundType: model.AfsTypePartRefund, VendorOrgCode: "", } for _, sku := range refundSkuList { orderSku := &model.OrderSkuFinancial{ Count: sku.Count, VendorSkuID: utils.Int2Str(sku.SkuID), SkuID: sku.SkuID, } if skuMap[sku.SkuID] != nil { orderSku.Name = skuMap[sku.SkuID].SkuName orderSku.UserMoney = skuMap[sku.SkuID].SalePrice } afsOrder.SkuUserMoney += orderSku.UserMoney afsOrder.Skus = append(afsOrder.Skus, orderSku) } err = fmt.Errorf("%s不支持售后部分退款,请让买家发起退款", model.VendorChineseNames[model.VendorIDJX]) return err } func buildOrderStatus(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (orderStatus *model.OrderStatus) { orderStatus = &model.OrderStatus{ VendorOrderID: utils.Int64ToStr(localjx.GenAfsOrderNo(ctx)), // 是售后单ID,不是订单ID,订单ID在RefVendorOrderID中 VendorID: order.VendorID, OrderType: model.OrderTypeAfsOrder, RefVendorOrderID: order.VendorOrderID, RefVendorID: order.VendorID, VendorStatus: utils.Int2Str(model.AfsOrderStatusWait4Approve), Status: model.AfsOrderStatusWait4Approve, StatusTime: time.Now(), Remark: reason, } return orderStatus }