From 54a0cc216dd5bb4d9c925d3da826c8b7162ff00f Mon Sep 17 00:00:00 2001 From: gazebo Date: Tue, 9 Apr 2019 20:56:53 +0800 Subject: [PATCH] - yilianyun printer added --- business/jxstore/cms/store.go | 48 ++++-- business/jxstore/tempop/tempop.go | 4 +- business/jxutils/tasks/configrefresh.go | 32 +++- business/model/const.go | 18 ++- business/partner/partner.go | 7 +- business/partner/printer/feie/feie.go | 50 ++---- business/partner/printer/xiaowm/xiaowm.go | 107 ++++++------- .../partner/printer/yilianyun/yilianyun.go | 149 ++++++++++++++++++ conf/app.conf | 3 + controllers/temp_op.go | 23 ++- globals/api/api.go | 7 +- main.go | 6 + routers/commentsRouter_controllers.go | 9 ++ 13 files changed, 330 insertions(+), 133 deletions(-) create mode 100644 business/partner/printer/yilianyun/yilianyun.go diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 264c2decb..43a7b86c7 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -375,33 +375,35 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa syncStatus |= model.SyncFlagStoreName } // 网络打印机处理 - if valid["printerVendorID"] != nil { - printerVendorID := valid["printerVendorID"].(int) - if printerVendorID != store.PrinterVendorID { - if handler := partner.GetPrinterPlatformFromVendorID(store.PrinterVendorID); handler != nil { - handler.UnregisterPrinter(ctx, store) - } - store.PrinterSN = "" - store.PrinterKey = "" - store.PrinterVendorID = printerVendorID - valid["printerSN"], valid["printerKey"] = store.PrinterSN, store.PrinterKey + if valid["printerVendorID"] != nil || valid["printerSN"] != nil || valid["printerKey"] != nil { + if handler := partner.GetPrinterPlatformFromVendorID(store.PrinterVendorID); handler != nil { + handler.UnregisterPrinter(ctx, store.PrinterSN, store.PrinterKey) } - } - if valid["printerSN"] != nil || valid["printerKey"] != nil { - if valid["printerKey"] != nil && valid["printerSN"] == nil { + if valid["printerVendorID"] == nil { + valid["printerVendorID"] = store.PrinterVendorID + } else { + store.PrinterVendorID = valid["printerVendorID"].(int) + } + if valid["printerSN"] == nil { valid["printerSN"] = store.PrinterSN } - if valid["printerSN"] != nil && valid["printerKey"] == nil { + if valid["printerKey"] == nil { valid["printerKey"] = store.PrinterKey } var handler partner.IPrinterHandler if handler, err = netprinter.GetHandlerFromStore(store); err != nil { return 0, err } - if err = handler.RegisterPrinter(ctx, store, valid["printerSN"].(string), valid["printerKey"].(string)); err != nil { + newID1, newID2, err2 := handler.RegisterPrinter(ctx, valid["printerSN"].(string), valid["printerKey"].(string), store.Name) + if err = err2; err != nil { return 0, err } - valid["printerSN"], valid["printerKey"] = store.PrinterSN, store.PrinterKey + if newID1 != "" { + valid["printerSN"] = newID1 + } + if newID2 != "" { + valid["printerKey"] = newID2 + } } for _, v := range []string{ @@ -473,9 +475,21 @@ func CreateStore(ctx *jxcontext.Context, storeExt *StoreExt, userName string) (i store.Name = jxutils.FormalizeName(store.Name) store.DeliveryRange = strings.Trim(store.DeliveryRange, ";") if store.PrinterSN != "" { - if err = addNetPrinter(store.PrinterSN, store.PrinterKey, store.Name); err != nil { + var handler partner.IPrinterHandler + handler, err = netprinter.GetHandlerFromStore(store) + if err != nil { return 0, err } + newID1, newID2, err2 := handler.RegisterPrinter(ctx, store.PrinterSN, store.PrinterKey, store.Name) + if err = err2; err != nil { + return 0, err + } + if newID1 != "" { + store.PrinterSN = newID1 + } + if newID2 != "" { + store.PrinterKey = newID2 + } } dao.WrapAddIDCULDEntity(store, userName) store.ID = existingID diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 311b99cc5..30a9d239e 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -885,10 +885,10 @@ func RefreshEbaiBadComment(ctx *jxcontext.Context, fromTime, toTime time.Time, i return hint, err } -func PrintMsg(ctx *jxcontext.Context, vendorID int, id1, id2, msg string) (printerStatus *partner.PrinterStatus, err error) { +func PrintMsg(ctx *jxcontext.Context, vendorID int, id1, id2, msgTitle, msgContent string) (printerStatus *partner.PrinterStatus, err error) { handler := partner.GetPrinterPlatformFromVendorID(vendorID) if handler == nil { return nil, fmt.Errorf("打印机厂商:%d当前不被支持,请检查vendorID", vendorID) } - return handler.PrintMsg(ctx, id1, id2, msg) + return handler.PrintMsg(ctx, id1, id2, msgTitle, msgContent) } diff --git a/business/jxutils/tasks/configrefresh.go b/business/jxutils/tasks/configrefresh.go index 89ea282fd..a798eed55 100644 --- a/business/jxutils/tasks/configrefresh.go +++ b/business/jxutils/tasks/configrefresh.go @@ -9,6 +9,7 @@ import ( "git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/baseapi/platformapi/weimobapi" + "git.rosy.net.cn/baseapi/platformapi/yilianyunapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/globals" @@ -17,11 +18,12 @@ import ( ) const ( - weixinTokenExpires = 7200 * time.Second - dingdingTokenExpires = 7200 * time.Second - elmTokenExpires = 20 * 24 * 3600 * time.Second - weimobTokenExpires = 7200 * time.Second - maxRefreshGap = 5 * 60 * time.Second + weixinTokenExpires = 7200 * time.Second + dingdingTokenExpires = 7200 * time.Second + elmTokenExpires = 20 * 24 * 3600 * time.Second + weimobTokenExpires = 7200 * time.Second + maxRefreshGap = 5 * 60 * time.Second + yilianyunTokenExpires = 30 * 24 * 3600 * time.Second ) type ElmTokenForCompatible struct { @@ -192,3 +194,23 @@ func SaveWeimobToken(token *weimobapi.TokenInfo) (err error) { } return dao.CreateOrUpdate(db, config) } + +func RefreshYilianyunToken() error { + return RefreshConfig("yilianyun", yilianyunTokenExpires, func() (string, string) { + globals.SugarLogger.Debugf("RefreshYilianyunToken RunMode:%s", beego.BConfig.RunMode) + if true { //beego.BConfig.RunMode == "prod" { + if tokenInfo, err := api.YilianyunAPI.RetrieveToken(); err == nil { + return string(utils.MustMarshal(tokenInfo)), "" + } else { + globals.SugarLogger.Errorf("RefreshYilianyunToken RefreshToken failed with error:%v", err) + } + } + return "", "" + }, func(value string) { + var tokenInfo *yilianyunapi.TokenInfo + err := utils.UnmarshalUseNumber([]byte(value), &tokenInfo) + if err == nil { + api.YilianyunAPI.SetToken(tokenInfo.AccessToken) + } + }) +} diff --git a/business/model/const.go b/business/model/const.go index f988ea296..db1047a82 100644 --- a/business/model/const.go +++ b/business/model/const.go @@ -21,7 +21,8 @@ const ( VendorIDPrinterBegin = 201 VendorIDFeiE = 201 // 飞鹅打印机 VendorIDXiaoWM = 202 // 外卖管家打印机 - VendorIDPrinterEnd = 202 + VendorIDYiLianYun = 203 // 易联云 + VendorIDPrinterEnd = 203 ) var ( @@ -35,8 +36,9 @@ var ( VendorIDDada: "Dada", VendorIDMTPS: "Mtps", - VendorIDFeiE: "Feie", - VendorIDXiaoWM: "XiaoWM", + VendorIDFeiE: "Feie", + VendorIDXiaoWM: "XiaoWM", + VendorIDYiLianYun: "Yilianyun", } VendorChineseNames = map[int]string{ VendorIDJD: "京东到家", @@ -48,8 +50,9 @@ var ( VendorIDDada: "达达众包", VendorIDMTPS: "美团配送", - VendorIDFeiE: "飞鹅", - VendorIDXiaoWM: "外卖管家", + VendorIDFeiE: "飞鹅", + VendorIDXiaoWM: "外卖管家", + VendorIDYiLianYun: "易联云", } ShopChineseNames = map[int]string{ @@ -117,6 +120,11 @@ var ( "打印机编号", "不填", }, + VendorIDYiLianYun: []string{ + VendorChineseNames[VendorIDYiLianYun], + "终端号", + "密钥", + }, } ) diff --git a/business/partner/partner.go b/business/partner/partner.go index 08e078d06..a49fb61e3 100644 --- a/business/partner/partner.go +++ b/business/partner/partner.go @@ -194,12 +194,13 @@ type IDeliveryPlatformHandler interface { type IPrinterHandler interface { GetVendorID() int - PrintMsg(ctx *jxcontext.Context, id1, id2, msg 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) + RegisterPrinter(ctx *jxcontext.Context, id1, id2, printerName string) (newID1, newID2 string, err error) + UnregisterPrinter(ctx *jxcontext.Context, id1, id2 string) (err error) + PrintOrder(ctx *jxcontext.Context, store *model.Store, order *model.GoodsOrder) (printerStatus *PrinterStatus, err error) - RegisterPrinter(ctx *jxcontext.Context, store *model.Store, id1, id2 string) (err error) - UnregisterPrinter(ctx *jxcontext.Context, store *model.Store) (err error) } type DeliveryPlatformHandlerInfo struct { diff --git a/business/partner/printer/feie/feie.go b/business/partner/printer/feie/feie.go index 729fc9f10..b18ae0e89 100644 --- a/business/partner/printer/feie/feie.go +++ b/business/partner/printer/feie/feie.go @@ -101,10 +101,10 @@ func (c *PrinterHandler) GetVendorID() int { return model.VendorIDFeiE } -func (c *PrinterHandler) PrintMsg(ctx *jxcontext.Context, id1, id2, msg string) (printerStatus *partner.PrinterStatus, err error) { +func (c *PrinterHandler) PrintMsg(ctx *jxcontext.Context, id1, id2, msgTitle, msgContent string) (printerStatus *partner.PrinterStatus, err error) { globals.SugarLogger.Debugf("PrintMsg id1:%s", id1) if id1 != "" { - if _, err = api.FeieAPI.PrintMsg(id1, msg, 1); err == nil { + if _, err = api.FeieAPI.PrintMsg(id1, msgContent, 1); err == nil { printerStatus, err = c.GetPrinterStatus(ctx, id1, id2) } } else { @@ -130,48 +130,30 @@ func (c *PrinterHandler) GetPrinterStatus(ctx *jxcontext.Context, printerSN, pri func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) { globals.SugarLogger.Debugf("feie PrintOrderByOrder orderID:%s", order.VendorOrderID) content := c.getOrderContent(order, store.Tel1) - return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, content) + return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, order.VendorOrderID, content) } -func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, store *model.Store, id1, id2 string) (err error) { - if store.PrinterSN != "" && (store.PrinterSN != id1 || store.PrinterKey != id2) { - err = c.UnregisterPrinter(ctx, store) - } - if true { //err == nil { - if id1 != "" { - if err = addNetPrinter(id1, id2, store.Name); err == nil { - store.PrinterSN = id1 - store.PrinterKey = id2 - } - } - } - return err -} - -func (c *PrinterHandler) UnregisterPrinter(ctx *jxcontext.Context, store *model.Store) (err error) { - if store.PrinterSN != "" { - _, _, err = api.FeieAPI.PrinterDelList([]string{store.PrinterSN}) - } - return err -} - -func addNetPrinter(sn, key, storeName string) (err error) { - name := storeName +func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, printerSN, printerKey, printerName string) (notUsed1, notUsed2 string, err error) { _, no, err := api.FeieAPI.PrinterAddList([]*feieapi.PrinterInfo{ &feieapi.PrinterInfo{ - SN: sn, - Key: key, - Name: name, + SN: printerSN, + Key: printerKey, + Name: printerName, }, }) if err == nil { - if no[sn] != "" { - if no[sn] == feieapi.ErrMsgAlredyAdded { - api.FeieAPI.PrinterEdit(sn, name, "") + if no[printerSN] != "" { + if no[printerSN] == feieapi.ErrMsgAlredyAdded { + api.FeieAPI.PrinterEdit(printerSN, printerName, "") } else { - err = fmt.Errorf("添加打印机出错:%s", no[sn]) + err = fmt.Errorf("添加打印机出错:%s", no[printerSN]) } } } + return "", "", err +} + +func (c *PrinterHandler) UnregisterPrinter(ctx *jxcontext.Context, printerSN, notUsed string) (err error) { + _, _, err = api.FeieAPI.PrinterDelList([]string{printerSN}) return err } diff --git a/business/partner/printer/xiaowm/xiaowm.go b/business/partner/printer/xiaowm/xiaowm.go index bf65933d5..afb71b635 100644 --- a/business/partner/printer/xiaowm/xiaowm.go +++ b/business/partner/printer/xiaowm/xiaowm.go @@ -34,31 +34,29 @@ func (c *PrinterHandler) getOrderContent(order *model.GoodsOrder, storeTel strin expectedDeliveryTime = order.OrderCreatedAt.Add(1 * time.Hour) } orderFmt := ` -京西菜市
-手机买菜上京西
-极速到家送惊喜
---------------------------------
-下单时间: %s
-预计送达: %s
-订单编号: %s
-
- -%s#%d

