97 lines
3.1 KiB
Go
97 lines
3.1 KiB
Go
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
|
|
}
|