Merge branch 'jdshop' of https://e.coding.net/rosydev/jx-callback into jdshop

This commit is contained in:
richboo111
2023-07-26 15:50:07 +08:00
12 changed files with 326 additions and 250 deletions

View File

@@ -269,6 +269,10 @@ func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *m
partner.CurOrderManager.OnOrderMsg(order, fmt.Sprintf("订单[%s]被取消了,运单[%s]取消成功", order.VendorOrderID, v.VendorWaybillID), "") partner.CurOrderManager.OnOrderMsg(order, fmt.Sprintf("订单[%s]被取消了,运单[%s]取消成功", order.VendorOrderID, v.VendorWaybillID), "")
} }
} }
// 刷新订单结束时间
order.OrderFinishedAt = time.Now()
dao.UpdateEntity(db, order, "OrderFinishedAt")
//如果取消订单则要把库存加回去 //如果取消订单则要把库存加回去
if err2 == nil { if err2 == nil {
// 判断是否需要打印取消订单 // 判断是否需要打印取消订单
@@ -476,7 +480,7 @@ func FinisOrderWaybillFee(db *dao.DaoDB, order *model.GoodsOrder, bill *model.Wa
return nil return nil
} }
// 查询所有运单 // 查询所有运单
bills, err := dao.GetWaybills(db, order.VendorOrderID, nil) bills, err := dao.GetWaybills(db, order.VendorOrderID, []int64{model.VendorIDDada, model.VendorIDFengNiao, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS})
if err != nil { if err != nil {
return err return err
} }
@@ -531,8 +535,8 @@ func ResetCreateWaybillFee(db *dao.DaoDB, order *model.GoodsOrder, bill *model.W
if err := countWaybillSettleInfo(db, order, bill, store); err != nil { if err := countWaybillSettleInfo(db, order, bill, store); err != nil {
return err return err
} }
// 所有运单停止调度之后才开始退还余额 // 所有运单停止调度之后才开始退还余额(三方运单)
bills, err := dao.GetWaybills(db, order.VendorOrderID, nil) bills, err := dao.GetWaybills(db, order.VendorOrderID, []int64{model.VendorIDDada, model.VendorIDFengNiao, model.VendorIDMTPS, model.VendorIDUUPT, model.VendorIDSFPS})
if err != nil { if err != nil {
return err return err
} }

View File

@@ -2030,7 +2030,7 @@ func RrefreshMtwmVendorAct(ctx *jxcontext.Context) (err error) {
if len(actList) > 0 { if len(actList) > 0 {
for _, act := range actList { for _, act := range actList {
if act.Status > 0 { if act.Status > 0 {
//if checkActStoreSkuExist(db, storeMap.StoreID, utils.Str2Int(act.AppFoodCode), model.VendorIDMTWM, utils.Timestamp2Time(act.StartTime), utils.Timestamp2Time(act.EndTime)) { if checkActStoreSkuExist(db, storeMap.StoreID, utils.Str2Int(act.AppFoodCode), model.VendorIDMTWM, utils.Timestamp2Time(act.StartTime), utils.Timestamp2Time(act.EndTime)) {
actVendor := &model.ActMtwmVendor{ actVendor := &model.ActMtwmVendor{
StoreID: storeMap.StoreID, StoreID: storeMap.StoreID,
SkuID: utils.Str2Int(act.AppFoodCode), SkuID: utils.Str2Int(act.AppFoodCode),
@@ -2050,7 +2050,7 @@ func RrefreshMtwmVendorAct(ctx *jxcontext.Context) (err error) {
SettingType: act.SettingType, SettingType: act.SettingType,
} }
dao.CreateEntity(db, actVendor) dao.CreateEntity(db, actVendor)
//} }
} }
} }
} }
@@ -2194,6 +2194,7 @@ func GetActMtwmVendorSku(ctx *jxcontext.Context, storeID int, keyword string, ac
} }
func DeleteActStoreSkuVendor(ctx *jxcontext.Context, db *dao.DaoDB, actStoreSkuParam []*ActStoreSkuParam) (err error) { func DeleteActStoreSkuVendor(ctx *jxcontext.Context, db *dao.DaoDB, actStoreSkuParam []*ActStoreSkuParam) (err error) {
return fmt.Errorf("暂不支持直接取消平台活动,开发中……") return fmt.Errorf("暂不支持直接取消平台活动,开发中……")
} }

View File

@@ -1173,8 +1173,6 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, upcs []str
sql += " , t4.unit_price DESC LIMIT 99" sql += " , t4.unit_price DESC LIMIT 99"
} }
var tmpList []*tGetStoresSkusInfo var tmpList []*tGetStoresSkusInfo
globals.SugarLogger.Debugf("GetStoresSkusNew sql=%s,sqlParams=%s", sql, sqlParams)
if err = dao.GetRowsTx(txDB, &tmpList, sql, sqlParams...); err != nil { if err = dao.GetRowsTx(txDB, &tmpList, sql, sqlParams...); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return nil, err return nil, err
@@ -1184,7 +1182,6 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, upcs []str
} }
dao.Commit(db, txDB) dao.Commit(db, txDB)
storeNameMap := make(map[int64]*dao.StoreSkuNameExt) storeNameMap := make(map[int64]*dao.StoreSkuNameExt)
globals.SugarLogger.Debugf("GetStoresSkusNew tmpList=%s", utils.Format4Output(tmpList, false))
for _, v := range tmpList { for _, v := range tmpList {
var storeName *dao.StoreSkuNameExt var storeName *dao.StoreSkuNameExt
index := jxutils.Combine2Int(v.StoreID, v.ID) index := jxutils.Combine2Int(v.StoreID, v.ID)

View File

@@ -279,11 +279,153 @@ func Init() {
// syncStoreSkuTiktok() // syncStoreSkuTiktok()
// }, []string{"13:00:00"}) // }, []string{"13:00:00"})
//} //}
// 抖音更新门店商品 ,接口收费暂不使用 // 淘鲜达更新门店商品 ,接口收费暂不使用
if beego.BConfig.RunMode != "jxgy" { if beego.BConfig.RunMode != "jxgy" {
ScheduleTimerFunc("RefreshSyncSkuList_tao", func() { ScheduleTimerFunc("RefreshSyncSkuList_tao", func() {
syncStoreSkuTao() var beijin = []int{
}, []string{"13:00:00"}) //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,
}
syncStoreSkuTao(beijin)
}, []string{
"00:30:00",
"02:30:00",
"04:30:00",
"07:30:00",
"09:00:00",
"10:40:00",
"12:55:00",
"13:30:00",
"14:30:00",
"15:30:00",
"16:30:00",
"17:30:00",
"18:40:00",
"20:30:00",
"22:30:00",
})
} }
// 刷新抖音门店token // 刷新抖音门店token
@@ -640,8 +782,10 @@ func syncStoreSkuTiktok() {
tasksch.HandleTask(task, nil, true).Run() tasksch.HandleTask(task, nil, true).Run()
} }
var syncLen = 0
// syncStoreSkuTao 同步商品到淘鲜达 // syncStoreSkuTao 同步商品到淘鲜达
func syncStoreSkuTao() { func syncStoreSkuTao(beijin []int) {
syncFlag := 0 syncFlag := 0
task := tasksch.NewParallelTask("同步京西商品到淘鲜达平台,方案二使用", nil, jxcontext.AdminCtx, task := tasksch.NewParallelTask("同步京西商品到淘鲜达平台,方案二使用", nil, jxcontext.AdminCtx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
@@ -651,18 +795,19 @@ func syncStoreSkuTao() {
switch step { switch step {
case 0: case 0:
if beego.BConfig.RunMode != "jxgy" { if beego.BConfig.RunMode != "jxgy" {
_, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{model.VendorIDTaoVegetable}, nil, false, nil, nil, syncFlag, true, true) 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)
errList.AddErr(err) errList.AddErr(err)
} }
case 1: case 1:
errList.AddErr(err) errList.AddErr(err)
SaveImportantTaskID(TaskNameSyncStoreSku, SpecialTaskID) SaveImportantTaskID(TaskNameSyncStoreSku, SpecialTaskID)
} }
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "2452A93EEB9111EC9B06525400E86DC0", "淘宝同步商品", utils.Format4Output(errList, false))
err = errList.GetErrListAsOne() err = errList.GetErrListAsOne()
return retVal, err return retVal, err
}, []int{0, 1}) }, []int{0, 1})
tasksch.HandleTask(task, nil, true).Run() tasksch.HandleTask(task, nil, true).Run()
syncLen += 5
} }
func doDailyWork2() { func doDailyWork2() {

View File

@@ -86,7 +86,7 @@ func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int,
} }
func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) { func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) {
err = api.FnAPI.ComplaintRider(bill.VendorOrderID, complaintReson2FnResonMap[resonID]) err = api.FnAPI.ComplaintRider(bill.VendorOrderID, bill.VendorWaybillID, complaintReson2FnResonMap[resonID], resonContent)
return err return err
} }

