package netprinter import ( "fmt" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/globals" ) const ( testVendorOrderID = "test" realTestVendorOrderID = "817102016000041" realTestOrderVendorID = model.VendorIDJD ) func PrintOrder(ctx *jxcontext.Context, vendorOrderID string, vendorID int) (printResult *partner.PrinterStatus, err error) { storeID := vendorID if vendorOrderID == testVendorOrderID { vendorOrderID = realTestVendorOrderID vendorID = realTestOrderVendorID } order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, vendorID) if err == nil { if vendorOrderID == realTestVendorOrderID { order.BuyerComment = "用户备注" order.ConsigneeAddress = "四川省成都市某个地方" order.ConsigneeLat = 30695171 order.ConsigneeLng = 104056984 order.ConsigneeName = "用户姓名" order.ConsigneeMobile = "13812345678" order.ConsigneeMobile2 = "13812345678" order.StoreName = "京西菜市-测试门店" order.StoreID = storeID order.JxStoreID = storeID } printResult, err = PrintOrderByOrder(ctx, order) } return printResult, err } func PrintOrderByOrder(ctx *jxcontext.Context, order *model.GoodsOrder) (printResult *partner.PrinterStatus, err error) { globals.SugarLogger.Debugf("PrintOrderByOrder orderID:%s", order.VendorOrderID) store := &model.Store{} store.ID = jxutils.GetSaleStoreIDFromOrder(order) db := dao.GetDB() if err = dao.GetEntity(db, store); err == nil { handler, err := GetHandlerFromStore(store) if err != nil { return &partner.PrinterStatus{ PrintResult: partner.PrintResultNoPrinter, }, nil } if globals.EnableStoreWrite { printResult, err = handler.PrintOrder(ctx, store, order) } if err == nil { dao.SetOrderPrintFlag(db, ctx.GetUserName(), order.VendorOrderID, order.VendorID, true) } } if err != nil { globals.SugarLogger.Infof("PrintOrderByOrder orderID:%s failed with error:%v", order.VendorOrderID, err) } return printResult, err } func GetNetPrinterStatus(ctx *jxcontext.Context, storeID int) (printResult *partner.PrinterStatus, err error) { store := &model.Store{} store.ID = storeID db := dao.GetDB() if err = dao.GetEntity(db, store); err == nil { return getNetPrinterStatus(ctx, store) } return nil, err } func getNetPrinterStatus(ctx *jxcontext.Context, store *model.Store) (printResult *partner.PrinterStatus, err error) { handler, err := GetHandlerFromStore(store) if err != nil { return &partner.PrinterStatus{ PrintResult: partner.PrintResultNoPrinter, }, nil } return handler.GetPrinterStatus(ctx, store.PrinterSN, store.PrinterKey) } func GetHandlerFromStore(store *model.Store) (printerHandler partner.IPrinterHandler, err error) { if printerHandler = partner.GetPrinterPlatformFromVendorID(store.PrinterVendorID); printerHandler == nil { return nil, fmt.Errorf("门店%s没有配置网络打印机", store.Name) } return printerHandler, nil }