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/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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user