Merge branch 'jdshop' of https://e.coding.net/rosydev/jx-callback into jdshop

This commit is contained in:
richboo111
2022-08-24 17:25:11 +08:00
23 changed files with 401 additions and 203 deletions

View File

@@ -42,7 +42,7 @@ func (c *OrderManager) notifyNewFakeJdOrder(order *model.GoodsOrder) (err error)
realStoreID = storeDetail.LinkStoreID realStoreID = storeDetail.LinkStoreID
} }
notifyWxNewFakeJdOrder(order, realStoreID) notifyWxNewFakeJdOrder(order, realStoreID)
netprinter.PrintOrderByOrder4Store(jxcontext.AdminCtx, order, realStoreID) netprinter.PrintOrderByOrder4Store(jxcontext.AdminCtx, order, realStoreID, "")
return err return err
} }

View File

@@ -392,7 +392,7 @@ func (s *DefScheduler) OnOrderNew(order *model.GoodsOrder, isPending bool, isAut
if order.Flag&model.OrderFlagMaskFake == 0 { if order.Flag&model.OrderFlagMaskFake == 0 {
utils.CallFuncAsync(func() { utils.CallFuncAsync(func() {
// order = setFakeActualPayPrice(order) // order = setFakeActualPayPrice(order)
netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order) netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order, model.PrintTypeOrder)
//目前暂且认为AdjustCount > 0 就是调整单 //目前暂且认为AdjustCount > 0 就是调整单
if order.AdjustCount > 0 { if order.AdjustCount > 0 {
weixinmsg.NotifyAdjustOrder(order) weixinmsg.NotifyAdjustOrder(order)
@@ -433,8 +433,7 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod
statusChanged := savedOrderInfo.order == nil || savedOrderInfo.order.Status != order.Status statusChanged := savedOrderInfo.order == nil || savedOrderInfo.order.Status != order.Status
savedOrderInfo.SetOrder(order) savedOrderInfo.SetOrder(order)
if (model.IsOrderUnlockStatus(status.Status)) || if (model.IsOrderUnlockStatus(status.Status)) || (order.LockStatus == model.OrderStatusUnknown && (status.Status > model.OrderStatusUnknown || status.Status == model.OrderStatusRefuseFailedGetGoods)) { // 只处理状态转换,一般消息不处理
(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) { if status.Status == model.OrderStatusRefuseFailedGetGoods && order.Status != model.OrderStatusFinishedPickup && !model.IsOrderFinalStatus(order.Status) {
order.Status = model.OrderStatusFinishedPickup order.Status = model.OrderStatusFinishedPickup
partner.CurOrderManager.UpdateOrderStatusAndDeliveryFlag(order) partner.CurOrderManager.UpdateOrderStatusAndDeliveryFlag(order)
@@ -500,6 +499,7 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod
} }
msghub.OnKeyOrderStatusChanged(savedOrderInfo.order) msghub.OnKeyOrderStatusChanged(savedOrderInfo.order)
} }
//netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order, model.PrintTypeOrder)
} }
} }
return err return err
@@ -512,6 +512,9 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo
savedOrderInfo := s.loadSavedOrderFromMap(model.Waybill2Status(bill), true) savedOrderInfo := s.loadSavedOrderFromMap(model.Waybill2Status(bill), true)
order := savedOrderInfo.order order := savedOrderInfo.order
// 打印通知
//netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order, model.PrintTypeWayBill)
// 获取订单配送平台,如果是美团则需要获取门店配置的配送方式 // 获取订单配送平台,如果是美团则需要获取门店配置的配送方式
//isBlendWay := false //isBlendWay := false
//if bill.OrderVendorID == model.VendorIDMTWM { //if bill.OrderVendorID == model.VendorIDMTWM {
@@ -1689,7 +1692,7 @@ func (s *DefScheduler) notifyNewOrder(order *model.GoodsOrder, isAuto bool) {
if order.Flag&model.OrderFlagMaskFake == 0 && order.VendorID != model.VendorIDEBAI { if order.Flag&model.OrderFlagMaskFake == 0 && order.VendorID != model.VendorIDEBAI {
utils.CallFuncAsync(func() { utils.CallFuncAsync(func() {
// order = setFakeActualPayPrice(order) // order = setFakeActualPayPrice(order)
netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order) netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order, model.PrintTypeOrder)
//目前暂且认为AdjustCount > 0 就是调整单 //目前暂且认为AdjustCount > 0 就是调整单
if order.AdjustCount > 0 { if order.AdjustCount > 0 {
weixinmsg.NotifyAdjustOrder(order) weixinmsg.NotifyAdjustOrder(order)

View File

@@ -33,6 +33,13 @@ func (s *DefScheduler) OnAfsOrderNew(order *model.AfsOrder, isPending bool) (err
msghub.OnNewWait4ApproveAfsOrder(order) msghub.OnNewWait4ApproveAfsOrder(order)
weixinmsg.NotifyAfsOrderStatus(order) weixinmsg.NotifyAfsOrderStatus(order)
push.NotifyAfsOrder(order) push.NotifyAfsOrder(order)
// 打印通知
//if handler := partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID); handler != nil {
// if orderObj, err2 := handler.GetOrder(order.VendorOrgCode, order.VendorOrderID, ""); err2 == nil && order != nil {
// netprinter.PrintOrderByOrder(jxcontext.AdminCtx, orderObj, model.PrintTypeOrder)
// }
//}
} }
} }
return err return err

View File

@@ -942,7 +942,7 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa
if valid["printerKey"] == nil { if valid["printerKey"] == nil {
valid["printerKey"] = store.PrinterKey valid["printerKey"] = store.PrinterKey
} }
newID1, newID2, err2 := handler.RegisterPrinter(ctx, valid["printerSN"].(string), valid["printerKey"].(string), store.Name) newID1, newID2, err2 := handler.RegisterPrinter(ctx, valid["printerSN"].(string), valid["printerKey"].(string), store.Name, int64(store.ID))
if err = err2; err != nil { if err = err2; err != nil {
return 0, err return 0, err
} }
@@ -1254,7 +1254,7 @@ func CreateStore(ctx *jxcontext.Context, storeExt *StoreExt, userName string) (i
if handler == nil { if handler == nil {
return 0, fmt.Errorf("不支持的打印机厂商ID:%d", store.PrinterVendorID) return 0, fmt.Errorf("不支持的打印机厂商ID:%d", store.PrinterVendorID)
} }
newID1, newID2, err2 := handler.RegisterPrinter(ctx, store.PrinterSN, store.PrinterKey, store.Name) newID1, newID2, err2 := handler.RegisterPrinter(ctx, store.PrinterSN, store.PrinterKey, store.Name, int64(store.ID))
if err = err2; err != nil { if err = err2; err != nil {
return 0, err return 0, err
} }
@@ -1362,7 +1362,7 @@ func CreateStore2JX(ctx *jxcontext.Context, storeExt *StoreExt, userName string)
if handler == nil { if handler == nil {
return 0, fmt.Errorf("不支持的打印机厂商ID:%d", store.PrinterVendorID) return 0, fmt.Errorf("不支持的打印机厂商ID:%d", store.PrinterVendorID)
} }
newID1, newID2, err2 := handler.RegisterPrinter(ctx, store.PrinterSN, store.PrinterKey, store.Name) newID1, newID2, err2 := handler.RegisterPrinter(ctx, store.PrinterSN, store.PrinterKey, store.Name, int64(store.ID))
if err = err2; err != nil { if err = err2; err != nil {
return 0, err return 0, err
} }

View File

@@ -5,6 +5,7 @@ import (
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils/ddmsg" "git.rosy.net.cn/jx-callback/business/jxutils/ddmsg"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/netprinter"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/business/partner"
@@ -111,6 +112,11 @@ func (s *StoreManager) OnStoreStatusChanged(vendorStoreID string, vendorID int,
} }
dao.Commit(db, txDB) dao.Commit(db, txDB)
} }
// 打印门第离线消息
if storeStatus < model.StoreStatusOpened && storeDetail.PrinterVendorID == model.VendorIDJxprint {
netprinter.PrintStoreStatus(jxcontext.AdminCtx, storeDetail, vendorID, 0)
}
} }
return err return err
} }

View File

@@ -40,13 +40,13 @@ func PrintOrder(ctx *jxcontext.Context, vendorOrderID string, vendorID int) (pri
order.StoreID = storeID order.StoreID = storeID
order.JxStoreID = storeID order.JxStoreID = storeID
} }
printResult, err = PrintOrderByOrder(ctx, order) printResult, err = PrintOrderByOrder(ctx, order, "order")
} }
return printResult, err return printResult, err
} }
func PrintOrderByOrder(ctx *jxcontext.Context, order *model.GoodsOrder) (printResult *partner.PrinterStatus, err error) { func PrintOrderByOrder(ctx *jxcontext.Context, order *model.GoodsOrder, printType string) (printResult *partner.PrinterStatus, err error) {
return PrintOrderByOrder4Store(ctx, order, jxutils.GetSaleStoreIDFromOrder(order)) return PrintOrderByOrder4Store(ctx, order, jxutils.GetSaleStoreIDFromOrder(order), printType)
} }
func getStore4Print(db *dao.DaoDB, storeID int) (store *model.Store, err error) { func getStore4Print(db *dao.DaoDB, storeID int) (store *model.Store, err error) {
@@ -71,7 +71,7 @@ func getStore4Print(db *dao.DaoDB, storeID int) (store *model.Store, err error)
} }
// PrintOrderByOrder4Store 打印订单信息 // PrintOrderByOrder4Store 打印订单信息
func PrintOrderByOrder4Store(ctx *jxcontext.Context, order *model.GoodsOrder, storeID int) (printResult *partner.PrinterStatus, err error) { func PrintOrderByOrder4Store(ctx *jxcontext.Context, order *model.GoodsOrder, storeID int, printType string) (printResult *partner.PrinterStatus, err error) {
globals.SugarLogger.Debugf("PrintOrderByOrder4Store orderID:%s", order.VendorOrderID) globals.SugarLogger.Debugf("PrintOrderByOrder4Store orderID:%s", order.VendorOrderID)
db := dao.GetDB() db := dao.GetDB()
store, err := getStore4Print(db, storeID) store, err := getStore4Print(db, storeID)
@@ -82,6 +82,7 @@ func PrintOrderByOrder4Store(ctx *jxcontext.Context, order *model.GoodsOrder, st
PrintResult: partner.PrintResultNoPrinter, PrintResult: partner.PrintResultNoPrinter,
}, nil }, nil
} }
storeDetail, _ := dao.GetStoreDetail(db, storeID, order.VendorID, order.VendorOrgCode) storeDetail, _ := dao.GetStoreDetail(db, storeID, order.VendorID, order.VendorOrgCode)
if storeDetail == nil && order.VendorOrderID == testVendorOrderID { if storeDetail == nil && order.VendorOrderID == testVendorOrderID {
storeDetail = &dao.StoreDetail{ storeDetail = &dao.StoreDetail{
@@ -89,7 +90,8 @@ func PrintOrderByOrder4Store(ctx *jxcontext.Context, order *model.GoodsOrder, st
BrandIsPrint: model.NO, BrandIsPrint: model.NO,
} }
} }
printResult, err = handler.PrintOrder(ctx, store, storeDetail, order)
printResult, err = handler.PrintOrder(ctx, store, storeDetail, order, printType)
if err == nil { if err == nil {
dao.SetOrderPrintFlag(db, ctx.GetUserName(), order.VendorOrderID, order.VendorID, true) dao.SetOrderPrintFlag(db, ctx.GetUserName(), order.VendorOrderID, order.VendorID, true)
} }
@@ -100,6 +102,32 @@ func PrintOrderByOrder4Store(ctx *jxcontext.Context, order *model.GoodsOrder, st
return printResult, err return printResult, err
} }
// PrintStoreStatus 打印门店信息
func PrintStoreStatus(ctx *jxcontext.Context, storeDetail *dao.StoreDetail, vendorId, storeStatus 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
}
if storeStatus != 0 { // 失去授权
store.Status = -9
}
printResult, err = handler.PrintStore(ctx, store, storeDetail, vendorId)
if err == nil {
dao.SetOrderPrintFlag(db, ctx.GetUserName(), "store print", vendorId, true)
}
return printResult, err
}
// PrintRefundOrCancelOrder 打印退单或取消订单信息 // PrintRefundOrCancelOrder 打印退单或取消订单信息
func PrintRefundOrCancelOrder(ctx *jxcontext.Context, printType int, order *model.GoodsOrder, storeID int) (printResult *partner.PrinterStatus, err error) { func PrintRefundOrCancelOrder(ctx *jxcontext.Context, printType int, order *model.GoodsOrder, storeID int) (printResult *partner.PrinterStatus, err error) {
db := dao.GetDB() db := dao.GetDB()

View File

@@ -186,7 +186,7 @@ var (
VendorIDJxprint: []string{ VendorIDJxprint: []string{
VendorChineseNames[VendorIDJxprint], VendorChineseNames[VendorIDJxprint],
"打印机编号", "打印机编号",
"不填", "密钥",
}, },
} }
AfsReasonTypeName = map[int]string{ AfsReasonTypeName = map[int]string{
@@ -308,6 +308,13 @@ const (
OperateCopyStoreSkus = 3 //复制门店商品 OperateCopyStoreSkus = 3 //复制门店商品
) )
const (
PrintTypeOrder = "order" // 京西云打印机:打印订单
PrintTypeWayBill = "wayBill " // 京西云打印机:打印运单
PrintTypeStore = "store " // 京西云打印机:门店下线
PrintTypeEnter = "enter" // 京西云打印机:进店订单
)
const ( const (
WaybillStatusRefuseFailedGetGoods = -70 WaybillStatusRefuseFailedGetGoods = -70
WaybillStatusUnknown = 0 WaybillStatusUnknown = 0

View File

@@ -679,7 +679,9 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo
// } // }
sql = fmt.Sprintf(sql, fmtParams...) sql = fmt.Sprintf(sql, fmtParams...)
sql += " ORDER BY t1.price" sql += " ORDER BY t1.price"
// globals.SugarLogger.Debug(sql) globals.SugarLogger.Debug("sql======", sql)
globals.SugarLogger.Debug("sqlparam======", sqlParams)
if err = GetRows(db, &skus, sql, sqlParams...); err != nil { if err = GetRows(db, &skus, sql, sqlParams...); err != nil {
return nil, err return nil, err
} }

View File

@@ -17,7 +17,7 @@ func TestGetFullStoreSkus(t *testing.T) {
} }
func TestGetStoreSkus(t *testing.T) { func TestGetStoreSkus(t *testing.T) {
skuList, err := GetStoreSkus(GetDB(), model.VendorIDMTWM, 100134, nil) skuList, err := GetStoreSkus(GetDB(), model.VendorIDMTWM, 800165, []int{30969})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -56,13 +56,14 @@ type IPrinterHandler interface {
PrintMsg(ctx *jxcontext.Context, id1, id2, msgTitle, msgContent string) (printerStatus *PrinterStatus, err error) PrintMsg(ctx *jxcontext.Context, id1, id2, msgTitle, msgContent string) (printerStatus *PrinterStatus, err error)
GetPrinterStatus(ctx *jxcontext.Context, id1, id2 string) (printerStatus *PrinterStatus, err error) GetPrinterStatus(ctx *jxcontext.Context, id1, id2 string) (printerStatus *PrinterStatus, err error)
RegisterPrinter(ctx *jxcontext.Context, id1, id2, printerName string) (newID1, newID2 string, err error) RegisterPrinter(ctx *jxcontext.Context, id1, id2, printerName string, soreId int64) (newID1, newID2 string, err error)
UnregisterPrinter(ctx *jxcontext.Context, id1, id2 string) (err error) UnregisterPrinter(ctx *jxcontext.Context, id1, id2 string) (err error)
BindPrinter(ctx *jxcontext.Context, mapData map[string]interface{}) (bindResult *BindPrinterResult, err error) BindPrinter(ctx *jxcontext.Context, mapData map[string]interface{}) (bindResult *BindPrinterResult, err error)
RebindPrinter(ctx *jxcontext.Context, lastBindResult *BindPrinterResult) (bindResult *BindPrinterResult, err error) RebindPrinter(ctx *jxcontext.Context, lastBindResult *BindPrinterResult) (bindResult *BindPrinterResult, err error)
PrintOrder(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *PrinterStatus, 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, 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) 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) EmptyPrintList(ctx *jxcontext.Context, id1, id2 string) (err error)

View File

@@ -251,7 +251,7 @@ func (c *PrinterHandler) GetPrinterStatus(ctx *jxcontext.Context, printerSN, pri
return printerStatus, err return printerStatus, err
} }
func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) { 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("feie PrintOrderByOrder orderID:%s, storeID:%d", order.VendorOrderID, store.ID) globals.SugarLogger.Debugf("feie PrintOrderByOrder orderID:%s, storeID:%d", order.VendorOrderID, store.ID)
if len(order.Skus) == 0 { if len(order.Skus) == 0 {
return return
@@ -265,11 +265,15 @@ func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store,
return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, order.VendorOrderID, content) return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, order.VendorOrderID, content)
} }
func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, vendorId int) (printerStatus *partner.PrinterStatus, err error) {
return nil, err
}
func (c *PrinterHandler) PrintCancelOrRefundOrder(ctx *jxcontext.Context, printType int, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) { func (c *PrinterHandler) PrintCancelOrRefundOrder(ctx *jxcontext.Context, printType int, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) {
return nil, err return nil, err
} }
func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, printerSN, printerKey, printerName string) (notUsed1, notUsed2 string, err error) { func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, printerSN, printerKey, printerName string, storeID int64) (notUsed1, notUsed2 string, err error) {
var no map[string]string var no map[string]string
if globals.EnableStoreWrite { if globals.EnableStoreWrite {
_, no, err = api.FeieAPI.PrinterAddList([]*feieapi.PrinterInfo{ _, no, err = api.FeieAPI.PrinterAddList([]*feieapi.PrinterInfo{

View File

@@ -5,7 +5,6 @@ import (
"fmt" "fmt"
"git.rosy.net.cn/baseapi/platformapi/jxprintapi" "git.rosy.net.cn/baseapi/platformapi/jxprintapi"
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "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"
"git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/model/dao"
@@ -14,7 +13,6 @@ import (
"git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/api"
"regexp" "regexp"
"strings" "strings"
"time"
) )
var ( var (
@@ -37,6 +35,7 @@ func (c *PrinterHandler) GetVendorID() int {
func (c *PrinterHandler) PrintMsg(ctx *jxcontext.Context, printSn, orderSeq, msgTitle, msgContent string) (printerStatus *partner.PrinterStatus, err error) { func (c *PrinterHandler) PrintMsg(ctx *jxcontext.Context, printSn, orderSeq, msgTitle, msgContent string) (printerStatus *partner.PrinterStatus, err error) {
globals.SugarLogger.Debugf("PrintMsg id1:%s", printSn) globals.SugarLogger.Debugf("PrintMsg id1:%s", printSn)
if printSn != "" && globals.EnableStoreWrite { if printSn != "" && globals.EnableStoreWrite {
printSn = strings.Split(printSn, "_")[0]
if _, err := api.JxPrintAPI.DoPrint(printSn, msgContent, utils.Str2Int(orderSeq)); err == nil { if _, err := api.JxPrintAPI.DoPrint(printSn, msgContent, utils.Str2Int(orderSeq)); err == nil {
return c.GetPrinterStatus(ctx, printSn, "") return c.GetPrinterStatus(ctx, printSn, "")
} }
@@ -60,12 +59,14 @@ func (c *PrinterHandler) GetPrinterStatus(ctx *jxcontext.Context, id1, id2 strin
return nil, err return nil, err
} }
func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, id1, id2, printerName string) (newID1, newID2 string, err error) { func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, id1, id2, printerName string, storeID int64) (newID1, newID2 string, err error) {
if globals.EnableStoreWrite { if globals.EnableStoreWrite {
err = api.JxPrintAPI.AddPrinter([]*jxprintapi.AddPrinterParam{ err = api.JxPrintAPI.AddPrinter([]*jxprintapi.AddPrinterParam{
&jxprintapi.AddPrinterParam{ &jxprintapi.AddPrinterParam{
PrintNo: id1, PrintNo: id1, // 打印机编号
Name: printerName, Name: printerName, // 门店名称
SIM: id2, // printKey-指定验证用户号码
StoreId: storeID, // 门店id
}, },
}) })
} }
@@ -88,175 +89,205 @@ func (c *PrinterHandler) RebindPrinter(ctx *jxcontext.Context, lastBindResult *p
} }
func (c *PrinterHandler) getOrderContent(order *model.GoodsOrder, storeTel string, storeDetail *dao.StoreDetail) (content string) { func (c *PrinterHandler) getOrderContent(order *model.GoodsOrder, storeTel string, storeDetail *dao.StoreDetail) (content string) {
expectedDeliveryTime := order.ExpectedDeliveredTime // expectedDeliveryTime := order.ExpectedDeliveredTime
if utils.IsTimeZero(expectedDeliveryTime) { // if utils.IsTimeZero(expectedDeliveryTime) {
expectedDeliveryTime = order.OrderCreatedAt.Add(1 * time.Hour) // expectedDeliveryTime = order.OrderCreatedAt.Add(1 * time.Hour)
} // }
orderParams := []interface{}{} // orderParams := []interface{}{}
getCode := "" // getCode := ""
if order.VendorID == model.VendorIDEBAI { // if order.VendorID == model.VendorIDEBAI {
getCode = fmt.Sprintf("<b>饿百取货码:%s</b><br><br>\n", jxutils.GetEbaiOrderGetCode(order)) // getCode = fmt.Sprintf("<b>饿百取货码:%s</b><br><br>\n", jxutils.GetEbaiOrderGetCode(order))
} // }
orderFmt := `` // orderFmt := ``
if storeDetail != nil { // if storeDetail != nil {
if storeDetail.BrandIsPrint == model.NO { // if storeDetail.BrandIsPrint == model.NO {
orderFmt += ` // orderFmt += `
<sound>您有新订单啦!</sound><br> // <sound>您有新订单啦!</sound><br>
<center><b>%s</b></center><br><br> // <center><b>%s</b></center><br><br>
` // `
if order.VendorOrgCode == "34665" { // if order.VendorOrgCode == "34665" {
orderParams = append(orderParams, globals.StoreNameEbai2) // orderParams = append(orderParams, globals.StoreNameEbai2)
} else { // } else {
orderParams = append(orderParams, storeDetail.BrandName) // orderParams = append(orderParams, storeDetail.BrandName)
} // }
} // }
} // }
orderFmt += ` // orderFmt += `
<center>手机买菜上京西</center><br> //<center>手机买菜上京西</center><br>
<center>极速到家送惊喜</center><br> //<center>极速到家送惊喜</center><br>
--------------------------------<br> //--------------------------------<br>
下单时间: %s<br> //下单时间: %s<br>
预计送达: %s<br> //预计送达: %s<br>
订单编号: %s<br> //订单编号: %s<br>
<br> //<br>
//
<b>%s#%d</b><br> //<b>%s#%d</b><br>
<qrc>%s</qrc><br> //<qrc>%s</qrc><br>
` + getCode + //` + getCode +
`客户: %s<br> // `客户: %s<br>
电话: %s<br> //电话: %s<br>
地址: %s<br> //地址: %s<br>
<br> //<br>
客户备注: <br> //客户备注: <br>
<b>%s</b><br> //<b>%s</b><br>
<br> //<br>
//
<br> //<br>
商品明细: <br> //商品明细: <br>
品名 数量 单价 小计<br> //品名 数量 单价 小计<br>
--------------------------------<br>` //--------------------------------<br>`
// <BOLD>实际支付:</BOLD>%s<BR> // // <BOLD>实际支付:</BOLD>%s<BR>
orderParams = append(orderParams, // orderParams = append(orderParams,
utils.Time2Str(order.OrderCreatedAt), // utils.Time2Str(order.OrderCreatedAt),
utils.Time2Str(expectedDeliveryTime), // utils.Time2Str(expectedDeliveryTime),
order.VendorOrderID, // order.VendorOrderID,
jxutils.GetVendorName(order.VendorID), // jxutils.GetVendorName(order.VendorID),
order.OrderSeq, // order.OrderSeq,
order.VendorOrderID, // order.VendorOrderID,
order.ConsigneeName, // order.ConsigneeName,
order.ConsigneeMobile, // order.ConsigneeMobile,
order.ConsigneeAddress, // order.ConsigneeAddress,
order.BuyerComment, // order.BuyerComment,
// jxutils.IntPrice2StandardCurrencyString(order.ActualPayPrice), // // jxutils.IntPrice2StandardCurrencyString(order.ActualPayPrice),
) // )
//
for _, sku := range order.Skus { // for _, sku := range order.Skus {
orderFmt += `%s<br>` // orderFmt += `%s<br>`
orderFmt += `%8s%10s%10s<br>` // orderFmt += `%8s%10s%10s<br>`
orderParams = append(orderParams, sku.SkuName, "x"+utils.Int2Str(sku.Count), jxutils.IntPrice2StandardCurrencyString(sku.SalePrice), jxutils.IntPrice2StandardCurrencyString(sku.SalePrice*int64(sku.Count))) // orderParams = append(orderParams, sku.SkuName, "x"+utils.Int2Str(sku.Count), jxutils.IntPrice2StandardCurrencyString(sku.SalePrice), jxutils.IntPrice2StandardCurrencyString(sku.SalePrice*int64(sku.Count)))
} // }
orderFmt += `<br> // orderFmt += `<br>
共%d种%d件商品 //共%d种%d件商品
<br> //<br>
--------------------------------<br> //--------------------------------<br>
<center><hb>商品质量问题请联系:</hb></center><br> //<center><hb>商品质量问题请联系:</hb></center><br>
<center><hb>%s:%s</hb></center><br> //<center><hb>%s:%s</hb></center><br>
<br> //<br>
更多信息请关注官方微信: %s<br> //更多信息请关注官方微信: %s<br>
<br> //<br>
<br> //<br>
--------------------------------<br> //--------------------------------<br>
--------------------------------<br> //--------------------------------<br>
<br> //<br>
` //`
orderParams = append(orderParams, order.SkuCount, order.GoodsCount, order.StoreName, storeTel, "京西菜市") // orderParams = append(orderParams, order.SkuCount, order.GoodsCount, order.StoreName, storeTel, "京西菜市")
return fmt.Sprintf(strings.Replace(orderFmt, "\n", "", -1), orderParams...) // return fmt.Sprintf(strings.Replace(orderFmt, "\n", "", -1), orderParams...)
return ""
} }
func (c *PrinterHandler) getOrderContentByTemplate(order *model.GoodsOrder, storeTel string, storeDetail *dao.StoreDetail) (content string) { func (c *PrinterHandler) getOrderContentByTemplate(order *model.GoodsOrder, storeTel string, storeDetail *dao.StoreDetail) (content string) {
orderFmt := "" //orderFmt := ""
if storeDetail != nil { //if storeDetail != nil {
//开头加上语音 // //开头加上语音
if storeDetail.PrinterSound != "" { // if storeDetail.PrinterSound != "" {
orderFmt += "<sound>" + storeDetail.PrinterSound + "</sound><br>" // orderFmt += "<sound>" + storeDetail.PrinterSound + "</sound><br>"
} // }
} //}
//把带有${}的变量换成实际值 ////把带有${}的变量换成实际值
template := storeDetail.PrinterTemplate //template := storeDetail.PrinterTemplate
regexpValues := regexpPrint.FindAllStringSubmatch(template, -1) //regexpValues := regexpPrint.FindAllStringSubmatch(template, -1)
for _, v := range regexpValues { //for _, v := range regexpValues {
switch v[0] { // switch v[0] {
case "${下单时间}": // case "${下单时间}":
template = strings.ReplaceAll(template, v[0], utils.Time2Str(order.OrderCreatedAt)) // template = strings.ReplaceAll(template, v[0], utils.Time2Str(order.OrderCreatedAt))
case "${预计送达}": // case "${预计送达}":
expectedDeliveryTime := order.ExpectedDeliveredTime // expectedDeliveryTime := order.ExpectedDeliveredTime
if utils.IsTimeZero(expectedDeliveryTime) { // if utils.IsTimeZero(expectedDeliveryTime) {
expectedDeliveryTime = order.OrderCreatedAt.Add(1 * time.Hour) // expectedDeliveryTime = order.OrderCreatedAt.Add(1 * time.Hour)
} // }
template = strings.ReplaceAll(template, v[0], utils.Time2Str(expectedDeliveryTime)) // template = strings.ReplaceAll(template, v[0], utils.Time2Str(expectedDeliveryTime))
case "${订单号}": // case "${订单号}":
template = strings.ReplaceAll(template, v[0], order.VendorOrderID) // template = strings.ReplaceAll(template, v[0], order.VendorOrderID)
case "${平台名}": // case "${平台名}":
template = strings.ReplaceAll(template, v[0], jxutils.GetVendorName(order.VendorID)) // template = strings.ReplaceAll(template, v[0], jxutils.GetVendorName(order.VendorID))
case "${订单序号}": // case "${订单序号}":
template = strings.ReplaceAll(template, v[0], utils.Int2Str(order.OrderSeq)) // template = strings.ReplaceAll(template, v[0], utils.Int2Str(order.OrderSeq))
case "${客户名}": // case "${客户名}":
template = strings.ReplaceAll(template, v[0], order.ConsigneeName) // template = strings.ReplaceAll(template, v[0], order.ConsigneeName)
case "${客户电话}": // case "${客户电话}":
template = strings.ReplaceAll(template, v[0], order.ConsigneeMobile) // template = strings.ReplaceAll(template, v[0], order.ConsigneeMobile)
case "${客户地址}": // case "${客户地址}":
template = strings.ReplaceAll(template, v[0], order.ConsigneeAddress) // template = strings.ReplaceAll(template, v[0], order.ConsigneeAddress)
case "${备注}": // case "${备注}":
template = strings.ReplaceAll(template, v[0], order.BuyerComment) // template = strings.ReplaceAll(template, v[0], order.BuyerComment)
case "${商品种数}": // case "${商品种数}":
template = strings.ReplaceAll(template, v[0], utils.Int2Str(order.SkuCount)) // template = strings.ReplaceAll(template, v[0], utils.Int2Str(order.SkuCount))
case "${商品件数}": // case "${商品件数}":
template = strings.ReplaceAll(template, v[0], utils.Int2Str(order.GoodsCount)) // template = strings.ReplaceAll(template, v[0], utils.Int2Str(order.GoodsCount))
case "${门店名}": // case "${门店名}":
template = strings.ReplaceAll(template, v[0], order.StoreName) // template = strings.ReplaceAll(template, v[0], order.StoreName)
case "${门店电话}": // case "${门店电话}":
template = strings.ReplaceAll(template, v[0], storeTel) // template = strings.ReplaceAll(template, v[0], storeTel)
case "${商品明细}": // case "${商品明细}":
skus := "" // skus := ""
skuParams := []interface{}{} // skuParams := []interface{}{}
for i := 0; i < len(order.Skus); i++ { // for i := 0; i < len(order.Skus); i++ {
skus += "%s<br>" // skus += "%s<br>"
skus += "%8s%10s%10s<br><br>" // skus += "%8s%10s%10s<br><br>"
skuParams = append(skuParams, order.Skus[i].SkuName) // skuParams = append(skuParams, order.Skus[i].SkuName)
skuParams = append(skuParams, "x"+utils.Int2Str(order.Skus[i].Count)) // skuParams = append(skuParams, "x"+utils.Int2Str(order.Skus[i].Count))
skuParams = append(skuParams, jxutils.IntPrice2StandardCurrencyString(order.Skus[i].SalePrice)) // skuParams = append(skuParams, jxutils.IntPrice2StandardCurrencyString(order.Skus[i].SalePrice))
skuParams = append(skuParams, jxutils.IntPrice2StandardCurrencyString(order.Skus[i].SalePrice*int64(order.Skus[i].Count))) // skuParams = append(skuParams, jxutils.IntPrice2StandardCurrencyString(order.Skus[i].SalePrice*int64(order.Skus[i].Count)))
} // }
skus = fmt.Sprintf(skus, skuParams...) // skus = fmt.Sprintf(skus, skuParams...)
template = strings.ReplaceAll(template, v[0], skus) // template = strings.ReplaceAll(template, v[0], skus)
} // }
} //}
orderFmt += template //orderFmt += template
return strings.Replace(orderFmt, "\n", "", -1) //return strings.Replace(orderFmt, "\n", "", -1)
return ""
} }
func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) { 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) 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 { if len(order.Skus) == 0 {
return return
} }
printData := ManagerOrderAndStore(order, store.Tel1, storeDetail) printData := ManagerOrderPrint(order, store.Tel1, storeDetail)
printData[BigFont] = "small" //printData[BigFont] = "small"
if store.PrinterFontSize == partner.PrinterFontSizeBig || store.PrinterFontSize == partner.PrinterFontSizeBig2 { //if store.PrinterFontSize == partner.PrinterFontSizeBig || store.PrinterFontSize == partner.PrinterFontSizeBig2 {
printData[BigFont] = "big" // printData[BigFont] = "big"
} //}
// 打印次数 //// 打印次数
printData[PrintNumber] = utils.Int2Str(model.YES) //printData[PrintNumber] = utils.Int2Str(model.YES)
if store.PrinterFontSize == partner.PrinterFontSizeBig2 || store.PrinterFontSize == partner.PrinterFontSizeNormal2 { //if store.PrinterFontSize == partner.PrinterFontSizeBig2 || store.PrinterFontSize == partner.PrinterFontSizeNormal2 {
printData[PrintNumber] = utils.Int2Str(2) // printData[PrintNumber] = utils.Int2Str(2)
} //}
printData[AppID] = "1000" // 菜市应用 printData[AppID] = "1000" // 菜市应用
switch printType {
case "order":
printData[OrderStatus] = utils.Int2Str(order.Status) // 订单状态
case "wayBill":
printData[WayBillStatus] = order.VendorStatus // 运单状态
case "store":
printData[StoreStatus] = utils.Int2Str(store.Status) // 门店状态
case "enter":
printData[ReminderStatus] = "1" // 催单
}
orderPrint, err := json.Marshal(printData) orderPrint, err := json.Marshal(printData)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return c.PrintMsg(ctx, store.PrinterSN, order.VendorOrderID, "", string(orderPrint)) orderSel := utils.Int2Str(order.VendorID) + utils.Int2Str(order.OrderSeq)
return c.PrintMsg(ctx, store.PrinterSN, orderSel, "", string(orderPrint))
}
// 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[StoreName] = storeDetail.VendorStoreName
data[VendorName] = model.VendorChineseNames[vendorCode]
orderPrint, err := json.Marshal(data)
if err != nil {
return nil, err
}
return c.PrintMsg(ctx, store.PrinterSN, "99999", "", 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) { func (c *PrinterHandler) PrintCancelOrRefundOrder(ctx *jxcontext.Context, printType int, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) {

View File

@@ -6,6 +6,7 @@ import (
"git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
) )
@@ -38,6 +39,18 @@ const (
BigFont = "bigFont" // 是否为大字体 BigFont = "bigFont" // 是否为大字体
PrintNumber = "printNumber" // 打印次数 PrintNumber = "printNumber" // 打印次数
AppID = "appId" // 应用id AppID = "appId" // 应用id
// 状态对应打印设置的变化
OrderStatus = "orderStatus" // 订单状态
WayBillStatus = "wayBillStatus" // 运单状态
StoreStatus = "storeStatus" // 门店状态
ReminderStatus = "reminderStatus" // 催单状态
RiderVendorId = "riderVendorId" // 骑手所属平台id
RiderName = "riderName" // 骑手名称
RiderPhone = "riderPhone" // 骑手电话
RejectionReason = "rejectionReason" // 拒收原因
CustcareRefundReason = "custcareRefundReason" // 客服退款理由
EnterTheStore = "enterTheStore" // 催单
) )
type SkuListPrintOrder struct { type SkuListPrintOrder struct {
@@ -48,8 +61,8 @@ type SkuListPrintOrder struct {
Upc string `json:"upc"` // 条形码 Upc string `json:"upc"` // 条形码
} }
// ManagerOrderAndStore 京西云参数组装 // ManagerOrderPrint 京西云参数组装(订单参数)
func ManagerOrderAndStore(order *model.GoodsOrder, storeTel string, storeDetail *dao.StoreDetail) map[string]string { func ManagerOrderPrint(order *model.GoodsOrder, storeTel string, storeDetail *dao.StoreDetail) map[string]string {
printOrder := make(map[string]string, 0) printOrder := make(map[string]string, 0)
skuList := make([]*SkuListPrintOrder, 0, 0) skuList := make([]*SkuListPrintOrder, 0, 0)
// 获取品牌名称 // 获取品牌名称
@@ -97,5 +110,48 @@ func ManagerOrderAndStore(order *model.GoodsOrder, storeTel string, storeDetail
printOrder[StoreName] = order.StoreName printOrder[StoreName] = order.StoreName
printOrder[StoreTel] = storeTel printOrder[StoreTel] = storeTel
printOrder[OfficialName] = globals.StoreName printOrder[OfficialName] = globals.StoreName
bill, _ := partner.CurOrderManager.LoadWaybill(order.VendorWaybillID, order.WaybillVendorID)
//printOrder[StoreStatus] = utils.Int2Str(storeDetail.Status)
printOrder[RiderVendorId] = utils.Int2Str(bill.WaybillVendorID)
printOrder[RiderName] = bill.CourierName
printOrder[RiderPhone] = bill.CourierMobile
return printOrder return printOrder
} }
// ManageWayBillPrint 组装运单打印数据
//func ManageWayBillPrint(order *model.GoodsOrder, storeTel string, storeDetail *dao.StoreDetail) map[string]string {
// printOrder := make(map[string]string, 0)
// // 获取品牌名称
// if storeDetail != nil && storeDetail.BrandIsPrint == model.NO {
// if order.VendorOrgCode == "34665" {
// printOrder[EBailOrderNo] = globals.StoreNameEbai2
// } else {
// printOrder[EBailOrderNo] = storeDetail.BrandName
// }
// }
//
// printOrder[VendOrID] = utils.Int2Str(order.VendorID)
// printOrder[VendorName] = jxutils.GetVendorName(order.VendorID)
// printOrder[StoreName] = order.StoreName
// printOrder[StoreTel] = storeTel
// printOrder[OfficialName] = globals.StoreName
// return printOrder
//}
//
//// ManagerStore 送达提示数据组装
//func ManagerStore(order *model.GoodsOrder, storeTel string, storeDetail *dao.StoreDetail) map[string]string {
// printOrder := make(map[string]string, 0)
// printOrder[OrderNo] = order.VendorOrderID
// printOrder[VendorOrderNo] = utils.Int2Str(order.VendorID)
// printOrder[VendorName] = jxutils.GetVendorName(order.VendorID)
// printOrder[StoreName] = order.StoreName
// printOrder[StoreTel] = storeTel
// return printOrder
//}
//
//// ManagerEnterTheStore 进店咨询
//func ManagerEnterTheStore(order *model.GoodsOrder, storeTel string, storeDetail *dao.StoreDetail) map[string]string {
// printOrder := make(map[string]string, 0)
// return printOrder
//}

View File

@@ -292,7 +292,7 @@ func (c *PrinterHandler) GetPrinterStatus(ctx *jxcontext.Context, printerNumber,
return printerStatus, err return printerStatus, err
} }
func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) { 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("xiaowm PrintOrderByOrder orderID:%s, storeID:%d", order.VendorOrderID, store.ID) globals.SugarLogger.Debugf("xiaowm PrintOrderByOrder orderID:%s, storeID:%d", order.VendorOrderID, store.ID)
var content string var content string
if isV500(store.PrinterSN) { if isV500(store.PrinterSN) {
@@ -307,6 +307,10 @@ func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store,
return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, order.VendorOrderID, content) return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, order.VendorOrderID, content)
} }
func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, vendorId int) (printerStatus *partner.PrinterStatus, err error) {
return nil, err
}
func (c *PrinterHandler) PrintCancelOrRefundOrder(ctx *jxcontext.Context, printType int, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) { func (c *PrinterHandler) PrintCancelOrRefundOrder(ctx *jxcontext.Context, printType int, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) {
return nil, err return nil, err
} }
@@ -316,7 +320,7 @@ func isV500(printerNo string) bool {
return printerNoNum > 1000000000 return printerNoNum > 1000000000
} }
func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, printerNumber, notUsed, printerName string) (newID1, printerToken string, err error) { func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, printerNumber, notUsed, printerName string, storeID int64) (newID1, printerToken string, err error) {
globals.SugarLogger.Debugf("xiaowm RegisterPrinter printerNumber:%s", printerNumber) globals.SugarLogger.Debugf("xiaowm RegisterPrinter printerNumber:%s", printerNumber)
if printerNumber == "" { //len(printerNumber) != len("7JizmSyiXNzkggaqU") { if printerNumber == "" { //len(printerNumber) != len("7JizmSyiXNzkggaqU") {
err = fmt.Errorf("外卖管家打印机设备编号:%s长度不合法", printerNumber) err = fmt.Errorf("外卖管家打印机设备编号:%s长度不合法", printerNumber)

View File

@@ -395,7 +395,7 @@ func (c *PrinterHandler) GetPrinterStatus(ctx *jxcontext.Context, machineCode, p
return printerStatus, err return printerStatus, err
} }
func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) { 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("yilianyun PrintOrderByOrder orderID:%s, storeID:%d", order.VendorOrderID, store.ID) globals.SugarLogger.Debugf("yilianyun PrintOrderByOrder orderID:%s, storeID:%d", order.VendorOrderID, store.ID)
if len(order.Skus) == 0 { if len(order.Skus) == 0 {
return return
@@ -419,6 +419,10 @@ func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store,
} }
} }
func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, vendorId int) (printerStatus *partner.PrinterStatus, err error) {
return nil, err
}
func (c *PrinterHandler) PrintCancelOrRefundOrder(ctx *jxcontext.Context, printType int, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) { func (c *PrinterHandler) PrintCancelOrRefundOrder(ctx *jxcontext.Context, printType int, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) {
globals.SugarLogger.Debugf("yilianyun PrintCancelOrRefundOrder orderID:%s, storeID:%d", order.VendorOrderID, store.ID) globals.SugarLogger.Debugf("yilianyun PrintCancelOrRefundOrder orderID:%s, storeID:%d", order.VendorOrderID, store.ID)
if len(order.Skus) == 0 { if len(order.Skus) == 0 {
@@ -438,7 +442,7 @@ func (c *PrinterHandler) PrintCancelOrRefundOrder(ctx *jxcontext.Context, printT
return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, order.VendorOrderID, content) return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, order.VendorOrderID, content)
} }
func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, machineCode, secret, printerName string) (notUsed1, notUsed2 string, err error) { func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, machineCode, secret, printerName string, storeID int64) (notUsed1, notUsed2 string, err error) {
if globals.EnableStoreWrite { if globals.EnableStoreWrite {
err = api.YilianyunAPI.AddPrinter(machineCode, secret, printerName) err = api.YilianyunAPI.AddPrinter(machineCode, secret, printerName)
} }

View File

@@ -219,7 +219,7 @@ func (c *PrinterHandler) GetPrinterStatus(ctx *jxcontext.Context, deviceID, devi
return printerStatus, err return printerStatus, err
} }
func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) { 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("zhongwu PrintOrderByOrder orderID:%s, storeID:%d", order.VendorOrderID, store.ID) globals.SugarLogger.Debugf("zhongwu PrintOrderByOrder orderID:%s, storeID:%d", order.VendorOrderID, store.ID)
content := "" content := ""
if store.PrinterFontSize == partner.PrinterFontSizeBig { if store.PrinterFontSize == partner.PrinterFontSizeBig {
@@ -230,11 +230,15 @@ func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store,
return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, order.VendorOrderID, content) return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, order.VendorOrderID, content)
} }
func (c *PrinterHandler) PrintStore(ctx *jxcontext.Context, store *model.Store, storeDetail *dao.StoreDetail, vendorId int) (printerStatus *partner.PrinterStatus, err error) {
return nil, err
}
func (c *PrinterHandler) PrintCancelOrRefundOrder(ctx *jxcontext.Context, printType int, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) { func (c *PrinterHandler) PrintCancelOrRefundOrder(ctx *jxcontext.Context, printType int, store *model.Store, storeDetail *dao.StoreDetail, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) {
return nil, err return nil, err
} }
func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, deviceID, deviceSecret, printerName string) (notUsed1, notUsed2 string, err error) { func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, deviceID, deviceSecret, printerName string, storeID int64) (notUsed1, notUsed2 string, err error) {
if deviceID == "" || deviceSecret == "" { if deviceID == "" || deviceSecret == "" {
err = fmt.Errorf("打印机ID与打印机密钥都不能为空") err = fmt.Errorf("打印机ID与打印机密钥都不能为空")
} }

View File

@@ -4,8 +4,12 @@ import (
"git.rosy.net.cn/baseapi/platformapi/ebaiapi" "git.rosy.net.cn/baseapi/platformapi/ebaiapi"
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/netprinter"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
) )
func OnCallbackMsg(msg *ebaiapi.CallbackMsg) (response *ebaiapi.CallbackResponse) { func OnCallbackMsg(msg *ebaiapi.CallbackMsg) (response *ebaiapi.CallbackResponse) {
@@ -29,6 +33,12 @@ func OnCallbackMsg(msg *ebaiapi.CallbackMsg) (response *ebaiapi.CallbackResponse
response = CurPurchaseHandler.OnFinancialMsg(msg) response = CurPurchaseHandler.OnFinancialMsg(msg)
} else if msg.Cmd == ebaiapi.CmdShopMsgPush { } else if msg.Cmd == ebaiapi.CmdShopMsgPush {
response = CurPurchaseHandler.onShopMsgPush(msg) response = CurPurchaseHandler.onShopMsgPush(msg)
} else if msg.Cmd == ebaiapi.CmdShopUnbindMsg {
// 门店授权发生变化 17,失去授权
vendorStoreID := msg.Body["shop_list"].([]*ebaiapi.EBaiShopList)[0].ShopID
storeDetail, _ := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), vendorStoreID, model.VendorIDEBAI, "")
_, err := netprinter.PrintStoreStatus(jxcontext.AdminCtx, storeDetail, model.VendorIDMTWM, -9)
response = api.EbaiAPI.Err2CallbackResponse(msg.Cmd, err, msg.Cmd)
} }
} }
return response return response

