Merge branch 'jdshop' of https://e.coding.net/rosydev/jx-callback into jdshop
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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"})
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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 自配送订单配送中
|
||||
|
||||
@@ -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 != "" {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user