diff --git a/business/jxcallback/orderman/order_afs.go b/business/jxcallback/orderman/order_afs.go index 2e37b28ec..f2b570d50 100644 --- a/business/jxcallback/orderman/order_afs.go +++ b/business/jxcallback/orderman/order_afs.go @@ -67,7 +67,7 @@ func (c *OrderManager) SaveAfsOrder(db *dao.DaoDB, afsOrder *model.AfsOrder, isD if db == nil { db = dao.GetDB() } - if err = c.updateAfsOrderSkuOtherInfo(db, afsOrder); err != nil { + if err = c.updateAfsOrderOtherInfo(db, afsOrder); err != nil { return err } dao.Begin(db) @@ -234,6 +234,7 @@ func (c *OrderManager) updateAfsOrderSkuOtherInfo(db *dao.DaoDB, order *model.Af skumapper[v.VendorSkuID] = v } for _, v := range orderSkus { + v.JxStoreID = jxStoreID intVendorSkuID := utils.Str2Int64WithDefault(v.VendorSkuID, 0) if intVendorSkuID != 0 && v.VendorSkuID != "-70000" { // todo hard code skuBindInfo := skumapper[intVendorSkuID] diff --git a/business/jxstore/cms/cms.go b/business/jxstore/cms/cms.go index a9c18fae0..d4378ac5e 100644 --- a/business/jxstore/cms/cms.go +++ b/business/jxstore/cms/cms.go @@ -55,6 +55,9 @@ func InitServiceInfo(version string, buildTime time.Time, gitCommit string) { "shopChineseNames": model.ShopChineseNames, "printerVendorInfo": model.PrinterVendorInfo, "purchaseVendorInfo": model.PurchaseVendorInfo, + "afsReasonTypeName": model.AfsReasonTypeName, + "afsAppealTypeName": model.AfsAppealTypeName, + "afsOrderStatusName": model.AfsOrderStatusName, }, } Init() diff --git a/business/model/const.go b/business/model/const.go index 9444795bb..5f44c1b4c 100644 --- a/business/model/const.go +++ b/business/model/const.go @@ -163,6 +163,32 @@ var ( "打印机密钥", }, } + AfsReasonTypeName = map[int]string{ + AfsReasonTypeGoodsQuality: "商品质量", + AfsReasonTypeWrongGoods: "错误的商品", + AfsReasonTypeMissingGoods: "缺少部分商品", + AfsReasonTypeNoGoods: "全部商品未收到", + AfsReasonTypeDamagedGoods: "商品有损伤", + AfsReasonTypeGoodsQuantity: "缺斤少两", + AfsReasonTypeAgreedByMerchant: "与商家协商一致", + AfsReasonTypeGoodsNoSame: "商品与描述不符", + AfsReasonWrongPurchase: "误购", + AfsReasonNotReceivedIntime: "未在时效内送达", + AfsReasonNotOthers: "其它", + } + AfsAppealTypeName = map[int]string{ + AfsAppealTypeRefund: "仅退款", + AfsAppealTypeReturnAndRefund: "退货退款", + AfsAppealTypeNewGoods: "重发商品", + } + AfsOrderStatusName = map[int]string{ + AfsOrderStatusWait4Approve: "售后待审", + AfsOrderStatusNew: "新售后单", + AfsOrderStatusWait4ReceiveGoods: "售后待确认收货", + AfsOrderStatusReceivedGoods: "售后已收货", + AfsOrderStatusFinished: "售后成功", + AfsOrderStatusFailed: "售后失败", + } ) const ( @@ -315,7 +341,7 @@ const ( AfsReasonTypeGoodsNoSame = 8 // 商品与描述不符 AfsReasonWrongPurchase = 9 // 误购 AfsReasonNotReceivedIntime = 10 // 未在时效内送达 - AfsReasonNotOthers = 20 // 其它 + AfsReasonNotOthers = 0 // 其它 ) func IsPurchaseVendorExist(vendorID int) bool { diff --git a/business/partner/partner.go b/business/partner/partner.go index a39d93ec5..9b69f5a72 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -33,6 +33,12 @@ const ( PrinterStatusOnlineAbnormal = 3 ) +const ( + AfsApproveTypeRefund = 1 // 退款 + AfsApproveTypeReturnGoods = 2 // 退货 + AfsApproveTypeRefused = 3 // 驳回 +) + const ( PrintResultSuccess = 0 PrintResultNoPrinter = 1 @@ -194,7 +200,7 @@ type IPurchasePlatformHandler interface { // 售后 // 同意用户退款申请 - // AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.GoodsOrder, 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) // // 发起部分退款 diff --git a/business/partner/purchase/jd/order_afs.go b/business/partner/purchase/jd/order_afs.go index 206f5ee0c..c9e861434 100644 --- a/business/partner/purchase/jd/order_afs.go +++ b/business/partner/purchase/jd/order_afs.go @@ -6,6 +6,7 @@ import ( "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner" + "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" ) @@ -31,6 +32,25 @@ var ( jdapi.AfsServiceStateDirectCompensateFailed: model.AfsOrderStatusFailed, jdapi.AfsServiceStateReturnGoodsFailed: model.AfsOrderStatusFailed, } + + afsReasonTypeMap = map[int]int8{ + jdapi.AfsReasonTypeGoodsQuality: model.AfsReasonTypeGoodsQuality, + jdapi.AfsReasonTypeWrongGoods: model.AfsReasonTypeWrongGoods, + jdapi.AfsReasonTypeMissingGoods: model.AfsReasonTypeMissingGoods, + jdapi.AfsReasonTypeNoGoods: model.AfsReasonTypeNoGoods, + jdapi.AfsReasonTypeDamagedGoods: model.AfsReasonTypeDamagedGoods, + jdapi.AfsReasonTypeGoodsQuantity: model.AfsReasonTypeGoodsQuantity, + jdapi.AfsReasonTypeAgreedByMerchant: model.AfsReasonTypeAgreedByMerchant, + jdapi.AfsReasonTypeGoodsSizeNoSame: model.AfsReasonTypeGoodsNoSame, + jdapi.AfsReasonTypeGoodsColorNoSame: model.AfsReasonTypeGoodsNoSame, + jdapi.AfsReasonWrongPurchase: model.AfsReasonWrongPurchase, + jdapi.AfsReasonNotReceivedIntime: model.AfsReasonNotReceivedIntime, + } + afsAppealTypeMap = map[string]int8{ + jdapi.AfsDealTypeRefund: model.AfsAppealTypeRefund, + jdapi.AfsDealTypeReturnGoodsRefund: model.AfsAppealTypeReturnAndRefund, + jdapi.AfsDealTypeDirectCompensate: model.AfsAppealTypeNewGoods, + } ) func (c *PurchaseHandler) OnAfsOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { @@ -78,6 +98,20 @@ func (c *PurchaseHandler) GetAfsStatusFromVendorStatus(vendorStatus string) int return model.OrderStatusUnknown } +func (c *PurchaseHandler) convertAfsReasonType(vendorReasonType int) int8 { + if status, ok := afsReasonTypeMap[vendorReasonType]; ok { + return status + } + return model.AfsReasonNotOthers +} +func (c *PurchaseHandler) convertAfsAppealType(vendorAppealType string) int8 { + if status, ok := afsAppealTypeMap[vendorAppealType]; ok { + return status + } + globals.SugarLogger.Warnf("jd convertAfsAppealType unknown vendorAppealType:%d", vendorAppealType) + return 0 +} + func (p *PurchaseHandler) buildAfsOrder(afsInfo *jdapi.AfsServiceResponse) (afsOrder *model.AfsOrder) { afsOrder = &model.AfsOrder{ VendorID: model.VendorIDJD, @@ -91,6 +125,13 @@ func (p *PurchaseHandler) buildAfsOrder(afsInfo *jdapi.AfsServiceResponse) (afsO BoxMoney: afsInfo.PackagingMoney, TongchengFreightMoney: afsInfo.TongchengFreightMoney, SkuBoxMoney: afsInfo.MealBoxMoney, + + VendorReasonType: utils.Int2Str(afsInfo.QuestionTypeCid), + ReasonType: p.convertAfsReasonType(afsInfo.QuestionTypeCid), + ReasonDesc: utils.LimitUTF8StringLen(afsInfo.QuestionDesc, 1024), + ReasonImgList: utils.LimitUTF8StringLen(afsInfo.QuestionPic, 1024), + VendorAppealType: afsInfo.ApplyDeal, + AppealType: p.convertAfsAppealType(afsInfo.ApplyDeal), } for _, x := range afsInfo.AfsDetailList { orderSku := &model.OrderSkuFinancial{