Merge remote-tracking branch 'origin/mark' into don
This commit is contained in:
@@ -390,6 +390,9 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
s.updateOrderByBill(order, nil, false)
|
s.updateOrderByBill(order, nil, false)
|
||||||
|
if time.Now().Sub(order.OrderCreatedAt) < 2*time.Minute { // 京东一些门店设置成了接单即拣货完成,这种情况下自动调用拣货完成
|
||||||
|
s.autoPickupGood(savedOrderInfo)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
s.ProxyCancelWaybill(order, bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime)
|
s.ProxyCancelWaybill(order, bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1349,6 +1349,8 @@ func GetStoresVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, v
|
|||||||
CloseTime1: store.CloseTime1,
|
CloseTime1: store.CloseTime1,
|
||||||
OpenTime2: store.OpenTime2,
|
OpenTime2: store.OpenTime2,
|
||||||
CloseTime2: store.CloseTime2,
|
CloseTime2: store.CloseTime2,
|
||||||
|
|
||||||
|
DeliveryType: store.DeliveryType,
|
||||||
}}
|
}}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1391,7 +1393,8 @@ func updateVendorStoreStatusBySnapshot(db *dao.DaoDB, curSnapshotList []*model.V
|
|||||||
for _, v := range storeMapList {
|
for _, v := range storeMapList {
|
||||||
if snapshot := snapshotMap[jxutils.Combine2Int(v.StoreID, v.VendorID)]; snapshot != nil && v.Status != snapshot.Status {
|
if snapshot := snapshotMap[jxutils.Combine2Int(v.StoreID, v.VendorID)]; snapshot != nil && v.Status != snapshot.Status {
|
||||||
v.Status = snapshot.Status
|
v.Status = snapshot.Status
|
||||||
if _, err = dao.UpdateEntity(db, v, model.FieldStatus); err != nil {
|
v.DeliveryType = snapshot.DeliveryType
|
||||||
|
if _, err = dao.UpdateEntity(db, v, model.FieldStatus, "DeliveryType"); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -402,6 +402,7 @@ type VendorStoreSnapshot struct {
|
|||||||
CloseTime1 int16 `json:"closeTime1"` // 格式同上
|
CloseTime1 int16 `json:"closeTime1"` // 格式同上
|
||||||
OpenTime2 int16 `json:"openTime2"` // 格式同上
|
OpenTime2 int16 `json:"openTime2"` // 格式同上
|
||||||
CloseTime2 int16 `json:"closeTime2"` // 格式同上
|
CloseTime2 int16 `json:"closeTime2"` // 格式同上
|
||||||
|
DeliveryType int8 `orm:"default(0)" json:"deliveryType"` // 配送类型
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*VendorStoreSnapshot) TableUnique() [][]string {
|
func (*VendorStoreSnapshot) TableUnique() [][]string {
|
||||||
|
|||||||
@@ -190,10 +190,10 @@ func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, ord
|
|||||||
|
|
||||||
// 发起全款退款
|
// 发起全款退款
|
||||||
func (c *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
|
func (c *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
|
||||||
return fmt.Errorf("饿百不支持全款退款")
|
return fmt.Errorf("%s不支持售后全额退款,请让买家发起退款", model.VendorChineseNames[model.VendorIDEBAI])
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发起部分退款
|
// 发起部分退款
|
||||||
func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error) {
|
func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error) {
|
||||||
return fmt.Errorf("饿百不支持部分退款")
|
return fmt.Errorf("%s不支持售后部分退款,请让买家发起退款", model.VendorChineseNames[model.VendorIDEBAI])
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -277,9 +277,9 @@ func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
func JdDeliveryType2Jx(deliveryType int) int8 {
|
func JdDeliveryType2Jx(deliveryType int) int8 {
|
||||||
if deliveryType == 2938 {
|
if deliveryType == jdapi.CarrierNoSelfDelivery {
|
||||||
return scheduler.StoreDeliveryTypeByStore
|
return scheduler.StoreDeliveryTypeByStore
|
||||||
} else if deliveryType == 9966 {
|
} else if deliveryType == jdapi.CarrierNoCrowdSourcing {
|
||||||
return scheduler.StoreDeliveryTypeCrowdSourcing
|
return scheduler.StoreDeliveryTypeCrowdSourcing
|
||||||
}
|
}
|
||||||
return scheduler.StoreDeliveryTypeByPlatform
|
return scheduler.StoreDeliveryTypeByPlatform
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, ord
|
|||||||
|
|
||||||
// 发起全款退款
|
// 发起全款退款
|
||||||
func (c *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
|
func (c *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
|
||||||
return c.CancelOrder(ctx, order, reason)
|
return fmt.Errorf("%s不支持售后全额退款,请让买家发起退款", model.VendorChineseNames[model.VendorIDMTWM])
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发起部分退款
|
// 发起部分退款
|
||||||
|
|||||||
@@ -68,17 +68,18 @@ func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorStoreID string
|
|||||||
retVal.ID = int(utils.Str2Int64WithDefault(poiCode, 0))
|
retVal.ID = int(utils.Str2Int64WithDefault(poiCode, 0))
|
||||||
retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
||||||
var deliveryRangeInfo []map[string]interface{}
|
var deliveryRangeInfo []map[string]interface{}
|
||||||
deliveryRangeInfo, err = api.MtwmAPI.ShippingList(poiCode)
|
|
||||||
if err != nil {
|
|
||||||
deliveryRangeInfo, err = api.MtwmAPI.ShippingFetch(poiCode)
|
deliveryRangeInfo, err = api.MtwmAPI.ShippingFetch(poiCode)
|
||||||
|
if err != nil {
|
||||||
|
deliveryRangeInfo, err = api.MtwmAPI.ShippingList(poiCode)
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if len(deliveryRangeInfo) > 0 {
|
if len(deliveryRangeInfo) > 0 {
|
||||||
retVal.DeliveryRange = rangeMtwm2JX(deliveryRangeInfo[0]["area"].(string))
|
retVal.DeliveryRange = rangeMtwm2JX(deliveryRangeInfo[0]["area"].(string))
|
||||||
if utils.Interface2String(deliveryRangeInfo[0]["logistics_code"]) == mtwmapi.PeiSongTypeSelf {
|
logisticsCode := utils.Interface2String(deliveryRangeInfo[0]["logistics_code"])
|
||||||
|
if logisticsCode == "" || logisticsCode == mtwmapi.PeiSongTypeSelf {
|
||||||
retVal.DeliveryType = scheduler.StoreDeliveryTypeByStore
|
retVal.DeliveryType = scheduler.StoreDeliveryTypeByStore
|
||||||
} else {
|
} else {
|
||||||
retVal.DeliveryType = scheduler.StoreDeliveryTypeCrowdSourcing
|
retVal.DeliveryType = scheduler.StoreDeliveryTypeByPlatform
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -503,9 +503,10 @@ func (c *OrderController) GetPrinterStatus() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func skuList2Map(skuList []*model.OrderSku) (skuMap map[int]*model.OrderSku) {
|
func skuList2Map(skuList []*model.OrderSku) (skuCount int, skuMap map[int]*model.OrderSku) {
|
||||||
skuMap = make(map[int]*model.OrderSku)
|
skuMap = make(map[int]*model.OrderSku)
|
||||||
for _, sku := range skuList {
|
for _, sku := range skuList {
|
||||||
|
skuCount += sku.Count
|
||||||
skuID := jxutils.GetSkuIDFromOrderSku(sku)
|
skuID := jxutils.GetSkuIDFromOrderSku(sku)
|
||||||
if sku.SkuID > 0 {
|
if sku.SkuID > 0 {
|
||||||
if skuMap[skuID] == nil {
|
if skuMap[skuID] == nil {
|
||||||
@@ -515,7 +516,7 @@ func skuList2Map(skuList []*model.OrderSku) (skuMap map[int]*model.OrderSku) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return skuMap
|
return skuCount, skuMap
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Title 调整订单
|
// @Title 调整订单
|
||||||
@@ -536,11 +537,16 @@ func (c *OrderController) AdjustOrder() {
|
|||||||
var order *model.GoodsOrder
|
var order *model.GoodsOrder
|
||||||
order, err = partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID)
|
order, err = partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if err = fillSkuList(skuList, order.Skus); err == nil {
|
removedAll, err2 := fillSkuList(skuList, order.Skus)
|
||||||
|
if err = err2; err == nil {
|
||||||
|
if removedAll {
|
||||||
|
err = fmt.Errorf("至少要保留一个商品")
|
||||||
|
} else {
|
||||||
err = defsch.FixedScheduler.AdjustOrder(params.Ctx, order, skuList, params.Reason)
|
err = defsch.FixedScheduler.AdjustOrder(params.Ctx, order, skuList, params.Reason)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -733,19 +739,25 @@ func (c *OrderController) PartRefundOrder() {
|
|||||||
var order *model.GoodsOrder
|
var order *model.GoodsOrder
|
||||||
order, err = partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID)
|
order, err = partner.CurOrderManager.LoadOrder(params.VendorOrderID, params.VendorID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if err = fillSkuList(skuList, order.Skus); err == nil {
|
removedAll, err2 := fillSkuList(skuList, order.Skus)
|
||||||
|
if err = err2; err == nil {
|
||||||
|
if removedAll {
|
||||||
|
err = defsch.FixedScheduler.RefundOrder(params.Ctx, order, params.Reason)
|
||||||
|
} else {
|
||||||
err = defsch.FixedScheduler.PartRefundOrder(params.Ctx, order, skuList, params.Reason)
|
err = defsch.FixedScheduler.PartRefundOrder(params.Ctx, order, skuList, params.Reason)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func fillSkuList(skuList, orderSkuList []*model.OrderSku) (err error) {
|
func fillSkuList(skuList, orderSkuList []*model.OrderSku) (isSame bool, err error) {
|
||||||
orderSkuMap := skuList2Map(orderSkuList)
|
skuCount, orderSkuMap := skuList2Map(orderSkuList)
|
||||||
removeSkuMap := skuList2Map(skuList)
|
skuCount2 := 0
|
||||||
for _, sku := range removeSkuMap {
|
for _, sku := range skuList {
|
||||||
|
skuCount2 += sku.Count
|
||||||
skuID := jxutils.GetSkuIDFromOrderSku(sku)
|
skuID := jxutils.GetSkuIDFromOrderSku(sku)
|
||||||
if orderSkuMap[skuID] == nil {
|
if orderSkuMap[skuID] == nil {
|
||||||
err = fmt.Errorf("找不到SKU:%d", skuID)
|
err = fmt.Errorf("找不到SKU:%d", skuID)
|
||||||
@@ -760,7 +772,7 @@ func fillSkuList(skuList, orderSkuList []*model.OrderSku) (err error) {
|
|||||||
sku.Count = count
|
sku.Count = count
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return skuCount == skuCount2, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Title 商家主动发起全额退款售后
|
// @Title 商家主动发起全额退款售后
|
||||||
|
|||||||
Reference in New Issue
Block a user