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), "")
}
}
// 刷新订单结束时间
order.OrderFinishedAt = time.Now()
dao.UpdateEntity(db, order, "OrderFinishedAt")
//如果取消订单则要把库存加回去
if err2 == nil {
// 判断是否需要打印取消订单
@@ -476,7 +480,7 @@ func FinisOrderWaybillFee(db *dao.DaoDB, order *model.GoodsOrder, bill *model.Wa
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 {
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 {
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 {
return err
}

View File

@@ -2030,27 +2030,27 @@ func RrefreshMtwmVendorAct(ctx *jxcontext.Context) (err error) {
if len(actList) > 0 {
for _, act := range actList {
if act.Status > 0 {
//if checkActStoreSkuExist(db, storeMap.StoreID, utils.Str2Int(act.AppFoodCode), model.VendorIDMTWM, utils.Timestamp2Time(act.StartTime), utils.Timestamp2Time(act.EndTime)) {
actVendor := &model.ActMtwmVendor{
StoreID: storeMap.StoreID,
SkuID: utils.Str2Int(act.AppFoodCode),
VendorStoreID: storeMap.VendorStoreID,
ActType: v,
BeginAt: utils.Timestamp2Time(act.StartTime),
EndAt: utils.Timestamp2Time(act.EndTime),
SkuName: act.Name,
OriginPrice: act.OriginalPrice,
ActPrice: act.ActPrice,
DiscountCoefficient: act.DiscountCoefficient,
Status: act.Status,
ItemID: utils.Int64ToStr(act.ItemID),
OrderLimit: act.OrderLimit,
Period: act.Period,
WeeksTime: act.WeeksTime,
SettingType: act.SettingType,
if checkActStoreSkuExist(db, storeMap.StoreID, utils.Str2Int(act.AppFoodCode), model.VendorIDMTWM, utils.Timestamp2Time(act.StartTime), utils.Timestamp2Time(act.EndTime)) {
actVendor := &model.ActMtwmVendor{
StoreID: storeMap.StoreID,
SkuID: utils.Str2Int(act.AppFoodCode),
VendorStoreID: storeMap.VendorStoreID,
ActType: v,
BeginAt: utils.Timestamp2Time(act.StartTime),
EndAt: utils.Timestamp2Time(act.EndTime),
SkuName: act.Name,
OriginPrice: act.OriginalPrice,
ActPrice: act.ActPrice,
DiscountCoefficient: act.DiscountCoefficient,
Status: act.Status,
ItemID: utils.Int64ToStr(act.ItemID),
OrderLimit: act.OrderLimit,
Period: act.Period,
WeeksTime: act.WeeksTime,
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) {
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"
}
var tmpList []*tGetStoresSkusInfo
globals.SugarLogger.Debugf("GetStoresSkusNew sql=%s,sqlParams=%s", sql, sqlParams)
if err = dao.GetRowsTx(txDB, &tmpList, sql, sqlParams...); err != nil {
dao.Rollback(db, txDB)
return nil, err
@@ -1184,7 +1182,6 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, upcs []str
}
dao.Commit(db, txDB)
storeNameMap := make(map[int64]*dao.StoreSkuNameExt)
globals.SugarLogger.Debugf("GetStoresSkusNew tmpList=%s", utils.Format4Output(tmpList, false))
for _, v := range tmpList {
var storeName *dao.StoreSkuNameExt
index := jxutils.Combine2Int(v.StoreID, v.ID)

View File

@@ -279,11 +279,153 @@ func Init() {
// syncStoreSkuTiktok()
// }, []string{"13:00:00"})
//}
// 抖音更新门店商品 ,接口收费暂不使用
// 淘鲜达更新门店商品 ,接口收费暂不使用
if beego.BConfig.RunMode != "jxgy" {
ScheduleTimerFunc("RefreshSyncSkuList_tao", func() {
syncStoreSkuTao()
}, []string{"13:00:00"})
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,
}
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
@@ -640,8 +782,10 @@ func syncStoreSkuTiktok() {
tasksch.HandleTask(task, nil, true).Run()
}
var syncLen = 0
// syncStoreSkuTao 同步商品到淘鲜达
func syncStoreSkuTao() {
func syncStoreSkuTao(beijin []int) {
syncFlag := 0
task := tasksch.NewParallelTask("同步京西商品到淘鲜达平台,方案二使用", nil, jxcontext.AdminCtx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
@@ -651,18 +795,19 @@ func syncStoreSkuTao() {
switch step {
case 0:
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)
}
case 1:
errList.AddErr(err)
SaveImportantTaskID(TaskNameSyncStoreSku, SpecialTaskID)
}
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "2452A93EEB9111EC9B06525400E86DC0", "淘宝同步商品", utils.Format4Output(errList, false))
err = errList.GetErrListAsOne()
return retVal, err
}, []int{0, 1})
tasksch.HandleTask(task, nil, true).Run()
syncLen += 5
}
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) {
err = api.FnAPI.ComplaintRider(bill.VendorOrderID, complaintReson2FnResonMap[resonID])
err = api.FnAPI.ComplaintRider(bill.VendorOrderID, bill.VendorWaybillID, complaintReson2FnResonMap[resonID], resonContent)
return err
}

View File

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

View File

@@ -96,14 +96,14 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
continue
}
if (v.WaybillVendorID == model.YES || v.WaybillVendorID == -1) && v.VendorID == model.VendorIDMTWM {
continue
}
//if (v.WaybillVendorID == model.YES || v.WaybillVendorID == -1) && v.VendorID == model.VendorIDMTWM {
// continue
//}
if orderId == "" { // 订单id为空是,是定时轮询操作,不做此状态
waybillList, _ := dao.GetWaybills(dao.GetDB(), v.VendorOrderID, nil)
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
}
}
@@ -409,7 +409,14 @@ func UpdateFakeWayBillToTiktok() {
// 设置骑手和下一状态时间
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 {
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())
}
// 饿百订单推送订单送达
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 {
globals.SugarLogger.Errorf("Swtich2SelfDelivered err := %v", err)
}

View File

@@ -399,7 +399,7 @@ func (p *PurchaseHandler) Swtich2SelfDeliver(order *model.GoodsOrder, userName s
err = nil
case ebaiapi.WaybillStatusDeliveryCancled:
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) // 取消呼叫众包骑手
case ebaiapi.WaybillStatusCourierAccepted:
err = errors.New("骑手已接单,无法转自送")

View File

@@ -132,17 +132,20 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
// 渠道活动
if v.ChannelActivityId != nil {
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 {
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活动
if v.MerchantActivityId != nil {
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 + "-" + "归属信息不匹配:" + "虚拟电话号码"
//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)
@@ -215,7 +207,6 @@ func (p *PurchaseHandler) getOrder(vendorOrgCode string, vendorOrderID int64, ve
order.StoreName = "未获取到" // 真实门店名称
}
globals.SugarLogger.Debugf("=====order : %s", utils.Format4Output(order, false))
return order, orderMap, err
}

View File

@@ -71,10 +71,10 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
var err error
var db = dao.GetDB()
orderStatus, scarceGoods := c.callbackAfsMsg2Status(status, msg)
// 用户取消售后
switch status {
case tao_vegetable.OrderStatusApplyAfs:
refundData := msg.(*tao_vegetable.UserApplyRefundCallBack)
globals.SugarLogger.Debugf("================OrderStatusApplyAfs : %s", utils.Format4Output(msg, false))
var afsOrder *model.AfsOrder
var api = getAPI("", 0, refundData.StoreId)
@@ -287,60 +287,96 @@ func (c *PurchaseHandler) onAfsOrderMsg(status string, msg interface{}) (retVal
case tao_vegetable.OrderStatusRefundSuccess:
// 用户退款成功回调,缺货拣货时,送达回触发.此时并没有售后单
if scarceGoods != nil {
var afsOrder *model.AfsOrder
refundSuccess := msg.(*tao_vegetable.RefundOrderFinish)
var afsOrder *model.AfsOrder
var api = getAPI("", 0, refundSuccess.StoreId)
afsOrder = &model.AfsOrder{
VendorID: model.VendorIDTaoVegetable,
AfsOrderID: refundSuccess.OutMainRefundId,
VendorOrderID: orderStatus.RefVendorOrderID,
VendorStoreID: refundSuccess.StoreId,
StoreID: 0,
AfsCreatedAt: orderStatus.StatusTime,
VendorAppealType: status, // 原始售后方式
AppealType: model.AfsAppealTypeUserCancel, // 淘宝这个接口下发的只有用户取消
VendorReasonType: tao_vegetable.OrderStatusOnSaleCancel,
ReasonType: 0,
ReasonDesc: "缺货调整,退款成功通知",
VendorOrgCode: api.GetVendorOrgCode(),
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
}
}
}
}
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)
// 本地已经存在了售后记录,直接修改售后状态,否则创建售后记录
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{
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)
}
}
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)
}
}
}

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) {
globals.SugarLogger.Debugf("len CreateStoreSkus := %d", len(storeSkuList))
failedList, err = p.createOrUpdateStoreSkus(ctx, storeID, vendorStoreID, storeSkuList, true)
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) {
param := &request585.AlibabaWdkSkuUpdateRequest{}
updateSkuList := make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
//totalCount := len(storeSkuList)
for _, v := range storeSkuList {
price := utils.String2Pointer(utils.Float64ToStr(float64(v.VendorPrice) / float64(100)))
updateSku := domain585.AlibabaWdkSkuUpdateSkuDo{
OuCode: utils.String2Pointer(vendorStoreID),
SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)),
SkuName: utils.String2Pointer(checkNameLength(v.SkuName)),
MemberPrice: price,
SkuPrice: price, // 优先使用skuPrice 靠后SalePrice
SuggestedPrice: price, // 优先使用skuPrice 靠后SalePrice
CategoryCode: utils.String2Pointer(utils.Int2Str(v.CategoryID)),
MerchantCatCode: utils.String2Pointer(v.VendorCatID), // 优先使用 靠后 category_code
OuCode: utils.String2Pointer(vendorStoreID),
SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)),
SkuName: utils.String2Pointer(checkNameLength(v.SkuName, v.Weight, v.Unit)),
SkuPrice: price, // 优先使用skuPrice 靠后SalePrice
CategoryCode: utils.String2Pointer(utils.Int2Str(v.CategoryID)),
MerchantCatCode: utils.String2Pointer(v.VendorCatID), // 优先使用 靠后 category_code
CleanSkuMemberPrice: utils.Int64ToPointer(model.YES),
SubTitle: utils.String2Pointer("小时达"),
}
if v.MinOrderCount <= model.YES {
updateSku.PurchaseQuantity = utils.Int64ToPointer(model.YES) // 起购单位
} else {
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)
//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
@@ -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) {
createPram := &request585.AlibabaWdkSkuAddRequest{}
param := make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0)
//totalCount := len(storeSkuList)
vendorSkuIdMap := make(map[string]string, 0)
globals.SugarLogger.Debugf("storeSkuList := %d", len(storeSkuList))
for _, storeSku := range storeSkuList {
price := utils.String2Pointer(utils.Float64ToStr(utils.Int64ToFloat64(storeSku.VendorPrice) / utils.Int64ToFloat64(100)))
sku := domain585.AlibabaWdkSkuAddSkuDo{
@@ -308,14 +292,13 @@ func createTaoVegetable(ctx *jxcontext.Context, api *tao_vegetable.API, storeSku
SaleUnit: utils.String2Pointer("份"),
LifeStatus: utils.String2Pointer(tao_vegetable.CreateSkuLeafStatus),
SaleSpec: utils.String2Pointer(fmt.Sprintf("%d %s*1%s", storeSku.Weight, "g", storeSku.Unit)),
StepQuantity: utils.Int64ToPointer(model.YES), // 每次购买至少增加一个购买单位
SubTitle: utils.String2Pointer("同城包邮"),
SubTitle1: utils.String2Pointer("一小时速达"),
StepQuantity: utils.Int64ToPointer(model.YES), // 每次购买至少增加一个购买单位
OnlineSaleFlag: utils.Int64ToPointer(tao_vegetable.CreateOnlineSaleFlag), // 门店控制是否可见
SubTitle: utils.String2Pointer("小时达"),
SubTitle1: utils.String2Pointer("一小时速达"),
//DeliveryUnit: utils.String2Pointer(storeSku.Unit),
DeliveryUnit: utils.String2Pointer("份"),
DeliverySpec: utils.String2Pointer(utils.Int2Str(model.YES)),
MemberPrice: price,
Storage: utils.String2Pointer(tao_vegetable.CreateStorage),
PickFloatRate: utils.String2Pointer(utils.Int2Str(model.NO)), // ? 0
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 {
continue
}
sku.SkuName = utils.String2Pointer(checkNameLength(storeSku.Name))
sku.SkuName = utils.String2Pointer(checkNameLength(storeSku.Name, storeSku.Weight, storeSku.Unit))
if storeSku.MinOrderCount <= 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)
//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
result, err := api.AddStoreSku(createPram)
if err != nil {
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)
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)
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
}
func checkNameLength(name string) string {
func checkNameLength(name string, weight int, uint string) string {
lastName := ""
if !strings.Contains(name, uint) {
name = fmt.Sprintf("%s %d/%s", name, weight, uint)
}
if strings.Contains(name, "其它") {
name = strings.ReplaceAll(name, "其它", "")
}
@@ -465,7 +435,7 @@ func checkNameLength(name string) string {
return lastName
}
}
return name[0:60]
return lastName[0:60]
}
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),
}
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
@@ -534,28 +491,6 @@ func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, v
createFailedList, _ := SelectStoreSkuListByFoodList(storeSkuList, *result, storeID, model.VendorChineseNames[model.VendorIDTaoVegetable], "删除商品(暂无接口,下架处理)")
failedList = append(failedList, createFailedList...)
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 批量更新商品上下架状态
@@ -569,21 +504,10 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
OuCode: utils.String2Pointer(vendorStoreID),
SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)),
OnlineSaleFlag: utils.Int64ToPointer(onlineStatus),
SubTitle: utils.String2Pointer("小时达"),
//CleanSkuMemberPrice: utils.Int64ToPointer(model.YES),
}
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
@@ -608,23 +532,9 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg
SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)),
SkuPrice: price,
CleanSkuMemberPrice: utils.Int64ToPointer(model.YES),
SuggestedPrice: price,
MemberPrice: price,
SubTitle: utils.String2Pointer("小时达"),
}
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
result, err := api.UpdateStoreSku(param)
@@ -926,21 +836,6 @@ func (p *PurchaseHandler) UpdateStoreSkusSpecTag(ctx *jxcontext.Context, vendorO
}
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
result, err := api.UpdateStoreSku(param)

View File

@@ -119,7 +119,7 @@ func (c *OrderController) QueryOrderWaybillFeeInfo() {
// @Param token header string true "认证token"
// @Param vendorOrderID formData string true "订单ID"
// @Param vendorID formData int true "订单所属的厂商ID"
// @Param courierVendorIDs formData string false "运单厂商ID缺省全部"
// @Param courierVendorIDs formData string false "运单厂商ID缺省全部"
// @Param maxDeliveryFee formData int false "最高限价为0时为缺省最大值"
// @Param forceCreate formData bool false "是否强制创建(忽略订单状态检查及其它参数)"
// @Success 200 {object} controllers.CallResult