This commit is contained in:
suyl
2021-10-19 17:23:12 +08:00
parent 70d6293e5d
commit 2bc28240d4

View File

@@ -11,12 +11,14 @@ import (
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
"regexp"
"strings"
"time"
)
var (
CurPrinterHandler *PrinterHandler
regexpPrint = regexp.MustCompile(`\${.*?}`)
)
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...)
}
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) {
globals.SugarLogger.Debugf("jxprint PrintOrderByOrder orderID:%s, storeID:%d", order.VendorOrderID, store.ID)
if len(order.Skus) == 0 {
@@ -182,7 +249,11 @@ func (c *PrinterHandler) PrintOrder(ctx *jxcontext.Context, store *model.Store,
if store.PrinterFontSize == partner.PrinterFontSizeBig {
//content = c.getOrderContentBig(order, store.Tel1, storeDetail)
} else {
content = c.getOrderContent(order, store.Tel1, storeDetail)
if storeDetail.PrinterTemplate != "" {
content = c.getOrderContentByTemplate(order, store.Tel1, storeDetail)
} else {
content = c.getOrderContent(order, store.Tel1, storeDetail)
}
}
return c.PrintMsg(ctx, store.PrinterSN, utils.Int2Str(order.OrderSeq), order.VendorOrderID, content)
}