-%s -
-客户: %s
-电话: %s
-地址: %s
-
-客户备注:
-%s
-
- -实际支付:%s
-
-商品明细:
-品名 数量 单价 小计
---------------------------------
` + 京西菜市** +手机买菜上京西* +极速到家送惊喜* +------------------------------* +下单时间: %s* +预计送达: %s* +订单编号: %s* +* +%s\\#%d** +%s* +客户: %s* +电话: %s* +地址: %s* +* +客户备注: * +%s* +* +实际支付: %s* +* +商品明细: * +品名 数量 单价 小计 +--------------------------------* +` orderParams := []interface{}{ utils.Time2Str(order.OrderCreatedAt), utils.Time2Str(expectedDeliveryTime), @@ -72,26 +70,22 @@ func (c *PrinterHandler) getOrderContent(order *model.GoodsOrder, storeTel strin order.BuyerComment, jxutils.IntPrice2StandardCurrencyString(order.ActualPayPrice), } - for _, sku := range order.Skus { - orderFmt += `%s
` - orderFmt += `%10s%10s%10s
` + orderFmt += `%s*` + orderFmt += `%10s%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

-
-官方服务热线: 18011516898
-更多信息请关注官方微信: 京西菜市
-
-

---------------------------------
---------------------------------
-

+ orderFmt += ` +* +共%d种%d件商品* +--------------------------------* +商品质量问题请联系:* +%s:%s* +* +更多信息请关注官方微信: 京西菜市* +-------------------------------- +-------------------------------- +** ` // http://weixin.qq.com/r/tkkDGzTERmk5rXB49xyk orderParams = append(orderParams, order.SkuCount, order.GoodsCount, order.StoreName, storeTel) @@ -102,10 +96,10 @@ func (c *PrinterHandler) GetVendorID() int { return model.VendorIDXiaoWM } -func (c *PrinterHandler) PrintMsg(ctx *jxcontext.Context, printerNumber, printerToken, msg string) (printerStatus *partner.PrinterStatus, err error) { +func (c *PrinterHandler) PrintMsg(ctx *jxcontext.Context, printerNumber, printerToken, msgTitle, msgContent string) (printerStatus *partner.PrinterStatus, err error) { globals.SugarLogger.Debugf("PrintMsg printerNumber:%s", printerNumber) if printerNumber != "" { - if _, err = api.XiaoWMAPI.SendMsg(printerNumber, printerToken, msg); err == nil { + if _, err = api.XiaoWMAPI.SendMsg(printerNumber, printerToken, msgContent); err == nil { printerStatus, err = c.GetPrinterStatus(ctx, printerNumber, printerToken) } } else { @@ -138,28 +132,17 @@ func (c *PrinterHandler) GetPrinterStatus(ctx *jxcontext.Context, printerNumber, func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) { globals.SugarLogger.Debugf("xiaowm PrintOrderByOrder orderID:%s", order.VendorOrderID) content := c.getOrderContent(order, store.Tel1) - return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, content) + return c.PrintMsg(ctx, store.PrinterSN, store.PrinterKey, order.VendorOrderID, content) } -func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, store *model.Store, printerNumber, notUsed string) (err error) { - if store.PrinterSN != "" && store.PrinterSN != printerNumber { - err = c.UnregisterPrinter(ctx, store) +func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, printerNumber, notUsed, printerName string) (newID1, printerToken string, err error) { + if printerToken, err = api.XiaoWMAPI.AuthPrinter(printerNumber, "", ""); err == nil { + return printerNumber, printerToken, nil } - if true { //err == nil { - if printerNumber != "" { - var printerToken string - if printerToken, err = api.XiaoWMAPI.AuthPrinter(printerNumber, "", ""); err == nil { - store.PrinterSN = printerNumber - store.PrinterKey = printerToken - } - } - } - return err + return "", "", err } -func (c *PrinterHandler) UnregisterPrinter(ctx *jxcontext.Context, store *model.Store) (err error) { - if store.PrinterSN != "" { - err = api.XiaoWMAPI.DelPrinter(store.PrinterSN, store.PrinterKey) - } +func (c *PrinterHandler) UnregisterPrinter(ctx *jxcontext.Context, printerNumber, printerToken string) (err error) { + err = api.XiaoWMAPI.DelPrinter(printerNumber, printerToken) return err } diff --git a/business/partner/printer/yilianyun/yilianyun.go b/business/partner/printer/yilianyun/yilianyun.go new file mode 100644 index 000000000..3a92c3c99 --- /dev/null +++ b/business/partner/printer/yilianyun/yilianyun.go @@ -0,0 +1,149 @@ +package yilianyun + +import ( + "fmt" + "strings" + "time" + + "git.rosy.net.cn/baseapi/platformapi/yilianyunapi" + "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/partner" + "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/globals/api" +) + +var ( + CurPrinterHandler *PrinterHandler +) + +type PrinterHandler struct { +} + +func init() { + CurPrinterHandler = new(PrinterHandler) + partner.RegisterPrinterPlatform(CurPrinterHandler) +} + +func (c *PrinterHandler) getOrderContent(order *model.GoodsOrder, storeTel string) (content string) { + expectedDeliveryTime := order.ExpectedDeliveredTime + if utils.IsTimeZero(expectedDeliveryTime) { + expectedDeliveryTime = order.OrderCreatedAt.Add(1 * time.Hour) + } + orderFmt := ` +京西菜市
+手机买菜上京西
+极速到家送惊喜
+--------------------------------
+下单时间: %s
+预计送达: %s
+订单编号: %s
+
+ +%s#%d

+%s +
+客户: %s
+电话: %s
+地址: %s
+
+客户备注:
+%s
+
+ +实际支付:%s
+
+商品明细:
+品名 数量 单价 小计
+--------------------------------
` + orderParams := []interface{}{ + 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 += `%10s%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

+
+官方服务热线: 18011516898
+更多信息请关注官方微信: 京西菜市
+
+

+--------------------------------
+--------------------------------
+

+` + // http://weixin.qq.com/r/tkkDGzTERmk5rXB49xyk + orderParams = append(orderParams, order.SkuCount, order.GoodsCount, order.StoreName, storeTel) + return fmt.Sprintf(strings.Replace(orderFmt, "\n", "", -1), orderParams...) +} + +func (c *PrinterHandler) GetVendorID() int { + return model.VendorIDYiLianYun +} + +func (c *PrinterHandler) PrintMsg(ctx *jxcontext.Context, machineCode, notUsed, msgTitle, msgContent string) (printerStatus *partner.PrinterStatus, err error) { + globals.SugarLogger.Debugf("PrintMsg machineCode:%s", machineCode) + if machineCode != "" { + if err = api.YilianyunAPI.PrintMsg(machineCode, msgTitle, msgContent); err == nil { + printerStatus, err = c.GetPrinterStatus(ctx, machineCode, "") + } + } else { + printerStatus = &partner.PrinterStatus{ + PrintResult: partner.PrintResultNoPrinter, + } + } + return printerStatus, err +} + +func (c *PrinterHandler) GetPrinterStatus(ctx *jxcontext.Context, machineCode, notUsed string) (printerStatus *partner.PrinterStatus, err error) { + status, err := api.YilianyunAPI.GetPrintStatus(machineCode) + if err == nil { + printerStatus = &partner.PrinterStatus{ + PrintResult: partner.PrintResultSuccess, + } + if status == yilianyunapi.PrintStatusOffline { + printerStatus.PrinterStatus = partner.PrinterStatusOffline + } else if status == yilianyunapi.PrintStatusOnline { + printerStatus.PrinterStatus = partner.PrinterStatusOnlineOK + } else { + printerStatus.PrinterStatus = partner.PrinterStatusOnlineAbnormal + } + } + return printerStatus, err +} + +func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store, order *model.GoodsOrder) (printerStatus *partner.PrinterStatus, err error) { + globals.SugarLogger.Debugf("yilianyun PrintOrderByOrder orderID:%s", order.VendorOrderID) + content := c.getOrderContent(order, store.Tel1) + return c.PrintMsg(ctx, store.PrinterSN, "", order.VendorOrderID, content) +} + +func (c *PrinterHandler) RegisterPrinter(ctx *jxcontext.Context, machineCode, secret, printerName string) (notUsed1, notUsed2 string, err error) { + err = api.YilianyunAPI.AddPrinter(machineCode, secret, printerName) + return "", "", err +} + +func (c *PrinterHandler) UnregisterPrinter(ctx *jxcontext.Context, machineCode, notUsed string) (err error) { + err = api.YilianyunAPI.DeletePrinter(machineCode) + return err +} diff --git a/conf/app.conf b/conf/app.conf index c824f2ed4..eaf618635 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -72,6 +72,9 @@ feieKey = "2JfKh8TyheQ9mwss" xiaoWMAppID = 267 xiaoWMAppKey = "94337" +yilianyunClientID = "1039586024" +yilianyunClientSecret = "4885d07c2997b661102e4b6099c0bf3b" + [dev] jdToken = "c8854ef2-f80a-45ee-aceb-dc8014d646f8" jdAppKey = "06692746f7224695ad4788ce340bc854" diff --git a/controllers/temp_op.go b/controllers/temp_op.go index 9c39dda4f..04f1967cf 100644 --- a/controllers/temp_op.go +++ b/controllers/temp_op.go @@ -3,6 +3,7 @@ package controllers import ( "git.rosy.net.cn/jx-callback/business/jxstore/tempop" "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/netprinter" ) // @Title 将为份的商品在京东转成SPU @@ -168,14 +169,30 @@ func (c *InitDataController) RefreshEbaiBadComment() { // @Param token header string true "认证token" // @Param vendorID formData int true "打印机厂商ID" // @Param id1 formData string true "id1" -// @Param id2 formData string true "id2" -// @Param msg formData string true "打印消息" +// @Param id2 formData string false "id2" +// @Param msgTitle formData string false "消息标题" +// @Param msgContent formData string true "消息内容" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /PrintMsg [post] func (c *InitDataController) PrintMsg() { c.callPrintMsg(func(params *tInitdataPrintMsgParams) (retVal interface{}, errCode string, err error) { - retVal, err = tempop.PrintMsg(params.Ctx, params.VendorID, params.Id1, params.Id2, params.Msg) + retVal, err = tempop.PrintMsg(params.Ctx, params.VendorID, params.Id1, params.Id2, params.MsgTitle, params.MsgContent) + return retVal, "", err + }) +} + +// @Title 测试打印订单 +// @Description 测试打印订单 +// @Param token header string true "认证token" +// @Param vendorOrderID formData string true "订单ID" +// @Param vendorID formData int true "订单所属厂商ID" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /PringOrder [post] +func (c *InitDataController) PringOrder() { + c.callPringOrder(func(params *tInitdataPringOrderParams) (retVal interface{}, errCode string, err error) { + retVal, err = netprinter.PrintOrder(params.Ctx, params.VendorOrderID, params.VendorID) return retVal, "", err }) } diff --git a/globals/api/api.go b/globals/api/api.go index 2e29651d2..f308e9d60 100644 --- a/globals/api/api.go +++ b/globals/api/api.go @@ -17,6 +17,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/weimobapi" "git.rosy.net.cn/baseapi/platformapi/weixinapi" "git.rosy.net.cn/baseapi/platformapi/xiaowmapi" + "git.rosy.net.cn/baseapi/platformapi/yilianyunapi" "git.rosy.net.cn/jx-callback/business/jxutils/cache" "git.rosy.net.cn/jx-callback/business/jxutils/cache/redis" @@ -42,8 +43,9 @@ var ( DingDingAPI *dingdingapi.API DingDingQRCodeAPI *dingdingapi.API - FeieAPI *feieapi.API - XiaoWMAPI *xiaowmapi.API + FeieAPI *feieapi.API + XiaoWMAPI *xiaowmapi.API + YilianyunAPI *yilianyunapi.API Cacher cache.ICacher ) @@ -100,6 +102,7 @@ func Init() { FeieAPI = feieapi.New(beego.AppConfig.DefaultString("feieUser", ""), beego.AppConfig.DefaultString("feieKey", "")) XiaoWMAPI = xiaowmapi.New(beego.AppConfig.DefaultInt("xiaoWMAppID", 0), beego.AppConfig.DefaultString("xiaoWMAppKey", "")) + YilianyunAPI = yilianyunapi.New(beego.AppConfig.DefaultString("yilianyunClientID", ""), beego.AppConfig.DefaultString("yilianyunClientSecret", "")) } func initElm() { diff --git a/main.go b/main.go index 5afe28c6c..6d3a49403 100644 --- a/main.go +++ b/main.go @@ -22,6 +22,7 @@ import ( _ "git.rosy.net.cn/jx-callback/business/partner/printer/feie" _ "git.rosy.net.cn/jx-callback/business/partner/printer/xiaowm" + _ "git.rosy.net.cn/jx-callback/business/partner/printer/yilianyun" "github.com/astaxie/beego" ) @@ -108,6 +109,11 @@ func main() { globals.SugarLogger.Errorf("RefreshDingDingToken failed with error:%s", err) return } + if err := tasks.RefreshYilianyunToken(); err != nil { + globals.SugarLogger.Errorf("RefreshYilianyunToken failed with error:%s", err) + return + } + orderman.LoadPendingOrders() // 延时的原因是等回调准备好 diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index df415c1eb..98fde93c5 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -394,6 +394,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"], + beego.ControllerComments{ + Method: "PringOrder", + Router: `/PringOrder`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:InitDataController"], beego.ControllerComments{ Method: "PrintMsg",