aa
This commit is contained in:
@@ -11,12 +11,14 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
CurPrinterHandler *PrinterHandler
|
CurPrinterHandler *PrinterHandler
|
||||||
|
regexpPrint = regexp.MustCompile(`\${.*?}`)
|
||||||
)
|
)
|
||||||
|
|
||||||
type PrinterHandler struct {
|
type PrinterHandler struct {
|
||||||
@@ -173,6 +175,71 @@ func (c *PrinterHandler) getOrderContent(order *model.GoodsOrder, storeTel strin
|
|||||||
return fmt.Sprintf(strings.Replace(orderFmt, "\n", "", -1), orderParams...)
|
return fmt.Sprintf(strings.Replace(orderFmt, "\n", "", -1), orderParams...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *PrinterHandler) getOrderContentByTemplate(order *model.GoodsOrder, storeTel string, storeDetail *dao.StoreDetail) (content string) {
|
||||||
|
orderParams := []interface{}{}
|
||||||
|
orderFmt := ""
|
||||||
|
if storeDetail != nil {
|
||||||
|
//开头加上语音
|
||||||
|
if storeDetail.PrinterSound != "" {
|
||||||
|
orderFmt += `
|
||||||
|
<sound>%s</sound><br>
|
||||||
|
`
|
||||||
|
orderParams = append(orderParams, 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<br>"
|
||||||
|
skus += "%8s%10s%10s<br><br>"
|
||||||
|
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)))
|
||||||
|
}
|
||||||
|
template = strings.ReplaceAll(template, v[0], fmt.Sprintf(skus, skuParams))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
orderFmt += template
|
||||||
|
return fmt.Sprintf(strings.Replace(orderFmt, "\n", "", -1), orderParams...)
|
||||||
|
}
|
||||||
|
|
||||||
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) (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 len(order.Skus) == 0 {
|
if len(order.Skus) == 0 {
|
||||||
@@ -181,9 +248,13 @@ func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store,
|
|||||||
content := ""
|
content := ""
|
||||||
if store.PrinterFontSize == partner.PrinterFontSizeBig {
|
if store.PrinterFontSize == partner.PrinterFontSizeBig {
|
||||||
//content = c.getOrderContentBig(order, store.Tel1, storeDetail)
|
//content = c.getOrderContentBig(order, store.Tel1, storeDetail)
|
||||||
|
} else {
|
||||||
|
if storeDetail.PrinterTemplate != "" {
|
||||||
|
content = c.getOrderContentByTemplate(order, store.Tel1, storeDetail)
|
||||||
} else {
|
} else {
|
||||||
content = c.getOrderContent(order, store.Tel1, storeDetail)
|
content = c.getOrderContent(order, store.Tel1, storeDetail)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return c.PrintMsg(ctx, store.PrinterSN, utils.Int2Str(order.OrderSeq), order.VendorOrderID, content)
|
return c.PrintMsg(ctx, store.PrinterSN, utils.Int2Str(order.OrderSeq), order.VendorOrderID, content)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user