View File

@@ -329,18 +329,18 @@ func (p *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorOrgCode s
// 当前京东的storeCrud消息不会在门店状态改变时发送所以意义不大先放在这里 // 当前京东的storeCrud消息不会在门店状态改变时发送所以意义不大先放在这里
func (c *PurchaseHandler) OnStoreMsg(vendorOrgCode string, msg *jdapi.CallbackOrderMsg) (response *jdapi.CallbackResponse) { func (c *PurchaseHandler) OnStoreMsg(vendorOrgCode string, msg *jdapi.CallbackOrderMsg) (response *jdapi.CallbackResponse) {
var err error var err error
// if msg.StatusID == jdapi.StatusIDUpdateStore { if msg.StatusID == jdapi.StatusIDUpdateStore {
// var storeStatus int var storeStatus int
// vendorStoreID := msg.BillID vendorStoreID := msg.BillID
// if storeStatus, err = c.GetStoreStatus(jxcontext.AdminCtx, vendorStoreID); err == nil { if storeStatus, err = c.GetStoreStatus(jxcontext.AdminCtx, vendorOrgCode, 0, vendorStoreID); err == nil {
// err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDJD, storeStatus) err = partner.CurStoreManager.OnStoreStatusChanged(vendorStoreID, model.VendorIDJD, storeStatus)
// } else { } else {
// // 可能在门店删除的情况下会出查不到门店的错误 // 可能在门店删除的情况下会出查不到门店的错误
// if errExt, ok := err.(*utils.ErrorWithCode); ok && errExt.IntCode() == 4 { if errExt, ok := err.(*utils.ErrorWithCode); ok && errExt.IntCode() == 4 {
// err = nil err = nil
// } }
// } }
// } }
return jdapi.Err2CallbackResponse(err, "") return jdapi.Err2CallbackResponse(err, "")
} }

View File

@@ -559,12 +559,10 @@ func OnPayFinished(orderPay *model.OrderPay) (err error) {
err = callNewOrder(order) err = callNewOrder(order)
//如果是物料的订单,直接到拣货完成,配送中的状态 //如果是物料的订单,直接到拣货完成,配送中的状态
if order.OrderType != model.OrderTypeNormal { if order.OrderType != model.OrderTypeNormal {
// if order.FromStoreID != 0 {
if order.OrderType != model.OrderTypeDefendPrice { if order.OrderType != model.OrderTypeDefendPrice {
netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order) netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order, model.PrintTypeOrder)
} }
PickupGoods(order, false, "jxadmin") PickupGoods(order, false, "jxadmin")
// }
} else { } else {
//普通的订单要看用没用优惠券,用了的话,要把这个用户用过的优惠券状态改了 //普通的订单要看用没用优惠券,用了的话,要把这个用户用过的优惠券状态改了
if order.CouponIDs != "" { if order.CouponIDs != "" {

View File

@@ -3,7 +3,10 @@ package mtwm
import ( import (
"git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/platformapi/mtwmapi"
"git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/netprinter"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
) )
// 美团回调接口 // 美团回调接口
@@ -14,6 +17,11 @@ func OnCallbackMsg(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackResponse
} else if msg.Cmd == mtwmapi.MsgTypePrivateNumberDowngrade { } else if msg.Cmd == mtwmapi.MsgTypePrivateNumberDowngrade {
response = CurPurchaseHandler.onNumberDowngrade(msg) response = CurPurchaseHandler.onNumberDowngrade(msg)
} else if msg.Cmd == mtwmapi.MsgTypeStoreBind { } else if msg.Cmd == mtwmapi.MsgTypeStoreBind {
// 门店授权发生变化 17,失去授权
vendorStoreID := msg.FormData.Get("app_poi_code")
storeDetail, _ := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), vendorStoreID, model.VendorIDMTWM, "")
_, err := netprinter.PrintStoreStatus(jxcontext.AdminCtx, storeDetail, model.VendorIDMTWM, -9)
response = mtwmapi.Err2CallbackResponse(err, "")
} else { } else {
if orderID := GetOrderIDFromMsg(msg); orderID != "" { if orderID := GetOrderIDFromMsg(msg); orderID != "" {
jxutils.CallMsgHandler(func() { jxutils.CallMsgHandler(func() {

View File

@@ -148,6 +148,22 @@ func (c *StoreController) CreateStore() {
}) })
} }
// @Title 打印机授权创建京西门店(除门店名称和登录授权电话真实有效其他使用默认值)
// @Description 打印机授权创建京西门店
// @Param payload formData string true "json数据store对象"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /CreateStore2Print [post]
func (c *StoreController) CreateStore2Print() {
c.callCreateStore2Print(func(params *tStoreCreateStore2PrintParams) (retVal interface{}, errCode string, err error) {
store := &cms.StoreExt{}
if err = utils.UnmarshalUseNumber([]byte(params.Payload), store); err == nil {
retVal, err = cms.CreateStore(params.Ctx, store, params.Ctx.GetUserName())
}
return retVal, "", err
})
}
// @Title 商户创建京西门店 // @Title 商户创建京西门店
// @Description 商户创建京西门店 // @Description 商户创建京西门店
// @Param token header string true "认证token" // @Param token header string true "认证token"

View File

@@ -2313,6 +2313,15 @@ func init() {
Filters: nil, Filters: nil,
Params: nil}) Params: nil})
web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"],
web.ControllerComments{
Method: "CreateStore2Print",
Router: `/CreateStore2Print`,
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"],
web.ControllerComments{ web.ControllerComments{
Method: "CreateStoreByUser", Method: "CreateStoreByUser",