From 0f3b6b3a6c8da8bd2395e82f11f25febd65c92f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Tue, 16 Aug 2022 11:59:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=AC=E8=A5=BF=E4=BA=91?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jxcallback/scheduler/defsch/defsch.go | 7 ++++-- business/jxstore/cms/storeman.go | 3 ++- business/jxutils/netprinter/netprinter.go | 24 +++++++++++++++++++ business/partner/partner_printer.go | 2 +- business/partner/printer/feie/feie.go | 2 +- business/partner/printer/jxprint/jxprint.go | 18 ++++++++++---- business/partner/printer/xiaowm/xiaowm.go | 2 +- .../partner/printer/yilianyun/yilianyun.go | 2 +- business/partner/printer/zhongwu/zhongwu.go | 2 +- business/partner/purchase/jd/store.go | 24 +++++++++---------- business/partner/purchase/jx/localjx/order.go | 2 -- controllers/cms_store_sku.go | 2 +- 12 files changed, 62 insertions(+), 28 deletions(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 9091ef9f2..7ab965494 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -433,8 +433,7 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod statusChanged := savedOrderInfo.order == nil || savedOrderInfo.order.Status != order.Status savedOrderInfo.SetOrder(order) - if (model.IsOrderUnlockStatus(status.Status)) || - (order.LockStatus == model.OrderStatusUnknown && (status.Status > model.OrderStatusUnknown || status.Status == model.OrderStatusRefuseFailedGetGoods)) { // 只处理状态转换,一般消息不处理 + if (model.IsOrderUnlockStatus(status.Status)) || (order.LockStatus == model.OrderStatusUnknown && (status.Status > model.OrderStatusUnknown || status.Status == model.OrderStatusRefuseFailedGetGoods)) { // 只处理状态转换,一般消息不处理 if status.Status == model.OrderStatusRefuseFailedGetGoods && order.Status != model.OrderStatusFinishedPickup && !model.IsOrderFinalStatus(order.Status) { order.Status = model.OrderStatusFinishedPickup partner.CurOrderManager.UpdateOrderStatusAndDeliveryFlag(order) @@ -500,6 +499,7 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod } msghub.OnKeyOrderStatusChanged(savedOrderInfo.order) } + netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order, model.PrintTypeOrder) } } return err @@ -512,6 +512,9 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo savedOrderInfo := s.loadSavedOrderFromMap(model.Waybill2Status(bill), true) order := savedOrderInfo.order + // 打印通知 + netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order, model.PrintTypeOrder) + // 获取订单配送平台,如果是美团则需要获取门店配置的配送方式 //isBlendWay := false //if bill.OrderVendorID == model.VendorIDMTWM { diff --git a/business/jxstore/cms/storeman.go b/business/jxstore/cms/storeman.go index 3e0254122..80bb44751 100644 --- a/business/jxstore/cms/storeman.go +++ b/business/jxstore/cms/storeman.go @@ -113,8 +113,9 @@ func (s *StoreManager) OnStoreStatusChanged(vendorStoreID string, vendorID int, dao.Commit(db, txDB) } + // 打印门第离线消息 if storeStatus < model.StoreStatusOpened && storeDetail.PrinterVendorID == model.VendorIDJxprint { - netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order, model.PrintTypeStore) + netprinter.PrintStoreStatus(jxcontext.AdminCtx, storeDetail, vendorID) } } return err diff --git a/business/jxutils/netprinter/netprinter.go b/business/jxutils/netprinter/netprinter.go index 13b97e424..a29d95490 100644 --- a/business/jxutils/netprinter/netprinter.go +++ b/business/jxutils/netprinter/netprinter.go @@ -101,6 +101,30 @@ func PrintOrderByOrder4Store(ctx *jxcontext.Context, order *model.GoodsOrder, st return printResult, err } +// PrintStoreStatus 打印门店信息 +func PrintStoreStatus(ctx *jxcontext.Context, storeDetail *dao.StoreDetail, vendorId int) (printResult *partner.PrinterStatus, err error) { + db := dao.GetDB() + store, err := getStore4Print(db, storeDetail.ID) + if err != nil { + return &partner.PrinterStatus{ + PrintResult: partner.PrintResultNoPrinter, + }, nil + } + + handler, err := GetHandlerFromStore(store) + if err != nil { + return &partner.PrinterStatus{ + PrintResult: partner.PrintResultNoPrinter, + }, nil + } + + printResult, err = handler.PrintStore(ctx, store, storeDetail, vendorId) + if err == nil { + dao.SetOrderPrintFlag(db, ctx.GetUserName(), "store print", vendorId, true) + } + return printResult, err +} + // PrintRefundOrCancelOrder 打印退单或取消订单信息 func PrintRefundOrCancelOrder(ctx *jxcontext.Context, printType int, order *model.GoodsOrder, storeID int) (printResult *partner.PrinterStatus, err error) { db := dao.GetDB() diff --git a/business/partner/partner_printer.go b/business/partner/partner_printer.go index 93a825883..a67a20cfa 100644 --- a/business/partner/partner_printer.go +++ b/business/partner/partner_printer.go @@ -63,7 +63,7 @@ type IPrinterHandler interface { RebindPrinter(ctx *jxcontext.Context, lastBindResult *BindPrinterResult) (bindResult *BindPrinterResult, err error) PrintOrder(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder, printType string) (printerStatus *PrinterStatus, err error) - PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, printType string) (printerStatus *PrinterStatus, err error) + PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, vendorId int) (printerStatus *PrinterStatus, err error) PrintCancelOrRefundOrder(ctx *jxcontext.Context, printType int, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *PrinterStatus, err error) EmptyPrintList(ctx *jxcontext.Context, id1, id2 string) (err error) diff --git a/business/partner/printer/feie/feie.go b/business/partner/printer/feie/feie.go index b6e679b7c..762f462cf 100644 --- a/business/partner/printer/feie/feie.go +++ b/business/partner/printer/feie/feie.go @@ -265,7 +265,7 @@ func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store, return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, order.VendorOrderID, content) } -func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, printType string) (printerStatus *partner.PrinterStatus, err error) { +func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, vendorId int) (printerStatus *partner.PrinterStatus, err error) { return nil, err } diff --git a/business/partner/printer/jxprint/jxprint.go b/business/partner/printer/jxprint/jxprint.go index 508d73f3e..720d8427f 100644 --- a/business/partner/printer/jxprint/jxprint.go +++ b/business/partner/printer/jxprint/jxprint.go @@ -236,6 +236,9 @@ func (c *PrinterHandler) getOrderContentByTemplate(order *model.GoodsOrder, stor func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder, printType string) (printerStatus *partner.PrinterStatus, err error) { globals.SugarLogger.Debugf("jxprint PrintOrderByOrder orderID:%s, storeID:%d", order.VendorOrderID, store.ID) + if storeDetail.PrinterVendorID != model.VendorIDJxprint { + return nil, nil + } if len(order.Skus) == 0 { return } @@ -268,13 +271,18 @@ func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store, return c.PrintMsg(ctx, store.PrinterSN, order.VendorOrderID, "", string(orderPrint)) } -func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, printType string) (printerStatus *partner.PrinterStatus, err error) { +// PrintStore 打印门店 +func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, vendorCode int) (printerStatus *partner.PrinterStatus, err error) { data := make(map[string]interface{}, 0) - data[StoreStatus] = utils.Int2Str(store.Status) // 门店状态 - data[StoreStatus] = utils.Int2Str(store.Status) // 门店状态 - data[StoreStatus] = utils.Int2Str(store.Status) // 门店状态 + data[StoreStatus] = utils.Int2Str(store.Status) + data[StoreName] = storeDetail.VendorStoreName + data[VendorName] = model.VendorChineseNames[vendorCode] + orderPrint, err := json.Marshal(data) + if err != nil { + return nil, err + } - return nil, err + return c.PrintMsg(ctx, store.PrinterSN, "", "", string(orderPrint)) } func (c *PrinterHandler) PrintCancelOrRefundOrder(ctx *jxcontext.Context, printType int, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) { diff --git a/business/partner/printer/xiaowm/xiaowm.go b/business/partner/printer/xiaowm/xiaowm.go index daac05208..eb55a87aa 100644 --- a/business/partner/printer/xiaowm/xiaowm.go +++ b/business/partner/printer/xiaowm/xiaowm.go @@ -307,7 +307,7 @@ func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store, return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, order.VendorOrderID, content) } -func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, printType string) (printerStatus *partner.PrinterStatus, err error) { +func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, vendorId int) (printerStatus *partner.PrinterStatus, err error) { return nil, err } diff --git a/business/partner/printer/yilianyun/yilianyun.go b/business/partner/printer/yilianyun/yilianyun.go index 44ad0f0c8..104f5a301 100644 --- a/business/partner/printer/yilianyun/yilianyun.go +++ b/business/partner/printer/yilianyun/yilianyun.go @@ -419,7 +419,7 @@ func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store, } } -func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, printType string) (printerStatus *partner.PrinterStatus, err error) { +func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, vendorId int) (printerStatus *partner.PrinterStatus, err error) { return nil, err } diff --git a/business/partner/printer/zhongwu/zhongwu.go b/business/partner/printer/zhongwu/zhongwu.go index aac74990d..80f582acc 100644 --- a/business/partner/printer/zhongwu/zhongwu.go +++ b/business/partner/printer/zhongwu/zhongwu.go @@ -230,7 +230,7 @@ func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store, return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, order.VendorOrderID, content) } -func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, printType string) (printerStatus *partner.PrinterStatus, err error) { +func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, vendorId int) (printerStatus *partner.PrinterStatus, err error) { return nil, err } diff --git a/business/partner/purchase/jd/store.go b/business/partner/purchase/jd/store.go index ff0d047b3..6395df866 100644 --- a/business/partner/purchase/jd/store.go +++ b/business/partner/purchase/jd/store.go @@ -329,18 +329,18 @@ func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorOrgCode s // 当前京东的storeCrud消息不会在门店状态改变时发送,所以意义不大,先放在这里 func (c *PurchaseHandler) OnStoreMsg(vendorOrgCode string, msg *jdapi.CallbackOrderMsg) (response *jdapi.CallbackResponse) { var err error - // if msg.StatusID == jdapi.StatusIDUpdateStore { - // var storeStatus int - // vendorStoreID := msg.BillID - // if storeStatus, err = c.GetStoreStatus(jxcontext.AdminCtx, vendorStoreID); err == nil { - // err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDJD, storeStatus) - // } else { - // // 可能在门店删除的情况下会出查不到门店的错误 - // if errExt, ok := err.(*utils.ErrorWithCode); ok && errExt.IntCode() == 4 { - // err = nil - // } - // } - // } + if msg.StatusID == jdapi.StatusIDUpdateStore { + var storeStatus int + vendorStoreID := msg.BillID + if storeStatus, err = c.GetStoreStatus(jxcontext.AdminCtx, vendorOrgCode, 0, vendorStoreID); err == nil { + err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDJD, storeStatus) + } else { + // 可能在门店删除的情况下会出查不到门店的错误 + if errExt, ok := err.(*utils.ErrorWithCode); ok && errExt.IntCode() == 4 { + err = nil + } + } + } return jdapi.Err2CallbackResponse(err, "") } diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index c9ac94033..ebc0f4f6c 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -560,12 +560,10 @@ func OnPayFinished(orderPay *model.OrderPay) (err error) { err = callNewOrder(order) //如果是物料的订单,直接到拣货完成,配送中的状态 if order.OrderType != model.OrderTypeNormal { - // if order.FromStoreID != 0 { if order.OrderType != model.OrderTypeDefendPrice { netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order, model.PrintTypeOrder) } PickupGoods(order, false, "jxadmin") - // } } else { //普通的订单要看用没用优惠券,用了的话,要把这个用户用过的优惠券状态改了 if order.CouponIDs != "" { diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index ade3f399a..344499a4a 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -274,7 +274,7 @@ func (c *StoreSkuController) SyncStoresSkus() { // @Param isAsync formData bool false "是否异步操作" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult -// @router /UpdateStoresSkus [put] +// @router /UpdateStoresSkus [put] func (c *StoreSkuController) UpdateStoresSkus() { c.callUpdateStoresSkus(func(params *tStoreSkuUpdateStoresSkusParams) (retVal interface{}, errCode string, err error) { var storeIDs []int