Merge remote-tracking branch 'origin/mark' into jdshop
This commit is contained in:
@@ -290,8 +290,7 @@ func (c *OrderManager) SaveOrder(order *model.GoodsOrder, isAdjust bool, db *dao
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
order.ConsigneeName = utils.LimitUTF8StringLen2(order.ConsigneeName, 32)
|
filterOrderInfo(order)
|
||||||
order.ConsigneeAddress = utils.LimitUTF8StringLen2(order.ConsigneeAddress, 255)
|
|
||||||
created, _, err2 := db.Db.ReadOrCreate(order, "VendorOrderID", "VendorID")
|
created, _, err2 := db.Db.ReadOrCreate(order, "VendorOrderID", "VendorID")
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
originalOrder := &model.GoodsOrderOriginal{
|
originalOrder := &model.GoodsOrderOriginal{
|
||||||
@@ -321,6 +320,12 @@ func (c *OrderManager) SaveOrder(order *model.GoodsOrder, isAdjust bool, db *dao
|
|||||||
return isDuplicated, err
|
return isDuplicated, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func filterOrderInfo(order *model.GoodsOrder) {
|
||||||
|
order.ConsigneeName = utils.LimitUTF8StringLen2(order.ConsigneeName, 32)
|
||||||
|
order.ConsigneeAddress = utils.LimitUTF8StringLen2(order.ConsigneeAddress, 255)
|
||||||
|
order.ConsigneeAddress = strings.ReplaceAll(order.ConsigneeAddress, "·", "")
|
||||||
|
}
|
||||||
|
|
||||||
func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao.DaoDB, storePayPercentage, changePriceType int) (err error) {
|
func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao.DaoDB, storePayPercentage, changePriceType int) (err error) {
|
||||||
globals.SugarLogger.Debugf("updateOrderSkuOtherInfo orderID:%s, VendorStoreID:%s", order.VendorOrderID, order.VendorStoreID)
|
globals.SugarLogger.Debugf("updateOrderSkuOtherInfo orderID:%s, VendorStoreID:%s", order.VendorOrderID, order.VendorStoreID)
|
||||||
jxStoreID := jxutils.GetShowStoreIDFromOrder(order)
|
jxStoreID := jxutils.GetShowStoreIDFromOrder(order)
|
||||||
@@ -503,6 +508,11 @@ func (c *OrderManager) updateOrderOtherInfo(order *model.GoodsOrder, db *dao.Dao
|
|||||||
order.JxStoreID = storeDetail.Store.ID
|
order.JxStoreID = storeDetail.Store.ID
|
||||||
payPercentage = storeDetail.PayPercentage
|
payPercentage = storeDetail.PayPercentage
|
||||||
changePriceType = int(storeDetail.ChangePriceType)
|
changePriceType = int(storeDetail.ChangePriceType)
|
||||||
|
if payPercentage < 50 {
|
||||||
|
order.EarningType = model.EarningTypePoints
|
||||||
|
} else {
|
||||||
|
order.EarningType = model.EarningTypeQuote
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err = c.updateOrderSkuOtherInfo(order, db, payPercentage, changePriceType); err == nil {
|
if err = c.updateOrderSkuOtherInfo(order, db, payPercentage, changePriceType); err == nil {
|
||||||
jxutils.RefreshOrderSkuRelated(order)
|
jxutils.RefreshOrderSkuRelated(order)
|
||||||
@@ -602,6 +612,14 @@ func (c *OrderManager) loadOrderSku(db *dao.DaoDB, vendorOrderID string, vendorI
|
|||||||
return orderSkus
|
return orderSkus
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *OrderManager) LoadStoreDetail(storeID, vendorID int) (storeDetail *dao.StoreDetail, err error) {
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
)
|
||||||
|
storeDetail, err = dao.GetStoreDetail(db, storeID, vendorID)
|
||||||
|
return storeDetail, err
|
||||||
|
}
|
||||||
|
|
||||||
func (c *OrderManager) loadOrder(vendorOrderID, vendorOrderID2 string, vendorID int) (order *model.GoodsOrder, err error) {
|
func (c *OrderManager) loadOrder(vendorOrderID, vendorOrderID2 string, vendorID int) (order *model.GoodsOrder, err error) {
|
||||||
db1 := dao.GetDB()
|
db1 := dao.GetDB()
|
||||||
db := db1.Db
|
db := db1.Db
|
||||||
@@ -1139,6 +1157,16 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o
|
|||||||
} else {
|
} else {
|
||||||
globals.SugarLogger.Errorf("未知的京东商城订单状态!status : %v", jdsOrder.OrderStatus)
|
globals.SugarLogger.Errorf("未知的京东商城订单状态!status : %v", jdsOrder.OrderStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//结算类型
|
||||||
|
storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), order.StoreID, model.VendorIDJDShop)
|
||||||
|
if storeDetail != nil {
|
||||||
|
if storeDetail.PayPercentage < 50 {
|
||||||
|
order.EarningType = model.EarningTypePoints
|
||||||
|
} else {
|
||||||
|
order.EarningType = model.EarningTypeQuote
|
||||||
|
}
|
||||||
|
}
|
||||||
setJdsOrderSeq(order)
|
setJdsOrderSeq(order)
|
||||||
for _, v := range jdsOrder.OrderItems {
|
for _, v := range jdsOrder.OrderItems {
|
||||||
sku := &model.OrderSku{
|
sku := &model.OrderSku{
|
||||||
@@ -1282,6 +1310,12 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//结算类型
|
||||||
|
if stores[0].PayPercentage < 50 {
|
||||||
|
order.EarningType = model.EarningTypePoints
|
||||||
|
} else {
|
||||||
|
order.EarningType = model.EarningTypeQuote
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return "", fmt.Errorf("未查询到该门店对应的平台信息!门店:[%v]", order.StoreID)
|
return "", fmt.Errorf("未查询到该门店对应的平台信息!门店:[%v]", order.StoreID)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -726,28 +726,8 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
|||||||
if !savedOrderInfo.isDeliveryCompetition {
|
if !savedOrderInfo.isDeliveryCompetition {
|
||||||
globals.SugarLogger.Debugf("createWaybillOn3rdProviders orderID:%s门店没有设置配送竞争", order.VendorOrderID)
|
globals.SugarLogger.Debugf("createWaybillOn3rdProviders orderID:%s门店没有设置配送竞争", order.VendorOrderID)
|
||||||
}
|
}
|
||||||
//TODO 2020-07-21 发单时间要在门店的营业时间内
|
|
||||||
if savedOrderInfo.storeDetail.OpenTime1 != 0 && savedOrderInfo.storeDetail.CloseTime1 != 0 {
|
|
||||||
time1 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.OpenTime1, time.Now())
|
|
||||||
time2 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.CloseTime1, time.Now())
|
|
||||||
if time.Now().Sub(time1) < 0 || time.Now().Sub(time2) > 0 {
|
|
||||||
if savedOrderInfo.storeDetail.OpenTime2 != 0 && savedOrderInfo.storeDetail.CloseTime2 != 0 {
|
|
||||||
time3 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.OpenTime2, time.Now())
|
|
||||||
time4 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.CloseTime2, time.Now())
|
|
||||||
if time.Now().Sub(time3) < 0 || time.Now().Sub(time4) > 0 {
|
|
||||||
partner.CurOrderManager.OnOrderMsg(order, "自动创建三方运单失败", "不在门店营业时间范围内!")
|
|
||||||
globals.SugarLogger.Warnf("createWaybillOn3rdProviders return orderID: %s,不在门店营业时间范围内1!", order.VendorOrderID)
|
|
||||||
return fmt.Errorf("不在门店营业时间范围内!")
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
partner.CurOrderManager.OnOrderMsg(order, "自动创建三方运单失败", "不在门店营业时间范围内!")
|
|
||||||
globals.SugarLogger.Warnf("createWaybillOn3rdProviders return orderID: %s,不在门店营业时间范围内2!", order.VendorOrderID)
|
|
||||||
return fmt.Errorf("不在门店营业时间范围内!")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, status:%d, maxDeliveryFee:%d, excludeBill:%v", order.VendorOrderID, order.Status, maxDeliveryFee, excludeBill)
|
globals.SugarLogger.Debugf("createWaybillOn3rdProviders, orderID:%s, status:%d, maxDeliveryFee:%d, excludeBill:%v", order.VendorOrderID, order.Status, maxDeliveryFee, excludeBill)
|
||||||
if err = s.canOrderCreateWaybillNormally(order); 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 {
|
||||||
savedOrderInfo.isNeedCreate3rdWaybill = true
|
savedOrderInfo.isNeedCreate3rdWaybill = true
|
||||||
@@ -1197,6 +1177,12 @@ func (s *DefScheduler) updateOrderByBill(order *model.GoodsOrder, bill *model.Wa
|
|||||||
} else {
|
} else {
|
||||||
order.WaybillVendorID = bill.WaybillVendorID
|
order.WaybillVendorID = bill.WaybillVendorID
|
||||||
order.VendorWaybillID = bill.VendorWaybillID
|
order.VendorWaybillID = bill.VendorWaybillID
|
||||||
|
if bill.Status == model.WaybillStatusDelivered {
|
||||||
|
storeDetail, _ := partner.CurOrderManager.LoadStoreDetail(jxutils.GetSaleStoreIDFromOrder(order), order.VendorID)
|
||||||
|
if storeDetail != nil {
|
||||||
|
jxutils.RefreshOrderEarningPrice2(order, storeDetail.PayPercentage)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if revertStatus {
|
if revertStatus {
|
||||||
order.Status = model.OrderStatusFinishedPickup
|
order.Status = model.OrderStatusFinishedPickup
|
||||||
|
|||||||
@@ -81,12 +81,32 @@ func (s *DefScheduler) SelfDeliveringAndUpdateStatus(ctx *jxcontext.Context, ven
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *DefScheduler) canOrderCreateWaybillNormally(order *model.GoodsOrder) (err error) {
|
func (s *DefScheduler) canOrderCreateWaybillNormally(order *model.GoodsOrder, savedOrderInfo *WatchOrderInfo) (err error) {
|
||||||
if !(order.LockStatus != model.OrderStatusLocked && order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) {
|
if !(order.LockStatus != model.OrderStatusLocked && order.Status >= model.OrderStatusFinishedPickup && order.Status < model.OrderStatusEndBegin) {
|
||||||
err = fmt.Errorf("当前订单%s没有处于拣货完成且没有结束没有锁定的订单才能进行召唤配送操作", order.VendorOrderID)
|
err = fmt.Errorf("当前订单%s没有处于拣货完成且没有结束没有锁定的订单才能进行召唤配送操作", order.VendorOrderID)
|
||||||
} else if model.IsOrderHaveWaybill(order) {
|
} else if model.IsOrderHaveWaybill(order) {
|
||||||
err = fmt.Errorf("当前订单%s已经有了有效的承运人%s了", order.VendorOrderID, jxutils.GetVendorName(order.WaybillVendorID))
|
err = fmt.Errorf("当前订单%s已经有了有效的承运人%s了", order.VendorOrderID, jxutils.GetVendorName(order.WaybillVendorID))
|
||||||
}
|
}
|
||||||
|
if savedOrderInfo != nil {
|
||||||
|
//TODO 2020-07-21 发单时间要在门店的营业时间内
|
||||||
|
if savedOrderInfo.storeDetail.OpenTime1 != 0 && savedOrderInfo.storeDetail.CloseTime1 != 0 {
|
||||||
|
time1 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.OpenTime1, time.Now())
|
||||||
|
time2 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.CloseTime1, time.Now())
|
||||||
|
if time.Now().Sub(time1) < 0 || time.Now().Sub(time2) > 0 {
|
||||||
|
if savedOrderInfo.storeDetail.OpenTime2 != 0 && savedOrderInfo.storeDetail.CloseTime2 != 0 {
|
||||||
|
time3 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.OpenTime2, time.Now())
|
||||||
|
time4 := jxutils.JxOperationTime2TimeByDate(savedOrderInfo.storeDetail.CloseTime2, time.Now())
|
||||||
|
if time.Now().Sub(time3) < 0 || time.Now().Sub(time4) > 0 {
|
||||||
|
globals.SugarLogger.Warnf("createWaybillOn3rdProviders return orderID: %s,不在门店营业时间范围内1!", order.VendorOrderID)
|
||||||
|
return fmt.Errorf("不在门店营业时间范围内!")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
globals.SugarLogger.Warnf("createWaybillOn3rdProviders return orderID: %s,不在门店营业时间范围内2!", order.VendorOrderID)
|
||||||
|
return fmt.Errorf("不在门店营业时间范围内!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,7 +132,7 @@ func (s *DefScheduler) isPossibleSwitch2SelfDelivery(order *model.GoodsOrder) (e
|
|||||||
func (s *DefScheduler) CreateWaybillOnProviders4SavedOrder(ctx *jxcontext.Context, savedOrderInfo *WatchOrderInfo, courierVendorIDs, excludeCourierVendorIDs []int, forceCreate bool, maxDeliveryFee int64) (bills []*model.Waybill, err error) {
|
func (s *DefScheduler) CreateWaybillOnProviders4SavedOrder(ctx *jxcontext.Context, savedOrderInfo *WatchOrderInfo, courierVendorIDs, excludeCourierVendorIDs []int, forceCreate bool, maxDeliveryFee int64) (bills []*model.Waybill, err error) {
|
||||||
order := savedOrderInfo.order
|
order := savedOrderInfo.order
|
||||||
if !forceCreate {
|
if !forceCreate {
|
||||||
err = s.canOrderCreateWaybillNormally(order)
|
err = s.canOrderCreateWaybillNormally(order, nil)
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if forceCreate {
|
if forceCreate {
|
||||||
|
|||||||
@@ -1116,30 +1116,12 @@ func (v *VendorSync) SyncJdsStoresSkus(ctx *jxcontext.Context, storeIDs []int, i
|
|||||||
}
|
}
|
||||||
|
|
||||||
func syncJdsStoreStock(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch.ITask, storeSkus []*model.StoreSkuBind, storeMap *model.StoreMap, isAsync, isContinueWhenError bool) (err error) {
|
func syncJdsStoreStock(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch.ITask, storeSkus []*model.StoreSkuBind, storeMap *model.StoreMap, isAsync, isContinueWhenError bool) (err error) {
|
||||||
for _, storeSku := range storeSkus {
|
// for _, storeSku := range storeSkus {
|
||||||
stock := 0
|
|
||||||
storeSku2, _ := dao.GetStoresSkusInfo(db, []int{storeMap.StoreID}, []int{storeSku.SkuID})
|
|
||||||
if storeSku.JdsID != 0 {
|
|
||||||
if len(storeSku2) > 0 {
|
|
||||||
if storeSku2[0].Status == model.StoreSkuBindStatusNormal {
|
|
||||||
stock = 9999
|
|
||||||
}
|
|
||||||
if storeMap.VendorStoreID != "" {
|
|
||||||
err = api.JdShopAPI.UpdateSkuSiteStock(storeSku.JdsID, stock, utils.Str2Int(storeMap.VendorStoreID))
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
err = api.JdShopAPI.UpdateSkuSiteStock(storeSku.JdsID, 0, utils.Str2Int(storeMap.VendorStoreID))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// task := tasksch.NewParallelTask("syncJdsStoreStock", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(1).SetBatchSize(20), ctx,
|
|
||||||
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
|
||||||
// storeSku := batchItemList[0].(*model.StoreSkuBind)
|
|
||||||
// stock := 0
|
// stock := 0
|
||||||
// storeSku2, _ := dao.GetStoresSkusInfo(db, []int{storeMap.StoreID}, []int{storeSku.SkuID})
|
// storeSku2, _ := dao.GetStoresSkusInfo(db, []int{storeMap.StoreID}, []int{storeSku.SkuID})
|
||||||
// if storeSku.JdsID != 0 {
|
// if storeSku.JdsID != 0 {
|
||||||
// if len(storeSku2) > 0 {
|
// if len(storeSku2) > 0 {
|
||||||
// if storeSku2[0].Status == model.StoreSkuBindStatusNormal {
|
// if storeSku2[0].Status == model.StoreSkuBindStatusNormal && storeSku.Status == model.StoreSkuBindStatusNormal {
|
||||||
// stock = 9999
|
// stock = 9999
|
||||||
// }
|
// }
|
||||||
// if storeMap.VendorStoreID != "" {
|
// if storeMap.VendorStoreID != "" {
|
||||||
@@ -1149,12 +1131,30 @@ func syncJdsStoreStock(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch
|
|||||||
// err = api.JdShopAPI.UpdateSkuSiteStock(storeSku.JdsID, 0, utils.Str2Int(storeMap.VendorStoreID))
|
// err = api.JdShopAPI.UpdateSkuSiteStock(storeSku.JdsID, 0, utils.Str2Int(storeMap.VendorStoreID))
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// return retVal, err
|
|
||||||
// }, storeSkus)
|
|
||||||
// tasksch.HandleTask(task, parentTask, true).Run()
|
|
||||||
// if !isAsync {
|
|
||||||
// _, err = task.GetResult(0)
|
|
||||||
// }
|
// }
|
||||||
|
task := tasksch.NewParallelTask("syncJdsStoreStock", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetParallelCount(1), ctx,
|
||||||
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
storeSku := batchItemList[0].(*model.StoreSkuBind)
|
||||||
|
stock := 0
|
||||||
|
storeSku2, _ := dao.GetStoresSkusInfo(db, []int{storeMap.StoreID}, []int{storeSku.SkuID})
|
||||||
|
if storeSku.JdsID != 0 {
|
||||||
|
if len(storeSku2) > 0 {
|
||||||
|
if storeSku2[0].Status == model.StoreSkuBindStatusNormal && storeSku.Status == model.StoreSkuBindStatusNormal {
|
||||||
|
stock = 9999
|
||||||
|
}
|
||||||
|
if storeMap.VendorStoreID != "" {
|
||||||
|
err = api.JdShopAPI.UpdateSkuSiteStock(storeSku.JdsID, stock, utils.Str2Int(storeMap.VendorStoreID))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
err = api.JdShopAPI.UpdateSkuSiteStock(storeSku.JdsID, 0, utils.Str2Int(storeMap.VendorStoreID))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return retVal, err
|
||||||
|
}, storeSkus)
|
||||||
|
tasksch.HandleTask(task, parentTask, true).Run()
|
||||||
|
if !isAsync {
|
||||||
|
_, err = task.GetResult(0)
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -297,9 +297,14 @@ func formalizeStoreSkuList(inSkuList []*dao.StoreSkuSyncInfo) []*dao.StoreSkuSyn
|
|||||||
skuItem.SkuName = jxutils.ComposeSkuNameSync(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
|
skuItem.SkuName = jxutils.ComposeSkuNameSync(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
|
||||||
skuItem.SkuNameOrigin = jxutils.ComposeSkuNameOriginal(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0)
|
skuItem.SkuNameOrigin = jxutils.ComposeSkuNameOriginal(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0)
|
||||||
if skuItem.ImgWatermark != "" {
|
if skuItem.ImgWatermark != "" {
|
||||||
|
if utils.Time2Date(time.Now().Add(6*time.Hour)).Sub(*skuItem.ExPrefixBegin) >= 0 && utils.Time2Date(time.Now()).Sub(*skuItem.ExPrefixEnd) <= 0 {
|
||||||
downLoad, _ := uploadImgStandard(skuItem.ImgWatermark)
|
downLoad, _ := uploadImgStandard(skuItem.ImgWatermark)
|
||||||
skuItem.ImgMix = jxutils.MixWatermarkImg(downLoad, skuItem.ImgOrigin, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
|
skuItem.ImgMix = jxutils.MixWatermarkImg(downLoad, skuItem.ImgOrigin, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
|
||||||
}
|
}
|
||||||
|
if utils.Time2Date(time.Now().Add(6*time.Hour)).Sub(*skuItem.ExPrefixEnd) > 0 {
|
||||||
|
skuItem.ImgMix = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return inSkuList
|
return inSkuList
|
||||||
|
|||||||
@@ -589,8 +589,12 @@ func RefreshOrderSkuRelated(order *model.GoodsOrder) *model.GoodsOrder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func RefreshOrderEarningPrice2(order *model.GoodsOrder, payPercentage int) *model.GoodsOrder {
|
func RefreshOrderEarningPrice2(order *model.GoodsOrder, payPercentage int) *model.GoodsOrder {
|
||||||
if payPercentage <= 50 {
|
if order.EarningType == model.EarningTypePoints {
|
||||||
|
if order.VendorID == model.VendorIDJDShop || order.VendorID == model.VendorIDJX {
|
||||||
order.NewEarningPrice = order.TotalShopMoney * int64((100 - payPercentage/2)) / 100
|
order.NewEarningPrice = order.TotalShopMoney * int64((100 - payPercentage/2)) / 100
|
||||||
|
} else {
|
||||||
|
order.NewEarningPrice = order.TotalShopMoney * int64((100 - payPercentage)) / 100
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
order.NewEarningPrice = order.EarningPrice
|
order.NewEarningPrice = order.EarningPrice
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ const (
|
|||||||
RefundStatusNo = 0
|
RefundStatusNo = 0
|
||||||
RefundStatusYes = 1
|
RefundStatusYes = 1
|
||||||
RefundStatusFailed = 2
|
RefundStatusFailed = 2
|
||||||
|
|
||||||
|
EarningTypeQuote = 1 //报价模式
|
||||||
|
EarningTypePoints = 2 //扣点模式
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -107,6 +110,7 @@ type GoodsOrder struct {
|
|||||||
FromStoreID int `orm:"column(from_store_id)" json:"fromStoreID"` //物料配送门店
|
FromStoreID int `orm:"column(from_store_id)" json:"fromStoreID"` //物料配送门店
|
||||||
EclpOutID string `orm:"column(eclp_out_id)" json:"eclpOutID"` //物料配送的出库单号
|
EclpOutID string `orm:"column(eclp_out_id)" json:"eclpOutID"` //物料配送的出库单号
|
||||||
AddressID int64 `orm:"column(address_id)" json:"addressID"` //配送地址ID
|
AddressID int64 `orm:"column(address_id)" json:"addressID"` //配送地址ID
|
||||||
|
EarningType int `json:"earningType"` //订单结算方式,2为扣点,1为报价
|
||||||
|
|
||||||
// 以下只是用于传递数据
|
// 以下只是用于传递数据
|
||||||
OriginalData string `orm:"-" json:"-"`
|
OriginalData string `orm:"-" json:"-"`
|
||||||
|
|||||||
@@ -105,6 +105,7 @@ type IOrderManager interface {
|
|||||||
|
|
||||||
UpdateOrderStatusAndDeliveryFlag(order *model.GoodsOrder) (err error)
|
UpdateOrderStatusAndDeliveryFlag(order *model.GoodsOrder) (err error)
|
||||||
UpdateOrderFields(order *model.GoodsOrder, fieldList []string) (err error)
|
UpdateOrderFields(order *model.GoodsOrder, fieldList []string) (err error)
|
||||||
|
LoadStoreDetail(storeID, vendorID int) (storeDetail *dao.StoreDetail, err error)
|
||||||
|
|
||||||
LoadWaybill(vendorWaybillID string, waybillVendorID int) (bill *model.Waybill, err error)
|
LoadWaybill(vendorWaybillID string, waybillVendorID int) (bill *model.Waybill, err error)
|
||||||
OnOrderComments(orderCommentList []*model.OrderComment) (err error)
|
OnOrderComments(orderCommentList []*model.OrderComment) (err error)
|
||||||
|
|||||||
@@ -159,12 +159,13 @@ func updateOrderBySettleMent(order *model.GoodsOrder, orderSettlement *jdapi.Ord
|
|||||||
order.TotalShopMoney = orderSettlement.SettlementAmount
|
order.TotalShopMoney = orderSettlement.SettlementAmount
|
||||||
order.PmSubsidyMoney = orderSettlement.PlatOrderGoodsDiscountMoney + orderSettlement.PlatSkuGoodsDiscountMoney
|
order.PmSubsidyMoney = orderSettlement.PlatOrderGoodsDiscountMoney + orderSettlement.PlatSkuGoodsDiscountMoney
|
||||||
if order.TotalShopMoney > 0 {
|
if order.TotalShopMoney > 0 {
|
||||||
stores, _ := dao.GetStoreList(dao.GetDB(), []int{order.StoreID}, nil, nil, nil, "")
|
order2, err := partner.CurOrderManager.LoadOrder(order.VendorOrderID, order.VendorID)
|
||||||
if len(stores) > 0 {
|
if order2 != nil && err == nil {
|
||||||
if stores[0].PayPercentage <= 50 {
|
storeDetail, err := partner.CurOrderManager.LoadStoreDetail(jxutils.GetSaleStoreIDFromOrder(order2), order.VendorID)
|
||||||
order.NewEarningPrice = order.TotalShopMoney * int64((100 - stores[0].PayPercentage/2)) / 100
|
if storeDetail != nil && err == nil {
|
||||||
|
jxutils.RefreshOrderEarningPrice2(order, storeDetail.PayPercentage)
|
||||||
} else {
|
} else {
|
||||||
order.NewEarningPrice = order.EarningPrice
|
globals.SugarLogger.Warnf("updateOrderBySettleMent,%v,%v,%v", order.VendorOrderID, orderSettlement.SettlementAmount)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -659,7 +659,7 @@ func buildCreateWareParam(storeSku *dao.StoreSkuSyncInfo) (createSkuParamWare *j
|
|||||||
}
|
}
|
||||||
attrBzq := &jdshopapi.CreateSkuParamAttrs{
|
attrBzq := &jdshopapi.CreateSkuParamAttrs{
|
||||||
AttrID: utils.Int2Str(attrIDs["保质期"]),
|
AttrID: utils.Int2Str(attrIDs["保质期"]),
|
||||||
AttrValues: []string{"5"},
|
AttrValues: []string{"5天"},
|
||||||
}
|
}
|
||||||
attrsProp = append(attrsProp, attrZctj)
|
attrsProp = append(attrsProp, attrZctj)
|
||||||
attrsProp = append(attrsProp, attrJhl)
|
attrsProp = append(attrsProp, attrJhl)
|
||||||
|
|||||||
@@ -110,6 +110,7 @@ type JxOrderInfo struct {
|
|||||||
StoreName string `json:"storeName"`
|
StoreName string `json:"storeName"`
|
||||||
Weight int `json:"weight"`
|
Weight int `json:"weight"`
|
||||||
FromStoreID int `json:"fromStoreID"`
|
FromStoreID int `json:"fromStoreID"`
|
||||||
|
EarningType int `json:"earningType"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type DeliveryTimeItem struct {
|
type DeliveryTimeItem struct {
|
||||||
@@ -481,6 +482,13 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
|
|||||||
return nil, nil, fmt.Errorf("当前送货地址不在门店%s的配送范围", storeDetail.Name)
|
return nil, nil, fmt.Errorf("当前送货地址不在门店%s的配送范围", storeDetail.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//结算类型
|
||||||
|
if storeDetail.PayPercentage < 50 {
|
||||||
|
jxOrder.EarningType = model.EarningTypePoints
|
||||||
|
} else {
|
||||||
|
jxOrder.EarningType = model.EarningTypeQuote
|
||||||
|
}
|
||||||
|
|
||||||
// 营业状态及时间检查
|
// 营业状态及时间检查
|
||||||
if storeDetail.Status != model.StoreStatusOpened { // model.StoreStatusDisabled {
|
if storeDetail.Status != model.StoreStatusOpened { // model.StoreStatusDisabled {
|
||||||
return nil, nil, fmt.Errorf("门店:%s状态是:%s", storeDetail.Name, model.StoreStatusName[storeDetail.Status])
|
return nil, nil, fmt.Errorf("门店:%s状态是:%s", storeDetail.Name, model.StoreStatusName[storeDetail.Status])
|
||||||
@@ -820,6 +828,7 @@ func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAd
|
|||||||
|
|
||||||
DeliveryType: model.OrderDeliveryTypeStoreSelf,
|
DeliveryType: model.OrderDeliveryTypeStoreSelf,
|
||||||
StatusTime: time.Now(),
|
StatusTime: time.Now(),
|
||||||
|
EarningType: jxOrder.EarningType,
|
||||||
}
|
}
|
||||||
if userID == "" {
|
if userID == "" {
|
||||||
order.UserID = ctx.GetUserID()
|
order.UserID = ctx.GetUserID()
|
||||||
|
|||||||
Reference in New Issue
Block a user