View File

@@ -523,14 +523,14 @@ func (c *DeliveryHandler) GetDeliverLiquidatedDamages(orderId string, deliverId
return 0, err return 0, err
} }
isMerchantCancel := false //isMerchantCancel := false
// 获取发起取消的人员 //// 获取发起取消的人员
for _, v := range statusList { //for _, v := range statusList {
if v.VendorStatus == utils.Int64ToStr(model.WaybillStatusCancel) { // if v.VendorStatus == utils.Int64ToStr(model.WaybillStatusCancel) {
isMerchantCancel = true // 商户取消 // isMerchantCancel = true // 商户取消
break // break
} // }
} //}
bill, err := partner.CurOrderManager.LoadWaybill(deliverId, model.VendorIDMTPS) bill, err := partner.CurOrderManager.LoadWaybill(deliverId, model.VendorIDMTPS)
if err != nil { if err != nil {
@@ -549,17 +549,17 @@ func (c *DeliveryHandler) GetDeliverLiquidatedDamages(orderId string, deliverId
} }
// 到店 // 到店
if statusList[i].VendorStatus == utils.Int2Str(mtpsapi.OrderStatusPickedUp) { if statusList[i].VendorStatus == utils.Int2Str(mtpsapi.OrderStatusPickedUp) {
if isMerchantCancel { //if isMerchantCancel {
return bill.DesiredFee, nil return bill.DesiredFee, nil
} //}
return 0, nil //return 0, nil
} }
// 接单 // 接单
if statusList[i].VendorStatus == utils.Int2Str(mtpsapi.OrderStatusAccepted) { if statusList[i].VendorStatus == utils.Int2Str(mtpsapi.OrderStatusAccepted) {
if isMerchantCancel { //if isMerchantCancel {
return 200, nil return 200, nil
} //}
return 0, nil //return 0, nil
} }
// 待调度 // 待调度
if statusList[i].VendorStatus == utils.Int2Str(mtpsapi.OrderStatusWaitingForSchedule) { if statusList[i].VendorStatus == utils.Int2Str(mtpsapi.OrderStatusWaitingForSchedule) {

View File

@@ -96,14 +96,14 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
continue continue
} }
if (v.WaybillVendorID == model.YES || v.WaybillVendorID == -1) && v.VendorID == model.VendorIDMTWM { //if (v.WaybillVendorID == model.YES || v.WaybillVendorID == -1) && v.VendorID == model.VendorIDMTWM {
continue // continue
} //}
if orderId == "" { // 订单id为空是,是定时轮询操作,不做此状态 if orderId == "" { // 订单id为空是,是定时轮询操作,不做此状态
waybillList, _ := dao.GetWaybills(dao.GetDB(), v.VendorOrderID, nil) waybillList, _ := dao.GetWaybills(dao.GetDB(), v.VendorOrderID, nil)
if len(waybillList) > 0 && waybillList[0].Status > model.WaybillStatusEndBegin { if len(waybillList) > 0 && waybillList[0].Status > model.WaybillStatusEndBegin {
globals.SugarLogger.Debugf("订单物流状态结束,不在推送订单状态:orderID[%s],wayBillId[%s]", v.VendorOrderID, waybillList[0].VendorWaybillID) globals.SugarLogger.Debug("订单物流状态结束,不在推送订单状态:orderID[%s],wayBillId[%s]", v.VendorOrderID, waybillList[0].VendorWaybillID)
continue continue
} }
} }
@@ -409,7 +409,14 @@ func UpdateFakeWayBillToTiktok() {
// 设置骑手和下一状态时间 // 设置骑手和下一状态时间
makeRiderInfo(fakeWayBill[i], riderInfo) makeRiderInfo(fakeWayBill[i], riderInfo)
if riderInfo.CourierName == "" && fakeWayBill[i].CourierName != "" {
riderInfo.CourierName = fakeWayBill[i].CourierName
riderInfo.CourierPhone = fakeWayBill[i].CourierMobile
}
if riderInfo.CourierName == "" && fakeWayBill[i].CourierName == "" {
riderInfo.CourierName = "石锋"
riderInfo.CourierPhone = "18048531223"
}
if riderInfo.LogisticsContext != model.RiderGetOrderDeliverFailed && riderInfo.LogisticsContext != model.RiderGetOrderDeliverOther && riderInfo.LogisticsContext != model.RiderWaitRider { if riderInfo.LogisticsContext != model.RiderGetOrderDeliverFailed && riderInfo.LogisticsContext != model.RiderGetOrderDeliverOther && riderInfo.LogisticsContext != model.RiderWaitRider {
riderInfo.LogisticsContext = fmt.Sprintf(riderInfo.LogisticsContext, riderInfo.CourierName, riderInfo.CourierPhone) riderInfo.LogisticsContext = fmt.Sprintf(riderInfo.LogisticsContext, riderInfo.CourierName, riderInfo.CourierPhone)
} }
@@ -452,7 +459,7 @@ func UpdateFakeWayBillToTiktok() {
globals.SugarLogger.Debugf("UPDATA goods_order Err :%s", err.Error()) globals.SugarLogger.Debugf("UPDATA goods_order Err :%s", err.Error())
} }
// 饿百订单推送订单送达 // 饿百订单推送订单送达
if fakeWayBill[i].OrderVendorID == model.VendorIDEBAI || fakeWayBill[i].OrderVendorID == model.VendorIDMTWM { if fakeWayBill[i].OrderVendorID == model.VendorIDEBAI || fakeWayBill[i].OrderVendorID == model.VendorIDTaoVegetable || fakeWayBill[i].OrderVendorID == model.VendorIDMTWM {
if err := handler.Swtich2SelfDelivered(order, "JingXiAdmin"); err != nil { if err := handler.Swtich2SelfDelivered(order, "JingXiAdmin"); err != nil {
globals.SugarLogger.Errorf("Swtich2SelfDelivered err := %v", err) globals.SugarLogger.Errorf("Swtich2SelfDelivered err := %v", err)
} }

View File

@@ -399,7 +399,7 @@ func (p *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s
err = nil err = nil
case ebaiapi.WaybillStatusDeliveryCancled: case ebaiapi.WaybillStatusDeliveryCancled:
p.trySyncCancelStatus(order.VendorOrderID) p.trySyncCancelStatus(order.VendorOrderID)
case ebaiapi.WaybillStatusNew, ebaiapi.WaybillStatusRequestDelivery, ebaiapi.WaybillStatusWait4Courier: case ebaiapi.WaybillStatusNew, ebaiapi.WaybillStatusEvent, ebaiapi.WaybillStatusRequestDelivery, ebaiapi.WaybillStatusWait4Courier:
err = api.EbaiAPI.OrderCancelDelivery(order.VendorOrderID) // 取消呼叫众包骑手 err = api.EbaiAPI.OrderCancelDelivery(order.VendorOrderID) // 取消呼叫众包骑手
case ebaiapi.WaybillStatusCourierAccepted: case ebaiapi.WaybillStatusCourierAccepted:
err = errors.New("骑手已接单,无法转自送") err = errors.New("骑手已接单,无法转自送")

View File

@@ -132,17 +132,20 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
// 渠道活动 // 渠道活动
if v.ChannelActivityId != nil { if v.ChannelActivityId != nil {
activityId = append(activityId, utils.Str2Int64WithDefault(*v.ChannelActivityId, 999)) activityId = append(activityId, utils.Str2Int64WithDefault(*v.ChannelActivityId, 999))
activityName = append(activityName, *v.ChannelActivityId+":"+*v.ActivityName) //activityName = append(activityName, *v.ChannelActivityId+":"+*v.ActivityName)
activityName = append(activityName, *v.ChannelActivityId)
} }
// 业务活动 // 业务活动
if v.BizActivityId != nil { if v.BizActivityId != nil {
activityId = append(activityId, utils.Str2Int64WithDefault(*v.BizActivityId, 999)) activityId = append(activityId, utils.Str2Int64WithDefault(*v.BizActivityId, 999))
activityName = append(activityName, *v.BizActivityId+":"+*v.ActivityName) //activityName = append(activityName, *v.BizActivityId+":"+*v.ActivityName)
activityName = append(activityName, *v.BizActivityId)
} }
// 商家erp活动 // 商家erp活动
if v.MerchantActivityId != nil { if v.MerchantActivityId != nil {
activityId = append(activityId, utils.Str2Int64WithDefault(*v.MerchantActivityId, 999)) activityId = append(activityId, utils.Str2Int64WithDefault(*v.MerchantActivityId, 999))
activityName = append(activityName, *v.MerchantActivityId+":"+*v.ActivityName) //activityName = append(activityName, *v.MerchantActivityId+":"+*v.ActivityName)
activityName = append(activityName, *v.MerchantActivityId)
} }
} }
} }
@@ -189,17 +192,6 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
} }
// 抖音订单手机号和收货地址是否同城(虚拟号,无法获取到正确地址) // 抖音订单手机号和收货地址是否同城(虚拟号,无法获取到正确地址)
order.PhoneAscription = model.PhoneAscriptionAddressNo + "-" + "归属信息不匹配:" + "虚拟电话号码" order.PhoneAscription = model.PhoneAscriptionAddressNo + "-" + "归属信息不匹配:" + "虚拟电话号码"
//ascription, err := ascription_place.Find(order.ConsigneeMobile)
//if err != nil {
// order.PhoneAscription = model.PhoneAscriptionAddressNo + "-" + err.Error()
// err = nil
//} else {
// if strings.Contains(order.ConsigneeAddress, ascription.Province) && strings.Contains(order.ConsigneeAddress, ascription.City) {
// order.PhoneAscription = model.PhoneAscriptionAddressYes + "-" + ascription.Province + ascription.City
// } else {
// order.PhoneAscription = model.PhoneAscriptionAddressNo + "-" + "归属信息不匹配:" + ascription.Province + ascription.City
// }
//}
// 本地获取订单记录 // 本地获取订单记录
orderSeq, _ := dao.GetVendorOrderNumber(dao.GetDB(), model.VendorIDTaoVegetable, order.VendorStoreID) orderSeq, _ := dao.GetVendorOrderNumber(dao.GetDB(), model.VendorIDTaoVegetable, order.VendorStoreID)
@@ -215,7 +207,6 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
order.StoreName = "未获取到" // 真实门店名称 order.StoreName = "未获取到" // 真实门店名称
} }
globals.SugarLogger.Debugf("=====order : %s", utils.Format4Output(order, false))
return order, orderMap, err return order, orderMap, err
} }

