Merge branch 'jdshop' of https://e.coding.net/rosydev/jx-callback into jdshop
This commit is contained in:
@@ -764,6 +764,11 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao.
|
|||||||
if intVendorSkuID != 0 && v.VendorSkuID != "-70000" { // todo hard code
|
if intVendorSkuID != 0 && v.VendorSkuID != "-70000" { // todo hard code
|
||||||
skuBindInfo := skumapper[v.VendorSkuID]
|
skuBindInfo := skumapper[v.VendorSkuID]
|
||||||
if skuBindInfo == nil {
|
if skuBindInfo == nil {
|
||||||
|
// 商品直接在美团创建,本地不存在商品信息,且为美团商品.如果门店是报价门店则获取商品的进货价
|
||||||
|
//if v.ShopPrice == model.NO && v.VendorID == model.VendorIDMTWM && order.OrderPayPercentage >= 50 {
|
||||||
|
//
|
||||||
|
//}
|
||||||
|
|
||||||
if v.ShopPrice == 0 {
|
if v.ShopPrice == 0 {
|
||||||
v.ShopPrice = v.SalePrice * 70 / 100
|
v.ShopPrice = v.SalePrice * 70 / 100
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -717,12 +717,21 @@ func (c *OrderManager) GetLogisticsOrderStatusList(orderId, LogisticsId string,
|
|||||||
func (c *OrderManager) GetWayBillStatusList(orderId, LogisticsId string, vendorId int) ([]*model.OrderStatus, error) {
|
func (c *OrderManager) GetWayBillStatusList(orderId, LogisticsId string, vendorId int) ([]*model.OrderStatus, error) {
|
||||||
sql := `SELECT *
|
sql := `SELECT *
|
||||||
FROM order_status t1
|
FROM order_status t1
|
||||||
WHERE t1.vendor_order_id = ? AND t1.ref_vendor_order_id = ? AND t1.vendor_id = ?`
|
WHERE 1=1 `
|
||||||
sqlParams := []interface{}{
|
sqlParams := make([]interface{}, 0, 0)
|
||||||
LogisticsId,
|
if LogisticsId != "" {
|
||||||
orderId,
|
sql += ` AND t1.vendor_order_id = ? `
|
||||||
vendorId,
|
sqlParams = append(sqlParams, LogisticsId)
|
||||||
}
|
}
|
||||||
|
if orderId != "" {
|
||||||
|
sql += ` AND t1.ref_vendor_order_id = ? `
|
||||||
|
sqlParams = append(sqlParams, orderId)
|
||||||
|
}
|
||||||
|
if vendorId != 0 {
|
||||||
|
sql += ` AND t1.vendor_id = ? `
|
||||||
|
sqlParams = append(sqlParams, vendorId)
|
||||||
|
}
|
||||||
|
|
||||||
sql += ` ORDER BY status_time ASC `
|
sql += ` ORDER BY status_time ASC `
|
||||||
var result []*model.OrderStatus
|
var result []*model.OrderStatus
|
||||||
if err := dao.GetRows(dao.GetDB(), &result, sql, sqlParams...); err != nil {
|
if err := dao.GetRows(dao.GetDB(), &result, sql, sqlParams...); err != nil {
|
||||||
|
|||||||
@@ -882,42 +882,6 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
|||||||
if err = s.canOrderCreateWaybillNormally(order, savedOrderInfo); err == nil {
|
if err = s.canOrderCreateWaybillNormally(order, savedOrderInfo); err == nil {
|
||||||
if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 {
|
if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 {
|
||||||
if savedOrderInfo.retryCount <= maxWaybillRetryCount {
|
if savedOrderInfo.retryCount <= maxWaybillRetryCount {
|
||||||
var waybillVendorIDs = []int{model.VendorIDMTPS, model.VendorIDDada, model.VendorIDFengNiao, model.VendorIDUUPT, model.VendorIDSFPS}
|
|
||||||
savedOrderInfo.isNeedCreate3rdWaybill = true
|
|
||||||
excludeVendorIDs := savedOrderInfo.GetWaybillVendorIDs()
|
|
||||||
//TODO 取消京西不自动发美团 2020-06-02
|
|
||||||
// if order.VendorID == model.VendorIDJX {
|
|
||||||
// excludeVendorIDs = append(excludeVendorIDs, model.VendorIDMTPS)
|
|
||||||
// }
|
|
||||||
//TODO 2020-08-18 饿百美团订单暂时不自动发送三方
|
|
||||||
if order.VendorID == model.VendorIDMTWM || order.VendorID == model.VendorIDEBAI || order.VendorID == model.VendorIDJD || order.VendorID == model.VendorIDDD {
|
|
||||||
if order.DeliveryType != model.OrderDeliveryTypeStoreSelf {
|
|
||||||
excludeVendorIDs = append(excludeVendorIDs, waybillVendorIDs...)
|
|
||||||
}
|
|
||||||
//全都排除了,换个提示
|
|
||||||
if len(excludeVendorIDs) == len(waybillVendorIDs) {
|
|
||||||
err = fmt.Errorf("订单配送方式不是门店自送!")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//2020-11-16 预计收益-配送费 > 0 再发
|
|
||||||
if order.EarningType == model.EarningTypeQuote {
|
|
||||||
for _, vendorID := range waybillVendorIDs {
|
|
||||||
handler := partner.GetDeliveryPlatformFromVendorID(vendorID)
|
|
||||||
if deliveryFeeInfo, err := handler.Handler.GetWaybillFee(order); err == nil {
|
|
||||||
if deliveryFeeInfo != nil {
|
|
||||||
if order.TotalShopMoney-order.EarningPrice-deliveryFeeInfo.DeliveryFee <= -600 {
|
|
||||||
excludeVendorIDs = append(excludeVendorIDs, vendorID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//全都排除了,换个提示
|
|
||||||
if len(excludeVendorIDs) == len(waybillVendorIDs) {
|
|
||||||
err = fmt.Errorf("报价订单扣除配送费后预计收益小于0")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO 2020-07-21 发单时间要在门店的营业时间内
|
//TODO 2020-07-21 发单时间要在门店的营业时间内
|
||||||
var storeDetail *dao.StoreDetail
|
var storeDetail *dao.StoreDetail
|
||||||
storeDetail, err = dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, "")
|
storeDetail, err = dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, "")
|
||||||
@@ -938,6 +902,53 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if storeDetail.Status != model.StoreStatusOpened {
|
||||||
|
err = fmt.Errorf("门店非营业状态,不允许自动发单")
|
||||||
|
}
|
||||||
|
|
||||||
|
var waybillVendorIDs = []int{model.VendorIDMTPS, model.VendorIDDada, model.VendorIDFengNiao, model.VendorIDUUPT, model.VendorIDSFPS}
|
||||||
|
savedOrderInfo.isNeedCreate3rdWaybill = true
|
||||||
|
excludeVendorIDs := savedOrderInfo.GetWaybillVendorIDs()
|
||||||
|
//TODO 取消京西不自动发美团 2020-06-02
|
||||||
|
// if order.VendorID == model.VendorIDJX {
|
||||||
|
// excludeVendorIDs = append(excludeVendorIDs, model.VendorIDMTPS)
|
||||||
|
// }
|
||||||
|
//TODO 2020-08-18 饿百美团订单暂时不自动发送三方
|
||||||
|
if order.VendorID == model.VendorIDMTWM || order.VendorID == model.VendorIDEBAI || order.VendorID == model.VendorIDJD || order.VendorID == model.VendorIDDD {
|
||||||
|
if order.DeliveryType != model.OrderDeliveryTypeStoreSelf {
|
||||||
|
excludeVendorIDs = append(excludeVendorIDs, waybillVendorIDs...)
|
||||||
|
}
|
||||||
|
//全都排除了,换个提示
|
||||||
|
if len(excludeVendorIDs) == len(waybillVendorIDs) {
|
||||||
|
err = fmt.Errorf("订单配送方式不是门店自送!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取配送记录,
|
||||||
|
statusList, _ := orderman.FixedOrderManager.GetWayBillStatusList(order.VendorOrderID, order.VendorOrderID, 0)
|
||||||
|
for _, v := range statusList {
|
||||||
|
if v.Status == model.OrderStatusMsg && utils.Str2Int64WithDefault(v.VendorStatus, 0) != model.NO {
|
||||||
|
excludeVendorIDs = append(excludeVendorIDs, utils.Str2Int(v.VendorStatus))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//2020-11-16 预计收益-配送费 > 0 再发
|
||||||
|
if order.EarningType == model.EarningTypeQuote && order.VendorID != model.VendorIDTaoVegetable { // 淘宝是第二天更新结算信息的
|
||||||
|
for _, vendorID := range waybillVendorIDs {
|
||||||
|
handler := partner.GetDeliveryPlatformFromVendorID(vendorID)
|
||||||
|
if deliveryFeeInfo, err := handler.Handler.GetWaybillFee(order); err == nil {
|
||||||
|
if deliveryFeeInfo != nil {
|
||||||
|
if order.TotalShopMoney-order.EarningPrice-deliveryFeeInfo.DeliveryFee <= -600 {
|
||||||
|
excludeVendorIDs = append(excludeVendorIDs, vendorID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//全都排除了,换个提示
|
||||||
|
if len(excludeVendorIDs) == len(waybillVendorIDs) {
|
||||||
|
err = fmt.Errorf("报价订单扣除配送费后预计收益小于0")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//1表示为门店发单,需要验证门店账户余额情况
|
//1表示为门店发单,需要验证门店账户余额情况
|
||||||
_, err2 := s.CheckStoreBalance(jxcontext.AdminCtx, order, waybillVendorIDs)
|
_, err2 := s.CheckStoreBalance(jxcontext.AdminCtx, order, waybillVendorIDs)
|
||||||
@@ -982,10 +993,11 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil {
|
if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil {
|
||||||
savedOrderInfo.retryCount++
|
savedOrderInfo.retryCount++
|
||||||
} else {
|
} else {
|
||||||
partner.CurOrderManager.OnOrderMsg(order, fmt.Sprintf("发起自动创建三方运单,目标创建运单平台[%s],创建失败:%v", jxutils.GetVendorName(vendorID), err), "")
|
partner.CurOrderManager.OnOrderMsg(order, utils.Int2Str(vendorID), fmt.Sprintf("发起自动创建三方运单,目标创建运单平台[%s],创建失败:%v", jxutils.GetVendorName(vendorID), err))
|
||||||
//content := "您的门店 [" + storeDetail.Name + "],OrderID:[" + order.VendorOrderID + "],自动呼叫骑手失败[" + fmt.Sprintf(err.Error()) + "],请手动呼叫骑手"
|
//content := "您的门店 [" + storeDetail.Name + "],OrderID:[" + order.VendorOrderID + "],自动呼叫骑手失败[" + fmt.Sprintf(err.Error()) + "],请手动呼叫骑手"
|
||||||
//if user, err := dao.GetUserByID(dao.GetDB(), "mobile", storeDetail.MarketManPhone); err == nil {
|
//if user, err := dao.GetUserByID(dao.GetDB(), "mobile", storeDetail.MarketManPhone); err == nil {
|
||||||
// ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.UserID, "平台门店状态变化", content)
|
// ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.UserID, "平台门店状态变化", content)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ type StoreDetail struct {
|
|||||||
VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"`
|
VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"`
|
||||||
VendorStoreName string `json:"vendorStoreName"`
|
VendorStoreName string `json:"vendorStoreName"`
|
||||||
VendorStatus int `json:"vendor_status"` // 取值同Store.Status
|
VendorStatus int `json:"vendor_status"` // 取值同Store.Status
|
||||||
VendorPayPercentage int `json:"vendorPayPercentage"` //平台结算比例
|
VendorPayPercentage int `json:"vendorPayPercentage"` //平台结算比例,大于50是报价门店
|
||||||
DeliveryFeeDeductionSill int `json:"deliveryFeeDeductionSill"`
|
DeliveryFeeDeductionSill int `json:"deliveryFeeDeductionSill"`
|
||||||
DeliveryFeeDeductionFee int `json:"deliveryFeeDeductionFee"`
|
DeliveryFeeDeductionFee int `json:"deliveryFeeDeductionFee"`
|
||||||
SyncStatus int8 `orm:"default(2)" json:"syncStatus"`
|
SyncStatus int8 `orm:"default(2)" json:"syncStatus"`
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ const (
|
|||||||
StoreStatusAll = -9
|
StoreStatusAll = -9
|
||||||
StoreStatusDisabled = -2 // 禁用
|
StoreStatusDisabled = -2 // 禁用
|
||||||
StoreStatusClosed = -1 // 休息
|
StoreStatusClosed = -1 // 休息
|
||||||
StoreStatusHaveRest = 0
|
StoreStatusHaveRest = 0 // 零食休息
|
||||||
StoreStatusOpened = 1 // 营业
|
StoreStatusOpened = 1 // 营业
|
||||||
|
|
||||||
StoreIsSyncAll = -1
|
StoreIsSyncAll = -1
|
||||||
|
|||||||
@@ -94,11 +94,11 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
|
|||||||
c.pushToGy(msg)
|
c.pushToGy(msg)
|
||||||
return mtpsapi.SuccessResponse
|
return mtpsapi.SuccessResponse
|
||||||
}
|
}
|
||||||
// 多次取消,只处理第一次
|
// 多次取消,送达,只处理第一次
|
||||||
if msg.Status == mtpsapi.OrderStatusCanceled {
|
if msg.Status == mtpsapi.OrderStatusCanceled || msg.Status == mtpsapi.OrderStatusDeliverred {
|
||||||
orderStatus, _ := orderman.FixedOrderManager.GetWayBillStatusList(msg.OrderID, msg.MtPeisongID, model.VendorIDMTPS)
|
orderStatus, _ := orderman.FixedOrderManager.GetWayBillStatusList(msg.OrderID, msg.MtPeisongID, model.VendorIDMTPS)
|
||||||
for _, v := range orderStatus {
|
for _, v := range orderStatus {
|
||||||
if v.VendorStatus == "99" {
|
if v.VendorStatus == utils.Int64ToStr(mtpsapi.OrderStatusCanceled) || v.VendorStatus == utils.Int64ToStr(mtpsapi.OrderStatusDeliverred) {
|
||||||
return mtpsapi.SuccessResponse
|
return mtpsapi.SuccessResponse
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -154,6 +154,10 @@ func (p *PurchaseHandler) OrderDetail2Financial(result map[string]interface{}) (
|
|||||||
} else {
|
} else {
|
||||||
err = nil
|
err = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 区分门店是否为报价门店
|
||||||
|
// 报价门店商品如果京西系统存在则不管,不存在则获取平台上填写的进货价
|
||||||
|
|
||||||
if result["package_bag_money"] != nil {
|
if result["package_bag_money"] != nil {
|
||||||
orderFinancial.BoxMoney = utils.MustInterface2Int64(result["package_bag_money"])
|
orderFinancial.BoxMoney = utils.MustInterface2Int64(result["package_bag_money"])
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ func orderStatusChangeNotice(order *model.GoodsOrder, orderStatus string) (*requ
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
for _, v := range *orderDetail.SubOrderResponseList {
|
for _, v := range *orderDetail.SubOrderResponseList {
|
||||||
|
if *v.OrderStatus != tao_vegetable.OrderStatusRefundClose {
|
||||||
workCallbackSubOrderInfo := domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo{
|
workCallbackSubOrderInfo := domain591.AlibabaAelophyOrderWorkCallbackWorkCallbackSubOrderInfo{
|
||||||
BizSubOrderId: v.BizSubOrderId,
|
BizSubOrderId: v.BizSubOrderId,
|
||||||
SkuCode: v.SkuCode,
|
SkuCode: v.SkuCode,
|
||||||
@@ -47,6 +48,7 @@ func orderStatusChangeNotice(order *model.GoodsOrder, orderStatus string) (*requ
|
|||||||
}
|
}
|
||||||
workCallbackSubOrderInfoList = append(workCallbackSubOrderInfoList, workCallbackSubOrderInfo)
|
workCallbackSubOrderInfoList = append(workCallbackSubOrderInfoList, workCallbackSubOrderInfo)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 出库
|
// 出库
|
||||||
param.WorkCallbackRequest.WorkCallbackSubOrderInfoList = &workCallbackSubOrderInfoList
|
param.WorkCallbackRequest.WorkCallbackSubOrderInfoList = &workCallbackSubOrderInfoList
|
||||||
|
|||||||
Reference in New Issue
Block a user