diff --git a/business/jxcallback/orderman/fake_jd_order.go b/business/jxcallback/orderman/fake_jd_order.go index faedd275b..f712ec9d7 100644 --- a/business/jxcallback/orderman/fake_jd_order.go +++ b/business/jxcallback/orderman/fake_jd_order.go @@ -42,7 +42,7 @@ func (c *OrderManager) notifyNewFakeJdOrder(order *model.GoodsOrder) (err error) realStoreID = storeDetail.LinkStoreID } notifyWxNewFakeJdOrder(order, realStoreID) - netprinter.PrintOrderByOrder4Store(jxcontext.AdminCtx, order, realStoreID) + netprinter.PrintOrderByOrder4Store(jxcontext.AdminCtx, order, realStoreID, "") return err } diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 87da90454..373c2d227 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -392,7 +392,7 @@ func (s *DefScheduler) OnOrderNew(order *model.GoodsOrder, isPending bool, isAut if order.Flag&model.OrderFlagMaskFake == 0 { utils.CallFuncAsync(func() { // order = setFakeActualPayPrice(order) - netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order) + netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order, model.PrintTypeOrder) //目前暂且认为AdjustCount > 0 就是调整单 if order.AdjustCount > 0 { 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 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.PrintTypeWayBill) + // 获取订单配送平台,如果是美团则需要获取门店配置的配送方式 //isBlendWay := false //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 { utils.CallFuncAsync(func() { // order = setFakeActualPayPrice(order) - netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order) + netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order, model.PrintTypeOrder) //目前暂且认为AdjustCount > 0 就是调整单 if order.AdjustCount > 0 { weixinmsg.NotifyAdjustOrder(order) diff --git a/business/jxcallback/scheduler/defsch/defsch_afs.go b/business/jxcallback/scheduler/defsch/defsch_afs.go index 260aec703..6db0d3357 100644 --- a/business/jxcallback/scheduler/defsch/defsch_afs.go +++ b/business/jxcallback/scheduler/defsch/defsch_afs.go @@ -33,6 +33,13 @@ func (s *DefScheduler) OnAfsOrderNew(order *model.AfsOrder, isPending bool) (err msghub.OnNewWait4ApproveAfsOrder(order) weixinmsg.NotifyAfsOrderStatus(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 diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 9dd9e670d..baf8dfc5a 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -942,7 +942,7 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa if valid["printerKey"] == nil { 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 { return 0, err } @@ -1254,7 +1254,7 @@ func CreateStore(ctx *jxcontext.Context, storeExt *StoreExt, userName string) (i if handler == nil { 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 { return 0, err } @@ -1362,7 +1362,7 @@ func CreateStore2JX(ctx *jxcontext.Context, storeExt *StoreExt, userName string) if handler == nil { 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 { return 0, err } diff --git a/business/jxstore/cms/storeman.go b/business/jxstore/cms/storeman.go index 9ae4955d1..8ad0be8cb 100644 --- a/business/jxstore/cms/storeman.go +++ b/business/jxstore/cms/storeman.go @@ -5,6 +5,7 @@ import ( "git.rosy.net.cn/baseapi/utils" "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/netprinter" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/partner" @@ -111,6 +112,11 @@ func (s *StoreManager) OnStoreStatusChanged(vendorStoreID string, vendorID int, } dao.Commit(db, txDB) } + + // 打印门第离线消息 + if storeStatus < model.StoreStatusOpened && storeDetail.PrinterVendorID == model.VendorIDJxprint { + netprinter.PrintStoreStatus(jxcontext.AdminCtx, storeDetail, vendorID, 0) + } } return err } diff --git a/business/jxutils/netprinter/netprinter.go b/business/jxutils/netprinter/netprinter.go index b3fe380d0..20764764f 100644 --- a/business/jxutils/netprinter/netprinter.go +++ b/business/jxutils/netprinter/netprinter.go @@ -40,13 +40,13 @@ func PrintOrder(ctx *jxcontext.Context, vendorOrderID string, vendorID int) (pri order.StoreID = storeID order.JxStoreID = storeID } - printResult, err = PrintOrderByOrder(ctx, order) + printResult, err = PrintOrderByOrder(ctx, order, "order") } return printResult, err } -func PrintOrderByOrder(ctx *jxcontext.Context, order *model.GoodsOrder) (printResult *partner.PrinterStatus, err error) { - return PrintOrderByOrder4Store(ctx, order, jxutils.GetSaleStoreIDFromOrder(order)) +func PrintOrderByOrder(ctx *jxcontext.Context, order *model.GoodsOrder, printType string) (printResult *partner.PrinterStatus, err error) { + return PrintOrderByOrder4Store(ctx, order, jxutils.GetSaleStoreIDFromOrder(order), printType) } 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 打印订单信息 -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) db := dao.GetDB() store, err := getStore4Print(db, storeID) @@ -82,6 +82,7 @@ func PrintOrderByOrder4Store(ctx *jxcontext.Context, order *model.GoodsOrder, st PrintResult: partner.PrintResultNoPrinter, }, nil } + storeDetail, _ := dao.GetStoreDetail(db, storeID, order.VendorID, order.VendorOrgCode) if storeDetail == nil && order.VendorOrderID == testVendorOrderID { storeDetail = &dao.StoreDetail{ @@ -89,7 +90,8 @@ func PrintOrderByOrder4Store(ctx *jxcontext.Context, order *model.GoodsOrder, st BrandIsPrint: model.NO, } } - printResult, err = handler.PrintOrder(ctx, store, storeDetail, order) + + printResult, err = handler.PrintOrder(ctx, store, storeDetail, order, printType) if err == nil { 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 } +// 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 打印退单或取消订单信息 func PrintRefundOrCancelOrder(ctx *jxcontext.Context, printType int, order *model.GoodsOrder, storeID int) (printResult *partner.PrinterStatus, err error) { db := dao.GetDB() diff --git a/business/model/const.go b/business/model/const.go index 0089be0f6..3b2a77ea1 100644 --- a/business/model/const.go +++ b/business/model/const.go @@ -186,7 +186,7 @@ var ( VendorIDJxprint: []string{ VendorChineseNames[VendorIDJxprint], "打印机编号", - "不填", + "密钥", }, } AfsReasonTypeName = map[int]string{ @@ -308,6 +308,13 @@ const ( OperateCopyStoreSkus = 3 //复制门店商品 ) +const ( + PrintTypeOrder = "order" // 京西云打印机:打印订单 + PrintTypeWayBill = "wayBill " // 京西云打印机:打印运单 + PrintTypeStore = "store " // 京西云打印机:门店下线 + PrintTypeEnter = "enter" // 京西云打印机:进店订单 +) + const ( WaybillStatusRefuseFailedGetGoods = -70 WaybillStatusUnknown = 0 diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index c935f12e5..fcea71ea1 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -679,7 +679,9 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo // } sql = fmt.Sprintf(sql, fmtParams...) 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 { return nil, err } diff --git a/business/model/dao/store_sku_test.go b/business/model/dao/store_sku_test.go index 8a5d5ed3c..27f8118f6 100644 --- a/business/model/dao/store_sku_test.go +++ b/business/model/dao/store_sku_test.go @@ -17,7 +17,7 @@ func TestGetFullStoreSkus(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 { t.Fatal(err) } diff --git a/business/partner/partner_printer.go b/business/partner/partner_printer.go index e7697f3f0..f0b177393 100644 --- a/business/partner/partner_printer.go +++ b/business/partner/partner_printer.go @@ -56,13 +56,14 @@ type IPrinterHandler interface { PrintMsg(ctx *jxcontext.Context, id1, id2, msgTitle, msgContent 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) BindPrinter(ctx *jxcontext.Context, mapData map[string]interface{}) (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) 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 750f5537d..cceab9bda 100644 --- a/business/partner/printer/feie/feie.go +++ b/business/partner/printer/feie/feie.go @@ -251,7 +251,7 @@ func (c *PrinterHandler) GetPrinterStatus(ctx *jxcontext.Context, printerSN, pri 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) if len(order.Skus) == 0 { 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) } +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) { 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 if globals.EnableStoreWrite { _, no, err = api.FeieAPI.PrinterAddList([]*feieapi.PrinterInfo{ diff --git a/business/partner/printer/jxprint/jxprint.go b/business/partner/printer/jxprint/jxprint.go index cea602ffd..8c76e59db 100644 --- a/business/partner/printer/jxprint/jxprint.go +++ b/business/partner/printer/jxprint/jxprint.go @@ -5,7 +5,6 @@ import ( "fmt" "git.rosy.net.cn/baseapi/platformapi/jxprintapi" "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/model" "git.rosy.net.cn/jx-callback/business/model/dao" @@ -14,7 +13,6 @@ import ( "git.rosy.net.cn/jx-callback/globals/api" "regexp" "strings" - "time" ) 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) { globals.SugarLogger.Debugf("PrintMsg id1:%s", printSn) if printSn != "" && globals.EnableStoreWrite { + printSn = strings.Split(printSn, "_")[0] if _, err := api.JxPrintAPI.DoPrint(printSn, msgContent, utils.Str2Int(orderSeq)); err == nil { return c.GetPrinterStatus(ctx, printSn, "") } @@ -60,12 +59,14 @@ func (c *PrinterHandler) GetPrinterStatus(ctx *jxcontext.Context, id1, id2 strin 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 { err = api.JxPrintAPI.AddPrinter([]*jxprintapi.AddPrinterParam{ &jxprintapi.AddPrinterParam{ - PrintNo: id1, - Name: printerName, + PrintNo: id1, // 打印机编号 + 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) { - expectedDeliveryTime := order.ExpectedDeliveredTime - if utils.IsTimeZero(expectedDeliveryTime) { - expectedDeliveryTime = order.OrderCreatedAt.Add(1 * time.Hour) - } - orderParams := []interface{}{} - getCode := "" - if order.VendorID == model.VendorIDEBAI { - getCode = fmt.Sprintf("饿百取货码:%s

\n", jxutils.GetEbaiOrderGetCode(order)) - } - orderFmt := `` - if storeDetail != nil { - if storeDetail.BrandIsPrint == model.NO { - orderFmt += ` - 您有新订单啦!
-
%s


- ` - if order.VendorOrgCode == "34665" { - orderParams = append(orderParams, globals.StoreNameEbai2) - } else { - orderParams = append(orderParams, storeDetail.BrandName) - } - } - } - orderFmt += ` -
手机买菜上京西

-
极速到家送惊喜

---------------------------------
-下单时间: %s
-预计送达: %s
-订单编号: %s
-
- -%s#%d
-%s
-` + getCode + - `客户: %s
-电话: %s
-地址: %s
-
-客户备注:
-%s
-
- -
-商品明细:
-品名 数量 单价 小计
---------------------------------
` - // 实际支付:%s
- orderParams = append(orderParams, - utils.Time2Str(order.OrderCreatedAt), - utils.Time2Str(expectedDeliveryTime), - order.VendorOrderID, - jxutils.GetVendorName(order.VendorID), - order.OrderSeq, - order.VendorOrderID, - order.ConsigneeName, - order.ConsigneeMobile, - order.ConsigneeAddress, - order.BuyerComment, - // jxutils.IntPrice2StandardCurrencyString(order.ActualPayPrice), - ) - - for _, sku := range order.Skus { - orderFmt += `%s
` - orderFmt += `%8s%10s%10s
` - orderParams = append(orderParams, sku.SkuName, "x"+utils.Int2Str(sku.Count), jxutils.IntPrice2StandardCurrencyString(sku.SalePrice), jxutils.IntPrice2StandardCurrencyString(sku.SalePrice*int64(sku.Count))) - } - orderFmt += `
-共%d种%d件商品 -
---------------------------------
-
商品质量问题请联系:

-
%s:%s

-
-更多信息请关注官方微信: %s
-
-
---------------------------------
---------------------------------
-
-` - orderParams = append(orderParams, order.SkuCount, order.GoodsCount, order.StoreName, storeTel, "京西菜市") - return fmt.Sprintf(strings.Replace(orderFmt, "\n", "", -1), orderParams...) + // expectedDeliveryTime := order.ExpectedDeliveredTime + // if utils.IsTimeZero(expectedDeliveryTime) { + // expectedDeliveryTime = order.OrderCreatedAt.Add(1 * time.Hour) + // } + // orderParams := []interface{}{} + // getCode := "" + // if order.VendorID == model.VendorIDEBAI { + // getCode = fmt.Sprintf("饿百取货码:%s

\n", jxutils.GetEbaiOrderGetCode(order)) + // } + // orderFmt := `` + // if storeDetail != nil { + // if storeDetail.BrandIsPrint == model.NO { + // orderFmt += ` + // 您有新订单啦!
+ //
%s


+ // ` + // if order.VendorOrgCode == "34665" { + // orderParams = append(orderParams, globals.StoreNameEbai2) + // } else { + // orderParams = append(orderParams, storeDetail.BrandName) + // } + // } + // } + // orderFmt += ` + //
手机买菜上京西

+ //
极速到家送惊喜

+ //--------------------------------
+ //下单时间: %s
+ //预计送达: %s
+ //订单编号: %s
+ //
+ // + //%s#%d
+ //%s
+ //` + getCode + + // `客户: %s
+ //电话: %s
+ //地址: %s
+ //
+ //客户备注:
+ //%s
+ //
+ // + //
+ //商品明细:
+ //品名 数量 单价 小计
+ //--------------------------------
` + // // 实际支付:%s
+ // orderParams = append(orderParams, + // utils.Time2Str(order.OrderCreatedAt), + // utils.Time2Str(expectedDeliveryTime), + // order.VendorOrderID, + // jxutils.GetVendorName(order.VendorID), + // order.OrderSeq, + // order.VendorOrderID, + // order.ConsigneeName, + // order.ConsigneeMobile, + // order.ConsigneeAddress, + // order.BuyerComment, + // // jxutils.IntPrice2StandardCurrencyString(order.ActualPayPrice), + // ) + // + // for _, sku := range order.Skus { + // orderFmt += `%s
` + // orderFmt += `%8s%10s%10s
` + // orderParams = append(orderParams, sku.SkuName, "x"+utils.Int2Str(sku.Count), jxutils.IntPrice2StandardCurrencyString(sku.SalePrice), jxutils.IntPrice2StandardCurrencyString(sku.SalePrice*int64(sku.Count))) + // } + // orderFmt += `
+ //共%d种%d件商品 + //
+ //--------------------------------
+ //
商品质量问题请联系:

+ //
%s:%s

+ //
+ //更多信息请关注官方微信: %s
+ //
+ //
+ //--------------------------------
+ //--------------------------------
+ //
+ //` + // orderParams = append(orderParams, order.SkuCount, order.GoodsCount, order.StoreName, storeTel, "京西菜市") + // return fmt.Sprintf(strings.Replace(orderFmt, "\n", "", -1), orderParams...) + return "" } func (c *PrinterHandler) getOrderContentByTemplate(order *model.GoodsOrder, storeTel string, storeDetail *dao.StoreDetail) (content string) { - orderFmt := "" - if storeDetail != nil { - //开头加上语音 - if storeDetail.PrinterSound != "" { - orderFmt += "" + storeDetail.PrinterSound + "
" - } - } - //把带有${}的变量换成实际值 - template := storeDetail.PrinterTemplate - regexpValues := regexpPrint.FindAllStringSubmatch(template, -1) - for _, v := range regexpValues { - switch v[0] { - case "${下单时间}": - template = strings.ReplaceAll(template, v[0], utils.Time2Str(order.OrderCreatedAt)) - case "${预计送达}": - expectedDeliveryTime := order.ExpectedDeliveredTime - if utils.IsTimeZero(expectedDeliveryTime) { - expectedDeliveryTime = order.OrderCreatedAt.Add(1 * time.Hour) - } - template = strings.ReplaceAll(template, v[0], utils.Time2Str(expectedDeliveryTime)) - case "${订单号}": - template = strings.ReplaceAll(template, v[0], order.VendorOrderID) - case "${平台名}": - template = strings.ReplaceAll(template, v[0], jxutils.GetVendorName(order.VendorID)) - case "${订单序号}": - template = strings.ReplaceAll(template, v[0], utils.Int2Str(order.OrderSeq)) - case "${客户名}": - template = strings.ReplaceAll(template, v[0], order.ConsigneeName) - case "${客户电话}": - template = strings.ReplaceAll(template, v[0], order.ConsigneeMobile) - case "${客户地址}": - template = strings.ReplaceAll(template, v[0], order.ConsigneeAddress) - case "${备注}": - template = strings.ReplaceAll(template, v[0], order.BuyerComment) - case "${商品种数}": - template = strings.ReplaceAll(template, v[0], utils.Int2Str(order.SkuCount)) - case "${商品件数}": - template = strings.ReplaceAll(template, v[0], utils.Int2Str(order.GoodsCount)) - case "${门店名}": - template = strings.ReplaceAll(template, v[0], order.StoreName) - case "${门店电话}": - template = strings.ReplaceAll(template, v[0], storeTel) - case "${商品明细}": - skus := "" - skuParams := []interface{}{} - for i := 0; i < len(order.Skus); i++ { - skus += "%s
" - skus += "%8s%10s%10s

" - skuParams = append(skuParams, order.Skus[i].SkuName) - 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*int64(order.Skus[i].Count))) - } - skus = fmt.Sprintf(skus, skuParams...) - template = strings.ReplaceAll(template, v[0], skus) - } - } - orderFmt += template - return strings.Replace(orderFmt, "\n", "", -1) + //orderFmt := "" + //if storeDetail != nil { + // //开头加上语音 + // if storeDetail.PrinterSound != "" { + // orderFmt += "" + storeDetail.PrinterSound + "
" + // } + //} + ////把带有${}的变量换成实际值 + //template := storeDetail.PrinterTemplate + //regexpValues := regexpPrint.FindAllStringSubmatch(template, -1) + //for _, v := range regexpValues { + // switch v[0] { + // case "${下单时间}": + // template = strings.ReplaceAll(template, v[0], utils.Time2Str(order.OrderCreatedAt)) + // case "${预计送达}": + // expectedDeliveryTime := order.ExpectedDeliveredTime + // if utils.IsTimeZero(expectedDeliveryTime) { + // expectedDeliveryTime = order.OrderCreatedAt.Add(1 * time.Hour) + // } + // template = strings.ReplaceAll(template, v[0], utils.Time2Str(expectedDeliveryTime)) + // case "${订单号}": + // template = strings.ReplaceAll(template, v[0], order.VendorOrderID) + // case "${平台名}": + // template = strings.ReplaceAll(template, v[0], jxutils.GetVendorName(order.VendorID)) + // case "${订单序号}": + // template = strings.ReplaceAll(template, v[0], utils.Int2Str(order.OrderSeq)) + // case "${客户名}": + // template = strings.ReplaceAll(template, v[0], order.ConsigneeName) + // case "${客户电话}": + // template = strings.ReplaceAll(template, v[0], order.ConsigneeMobile) + // case "${客户地址}": + // template = strings.ReplaceAll(template, v[0], order.ConsigneeAddress) + // case "${备注}": + // template = strings.ReplaceAll(template, v[0], order.BuyerComment) + // case "${商品种数}": + // template = strings.ReplaceAll(template, v[0], utils.Int2Str(order.SkuCount)) + // case "${商品件数}": + // template = strings.ReplaceAll(template, v[0], utils.Int2Str(order.GoodsCount)) + // case "${门店名}": + // template = strings.ReplaceAll(template, v[0], order.StoreName) + // case "${门店电话}": + // template = strings.ReplaceAll(template, v[0], storeTel) + // case "${商品明细}": + // skus := "" + // skuParams := []interface{}{} + // for i := 0; i < len(order.Skus); i++ { + // skus += "%s
" + // skus += "%8s%10s%10s

" + // skuParams = append(skuParams, order.Skus[i].SkuName) + // 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*int64(order.Skus[i].Count))) + // } + // skus = fmt.Sprintf(skus, skuParams...) + // template = strings.ReplaceAll(template, v[0], skus) + // } + //} + //orderFmt += template + //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) + if storeDetail.PrinterVendorID != model.VendorIDJxprint { + return nil, nil + } if len(order.Skus) == 0 { return } - printData := ManagerOrderAndStore(order, store.Tel1, storeDetail) - printData[BigFont] = "small" - if store.PrinterFontSize == partner.PrinterFontSizeBig || store.PrinterFontSize == partner.PrinterFontSizeBig2 { - printData[BigFont] = "big" - } - // 打印次数 - printData[PrintNumber] = utils.Int2Str(model.YES) - if store.PrinterFontSize == partner.PrinterFontSizeBig2 || store.PrinterFontSize == partner.PrinterFontSizeNormal2 { - printData[PrintNumber] = utils.Int2Str(2) - } + printData := ManagerOrderPrint(order, store.Tel1, storeDetail) + //printData[BigFont] = "small" + //if store.PrinterFontSize == partner.PrinterFontSizeBig || store.PrinterFontSize == partner.PrinterFontSizeBig2 { + // printData[BigFont] = "big" + //} + //// 打印次数 + //printData[PrintNumber] = utils.Int2Str(model.YES) + //if store.PrinterFontSize == partner.PrinterFontSizeBig2 || store.PrinterFontSize == partner.PrinterFontSizeNormal2 { + // printData[PrintNumber] = utils.Int2Str(2) + //} 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) if err != nil { 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) { diff --git a/business/partner/printer/jxprint/jxprint_const.go b/business/partner/printer/jxprint/jxprint_const.go index 2ef5154b2..3c8e3a1fc 100644 --- a/business/partner/printer/jxprint/jxprint_const.go +++ b/business/partner/printer/jxprint/jxprint_const.go @@ -6,6 +6,7 @@ import ( "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" + "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" ) @@ -38,6 +39,18 @@ const ( BigFont = "bigFont" // 是否为大字体 PrintNumber = "printNumber" // 打印次数 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 { @@ -48,8 +61,8 @@ type SkuListPrintOrder struct { Upc string `json:"upc"` // 条形码 } -// ManagerOrderAndStore 京西云参数组装 -func ManagerOrderAndStore(order *model.GoodsOrder, storeTel string, storeDetail *dao.StoreDetail) map[string]string { +// ManagerOrderPrint 京西云参数组装(订单参数) +func ManagerOrderPrint(order *model.GoodsOrder, storeTel string, storeDetail *dao.StoreDetail) map[string]string { printOrder := make(map[string]string, 0) skuList := make([]*SkuListPrintOrder, 0, 0) // 获取品牌名称 @@ -97,5 +110,48 @@ func ManagerOrderAndStore(order *model.GoodsOrder, storeTel string, storeDetail printOrder[StoreName] = order.StoreName printOrder[StoreTel] = storeTel 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 } + +// 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 +//} diff --git a/business/partner/printer/xiaowm/xiaowm.go b/business/partner/printer/xiaowm/xiaowm.go index e0d933ffb..6ec3ec472 100644 --- a/business/partner/printer/xiaowm/xiaowm.go +++ b/business/partner/printer/xiaowm/xiaowm.go @@ -292,7 +292,7 @@ func (c *PrinterHandler) GetPrinterStatus(ctx *jxcontext.Context, printerNumber, 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) var content string 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) } +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) { return nil, err } @@ -316,7 +320,7 @@ func isV500(printerNo string) bool { 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) if printerNumber == "" { //len(printerNumber) != len("7JizmSyiXNzkggaqU") { err = fmt.Errorf("外卖管家打印机设备编号:%s长度不合法", printerNumber) diff --git a/business/partner/printer/yilianyun/yilianyun.go b/business/partner/printer/yilianyun/yilianyun.go index 99cbf896d..360dced3f 100644 --- a/business/partner/printer/yilianyun/yilianyun.go +++ b/business/partner/printer/yilianyun/yilianyun.go @@ -395,7 +395,7 @@ func (c *PrinterHandler) GetPrinterStatus(ctx *jxcontext.Context, machineCode, p 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) if len(order.Skus) == 0 { 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) { globals.SugarLogger.Debugf("yilianyun PrintCancelOrRefundOrder orderID:%s, storeID:%d", order.VendorOrderID, store.ID) 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) } -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 { err = api.YilianyunAPI.AddPrinter(machineCode, secret, printerName) } diff --git a/business/partner/printer/zhongwu/zhongwu.go b/business/partner/printer/zhongwu/zhongwu.go index bb74419a5..78cf43e51 100644 --- a/business/partner/printer/zhongwu/zhongwu.go +++ b/business/partner/printer/zhongwu/zhongwu.go @@ -219,7 +219,7 @@ func (c *PrinterHandler) GetPrinterStatus(ctx *jxcontext.Context, deviceID, devi 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) content := "" 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) } +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) { 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 == "" { err = fmt.Errorf("打印机ID与打印机密钥都不能为空") } diff --git a/business/partner/purchase/ebai/callback.go b/business/partner/purchase/ebai/callback.go index b3234c88d..0af4a941b 100644 --- a/business/partner/purchase/ebai/callback.go +++ b/business/partner/purchase/ebai/callback.go @@ -4,8 +4,12 @@ import ( "git.rosy.net.cn/baseapi/platformapi/ebaiapi" "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/netprinter" "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/api" ) func OnCallbackMsg(msg *ebaiapi.CallbackMsg) (response *ebaiapi.CallbackResponse) { @@ -29,6 +33,12 @@ func OnCallbackMsg(msg *ebaiapi.CallbackMsg) (response *ebaiapi.CallbackResponse response = CurPurchaseHandler.OnFinancialMsg(msg) } else if msg.Cmd == ebaiapi.CmdShopMsgPush { 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 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 d7bf60768..5ba93357d 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -559,12 +559,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) + netprinter.PrintOrderByOrder(jxcontext.AdminCtx, order, model.PrintTypeOrder) } PickupGoods(order, false, "jxadmin") - // } } else { //普通的订单要看用没用优惠券,用了的话,要把这个用户用过的优惠券状态改了 if order.CouponIDs != "" { diff --git a/business/partner/purchase/mtwm/callback.go b/business/partner/purchase/mtwm/callback.go index 7ad771f15..356c4e1c2 100644 --- a/business/partner/purchase/mtwm/callback.go +++ b/business/partner/purchase/mtwm/callback.go @@ -3,7 +3,10 @@ package mtwm import ( "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "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/dao" ) // 美团回调接口 @@ -14,6 +17,11 @@ func OnCallbackMsg(msg *mtwmapi.CallbackMsg) (response *mtwmapi.CallbackResponse } else if msg.Cmd == mtwmapi.MsgTypePrivateNumberDowngrade { response = CurPurchaseHandler.onNumberDowngrade(msg) } 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 { if orderID := GetOrderIDFromMsg(msg); orderID != "" { jxutils.CallMsgHandler(func() { diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 3e0a603bf..6edb3538e 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -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 商户创建京西门店 // @Description 商户创建京西门店 // @Param token header string true "认证token" diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 2e128570f..b70369015 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -273,7 +273,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 diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 19544ff0b..4dd595012 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -2313,6 +2313,15 @@ func init() { 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.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.ControllerComments{ Method: "CreateStoreByUser",