From 5e2e4acfbd9019c4b8e545ecaebd4ed42638bf99 Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 10 May 2019 11:01:50 +0800 Subject: [PATCH] - AgreeOrRefuseRefund - ConfirmReceivedReturnGoods --- .../scheduler/basesch/basesch_ext.go | 20 ++++++++++++ business/partner/partner.go | 7 ++-- business/partner/purchase/ebai/order_afs.go | 16 ++++++++++ business/partner/purchase/elm/order_afs.go | 16 ++++++++++ business/partner/purchase/jd/order.go | 20 ++++++------ business/partner/purchase/jd/order_afs.go | 29 +++++++++++++++-- business/partner/purchase/mtwm/order_afs.go | 16 ++++++++++ .../partner/purchase/weimob/wsc/order_afs.go | 16 ++++++++++ controllers/jx_order.go | 32 +++++++++++++++++++ routers/commentsRouter_controllers.go | 18 +++++++++++ 10 files changed, 175 insertions(+), 15 deletions(-) create mode 100644 business/partner/purchase/ebai/order_afs.go create mode 100644 business/partner/purchase/elm/order_afs.go create mode 100644 business/partner/purchase/mtwm/order_afs.go create mode 100644 business/partner/purchase/weimob/wsc/order_afs.go diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index 53492f94b..a45f263ca 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -197,3 +197,23 @@ func (c *BaseScheduler) CancelWaybillByID(ctx *jxcontext.Context, vendorWaybillI } return err } + +func (c *BaseScheduler) AgreeOrRefuseRefund(ctx *jxcontext.Context, afsOrderID string, vendorID, approveType int, reason string) (err error) { + afsOrder, err := partner.CurOrderManager.LoadAfsOrder(afsOrderID, vendorID) + if err == nil { + if c.IsReallyCallPlatformAPI { + err = partner.GetPurchasePlatformFromVendorID(vendorID).AgreeOrRefuseRefund(ctx, afsOrder, approveType, reason) + } + } + return err +} + +func (c *BaseScheduler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, afsOrderID string, vendorID int) (err error) { + afsOrder, err := partner.CurOrderManager.LoadAfsOrder(afsOrderID, vendorID) + if err == nil { + if c.IsReallyCallPlatformAPI { + err = partner.GetPurchasePlatformFromVendorID(vendorID).ConfirmReceivedReturnGoods(ctx, afsOrder) + } + } + return err +} diff --git a/business/partner/partner.go b/business/partner/partner.go index 9b69f5a72..d3db835ee 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -152,6 +152,7 @@ type IOrderManager interface { OnAfsOrderAdjust(afsOrder *model.AfsOrder, orderStatus *model.OrderStatus) (err error) OnAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *model.OrderStatus) (err error) OnAfsOrderStatusChanged(orderStatus *model.OrderStatus) (err error) + LoadAfsOrder(vendorAfsOrderID string, vendorID int) (afsOrder *model.AfsOrder, err error) } type IStoreManager interface { @@ -199,12 +200,14 @@ type IPurchasePlatformHandler interface { AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList []*model.OrderSku, reason string) (err error) // 售后 - // 同意用户退款申请 - // AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.GoodsOrder, approveType int, reason string) (err error) // // 发起全款退款 // RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) // // 发起部分退款 // PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error) + // 审核售后单申请 + AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) + // // 确认收到退货 + ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error) //////// // Store diff --git a/business/partner/purchase/ebai/order_afs.go b/business/partner/purchase/ebai/order_afs.go new file mode 100644 index 000000000..f8230aea8 --- /dev/null +++ b/business/partner/purchase/ebai/order_afs.go @@ -0,0 +1,16 @@ +package ebai + +import ( + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + "git.rosy.net.cn/jx-callback/business/model" +) + +// 审核售后单申请 +func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) { + return err +} + +// 确认收到退货 +func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error) { + return err +} diff --git a/business/partner/purchase/elm/order_afs.go b/business/partner/purchase/elm/order_afs.go new file mode 100644 index 000000000..0cb9c0aa1 --- /dev/null +++ b/business/partner/purchase/elm/order_afs.go @@ -0,0 +1,16 @@ +package elm + +import ( + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + "git.rosy.net.cn/jx-callback/business/model" +) + +// 审核售后单申请 +func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) { + return err +} + +// 确认收到退货 +func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error) { + return err +} diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index 93635e100..ac668473e 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -230,7 +230,7 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) { globals.SugarLogger.Debugf("jd PickupGoods orderID:%s, isSelfDelivery:%t", order.VendorOrderID, isSelfDelivery) - if !isSelfDelivery && globals.EnableStoreWrite { + if !isSelfDelivery && globals.EnableJdStoreWrite { _, err = api.JdAPI.OrderJDZBDelivery(order.VendorOrderID, userName) } else { c.postFakeMsg(order.VendorOrderID, jdapi.OrderStatusFinishedPickup) @@ -239,21 +239,21 @@ func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bo } func (p *PurchaseHandler) AcceptOrRefuseFailedGetOrder(ctx *jxcontext.Context, order *model.GoodsOrder, isAcceptIt bool) (err error) { - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { err = api.JdAPI.ReceiveFailedAudit(order.VendorOrderID, isAcceptIt, ctx.GetUserName(), "") } return err } func (p *PurchaseHandler) CallCourier(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) { // 拣货失败后再次招唤平台配送 - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { err = api.JdAPI.UrgeDispatching(order.VendorOrderID, ctx.GetUserName()) } return err } func (p *PurchaseHandler) ConfirmReceiveGoods(ctx *jxcontext.Context, order *model.GoodsOrder) (err error) { // 投递失败后确认收到退货 - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { err = api.JdAPI.ConfirmReceiveGoods(order.VendorOrderID) } return err @@ -261,7 +261,7 @@ func (p *PurchaseHandler) ConfirmReceiveGoods(ctx *jxcontext.Context, order *mod func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) { globals.SugarLogger.Debugf("jd Swtich2SelfDeliver orderID:%s", order.VendorOrderID) - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { _, err = api.JdAPI.ModifySellerDelivery(order.VendorOrderID, userName) if err != nil { if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 { @@ -282,7 +282,7 @@ func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s func (c *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) { globals.SugarLogger.Debugf("jd Swtich2SelfDelivered orderID:%s", order.VendorOrderID) - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { _, err = api.JdAPI.DeliveryEndOrder(order.VendorOrderID, userName) } return err @@ -290,7 +290,7 @@ func (c *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) { globals.SugarLogger.Debugf("jd SelfDeliverDelivering orderID:%s", order.VendorOrderID) - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { _, err = api.JdAPI.OrderSerllerDelivery(order.VendorOrderID, userName) } return err @@ -299,7 +299,7 @@ func (c *PurchaseHandler) SelfDeliverDelivering(order *model.GoodsOrder, userNam // 京东送达接口都是一样的 func (c *PurchaseHandler) SelfDeliverDelivered(order *model.GoodsOrder, userName string) (err error) { globals.SugarLogger.Debugf("jd SelfDeliverDelivered orderID:%s", order.VendorOrderID) - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { err = c.Swtich2SelfDelivered(order, userName) } return err @@ -311,7 +311,7 @@ func (c *PurchaseHandler) GetOrderRealMobile(ctx *jxcontext.Context, order *mode } func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *model.GoodsOrder, isAgree bool, reason string) (err error) { - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { err = api.JdAPI.OrderCancelOperate(order.VendorOrderID, isAgree, ctx.GetUserName(), reason) } return err @@ -331,7 +331,7 @@ func (c *PurchaseHandler) AdjustOrder(ctx *jxcontext.Context, order *model.Goods SkuCount: sku.Count, }) } - if globals.EnableStoreWrite { + if globals.EnableJdStoreWrite { err = api.JdAPI.AdjustOrder(order.VendorOrderID, ctx.GetUserName(), reason, oaosAdjustDTOList) } return err diff --git a/business/partner/purchase/jd/order_afs.go b/business/partner/purchase/jd/order_afs.go index 825095ddc..127d43c5f 100644 --- a/business/partner/purchase/jd/order_afs.go +++ b/business/partner/purchase/jd/order_afs.go @@ -4,6 +4,7 @@ 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/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" @@ -51,6 +52,11 @@ var ( jdapi.AfsDealTypeReturnGoodsRefund: model.AfsAppealTypeReturnAndRefund, jdapi.AfsDealTypeDirectCompensate: model.AfsAppealTypeNewGoods, } + afsApproveTypeMap = map[int]int{ + partner.AfsApproveTypeRefund: jdapi.AfsApproveTypeRefund, + partner.AfsApproveTypeReturnGoods: jdapi.AfsApproveTypeReturnGoods, + partner.AfsApproveTypeRefused: jdapi.AfsApproveTypeRefused, + } ) func (c *PurchaseHandler) OnAfsOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { @@ -104,6 +110,7 @@ func (c *PurchaseHandler) convertAfsReasonType(vendorReasonType int) int8 { } return model.AfsReasonNotOthers } + func (c *PurchaseHandler) convertAfsAppealType(vendorAppealType string) int8 { if status, ok := afsAppealTypeMap[vendorAppealType]; ok { return status @@ -112,7 +119,7 @@ func (c *PurchaseHandler) convertAfsAppealType(vendorAppealType string) int8 { return 0 } -func (p *PurchaseHandler) buildAfsOrder(afsInfo *jdapi.AfsServiceResponse) (afsOrder *model.AfsOrder) { +func (c *PurchaseHandler) buildAfsOrder(afsInfo *jdapi.AfsServiceResponse) (afsOrder *model.AfsOrder) { afsOrder = &model.AfsOrder{ VendorID: model.VendorIDJD, AfsOrderID: afsInfo.AfsServiceOrder, @@ -127,11 +134,11 @@ func (p *PurchaseHandler) buildAfsOrder(afsInfo *jdapi.AfsServiceResponse) (afsO SkuBoxMoney: afsInfo.MealBoxMoney, VendorReasonType: utils.Int2Str(afsInfo.QuestionTypeCid), - ReasonType: p.convertAfsReasonType(afsInfo.QuestionTypeCid), + ReasonType: c.convertAfsReasonType(afsInfo.QuestionTypeCid), ReasonDesc: utils.LimitUTF8StringLen(afsInfo.QuestionDesc, 1024), ReasonImgList: utils.LimitUTF8StringLen(afsInfo.QuestionPic, 1024), VendorAppealType: afsInfo.ApplyDeal, - AppealType: p.convertAfsAppealType(afsInfo.ApplyDeal), + AppealType: c.convertAfsAppealType(afsInfo.ApplyDeal), } for _, x := range afsInfo.AfsDetailList { orderSku := &model.OrderSkuFinancial{ @@ -161,3 +168,19 @@ func (p *PurchaseHandler) buildAfsOrder(afsInfo *jdapi.AfsServiceResponse) (afsO } return afsOrder } + +// 审核售后单申请 +func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) { + if globals.EnableJdStoreWrite { + err = api.JdAPI.AfsOpenApprove(order.AfsOrderID, afsApproveTypeMap[approveType], reason, ctx.GetUserName()) + } + return err +} + +// 确认收到退货 +func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error) { + if globals.EnableJdStoreWrite { + err = api.JdAPI.ConfirmReceipt(order.AfsOrderID, ctx.GetUserName()) + } + return err +} diff --git a/business/partner/purchase/mtwm/order_afs.go b/business/partner/purchase/mtwm/order_afs.go new file mode 100644 index 000000000..0a5d5f6b6 --- /dev/null +++ b/business/partner/purchase/mtwm/order_afs.go @@ -0,0 +1,16 @@ +package mtwm + +import ( + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + "git.rosy.net.cn/jx-callback/business/model" +) + +// 审核售后单申请 +func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) { + return err +} + +// 确认收到退货 +func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error) { + return err +} diff --git a/business/partner/purchase/weimob/wsc/order_afs.go b/business/partner/purchase/weimob/wsc/order_afs.go new file mode 100644 index 000000000..70e64f713 --- /dev/null +++ b/business/partner/purchase/weimob/wsc/order_afs.go @@ -0,0 +1,16 @@ +package wsc + +import ( + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + "git.rosy.net.cn/jx-callback/business/model" +) + +// 审核售后单申请 +func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) { + return err +} + +// 确认收到退货 +func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error) { + return err +} diff --git a/controllers/jx_order.go b/controllers/jx_order.go index 6352c676d..314eae5b0 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -540,3 +540,35 @@ func (c *OrderController) AgreeOrRefuseCancel() { return retVal, "", err }) } + +// @Title 审核售后单申请 +// @Description 审核售后单申请 +// @Param token header string true "认证token" +// @Param afsOrderID formData string true "售后ID" +// @Param vendorID formData int true "订单所属厂商ID" +// @Param approveType formData int true "操作类型" +// @Param reason formData string false "原因" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /AgreeOrRefuseRefund [put] +func (c *OrderController) AgreeOrRefuseRefund() { + c.callAgreeOrRefuseRefund(func(params *tOrderAgreeOrRefuseRefundParams) (retVal interface{}, errCode string, err error) { + err = defsch.FixedScheduler.AgreeOrRefuseRefund(params.Ctx, params.AfsOrderID, params.VendorID, params.ApproveType, params.Reason) + return retVal, "", err + }) +} + +// @Title 确认收到售后退货 +// @Description 确认收到售后退货 +// @Param token header string true "认证token" +// @Param afsOrderID formData string true "售后ID" +// @Param vendorID formData int true "订单所属厂商ID" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /ConfirmReceivedReturnGoods [put] +func (c *OrderController) ConfirmReceivedReturnGoods() { + c.callConfirmReceivedReturnGoods(func(params *tOrderConfirmReceivedReturnGoodsParams) (retVal interface{}, errCode string, err error) { + err = defsch.FixedScheduler.ConfirmReceivedReturnGoods(params.Ctx, params.AfsOrderID, params.VendorID) + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 4ec8a84e1..9553ade12 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -538,6 +538,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], + beego.ControllerComments{ + Method: "AgreeOrRefuseRefund", + Router: `/AgreeOrRefuseRefund`, + AllowHTTPMethods: []string{"put"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], beego.ControllerComments{ Method: "CallPMCourier", @@ -583,6 +592,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], + beego.ControllerComments{ + Method: "ConfirmReceivedReturnGoods", + Router: `/ConfirmReceivedReturnGoods`, + AllowHTTPMethods: []string{"put"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], beego.ControllerComments{ Method: "CreateWaybillOnProviders",