diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 4b825e288..679172eec 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -2686,16 +2686,17 @@ func UpdateTiktokShopTotalMoney() { func UpdateTaoSettleInfo() { db := dao.GetDB() - storeMaps, err := dao.GetStoresMapList(db, []int{model.VendorIDTaoVegetable}, nil, nil, 0, 0, "", "", "") + storeMaps, err := dao.GetStoresMapList(db, []int{model.VendorIDTaoVegetable}, []int{667321}, nil, -9, -1, "", "", "") if err != nil { return } - + globals.SugarLogger.Debugf("GetStoresMapList ========== %s", utils.Format4Output(storeMaps, false)) timeStart := time.Now().Add(-72 * time.Hour) startTime := time.Date(timeStart.Year(), timeStart.Month(), timeStart.Day(), 0, 0, 0, 0, timeStart.Location()) timeEnd := time.Now() endTiem := time.Date(timeEnd.Year(), timeEnd.Month(), timeEnd.Day()-1, 23, 59, 59, 0, timeStart.Location()) for _, v := range storeMaps { + globals.SugarLogger.Debugf("=============UpdateTaoSettleInfo := %s", utils.Format4Output(v, false)) settleInfo, err := tao.GetOrderTotalShopMoney(v.VendorOrgCode, v.VendorStoreID, startTime, endTiem) if err != nil { globals.SugarLogger.Errorf("获取淘鲜达结算信息异常 := %v", err) @@ -2707,6 +2708,7 @@ func UpdateTaoSettleInfo() { } for orderId2, settle := range settleInfo { + globals.SugarLogger.Debugf("=============settleInfo := %s,%s", utils.Format4Output(orderId2, false), settle) goodsOrder, err := partner.CurOrderManager.LoadOrder2(orderId2, model.VendorIDTaoVegetable) if err != nil || goodsOrder == nil { globals.SugarLogger.Debugf("门店[%d:%s],订单查询异常[%s:%v]", v.StoreID, v.StoreName, orderId2, err) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 23ab462f1..0ac88c8a9 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -1515,7 +1515,8 @@ func (s *DefScheduler) updateBillsInfo(savedOrderInfo *WatchOrderInfo, bill *mod func (s *DefScheduler) autoPickupGood(savedOrderInfo *WatchOrderInfo) (err error) { order := savedOrderInfo.order store, _ := dao.GetStoreDetail(dao.GetDB(), order.JxStoreID, order.VendorID, "") - flag := (model.IsOrderDeliveryByStore(order) || model.IsOrderDeliveryBySelf(order)) && store.AutoPickup == model.YES + //flag := (model.IsOrderDeliveryByStore(order) || model.IsOrderDeliveryBySelf(order)) && store.AutoPickup == model.YES + flag := store.AutoPickup == model.YES && store.VendorStatus == model.StoreStatusOpened // 只要打开了就可以自动拣货 if err = s.PickupGoods(order, flag, "autoPickup"); err == nil { order.DeliveryFlag |= model.OrderDeliveryFlagMaskAutoPickup partner.CurOrderManager.UpdateOrderFields(order, []string{"DeliveryFlag"}) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index fd6158def..d696b4d20 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -3653,9 +3653,9 @@ func GetStoreCategoryMap(ctx *jxcontext.Context, parentID, level int, storeID in if err != nil { return nil, err } - if ctx.GetLoginType() != auth2.AuthTypePassword && ctx.GetLoginType() != weixin.AuthTypeMP && ctx.GetLoginType() != weixin.AuthTypeMini && ctx.GetLoginType() != weixin.AuthTypeWxApp && ctx.GetLoginType() != weixin.AuthTypeWxAppCaishi && ctx.GetLoginType() != auth2.AuthTypeMobile { - return storeCatMaps, err - } + //if ctx.GetLoginType() != auth2.AuthTypePassword && ctx.GetLoginType() != weixin.AuthTypeMP && ctx.GetLoginType() != weixin.AuthTypeMini && ctx.GetLoginType() != weixin.AuthTypeWxApp && ctx.GetLoginType() != weixin.AuthTypeWxAppCaishi && ctx.GetLoginType() != auth2.AuthTypeMobile { + // return storeCatMaps, err + //} //表示没有门店分类 if len(storeCatMaps) == 0 { storeCatMaps, err = dao.GetCategoriesForStore(db, parentID, 0, nil) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 3e89a0991..595c650f5 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -1744,6 +1744,7 @@ func UpdateStoresSkus(ctx *jxcontext.Context, causeFlag int, storeIDs []int, sku } } else { flag, _ := doStoreSkuAudit(ctx, storeIDs, skuBindInfos) + globals.SugarLogger.Debugf("========falg := %s", utils.Format4Output(flag, false)) if !flag { var num int64 db := dao.GetDB() @@ -5941,6 +5942,7 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto return false, err } } + storeSkuAudit := &model.StoreSkuAudit{ StoreID: storeID, NameID: skuBindInfo.NameID, diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 50b067e09..bfb732c01 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -203,10 +203,10 @@ func Init() { "09:35:00", }) /// 更新淘鲜达结算信息 - ScheduleTimerFunc("UpdateTiktokShopTotalMoney", func() { + ScheduleTimerFunc("UpdateTaoTotalMoney", func() { orderman.UpdateTaoSettleInfo() }, []string{ - "23:20:00", + "17:35:00", }) // 每分钟轮询一次,推送骑手信息 @@ -282,149 +282,338 @@ func Init() { // 淘鲜达更新门店商品 ,接口收费暂不使用 if beego.BConfig.RunMode != "jxgy" { ScheduleTimerFunc("RefreshSyncSkuList_tao", func() { - var beijin = []int{ - //102683, - //102542, - //102514, - //102382, - //102182, - //102178, - //102173, - //102098, - //102094, - //102080, - //102072, - //102069, - //101870, - //101869, - //101868, - //101867, - //101866, - //101865, - //100956, - //100930, - //100871, - //100786, - //100746, - //100744, - //100726, - //100705, - //100400, - //100111, - //100108, - //100106, - //100104, - //100103, - //100102, - //100100, - //100097, - //100096, - //100095, - //100093, - //100092, - //100089, - //100087, - //100086, - //100085, - //100082, - //100079, - //100078, - //669158, - //668691, - //668673, - //668282, - //667447, - //667354, - //667321, - //667319, - //667316, - //667269, - //667268, - //667267, - //667260, - //667132, - //667094, - //667030, - //666965, - //666714, - //666708, - //666705, - //103437, - //103349, - //103123, - //103121, - //103106, - //103038, - //103028, - //103019, - //102831, - //102751, - //上海 - 668462, - 668276, - 668180, - 667320, - 667237, - 667231, - 667068, - 667036, - 666678, - 103191, - 103074, - 103065, - 103051, - 103050, - 103037, - 103029, - 103018, - 103002, - 102999, - 102969, - 102966, - 102951, - 102946, - 102939, - 102938, - 102934, - 102933, - 102930, - 102924, - 102920, - 102908, - 102903, - 102561, - 102293, - 100946, - 100945, - 100943, - 100935, - 100905, - 100720, - 100325, - 100324, - 100309, - 100299, - 100296, - 100292, - 100290, + var hangzhou = []int{ + // 杭州 + //669073, + //668930, + //668922, + //668916, + //668915, + //668756, + //668705, + //668702, + //668681, + //668422, + //668417, + //668191, + //667996, + //667991, + //667985, + //667553, + //667044, + //103083, + //103073, + //103033, + //103032, + //102963, + //102923, + //102785, + //102594, + //102578, + //102329, + //101734, + //100229, + //100224, + //100217, + //100215, + //100210, + //100206, + //// 武汉 + //668352, 103200, 102958, 100887, 100236, + //// 广州 + 668871, 668602, 668575, 668262, 103425, 101755, 101176, 100557, 100369, 100361, 100351, 100350, + //成都 + 669172, + 669171, + 669170, + 669169, + 669168, + 669165, + 669164, + 669163, + 669162, + 669157, + 669156, + 669155, + 669154, + 669153, + 669150, + 669149, + 669148, + 669147, + 669146, + 669144, + 669141, + 669139, + 669138, + 669137, + 669134, + 669132, + 669127, + 669124, + 669122, + 669121, + 669120, + 669119, + 669114, + 669113, + 669111, + 669110, + 669109, + 669108, + 669107, + 669106, + 669103, + 669100, + 669099, + 669098, + 669097, + 669096, + 669095, + 669094, + 669093, + 669092, + 669091, + 669087, + 669086, + 669085, + 669084, + 669083, + 669082, + 669079, + 669078, + 669077, + 669075, + 669074, + 669072, + 669070, + 669067, + 669064, + 669063, + 669062, + 669060, + 669059, + 669056, + 669055, + 669054, + 669050, + 669049, + 669047, + 669046, + 669045, + 669042, + 669041, + 669038, + 669036, + 669035, + 669033, + 669032, + 669031, + 669027, + 669025, + 669024, + 669022, + 669021, + 669020, + 669017, + 669015, + 669014, + 669012, + 669009, + 669007, + 669002, + 669000, + 668999, + 668997, + 668996, + 668993, + 668988, + 668986, + 668984, + 668966, + 668963, + 668961, + 668958, + 668954, + 668950, + 668948, + 668946, + 668943, + 668938, + 668928, + 668910, + 668907, + 668900, + 668897, + 668896, + 668891, + 668889, + 668883, + 668882, + 668868, + 668860, + 668855, + 668853, + 668850, + 668849, + 668843, + 668838, + 668807, + 668802, + 668784, + 668773, + 668771, + 668767, + 668766, + 668755, + 668749, + 668728, + 668724, + 668722, + 668721, + 668716, + 668706, + 668704, + 668699, + 668697, + 668695, + 668693, + 668692, + 668688, + 668686, + 668682, + 668680, + 668679, + 668678, + 668672, + 668666, + 668662, + 668660, + 668659, + 668656, + 668655, + 668654, + 668649, + 668648, + 668643, + 668642, + 668640, + 668636, + 668632, + 668631, + 668629, + 668624, + 668616, + 668613, + 668608, + 668594, + 668548, + 668543, + 668540, + 668537, + 668530, + 668512, + 668258, + 668257, + 668256, + 668254, + 668203, + 668190, + 668186, + 668185, + 668182, + 668170, + 668169, + 668168, + 668166, + 668165, + 668164, + 668157, + 668156, + 668125, + 668121, + 668095, + 668094, + 668071, + 667959, + 667745, + 667744, + 667743, + 667563, + 667562, + 667561, + 667560, + 667559, + 667558, + 667556, + 667420, + 667332, + 667308, + 667305, + 667304, + 667299, + 667292, + 667285, + 667281, + 667278, + 667263, + 667001, + 666975, + 666677, + 666667, + 666666, + 103408, + 103184, + 103174, + 103127, + 103113, + 102925, + 102740, + 102736, + 102630, + 102383, + 102180, + 101942, + 101897, + 101875, + 101036, + 100840, + 100743, + 100654, + 100471, + 100144, + 100135, + 100129, + 100126, + 100123, + 100115, } - syncStoreSkuTao(beijin) + syncStoreSkuTao(hangzhou) }, []string{ "00:30:00", + "01:30:00", "02:30:00", + "03:30:00", "04:30:00", + "05:30:00", + "06:30:00", "07:30:00", - "09:00:00", - "10:40:00", - "12:55:00", + "08:30:00", + "09:35:00", + "10:30:00", + "11:30:00", + "12:30:00", "13:30:00", "14:30:00", "15:30:00", "16:30:00", "17:30:00", - "18:40:00", + "18:30:00", + "19:30:00", "20:30:00", + "21:30:00", "22:30:00", + "23:30:00", }) } @@ -754,9 +943,6 @@ func syncStoreSku() { tasksch.HandleTask(task, nil, true).Run() } -//var storeIds = []int{ -// 668802, 668787, 668785, 668777, 668769, 668776, 668770, 668760, 668758, 668756, 668748, 668727, 668723, 300372, 668715, 668717, 668707, 668667, 668668, 800306, 668628, 668681, 668673, 668544, 668619, 668614, 668600, 102217, 667405, 100988, 668353, 103022, 668283, 667208, 668266, 102101, 100610, 103201, 103459, 667154, 102691, 666747, 103417, 666744, 666864, 102186, 667271, 101750, 101031, 667452, 666942, 666927, 100068, 668339, 668306, 668310, 667352, 102544, 667014, 102280, 667134, 102945, 103062, 102443, 668218, 666913, 102742, 668360, 102851, 668580, 667252, 666746, 100455, 667037, 667317, 667473, 666816, 103063, 666800, 668210, 103079, 668200, 668176, 667462, 102426, 667116, 668309, 100193, 666828, 666944, 102852, 666900, 668521, 668373, 102596, 668444, 667071, 668264, 668395, 668090, 102172, 102790, 101935, 667480, 102479, 103197, 102703, 668386, 668229, 666948, 101008, 668249, 102374, 667464, 668468, 102490, 666756, 102976, 667467, 666707, 668270, 667429, 103098, 668135, 668523, 666907, 668407, 668358, 668385, 101134, 100887, 668568, 668003, 101763, 100829, 667476, 101078, 668099, 668503, 666807, 100167, 100433, 668107, 667262, 100849, 102771, 667173, 666847, 667485, 102821, 666955, 101107, 667229, 102950, 103435, 102497, 666916, 668163, 668061, 102147, 668248, 667066, 102853, 667944, 100002, 102865, 668219, 100184, 666840, 667057, 668202, 102223, 667101, 667128, 101110, 668511, 103151, 667093, 668154, 666905, 668268, 666929, 102935, 102074, 668174, 668217, 102350, 666940, 102980, 668117, 668384, 100067, 101916, 102987, 667250, 668570, 667466, 101099, 667082, 100229, 667553, 100215, 667991, 100217, 103073, 103074, 103037, 668180, 668583, 668462, 667891, 666811, 666736, 668173, 100267, 102962, 102752, 668284, 667296, 668175, 667806, 103103, 103084, 668453, 102970, 103184, 668548, 101036, 668182, 668157, 668257, 668166, 668543, 668170, 668071, 667744, 102925, 100115, 668093, 667745, 668164, 668156, 667743, 668165, 103408, 103038, 667268, 667094, 667321, 100726, 102333, 666742, 101775, 100028, 668304, 667305, 101942, 668575, 101755, 103425, 102833, 100699, 103190, 666711, 668396, 100334, 102533, 100336, 101995, 102320, 101842, 102519, 101999, 102433, 100920, 102594, 102951, 668506, 666667, 102963, 300034, 667212, 100236, 101909, 668541, 102857, 668417, 102955, 103031, 668545, 666790, 100328} - func syncStoreSkuTiktok() { //syncFlag := 0 | model.SyncFlagSaleMask syncFlag := 0 @@ -795,8 +981,8 @@ func syncStoreSkuTao(beijin []int) { switch step { case 0: if beego.BConfig.RunMode != "jxgy" { - ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "2452A93EEB9111EC9B06525400E86DC0", "淘鲜达消息:", utils.Format4Output(beijin[syncLen:syncLen+5], false)) - _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{model.VendorIDTaoVegetable}, beijin[syncLen:syncLen+5], false, nil, nil, syncFlag, true, true) + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "2452A93EEB9111EC9B06525400E86DC0", "淘鲜达消息:", utils.Format4Output(beijin[syncLen:syncLen+3], false)) + _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{model.VendorIDTaoVegetable}, beijin[syncLen:syncLen+3], false, nil, nil, syncFlag, true, true) errList.AddErr(err) } case 1: @@ -807,7 +993,7 @@ func syncStoreSkuTao(beijin []int) { return retVal, err }, []int{0, 1}) tasksch.HandleTask(task, nil, true).Run() - syncLen += 5 + syncLen += 3 } func doDailyWork2() { diff --git a/business/netspider/netspider_test.go b/business/netspider/netspider_test.go index fba61218a..d07392685 100644 --- a/business/netspider/netspider_test.go +++ b/business/netspider/netspider_test.go @@ -3,7 +3,6 @@ package netspider import ( "testing" - "git.rosy.net.cn/jx-callback/business/jxutils/ditu" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/baseapi/utils" @@ -16,21 +15,6 @@ func init() { testinit.Init() } -func TestGetStoreListByCoordinate(t *testing.T) { - storeList, err := getStoreListByCoordinates(jxcontext.AdminCtx, nil, 3, "成都", - []*ditu.Coordinate{ - &ditu.Coordinate{ - Lng: 104.057218, - Lat: 30.6949, - }, - }) - if err != nil { - t.Fatal(err) - } - t.Log(utils.Format4Output(storeList, false)) - t.Log(len(storeList)) -} - func TestGetCityShops(t *testing.T) { shopList, err := GetCityShops(jxcontext.AdminCtx, nil, []int{0, 3}, 510100, 5000, 3000) if err != nil { diff --git a/business/partner/delivery/rider.go b/business/partner/delivery/rider.go index 060125fb4..69929b741 100644 --- a/business/partner/delivery/rider.go +++ b/business/partner/delivery/rider.go @@ -207,7 +207,7 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { case model.VendorIDMTWM: // 美团订单 if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil { if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorStoreID, utils.Struct2Map(riderInfo, "", true)); err != nil { - globals.SugarLogger.Errorf("Error pushing meituan rider information :%s--%s--%v", v.VendorOrderID, utils.Format4Output(riderInfo, false), err) + globals.SugarLogger.Debugf("Error pushing meituan rider information :%s--%s--%v", v.VendorOrderID, utils.Format4Output(riderInfo, false), err) } } case model.VendorIDELM: // 饿了么 @@ -233,7 +233,7 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { if orderId == "" { if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil { if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorStoreID, utils.Struct2Map(riderInfo, "", true)); err != nil { - globals.SugarLogger.Errorf("Error pushing meituan rider information :%s--%s--%v", v.VendorOrderID, utils.Format4Output(riderInfo, false), err) + globals.SugarLogger.Debugf("Error pushing meituan rider information :%s--%s--%v", v.VendorOrderID, utils.Format4Output(riderInfo, false), err) } } } else { // 订单状态改变 [配送中/用户签收/用户拒收] @@ -243,7 +243,7 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { } } default: - globals.SugarLogger.Errorf("Order source error, non system order: %s", v.VendorOrderID) + globals.SugarLogger.Debugf("Order source error, non system order: %s", v.VendorOrderID) continue } } diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index 124aacdf7..6186d7418 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -442,6 +442,7 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI } func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) { + isSelfDelivery = model.IsOrderDeliveryByStore(order) || model.IsOrderDeliveryBySelf(order) if !isSelfDelivery && globals.EnableJdStoreWrite { _, err = getAPI(order.VendorOrgCode).OrderJDZBDelivery(order.VendorOrderID, userName) } else { diff --git a/business/partner/purchase/mtwm/order.go b/business/partner/purchase/mtwm/order.go index 860fc48cb..02a04b01a 100644 --- a/business/partner/purchase/mtwm/order.go +++ b/business/partner/purchase/mtwm/order.go @@ -514,6 +514,7 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI } func (c *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) { + isSelfDelivery = model.IsOrderDeliveryByStore(order) || model.IsOrderDeliveryBySelf(order) if !isSelfDelivery { if globals.EnableMtwmStoreWrite { // err = api.MtwmAPI.OrderConfirm(utils.Str2Int64(order.VendorOrderID)) diff --git a/business/partner/purchase/tao_vegetable/order.go b/business/partner/purchase/tao_vegetable/order.go index afbdabf6f..598630bfd 100644 --- a/business/partner/purchase/tao_vegetable/order.go +++ b/business/partner/purchase/tao_vegetable/order.go @@ -528,19 +528,19 @@ func (c *PurchaseHandler) CanSwitch2SelfDeliver(order *model.GoodsOrder) (isCan func (c *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName string) (err error) { param, err := orderStatusChangeNotice(order, tao_vegetable.OrderStatusCallRider) if err != nil { - return err + return nil } - if err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").DeliveryFinish(param); err != nil { + if err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").DeliveryFinish(param); err != nil && !strings.Contains(err.Error(), "当前状态不允许更新") { globals.SugarLogger.Debugf("Swtich2SelfDeliver 出库失败可能是BizSubOrderId 没填写 : %s", err.Error()) - return err } - return err + return nil } // Swtich2SelfDelivered 订单送达 func (c *PurchaseHandler) Swtich2SelfDelivered(order *model.GoodsOrder, userName string) (err error) { - return err + param := OrderStatusChangeDelivery(order, tao_vegetable.OrderStatusDeliveryOver) + return getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromOrder(order), "").DeliveryFinish(param) } // SelfDeliverDelivering 自配送订单配送中 diff --git a/business/partner/purchase/tao_vegetable/order_afs.go b/business/partner/purchase/tao_vegetable/order_afs.go index fae22479e..faa65173a 100644 --- a/business/partner/purchase/tao_vegetable/order_afs.go +++ b/business/partner/purchase/tao_vegetable/order_afs.go @@ -82,60 +82,38 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal queryOrderDetailParam := &request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ StoreId: utils.String2Pointer(refundData.StoreId), }} - order, err := partner.CurOrderManager.LoadOrder2(refundData.OutOrderId, model.VendorIDTaoVegetable) - if err != nil { - globals.SugarLogger.Debugf("用户申请售后时,通过售后外部渠道订单号获取主订单失败:%s", err.Error()) - return tao_vegetable.CallBackResultInfo(err) - } - if order == nil { - globals.SugarLogger.Debugf("数据库订单查询失败,订单号异常 :%s", refundData.OutOrderId) - return tao_vegetable.CallBackResultInfo(errors.New("订单号异常")) - } - queryOrderDetailParam.OrderGetRequest.BizOrderId = utils.Int64ToPointer(utils.Str2Int64(order.VendorOrderID)) + + queryOrderDetailParam.OrderGetRequest.BizOrderId = utils.Int64ToPointer(utils.Str2Int64(orderStatus.RefVendorOrderID)) skuList, err := api.QueryOrderDetail(queryOrderDetailParam) if err != nil { return tao_vegetable.CallBackResultInfo(err) } - if *skuList.OrderStatus != tao_vegetable.OrderStatusSuccess { - // 用户申请售后,只有订单完成之后才可以!现在是售中取消和售后取消都在走这个接口 - // 所以只处理售后取消的消息 - return tao_vegetable.CallBackResultInfo(nil) - } - afsOrder = &model.AfsOrder{ - VendorID: model.VendorIDTaoVegetable, - AfsOrderID: orderStatus.VendorOrderID, - VendorOrderID: orderStatus.RefVendorOrderID, - VendorStoreID: refundData.StoreId, - StoreID: 0, - AfsCreatedAt: orderStatus.StatusTime, - - VendorAppealType: status, // 原始售后方式 - AppealType: model.AfsAppealTypeUserCancel, // 淘宝这个接口下发的只有用户取消 - VendorReasonType: refundData.RefundReason, - ReasonType: 0, - ReasonDesc: refundData.RefundReason, - ReasonImgList: utils.LimitUTF8StringLen(refundData.RefundPictures, 1024), - VendorOrgCode: api.GetVendorOrgCode(), - } - - refundIds := make([]int64, 0, 0) - bizOrderIds := make([]int64, len(refundData.SubRefundOrders)) - for _, v := range refundData.SubRefundOrders { - bizOrderIds = append(bizOrderIds, utils.Str2Int64(v.OutSubOrderId)) - } - refundIds = append(refundIds, utils.Str2Int64(refundData.BizRefundId)) - - afsOrder.FreightUserMoney = 0 // 订单运费 - afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用 - afsOrder.BoxMoney = 0 // 餐盒费 - afsOrder.TongchengFreightMoney = 0 // 同城配送费 - afsOrder.SkuBoxMoney = 0 // 商品包装费 - afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态 - - var refundSkuCount int64 = 0 // 子订单申请退款的商品数 - var orderSkuCount int64 = 0 // 子订单购买的商品数 for _, refundSku := range refundData.SubRefundOrders { // 本次退款订单 + afsOrder = &model.AfsOrder{ + VendorID: model.VendorIDTaoVegetable, + VendorOrderID: orderStatus.RefVendorOrderID, + VendorStoreID: refundData.StoreId, + StoreID: 0, + AfsCreatedAt: orderStatus.StatusTime, + VendorAppealType: status, // 原始售后方式 + AppealType: model.AfsAppealTypeUserCancel, // 淘宝这个接口下发的只有用户取消 + VendorReasonType: refundData.RefundReason, + ReasonType: 0, + ReasonDesc: refundData.RefundReason, + ReasonImgList: utils.LimitUTF8StringLen(refundData.RefundPictures, 1024), + VendorOrgCode: api.GetVendorOrgCode(), + VendorOrderID2: refundData.RefundId, + } + afsOrder.FreightUserMoney = 0 // 订单运费 + afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用 + afsOrder.BoxMoney = 0 // 餐盒费 + afsOrder.TongchengFreightMoney = 0 // 同城配送费 + afsOrder.SkuBoxMoney = 0 // 商品包装费 + afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态 + + var refundSkuCount int64 = 0 // 子订单申请退款的商品数 + var orderSkuCount int64 = 0 // 子订单购买的商品数 refundSkuCount += refundSku.RefundAmount for _, sku := range *skuList.SubOrderResponseList { // 总订单 if refundSku.OutSubOrderId == *sku.OutSubOrderId { @@ -152,26 +130,42 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney afsOrder.Skus = append(afsOrder.Skus, orderSku) orderSkuCount += utils.Float64TwoInt64(*sku.BuySaleQuantity) + afsOrder.VendorOrderID = utils.Int64ToStr(*skuList.BizOrderId) + afsOrder.AfsOrderID = utils.Int64ToStr(*sku.BizSubOrderId) } } - } - if refundSkuCount == orderSkuCount && refundData.RefundFee == *skuList.PayFee { // 全退 - afsOrder.RefundType = model.AfsTypeFullRefund - } else { - afsOrder.RefundType = model.AfsTypePartRefund - } - afsOrder.SkuUserMoney += refundData.RefundFee - if afsOrder != nil { + if refundSkuCount == orderSkuCount && refundData.RefundFee == *skuList.PayFee { // 全退 + afsOrder.RefundType = model.AfsTypeFullRefund + } else { + afsOrder.RefundType = model.AfsTypePartRefund + } + afsOrder.SkuUserMoney += refundData.RefundFee + + afs2, _ := partner.CurOrderManager.LoadAfsOrder(afsOrder.AfsOrderID, afsOrder.VendorID) + if afs2 != nil { + _, err = dao.DeleteEntity(db, afsOrder, "VendorOrderID", "AfsOrderID", "VendorID") + _, err = dao.DeleteEntity(db, &model.OrderSkuFinancial{ + VendorOrderID: afsOrder.VendorOrderID, + VendorID: afsOrder.VendorID, + IsAfsOrder: 1, + AfsOrderID: afsOrder.AfsOrderID, + }, "VendorOrderID", "VendorID", "IsAfsOrder", "AfsOrderID") + afsOrder.ReasonDesc += "(拒绝退款后,用户再次申请)" + } //直接就来一个新的售后单,并且还是售后完成的 if orderStatus.Status == model.AfsOrderStatusFinished { afsOrder.AfsFinishedAt = afsOrder.AfsCreatedAt } + orderStatus.RefVendorOrderID = afsOrder.VendorOrderID + orderStatus.VendorOrderID = afsOrder.AfsOrderID err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus) } + case tao_vegetable.OrderStatusCancelAfs: + globals.SugarLogger.Debugf("用户取消售后----------- %s", utils.Format4Output(msg, false)) // 删除售后单 - afsOrder, err := dao.GetAfsOrders(db, model.VendorIDTaoVegetable, orderStatus.RefVendorOrderID, orderStatus.VendorOrderID) + afsOrder, err := dao.GetAfsOrders(db, model.VendorIDTaoVegetable, orderStatus.RefVendorOrderID, "") if err != nil || afsOrder == nil { globals.SugarLogger.Debugf("用户取消售后单,获取之前生成的售后单失败") return tao_vegetable.CallBackResultInfo(err) @@ -180,27 +174,27 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal cancelMsg := msg.(*tao_vegetable.UserCancelRefundApply) for _, v := range afsOrder { // 商家驳回,会发出用户撤销的回调通知,不管他 - if v.AfsOrderID == cancelMsg.RefundId && v.Flag == model.AfsOrderFlagRefuseUserRefund { - return tao_vegetable.CallBackResultInfo(nil) + if v.VendorOrderID2 != cancelMsg.RefundId { + continue } // 用户撤销未处理的售后订单 - if v.AfsOrderID == cancelMsg.RefundId && v.Flag == 0 { + if v.Flag == 0 { // 下面处理用户撤销售后 if err = utils.CallFuncLogError(func() error { - _, err = dao.DeleteEntity(db, v, "VendorOrderID", "VendorID") + _, err = dao.DeleteEntity(db, v, "VendorOrderID", "AfsOrderID", "VendorID") return err }, "SaveAfsOrder delete AfsOrder, afsOrderID:%s", v.AfsOrderID); err != nil { return tao_vegetable.CallBackResultInfo(err) } - // 删除售后商品 if err = utils.CallFuncLogError(func() error { _, err = dao.DeleteEntity(db, &model.OrderSkuFinancial{ VendorOrderID: v.VendorOrderID, VendorID: v.VendorID, IsAfsOrder: 1, - }, "VendorOrderID", "VendorID", "IsAfsOrder") + AfsOrderID: v.AfsOrderID, + }, "VendorOrderID", "VendorID", "IsAfsOrder", "AfsOrderID") return err }, "SaveAfsOrder delete OrderSkuFinancial, afsOrderID:%s", v.AfsOrderID); err != nil { return tao_vegetable.CallBackResultInfo(err) @@ -212,6 +206,7 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal // 你这边没有响应那么就不会退钱给用户,就会造成客诉。为什么不接售中取消呢 case tao_vegetable.OrderStatusOnSaleCancel: onSaleMsg := msg.(*tao_vegetable.OnSaleCancel) + globals.SugarLogger.Debugf("=========售中取消: %s", utils.Format4Output(msg, false)) var afsOrder *model.AfsOrder var api = getAPI("", 0, onSaleMsg.PartCancelRequest.StoreId) queryOrderDetailParam := &request591.AlibabaAelophyOrderGetRequest{OrderGetRequest: &domain591.AlibabaAelophyOrderGetOrderGetRequest{ @@ -223,75 +218,78 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal return tao_vegetable.CallBackResultInfo(err) } - afsOrder = &model.AfsOrder{ - VendorID: model.VendorIDTaoVegetable, - AfsOrderID: onSaleMsg.PartCancelRequest.IdempotentId, - VendorOrderID: orderStatus.RefVendorOrderID, - VendorStoreID: onSaleMsg.PartCancelRequest.StoreId, - StoreID: 0, - AfsCreatedAt: orderStatus.StatusTime, - VendorAppealType: status, // 原始售后方式 - AppealType: model.AfsAppealTypeUserCancel, // 淘宝这个接口下发的只有用户取消 - VendorReasonType: tao_vegetable.OrderStatusOnSaleCancel, - ReasonType: 0, - ReasonDesc: "售中取消:订单未打包,或者长时间为送到!响应成功直接退款", - VendorOrgCode: api.GetVendorOrgCode(), - } - afsOrder.FreightUserMoney = 0 // 订单运费 - afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用 - afsOrder.BoxMoney = 0 // 餐盒费 - afsOrder.TongchengFreightMoney = 0 // 同城配送费 - afsOrder.SkuBoxMoney = 0 // 商品包装费 - afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态 + for _, v1 := range onSaleMsg.PartCancelRequest.SubOrders { + afsOrder = &model.AfsOrder{ + VendorID: model.VendorIDTaoVegetable, + AfsOrderID: utils.Int64ToStr(v1.BizSubOrderId), + VendorOrderID: orderStatus.RefVendorOrderID, + VendorStoreID: onSaleMsg.PartCancelRequest.StoreId, + StoreID: 0, + AfsCreatedAt: orderStatus.StatusTime, + VendorAppealType: status, // 原始售后方式 + AppealType: model.AfsAppealTypeUserCancel, // 淘宝这个接口下发的只有用户取消 + VendorReasonType: tao_vegetable.OrderStatusOnSaleCancel, + ReasonType: 0, + ReasonDesc: "售中取消:订单未打包,或者长时间为送到!响应成功直接退款", + VendorOrgCode: api.GetVendorOrgCode(), + } + afsOrder.FreightUserMoney = 0 // 订单运费 + afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用 + afsOrder.BoxMoney = 0 // 餐盒费 + afsOrder.TongchengFreightMoney = 0 // 同城配送费 + afsOrder.SkuBoxMoney = 0 // 商品包装费 + afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态 - ifAfsTypeFullRefund := false - var refundFee int64 = 0 - for _, v := range *orderDetail.SubOrderResponseList { - for _, v2 := range onSaleMsg.PartCancelRequest.SubOrders { - if *v.BizSubOrderId == v2.BizSubOrderId { - orderSku := &model.OrderSkuFinancial{ - Count: utils.Float64TwoInt(*v.BuySaleQuantity), - VendorSkuID: *v.SkuCode, - SkuID: utils.Str2Int(*v.SkuCode), - Name: *v.SkuName, - UserMoney: *v.OriginalFee, - PmSkuSubsidyMoney: *v.DiscountPlatformFee, // 平台补贴商品 - VendorOrderID: orderStatus.VendorOrderID, - VendorSubOrderID: *v.OutSubOrderId, + ifAfsTypeFullRefund := false + var refundFee int64 = 0 + for _, v := range *orderDetail.SubOrderResponseList { + for _, v2 := range onSaleMsg.PartCancelRequest.SubOrders { + if *v.BizSubOrderId == v2.BizSubOrderId { + orderSku := &model.OrderSkuFinancial{ + Count: utils.Float64TwoInt(*v.BuySaleQuantity), + VendorSkuID: *v.SkuCode, + SkuID: utils.Str2Int(*v.SkuCode), + Name: *v.SkuName, + UserMoney: *v.OriginalFee, + PmSkuSubsidyMoney: *v.DiscountPlatformFee, // 平台补贴商品 + VendorOrderID: orderStatus.VendorOrderID, + VendorSubOrderID: *v.OutSubOrderId, + } + afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney + afsOrder.Skus = append(afsOrder.Skus, orderSku) + refundFee += *v.OriginalFee } - afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney - afsOrder.Skus = append(afsOrder.Skus, orderSku) - refundFee += *v.OriginalFee } } - } - if len(onSaleMsg.PartCancelRequest.SubOrders) == len(*orderDetail.SubOrderResponseList) { - ifAfsTypeFullRefund = true + if len(onSaleMsg.PartCancelRequest.SubOrders) == len(*orderDetail.SubOrderResponseList) { + ifAfsTypeFullRefund = true + } + + afsOrder.SkuUserMoney += refundFee + if ifAfsTypeFullRefund { // 全退 + afsOrder.RefundType = model.AfsTypeFullRefund + afsOrder.SkuUserMoney += *orderDetail.PostFee + afsOrder.Skus[len(afsOrder.Skus)-1].UserMoney += *orderDetail.PostFee + } else { + afsOrder.RefundType = model.AfsTypePartRefund + } + + if afsOrder != nil { + //直接就来一个新的售后单,并且还是售后完成的 + afsOrder.AfsFinishedAt = afsOrder.AfsCreatedAt + afsOrder.Flag = model.AfsOrderFlagAgreeUserRefund + orderStatus.VendorOrderID = afsOrder.AfsOrderID + err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus) + } } - afsOrder.SkuUserMoney += refundFee - if ifAfsTypeFullRefund { // 全退 - afsOrder.RefundType = model.AfsTypeFullRefund - afsOrder.SkuUserMoney += *orderDetail.PostFee - afsOrder.Skus[len(afsOrder.Skus)-1].UserMoney += *orderDetail.PostFee - } else { - afsOrder.RefundType = model.AfsTypePartRefund - } - - if afsOrder != nil { - //直接就来一个新的售后单,并且还是售后完成的 - afsOrder.AfsFinishedAt = afsOrder.AfsCreatedAt - afsOrder.Flag = model.AfsOrderFlagAgreeUserRefund - err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus) - } case tao_vegetable.OrderStatusRefundSuccess: + globals.SugarLogger.Debugf("=========售后成功: %s", utils.Format4Output(msg, false)) // 用户退款成功回调,缺货拣货时,送达回触发.此时并没有售后单 if scarceGoods != nil { refundSuccess := msg.(*tao_vegetable.RefundOrderFinish) var afsOrder *model.AfsOrder var api = getAPI("", 0, refundSuccess.StoreId) - var isCreate = true - var outMainRefundIds = make(map[string]int64, 0) detail, err := api.QueryAfsOrderDetail(&request591.AlibabaWdkOrderRefundGetRequest{ OrderFrom: utils.Int64ToPointer(tao_vegetable.ChannelCome), ShopId: nil, @@ -301,84 +299,70 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal if err != nil { return tao_vegetable.CallBackResultInfo(err) } - finalList, _ := dao.GetOrderRefundSkuList(db, []string{refundSuccess.OutMainRefundId}) - if len(finalList) != model.NO { - for _, f := range finalList { - for _, a := range *detail.Orders { - if f.SkuID == utils.Str2Int(*a.ItemCode) { - isCreate = false // 本地已经存在了记录 - outMainRefundIds[*a.OutMainRefundId] = *a.RefundAmount + + for _, v := range *detail.Orders { + afs, _ := partner.CurOrderManager.LoadAfsOrder(utils.Int64ToStr(*v.OriginOrderId), model.VendorIDTaoVegetable) + if afs != nil { + afsOrder = &model.AfsOrder{ + VendorID: model.VendorIDTaoVegetable, + AfsOrderID: utils.Int64ToStr(*v.OriginOrderId), + VendorOrderID: orderStatus.RefVendorOrderID, + VendorOrderID2: refundSuccess.BizSubRefundId, + VendorStoreID: refundSuccess.StoreId, + StoreID: 0, + AfsCreatedAt: orderStatus.StatusTime, + VendorAppealType: status, // 原始售后方式 + AppealType: model.AfsAppealTypeUserCancel, // 淘宝这个接口下发的只有用户取消 + VendorReasonType: tao_vegetable.OrderStatusOnSaleCancel, + ReasonType: 0, + ReasonDesc: "缺货调整,退款成功通知", + VendorOrgCode: api.GetVendorOrgCode(), + } + afsOrder.FreightUserMoney = 0 // 订单运费 + afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用 + afsOrder.BoxMoney = 0 // 餐盒费 + afsOrder.TongchengFreightMoney = 0 // 同城配送费 + afsOrder.SkuBoxMoney = 0 // 商品包装费 + afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态 + + for _, v := range *scarceGoods { + var refundFee int64 = 0 + skuDetail := tao_vegetable.GoodsScarceRefund{} + if err := json.Unmarshal([]byte(*v.Attributes), &skuDetail); err != nil { + return tao_vegetable.CallBackResultInfo(err) + } + + orderSku := &model.OrderSkuFinancial{ + Count: utils.Float64TwoInt(utils.Str2Float64(*v.RefundQuantity)), + VendorSkuID: *v.SkuCode, + SkuID: utils.Str2Int(*v.SkuCode), + Name: skuDetail.SkuName, + UserMoney: *v.RefundAmount, + PmSkuSubsidyMoney: 0, // 平台补贴商品 + VendorOrderID: orderStatus.VendorOrderID, + VendorSubOrderID: *v.OutOrderId, + } + afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney + afsOrder.Skus = append(afsOrder.Skus, orderSku) + refundFee += *v.RefundAmount + + afsOrder.SkuUserMoney += refundFee + afsOrder.RefundType = model.AfsTypePartRefund + if afsOrder != nil { + //直接就来一个新的售后单,并且还是售后完成的 + afsOrder.AfsFinishedAt = afsOrder.AfsCreatedAt + afsOrder.Flag = model.AfsOrderFlagAgreeUserRefund + err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus) } } - } - } - - // 本地已经存在了售后记录,直接修改售后状态,否则创建售后记录 - if !isCreate { - for afsOrderId, afsMoney := range outMainRefundIds { - afs, _ := partner.CurOrderManager.LoadAfsOrder(afsOrderId, model.VendorIDTaoVegetable) + } else { afs.VendorOrderID2 = refundSuccess.BizSubRefundId afs.AfsFinishedAt = time.Now() afs.Status = model.AfsOrderStatusFinished - afs.AfsTotalShopMoney = afsMoney + afs.AfsTotalShopMoney = *v.RefundAmount dao.UpdateEntity(db, afs, "VendorOrderID2", "AfsFinishedAt", "Status", "AfsTotalShopMoney") } - } else { - afsOrder = &model.AfsOrder{ - VendorID: model.VendorIDTaoVegetable, - AfsOrderID: refundSuccess.OutMainRefundId, - VendorOrderID: orderStatus.RefVendorOrderID, - VendorOrderID2: refundSuccess.BizSubRefundId, - VendorStoreID: refundSuccess.StoreId, - StoreID: 0, - AfsCreatedAt: orderStatus.StatusTime, - VendorAppealType: status, // 原始售后方式 - AppealType: model.AfsAppealTypeUserCancel, // 淘宝这个接口下发的只有用户取消 - VendorReasonType: tao_vegetable.OrderStatusOnSaleCancel, - ReasonType: 0, - ReasonDesc: "缺货调整,退款成功通知", - VendorOrgCode: api.GetVendorOrgCode(), - } - afsOrder.FreightUserMoney = 0 // 订单运费 - afsOrder.AfsFreightMoney = 0 // 暂时未发现退货取件费用 - afsOrder.BoxMoney = 0 // 餐盒费 - afsOrder.TongchengFreightMoney = 0 // 同城配送费 - afsOrder.SkuBoxMoney = 0 // 商品包装费 - afsOrder.VendorStatus = orderStatus.VendorStatus // 退货状态 - - for _, v := range *scarceGoods { - var refundFee int64 = 0 - skuDetail := tao_vegetable.GoodsScarceRefund{} - if err := json.Unmarshal([]byte(*v.Attributes), &skuDetail); err != nil { - return tao_vegetable.CallBackResultInfo(err) - } - - orderSku := &model.OrderSkuFinancial{ - Count: utils.Float64TwoInt(utils.Str2Float64(*v.RefundQuantity)), - VendorSkuID: *v.SkuCode, - SkuID: utils.Str2Int(*v.SkuCode), - Name: skuDetail.SkuName, - UserMoney: *v.RefundAmount, - PmSkuSubsidyMoney: 0, // 平台补贴商品 - VendorOrderID: orderStatus.VendorOrderID, - VendorSubOrderID: *v.OutOrderId, - } - afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney - afsOrder.Skus = append(afsOrder.Skus, orderSku) - refundFee += *v.RefundAmount - - afsOrder.SkuUserMoney += refundFee - afsOrder.RefundType = model.AfsTypePartRefund - if afsOrder != nil { - //直接就来一个新的售后单,并且还是售后完成的 - afsOrder.AfsFinishedAt = afsOrder.AfsCreatedAt - afsOrder.Flag = model.AfsOrderFlagAgreeUserRefund - err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus) - } - } - } - } default: @@ -418,66 +402,62 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(status string, msg interface{}) switch status { case tao_vegetable.OrderStatusApplyAfs: // 用户申请售后 refundData := msg.(*tao_vegetable.UserApplyRefundCallBack) - orderStatus.RefVendorOrderID = refundData.OutOrderId orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusApplyAfs, "用户申请取消") orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusApplyAfs) orderStatus.StatusTime = time.Now() orderStatus.Remark = refundData.Remarks - orderStatus.VendorOrderID = refundData.RefundId - order, _ := partner.CurOrderManager.LoadOrder2(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable) - if order != nil { - orderStatus.RefVendorOrderID = order.VendorOrderID - } + //orderStatus.VendorOrderID = refundData.RefundId + + order, _ := partner.CurOrderManager.LoadOrder2(refundData.OutOrderId, model.VendorIDTaoVegetable) + orderStatus.RefVendorOrderID = order.VendorOrderID case tao_vegetable.OrderStatusCancelAfs: // 用户取消售后 refundData := msg.(*tao_vegetable.UserCancelRefundApply) - orderStatus.RefVendorOrderID = refundData.OutOrderId orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusCancelAfs, "用户取消售后申请") orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusCancelAfs) orderStatus.StatusTime = time.Now() orderStatus.VendorOrderID = refundData.RefundId - order, _ := partner.CurOrderManager.LoadOrder2(orderStatus.RefVendorOrderID, model.VendorIDTaoVegetable) - if order != nil { - orderStatus.RefVendorOrderID = order.VendorOrderID - } + order, _ := partner.CurOrderManager.LoadOrder2(refundData.OutOrderId, model.VendorIDTaoVegetable) + orderStatus.RefVendorOrderID = order.VendorOrderID case tao_vegetable.OrderStatusOnSaleCancel: refundData := msg.(*tao_vegetable.OnSaleCancel) orderStatus.RefVendorOrderID = utils.Int64ToStr(refundData.PartCancelRequest.BizOrderId) orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusOnSaleCancel, "用户售中取消") orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusOnSaleCancel) orderStatus.StatusTime = time.Now() - //orderStatus.VendorOrderID = refundData.IdempotentId + orderStatus.VendorOrderID = utils.Int64ToStr(refundData.PartCancelRequest.SubOrders[0].BizSubOrderId) case tao_vegetable.OrderStatusRefundSuccess: // 售后成功 refundData := msg.(*tao_vegetable.RefundOrderFinish) - afsOrder, _ := partner.CurOrderManager.LoadAfsOrder(refundData.OutMainRefundId, model.VendorIDTaoVegetable) + var refundAfs *domain591.AlibabaWdkOrderRefundGetOrderSyncRefundListResult + for i := 0; i < 4; i++ { + param := &request591.AlibabaWdkOrderRefundGetRequest{ + OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), + ShopId: nil, + StoreId: utils.String2Pointer(refundData.StoreId), + RefundIds: &[]int64{utils.Str2Int64(refundData.BizSubRefundId)}, + } + refundAfs, _ = getAPI("", 0, refundData.StoreId).QueryAfsOrderDetail(param) + if refundAfs.Orders != nil { + break + } + time.Sleep(time.Second * 1) + } + orders := *refundAfs.Orders + + afsOrder, _ := partner.CurOrderManager.LoadAfsOrder(utils.Int64ToStr(*orders[0].OriginOrderId), model.VendorIDTaoVegetable) if afsOrder != nil { orderStatus.RefVendorOrderID = afsOrder.VendorOrderID orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusRefundSuccess, "用户售后退款成功") orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusRefundSuccess) orderStatus.StatusTime = time.Now() orderStatus.Remark = fmt.Sprintf("QueryTaoAfsOrderId:%s", refundData.BizSubRefundId) - orderStatus.VendorOrderID = refundData.OutMainRefundId + orderStatus.VendorOrderID = utils.Int64ToStr(*orders[0].OriginOrderId) } else { - var refundAfs *domain591.AlibabaWdkOrderRefundGetOrderSyncRefundListResult - for i := 0; i < 4; i++ { - param := &request591.AlibabaWdkOrderRefundGetRequest{ - OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), - ShopId: nil, - StoreId: utils.String2Pointer(refundData.StoreId), - RefundIds: &[]int64{utils.Str2Int64(refundData.BizSubRefundId)}, - } - refundAfs, _ = getAPI("", 0, refundData.StoreId).QueryAfsOrderDetail(param) - if refundAfs.Orders != nil { - break - } - time.Sleep(time.Second * 1) - } - orders := *refundAfs.Orders orderStatus.RefVendorOrderID = utils.Int64ToStr(*orders[0].OriginParentId) orderStatus.VendorStatus = fmt.Sprintf("%s:%s", tao_vegetable.OrderStatusRefundSuccess, "用户售中退款成功") orderStatus.Status = c.GetAfsStatusFromVendorStatus(tao_vegetable.OrderStatusRefundSuccess) orderStatus.StatusTime = time.Now() orderStatus.Remark = fmt.Sprintf("QueryTaoAfsOrderId:%s", refundData.BizSubRefundId) - orderStatus.VendorOrderID = *orders[0].OutMianOrderId + orderStatus.VendorOrderID = utils.Int64ToStr(*orders[0].OriginOrderId) taoRefundList = refundAfs.Orders } @@ -502,17 +482,18 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod db := dao.GetDB() if approveType == partner.AfsApproveTypeRefused { param := &request3156.AlibabaTclsAelophyRefundDisagreeRequest{ - RefundId: utils.String2Pointer(order.AfsOrderID), + RefundId: utils.String2Pointer(order.VendorOrderID2), RejectReason: utils.String2Pointer(reason), OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), } err = getAPI(order.VendorOrgCode, jxutils.GetSaleStoreIDFromAfsOrder(order), order.VendorStoreID).DisAgreeUserCancel(param) - //if err == nil { - // order.Status = model.AfsOrderStatusFailed - // order.VendorStatus = "老板拒绝" - // order.ReasonDesc += "," + reason - // dao.UpdateEntity(dao.GetDB(), order, "Status", "ReasonDesc", "VendorStatus") - //} + if err == nil { + order.Status = model.AfsOrderStatusFailed + order.VendorStatus = "老板拒绝" + order.Flag = model.AfsOrderFlagRefuseUserRefund + order.ReasonDesc += "," + reason + dao.UpdateEntity(dao.GetDB(), order, "Status", "ReasonDesc", "VendorStatus") + } } else if approveType == partner.AfsApproveTypeRefusedToRefundMoney { return errors.New("此平台暂时不支持") } else { @@ -523,31 +504,18 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod param := &request3156.AlibabaTclsAelophyRefundAgreeRequest{ StoreId: utils.String2Pointer(order.VendorStoreID), OutOrderId: utils.String2Pointer(orderDetail.VendorOrderID2), - RefundId: utils.String2Pointer(order.AfsOrderID), + RefundId: utils.String2Pointer(order.VendorOrderID2), OrderFrom: utils.Int64ToPointer(utils.Str2Int64(tao_vegetable.TaoVegetableChannelCode)), } - // 加载购买商品 - //sku, _ := dao.GetSimpleOrderSkus(db, order.VendorOrderID, nil) - //skuCount := 0 - //for _, v := range sku { - // skuCount += v.Count - //} - //refundSkuCount := 0 subRefundList := make([]domain3156.AlibabaTclsAelophyRefundAgreeSubrefundlist, 0, len(afsSkuOrder)) for _, v := range afsSkuOrder { subRefundList = append(subRefundList, domain3156.AlibabaTclsAelophyRefundAgreeSubrefundlist{ OutSubOrderId: utils.String2Pointer(v.VendorSubOrderID), RefundFee: utils.Int64ToPointer(v.UserMoney), }) - //refundSkuCount += v.Count } - // 全退退运费 - //if skuCount == refundSkuCount { - // subRefundList[len(subRefundList)-1].RefundFee = utils.Int64ToPointer(*subRefundList[len(subRefundList)-1].RefundFee + orderDetail.BaseFreightMoney) - //} - param.SubRefundList = &subRefundList param.AuditMemo = utils.String2Pointer(fmt.Sprintf("商户同意退款")) if reason != "" { diff --git a/business/partner/purchase/tao_vegetable/store_sku2.go b/business/partner/purchase/tao_vegetable/store_sku2.go index 2d16b1c0c..184b1f9a1 100644 --- a/business/partner/purchase/tao_vegetable/store_sku2.go +++ b/business/partner/purchase/tao_vegetable/store_sku2.go @@ -401,7 +401,7 @@ func checkNameLength(name string, weight int, uint string) string { if len(name) <= tao_vegetable.NameMaxLength { return name } - + lastName = name if strings.Contains(name, "(") { startIndex := strings.Index(name, "(") endIndex := strings.Index(name, ")") @@ -452,6 +452,11 @@ func uploadImg(api *tao_vegetable.API, imgs []string) *string { continue } body, _ := ioutil.ReadAll(resp.Body) + // 图片失效 + if strings.Contains(string(body), "Document not found") || len(body) == 0 { + continue + } + if newImg, _ := api.UploadImg(&request1475.AlibabaWdkPictureUploadRequest{ PictureCategoryId: utils.Int64ToPointer(0), Img: &body, diff --git a/controllers/cms_store.go b/controllers/cms_store.go index c1fb4c2c1..2ce5e8bd9 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -747,7 +747,7 @@ func (c *StoreController) DeletePrinterSeq() { // @Title 得到门店类别 // @Description 得到门店类别 -// @Param token header string true "认证token" +// @Param token header string false "认证token" // @Param parentID query int false "父ID" // @Param level query int false "分类等级" // @Param storeID query int true "门店ID" diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index aa350b596..01448da21 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -111,19 +111,21 @@ func (c *StoreSkuController) GetStoresSkus() { } // 获取用户权限,如果是普通用户不展示b2b相关目录,如果是门店老板或者管理则展示全部 - userAuth, err := auth2.GetTokenInfo(params.Token) - if err != nil { - return nil, "", err - } - user, total, err := dao.GetUsers(dao.GetDB(), 1, "", []string{userAuth.UserID}, nil, nil, 0, 1) - if err != nil { - return nil, "", err - } - if total != model.YES { - return nil, "", errors.New("未注册用户") - } - if user[0].Type != model.YES { - return storeSku, "", nil + userAuth, _ := auth2.GetTokenInfo(params.Token) + + var userType int8 = 0 + if userAuth != nil { + user, total, err := dao.GetUsers(dao.GetDB(), 1, "", []string{userAuth.UserID}, nil, nil, 0, 1) + if err != nil { + return nil, "", err + } + if total != model.YES { + return nil, "", errors.New("未注册用户") + } + userType = user[0].Type + if user[0].Type != model.YES { + return storeSku, "", nil + } } // 判断门店是不是b2b门店,如果是,用户必须为系统管理员(门店老板和运营人员) @@ -144,7 +146,7 @@ func (c *StoreSkuController) GetStoresSkus() { for _, v := range store { for _, s := range storeSku.SkuNames { if v.ID == s.StoreID { - if (v.BrandID == model.B2BNumberId || isMatterStore) && user[0].Type == model.YES { // 普通用户进入物料店和b2b店 + if (v.BrandID == model.B2BNumberId || isMatterStore) && (userType == model.YES || userType == model.NO) { // 普通用户进入物料店和b2b店 continue } else { result.TotalCount += len(s.Skus)