View File

@@ -71,10 +71,10 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
var err error var err error
var db = dao.GetDB() var db = dao.GetDB()
orderStatus, scarceGoods := c.callbackAfsMsg2Status(status, msg) orderStatus, scarceGoods := c.callbackAfsMsg2Status(status, msg)
// 用户取消售后
switch status { switch status {
case tao_vegetable.OrderStatusApplyAfs: case tao_vegetable.OrderStatusApplyAfs:
refundData := msg.(*tao_vegetable.UserApplyRefundCallBack) refundData := msg.(*tao_vegetable.UserApplyRefundCallBack)
globals.SugarLogger.Debugf("================OrderStatusApplyAfs : %s", utils.Format4Output(msg, false))
var afsOrder *model.AfsOrder var afsOrder *model.AfsOrder
var api = getAPI("", 0, refundData.StoreId) var api = getAPI("", 0, refundData.StoreId)
@@ -287,14 +287,48 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
case tao_vegetable.OrderStatusRefundSuccess: case tao_vegetable.OrderStatusRefundSuccess:
// 用户退款成功回调,缺货拣货时,送达回触发.此时并没有售后单 // 用户退款成功回调,缺货拣货时,送达回触发.此时并没有售后单
if scarceGoods != nil { if scarceGoods != nil {
var afsOrder *model.AfsOrder
refundSuccess := msg.(*tao_vegetable.RefundOrderFinish) refundSuccess := msg.(*tao_vegetable.RefundOrderFinish)
var afsOrder *model.AfsOrder
var api = getAPI("", 0, refundSuccess.StoreId) 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,
StoreId: utils.String2Pointer(refundSuccess.StoreId),
RefundIds: &[]int64{utils.Str2Int64(refundSuccess.BizSubRefundId)},
})
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
}
}
}
}
// 本地已经存在了售后记录,直接修改售后状态,否则创建售后记录
if !isCreate {
for afsOrderId, afsMoney := range outMainRefundIds {
afs, _ := partner.CurOrderManager.LoadAfsOrder(afsOrderId, model.VendorIDTaoVegetable)
afs.VendorOrderID2 = refundSuccess.BizSubRefundId
afs.AfsFinishedAt = time.Now()
afs.Status = model.AfsOrderStatusFinished
afs.AfsTotalShopMoney = afsMoney
dao.UpdateEntity(db, afs, "VendorOrderID2", "AfsFinishedAt", "Status", "AfsTotalShopMoney")
}
} else {
afsOrder = &model.AfsOrder{ afsOrder = &model.AfsOrder{
VendorID: model.VendorIDTaoVegetable, VendorID: model.VendorIDTaoVegetable,
AfsOrderID: refundSuccess.OutMainRefundId, AfsOrderID: refundSuccess.OutMainRefundId,
VendorOrderID: orderStatus.RefVendorOrderID, VendorOrderID: orderStatus.RefVendorOrderID,
VendorOrderID2: refundSuccess.BizSubRefundId,
VendorStoreID: refundSuccess.StoreId, VendorStoreID: refundSuccess.StoreId,
StoreID: 0, StoreID: 0,
AfsCreatedAt: orderStatus.StatusTime, AfsCreatedAt: orderStatus.StatusTime,
@@ -344,6 +378,8 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
} }
} }
}
default: default:
} }

View File

@@ -209,7 +209,6 @@ func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, v
} }
func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) { func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
globals.SugarLogger.Debugf("len CreateStoreSkus := %d", len(storeSkuList))
failedList, err = p.createOrUpdateStoreSkus(ctx, storeID, vendorStoreID, storeSkuList, true) failedList, err = p.createOrUpdateStoreSkus(ctx, storeID, vendorStoreID, storeSkuList, true)
return failedList, err return failedList, err
} }
@@ -236,39 +235,26 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
func UpdateTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSyncInfo, vendorStoreID string, storeID int, syncType string) (failedList []*partner.StoreSkuInfoWithErr, err error) { func UpdateTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSyncInfo, vendorStoreID string, storeID int, syncType string) (failedList []*partner.StoreSkuInfoWithErr, err error) {
param := &request585.AlibabaWdkSkuUpdateRequest{} param := &request585.AlibabaWdkSkuUpdateRequest{}
updateSkuList := make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0) updateSkuList := make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
//totalCount := len(storeSkuList)
for _, v := range storeSkuList { for _, v := range storeSkuList {
price := utils.String2Pointer(utils.Float64ToStr(float64(v.VendorPrice) / float64(100))) price := utils.String2Pointer(utils.Float64ToStr(float64(v.VendorPrice) / float64(100)))
updateSku := domain585.AlibabaWdkSkuUpdateSkuDo{ updateSku := domain585.AlibabaWdkSkuUpdateSkuDo{
OuCode: utils.String2Pointer(vendorStoreID), OuCode: utils.String2Pointer(vendorStoreID),
SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)), SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)),
SkuName: utils.String2Pointer(checkNameLength(v.SkuName)), SkuName: utils.String2Pointer(checkNameLength(v.SkuName, v.Weight, v.Unit)),
MemberPrice: price,
SkuPrice: price, // 优先使用skuPrice 靠后SalePrice SkuPrice: price, // 优先使用skuPrice 靠后SalePrice
SuggestedPrice: price, // 优先使用skuPrice 靠后SalePrice
CategoryCode: utils.String2Pointer(utils.Int2Str(v.CategoryID)), CategoryCode: utils.String2Pointer(utils.Int2Str(v.CategoryID)),
MerchantCatCode: utils.String2Pointer(v.VendorCatID), // 优先使用 靠后 category_code MerchantCatCode: utils.String2Pointer(v.VendorCatID), // 优先使用 靠后 category_code
CleanSkuMemberPrice: utils.Int64ToPointer(model.YES),
SubTitle: utils.String2Pointer("小时达"),
} }
if v.MinOrderCount <= model.YES { if v.MinOrderCount <= model.YES {
updateSku.PurchaseQuantity = utils.Int64ToPointer(model.YES) // 起购单位 updateSku.PurchaseQuantity = utils.Int64ToPointer(model.YES) // 起购单位
} else { } else {
updateSku.PurchaseQuantity = utils.Int64ToPointer(int64(v.MinOrderCount)) // 起购单位 updateSku.PurchaseQuantity = utils.Int64ToPointer(int64(v.MinOrderCount)) // 起购单位
} }
updateSku.SkuPicUrls = uploadImg(api, []string{v.Img, v.Img2, v.Img3, v.Img4, v.Img5, v.DescImg}) // 修改暂时不修改图片,保持效率
//updateSku.SkuPicUrls = uploadImg(api, []string{v.Img, v.Img2, v.Img3, v.Img4, v.Img5, v.DescImg})
updateSkuList = append(updateSkuList, updateSku) updateSkuList = append(updateSkuList, updateSku)
//if (index+model.YES)%tao_vegetable.MAXHandleCount == model.NO || index+model.YES == totalCount {
// param.ParamList = &updateSkuList
// result, err := api.UpdateStoreSku(param)
// if err != nil {
// globals.SugarLogger.Debugf("UpdateStoreSku Tao Vegetable err : %s", err.Error())
// }
// // 记录失败的同步数据
// createFailedList, _ := SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], syncType)
// failedList = append(failedList, createFailedList...)
// // 记录同步成功的数据
// param.ParamList = nil
// updateSkuList = make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
//}
} }
param.ParamList = &updateSkuList param.ParamList = &updateSkuList
@@ -286,10 +272,8 @@ func UpdateTaoVegetable(api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSync
func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSyncInfo, vendorStoreID string, storeID int, syncType string) (failedList []*partner.StoreSkuInfoWithErr, err error) { func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSkuList []*dao.StoreSkuSyncInfo, vendorStoreID string, storeID int, syncType string) (failedList []*partner.StoreSkuInfoWithErr, err error) {
createPram := &request585.AlibabaWdkSkuAddRequest{} createPram := &request585.AlibabaWdkSkuAddRequest{}
param := make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0) param := make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0)
//totalCount := len(storeSkuList)
vendorSkuIdMap := make(map[string]string, 0) vendorSkuIdMap := make(map[string]string, 0)
globals.SugarLogger.Debugf("storeSkuList := %d", len(storeSkuList))
for _, storeSku := range storeSkuList { for _, storeSku := range storeSkuList {
price := utils.String2Pointer(utils.Float64ToStr(utils.Int64ToFloat64(storeSku.VendorPrice) / utils.Int64ToFloat64(100))) price := utils.String2Pointer(utils.Float64ToStr(utils.Int64ToFloat64(storeSku.VendorPrice) / utils.Int64ToFloat64(100)))
sku := domain585.AlibabaWdkSkuAddSkuDo{ sku := domain585.AlibabaWdkSkuAddSkuDo{
@@ -309,13 +293,12 @@ func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSku
LifeStatus: utils.String2Pointer(tao_vegetable.CreateSkuLeafStatus), LifeStatus: utils.String2Pointer(tao_vegetable.CreateSkuLeafStatus),
SaleSpec: utils.String2Pointer(fmt.Sprintf("%d %s*1%s", storeSku.Weight, "g", storeSku.Unit)), SaleSpec: utils.String2Pointer(fmt.Sprintf("%d %s*1%s", storeSku.Weight, "g", storeSku.Unit)),
StepQuantity: utils.Int64ToPointer(model.YES), // 每次购买至少增加一个购买单位 StepQuantity: utils.Int64ToPointer(model.YES), // 每次购买至少增加一个购买单位
SubTitle: utils.String2Pointer("同城包邮"),
SubTitle1: utils.String2Pointer("一小时速达"),
OnlineSaleFlag: utils.Int64ToPointer(tao_vegetable.CreateOnlineSaleFlag), // 门店控制是否可见 OnlineSaleFlag: utils.Int64ToPointer(tao_vegetable.CreateOnlineSaleFlag), // 门店控制是否可见
SubTitle: utils.String2Pointer("小时达"),
SubTitle1: utils.String2Pointer("一小时速达"),
//DeliveryUnit: utils.String2Pointer(storeSku.Unit), //DeliveryUnit: utils.String2Pointer(storeSku.Unit),
DeliveryUnit: utils.String2Pointer("份"), DeliveryUnit: utils.String2Pointer("份"),
DeliverySpec: utils.String2Pointer(utils.Int2Str(model.YES)), DeliverySpec: utils.String2Pointer(utils.Int2Str(model.YES)),
MemberPrice: price,
Storage: utils.String2Pointer(tao_vegetable.CreateStorage), Storage: utils.String2Pointer(tao_vegetable.CreateStorage),
PickFloatRate: utils.String2Pointer(utils.Int2Str(model.NO)), // ? 0 PickFloatRate: utils.String2Pointer(utils.Int2Str(model.NO)), // ? 0
ForbidReceiveDays: utils.Int64ToPointer(tao_vegetable.CreateShelfLife), // ? 7 ForbidReceiveDays: utils.Int64ToPointer(tao_vegetable.CreateShelfLife), // ? 7
@@ -341,7 +324,7 @@ func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSku
if sku.SkuPicUrls == nil { if sku.SkuPicUrls == nil {
continue continue
} }
sku.SkuName = utils.String2Pointer(checkNameLength(storeSku.Name)) sku.SkuName = utils.String2Pointer(checkNameLength(storeSku.Name, storeSku.Weight, storeSku.Unit))
if storeSku.MinOrderCount <= model.YES { if storeSku.MinOrderCount <= model.YES {
sku.PurchaseQuantity = utils.Int64ToPointer(model.YES) // 起购单位 sku.PurchaseQuantity = utils.Int64ToPointer(model.YES) // 起购单位
@@ -370,28 +353,14 @@ func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSku
}, },
} }
param = append(param, sku) param = append(param, sku)
//if (index+model.YES)%tao_vegetable.MAXHandleCount == model.NO || index+model.YES == totalCount {
// createPram.ParamList = &param
// result, err := api.AddStoreSku(createPram)
// if err != nil {
// globals.SugarLogger.Debugf("创建淘鲜达商品异常:%s", err.Error())
// }
// // 记录失败的同步数据
// failedList2, vendorSkuIdMap2 := SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], syncType)
// failedList = append(failedList, failedList2...)
// for k, v := range vendorSkuIdMap2 {
// vendorSkuIdMap[k] = v
// }
//
// createPram.ParamList = nil
// param = make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0)
//}
} }
createPram.ParamList = &param createPram.ParamList = &param
result, err := api.AddStoreSku(createPram) result, err := api.AddStoreSku(createPram)
if err != nil { if err != nil {
globals.SugarLogger.Debugf("创建淘鲜达商品异常:%s", err.Error()) globals.SugarLogger.Debugf("创建淘鲜达商品异常:%s", err.Error())
} }
//ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "2452A93EEB9111EC9B06525400E86DC0", fmt.Sprintf("定时创建商品[门店id:%d],出入商品个数[%d]", storeID, len(storeSkuList)), utils.Format4Output(result, false))
// 记录失败的同步数据 // 记录失败的同步数据
failedList2, vendorSkuIdMap2 := SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], syncType) failedList2, vendorSkuIdMap2 := SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], syncType)
failedList = append(failedList, failedList2...) failedList = append(failedList, failedList2...)
@@ -411,13 +380,14 @@ func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSku
} }
failedListStock := updateStoreSkusStockByCreate(ctx, api, storeID, vendorStoreID, successSku) failedListStock := updateStoreSkusStockByCreate(ctx, api, storeID, vendorStoreID, successSku)
failedList = append(failedList, failedListStock...) failedList = append(failedList, failedListStock...)
globals.SugarLogger.Debugf("failedList := %s", utils.Format4Output(failedList, false))
globals.SugarLogger.Debugf("storeSkuList := %s", utils.Format4Output(storeSkuList, false))
return failedList, nil return failedList, nil
} }
func checkNameLength(name string) string { func checkNameLength(name string, weight int, uint string) string {
lastName := "" lastName := ""
if !strings.Contains(name, uint) {
name = fmt.Sprintf("%s %d/%s", name, weight, uint)
}
if strings.Contains(name, "其它") { if strings.Contains(name, "其它") {
name = strings.ReplaceAll(name, "其它", "") name = strings.ReplaceAll(name, "其它", "")
} }
@@ -465,7 +435,7 @@ func checkNameLength(name string) string {
return lastName return lastName
} }
} }
return name[0:60] return lastName[0:60]
} }
func uploadImg(api *tao_vegetable.API, imgs []string) *string { func uploadImg(api *tao_vegetable.API, imgs []string) *string {
@@ -510,19 +480,6 @@ func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, v
OnlineSaleFlag: utils.Int64ToPointer(tao_vegetable.CreateOfflineSaleFlag), OnlineSaleFlag: utils.Int64ToPointer(tao_vegetable.CreateOfflineSaleFlag),
} }
updateSkuList = append(updateSkuList, updateSku) updateSkuList = append(updateSkuList, updateSku)
//if (index+model.YES)%tao_vegetable.MAXHandleCount == model.NO || (index+1) == len(storeSkuList) {
// param.ParamList = &updateSkuList
// result, err := api.UpdateStoreSku(param)
// if err != nil {
// globals.SugarLogger.Debugf("UpdateStoreSku Tao Vegetable err : %s", err.Error())
// }
// // 记录失败的同步数据
// createFailedList, _ := SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], "删除商品(暂无接口,下架处理)")
// failedList = append(failedList, createFailedList...)
// param.ParamList = nil
// updateSkuList = make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
//}
} }
param.ParamList = &updateSkuList param.ParamList = &updateSkuList
@@ -534,28 +491,6 @@ func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, v
createFailedList, _ := SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], "删除商品(暂无接口,下架处理)") createFailedList, _ := SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], "删除商品(暂无接口,下架处理)")
failedList = append(failedList, createFailedList...) failedList = append(failedList, createFailedList...)
return failedList, err return failedList, err
//param := &request.AlibabaAxChannelSkuStatusUpdateRequest{ChannelSkuUpdateStatusReq: &domain.AlibabaAxChannelSkuStatusUpdateChannelSkuUpdateStatusReq{
// StoreId: utils.String2Pointer(vendorStoreID),
// ChannelCode: utils.String2Pointer(tao_vegetable.TaoVegetableChannelCode),
// OnlineSaleFlag: utils.Int64ToPointer(tao_vegetable.CreateIsOnline),
//}}
//var updateOffShelf = make([]tao_vegetable.VegetableResultList, 0, len(storeSkuList))
//for _, v := range storeSkuList {
// param.ChannelSkuUpdateStatusReq.SkuCode = utils.String2Pointer(utils.Int2Str(v.SkuID))
// // StoreSkuUpdateOffShelf 这个接口暂时有问题使用更新接口上下架
// if err = getAPI(getStoreVendorOrgCode(storeID), storeID, vendorStoreID).StoreSkuUpdateOffShelf(param); err != nil {
// updateOffShelf = append(updateOffShelf, tao_vegetable.VegetableResultList{
// ProductID: v.VendorSkuID,
// SkuID: utils.Int2Str(v.SkuID),
// ErrMsg: err.Error(),
// })
// }
//}
//failedList, _ = SelectStoreSkuListByFoodList(storeSkuList, updateOffShelf, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], "批量删除商品(暂时下架,无删除接口)")
//if len(failedList) > 0 {
// err = nil
//}
//return failedList, err
} }
// UpdateStoreSkusStatus 批量更新商品上下架状态 // UpdateStoreSkusStatus 批量更新商品上下架状态
@@ -569,21 +504,10 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
OuCode: utils.String2Pointer(vendorStoreID), OuCode: utils.String2Pointer(vendorStoreID),
SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)), SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)),
OnlineSaleFlag: utils.Int64ToPointer(onlineStatus), OnlineSaleFlag: utils.Int64ToPointer(onlineStatus),
SubTitle: utils.String2Pointer("小时达"),
//CleanSkuMemberPrice: utils.Int64ToPointer(model.YES),
} }
updateSkuList = append(updateSkuList, updateSku) updateSkuList = append(updateSkuList, updateSku)
//if (index+model.YES)%tao_vegetable.MAXHandleCount == model.NO || (index+1) == len(storeSkuList) {
// param.ParamList = &updateSkuList
// result, err := api.UpdateStoreSku(param)
// if err != nil {
// globals.SugarLogger.Debugf("UpdateStoreSku Tao Vegetable err : %s", err.Error())
// }
// // 记录失败的同步数据
// createFailedList, _ := SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], "批量更新商品上下架")
// failedList = append(failedList, createFailedList...)
// param.ParamList = nil
// updateSkuList = make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
//}
} }
param.ParamList = &updateSkuList param.ParamList = &updateSkuList
@@ -608,23 +532,9 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg
SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)), SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)),
SkuPrice: price, SkuPrice: price,
CleanSkuMemberPrice: utils.Int64ToPointer(model.YES), CleanSkuMemberPrice: utils.Int64ToPointer(model.YES),
SuggestedPrice: price, SubTitle: utils.String2Pointer("小时达"),
MemberPrice: price,
} }
updateSkuList = append(updateSkuList, updateSku) updateSkuList = append(updateSkuList, updateSku)
//if (index+model.YES)%tao_vegetable.MAXHandleCount == model.NO || (index+1) == len(storeSkuList) {
// param.ParamList = &updateSkuList
// result, err := api.UpdateStoreSku(param)
// if err != nil {
// globals.SugarLogger.Debugf("UpdateStoreSku Tao Vegetable err : %s", err.Error())
// }
// // 记录失败的同步数据
// createFailedList, _ := SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], "修改商品价格")
// failedList = append(failedList, createFailedList...)
// param.ParamList = nil
// updateSkuList = make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
//}
} }
param.ParamList = &updateSkuList param.ParamList = &updateSkuList
result, err := api.UpdateStoreSku(param) result, err := api.UpdateStoreSku(param)
@@ -926,21 +836,6 @@ func (p *PurchaseHandler) UpdateStoreSkusSpecTag(ctx *jxcontext.Context, vendorO
} }
updateSkuList = append(updateSkuList, updateSku) updateSkuList = append(updateSkuList, updateSku)
//if (index+model.YES)%tao_vegetable.MAXHandleCount == model.NO || (index+1) == len(storeSkuList) {
// param.ParamList = &updateSkuList
// result, err := api.UpdateStoreSku(param)
// if err != nil {
// globals.SugarLogger.Debugf("UpdateStoreSku Tao Vegetable err : %s", err.Error())
// }
// // 记录失败的同步数据
// for _, v := range *result {
// if v.ErrMsg != "" {
// errList = append(errList, v.ErrMsg)
// }
// }
// param.ParamList = nil
// updateSkuList = make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
//}
} }
param.ParamList = &updateSkuList param.ParamList = &updateSkuList
result, err := api.UpdateStoreSku(param) result, err := api.UpdateStoreSku(param)