diff --git a/business/model/dao/dao_print_setting.go b/business/model/dao/dao_print_setting.go
new file mode 100644
index 000000000..f4a3069b4
--- /dev/null
+++ b/business/model/dao/dao_print_setting.go
@@ -0,0 +1,25 @@
+package dao
+
+import (
+ "errors"
+ "git.rosy.net.cn/baseapi/utils"
+ "git.rosy.net.cn/jx-callback/business/model"
+)
+
+func GetPrintSetting(printNo string) (*model.PrintSettingObj, error) {
+ sql := ` SELECT * FROM print_setting WHERE print_no = ? and deleted_at = ? `
+ sqlParams := []interface{}{
+ printNo,
+ utils.DefaultTimeValue,
+ }
+
+ var printSetting *model.PrintSetting
+ if err := GetRow(GetDB(), &printSetting, sql, sqlParams...); err != nil {
+ return nil, err
+ }
+ if printSetting == nil {
+ return nil, errors.New("数据查询异常")
+ }
+
+ return model.UnMarshalString2Json(printSetting)
+}
diff --git a/business/model/dao/print_temp_utils.go b/business/model/dao/print_temp_utils.go
new file mode 100644
index 000000000..cfc2646b4
--- /dev/null
+++ b/business/model/dao/print_temp_utils.go
@@ -0,0 +1,539 @@
+package dao
+
+import (
+ "encoding/json"
+ "fmt"
+ "git.rosy.net.cn/baseapi/utils"
+ "git.rosy.net.cn/jx-callback/business/model"
+ "git.rosy.net.cn/jx-print/globals"
+ "strings"
+ "time"
+)
+
+var SystemTempObj map[string]*model.SystemTemp
+
+func Init() {
+ SystemTempObj = make(map[string]*model.SystemTemp, 0)
+ sysTempList, err := QuerySystemTemp()
+ if err != nil {
+ globals.SugarLogger.Debug("query system temp err :", err)
+ return
+ }
+ SystemTempObj[sysTempList.TempSize] = sysTempList
+
+ //now := time.Now()
+ //param := &model.SystemTemp{
+ // CreatedAt: &now,
+ // UpdatedAt: &now,
+ // LastOperator: "system",
+ // DeletedAt: &utils.DefaultTimeValue,
+ // TempName: "",
+ // TempRank: model.SystemTempKey,
+ // Temp: "",
+ // UserId: "system_user",
+ // TempType: model.TempTypeMerchant,
+ // TempSize: model.SystemTempSizeBig,
+ // PrintSn: "system",
+ // IsUse: 1,
+ //}
+
+ // 初始化大字体模板
+ //if _, v := temp[model.SystemTempSizeBig]; !v {
+ // param.TempName = "system" + model.SystemTempSizeBig
+ // param.Temp = model.SystemTempValue
+ // if err := AddTemp(param); err != nil {
+ // globals.SugarLogger.Debug("init system temp err :", err)
+ // }
+ // SystemTempObj[model.SystemTempSizeBig] = param
+ //}
+
+ // 初始化中字体模板
+ //if _, v := temp[model.SystemTempSizeMedium]; !v {
+ // param.TempName = "system" + model.SystemTempSizeMedium
+ // medium := strings.Replace(model.SystemTempValue, "", "", -1)
+ // medium2 := strings.Replace(medium, "", "", -1)
+ // param.Temp = medium2
+ // param.TempSize = model.SystemTempSizeMedium
+ // param.IsUse = 2
+ // if err := AddTemp(param); err != nil {
+ // globals.SugarLogger.Debug("init system temp err :", err)
+ // }
+ // SystemTempObj[model.SystemTempSizeMedium] = param
+ //}
+
+ // 初始化小字体模板
+ //if _, v := temp[model.SystemTempSizeSmall]; !v {
+ // param.TempName = "system" + model.SystemTempSizeSmall
+ // medium := strings.Replace(model.SystemTempValue, "", " ", -1)
+ // medium2 := strings.Replace(medium, "", " ", -1)
+ // param.Temp = medium2
+ // param.TempSize = model.SystemTempSizeSmall
+ // param.IsUse = 2
+ // if err := AddTemp(param); err != nil {
+ // globals.SugarLogger.Debug("init system temp err :", err)
+ // }
+ // SystemTempObj[model.SystemTempSizeSmall] = param
+ //}
+
+}
+
+// MakePrintMsgOnTemp 将打印数据渲染到模板当中
+func MakePrintMsgOnTemp(param map[string]string, userId string) (string, error) {
+ // 查询用户默认模板,不存在则使用系统默认模板
+ userTemp := &model.SystemTemp{}
+ userTemp, isHave, err := SelectUserDefaultTemp(userId, model.TempTypeMerchantUser)
+ if err != nil || !isHave {
+ userTemp, err = QuerySystemTemp()
+ }
+ if userTemp == nil || !isHave || err != nil {
+ if userTemp.TempType != "" {
+ userTemp = SystemTempObj[userTemp.TempSize]
+ } else {
+ userTemp = SystemTempObj[model.SystemTempSizeBig]
+ }
+ }
+ // 需要打印数据
+ printMsg := ""
+ printValue := make([]interface{}, 0, 0)
+ userTempMap := make(map[string]string, 0)
+ if err := json.Unmarshal([]byte(userTemp.Temp), &userTempMap); err != nil {
+ return "", err
+ }
+
+ for _, v := range strings.Split(userTemp.TempRank, ",") {
+ switch v {
+ case "skuName", "skuNumber", "skuPrice", "skuAllPrice", "allSkuTypeCount", "allSkuCount", "skuUpc", "userPayMoney":
+ continue
+ case "goodsListDetail":
+ printMsg += userTempMap[v]
+ skuList := make([]*model.SkuListPrintOrder, 0, 0)
+ if err := json.Unmarshal([]byte(param["skuList"]), &skuList); err != nil {
+ return "", err
+ }
+ for i := 0; i < len(skuList); i++ {
+ printMsg += userTempMap["skuName"]
+ printMsg += userTempMap["skuNumber"]
+ printMsg += userTempMap["skuPrice"]
+ printMsg += userTempMap["skuAllPrice"]
+ printValue = append(printValue, skuList[i].SkuName, skuList[i].SkuCount, skuList[i].SalePrice, skuList[i].TotalCountPrice)
+ if skuList[i].Upc != "" {
+ printMsg += userTempMap["skuUpc"]
+ printValue = append(printValue, skuList[i].Upc)
+ }
+
+ }
+ printMsg += userTempMap["allSkuTypeCount"]
+ printValue = append(printValue, param["allSkuTypeCount"])
+ printMsg += userTempMap["allSkuCount"]
+ printValue = append(printValue, param["allSkuCount"])
+ printMsg += userTempMap["userPayMoney"]
+ printValue = append(printValue, param["userPayMoney"])
+ case "businessType":
+ if param[v] == "2" { // 是预订单
+ printMsg += userTempMap[v]
+ printValue = append(printValue, param[v])
+ }
+ case "divider":
+ printMsg += userTempMap[v]
+ case "title":
+ printMsg += userTempMap[v]
+ case "qrcOrder": // 老版打印机展示不要
+ //printMsg += userTempMap[v]
+ //printValue = append(printValue, param[v])
+ printMsg += `%s #%s`
+ printValue = append(printValue, param["vendorName"], param["vendorOrderNo"])
+ default:
+ printMsg += userTempMap[v]
+ printValue = append(printValue, param[v])
+ }
+
+ }
+ return strings.Replace(fmt.Sprintf(strings.Replace(printMsg, "\n", "", -1), printValue...), "\\n", "\r\n", -1), nil
+ //}
+}
+
+// MakePrintMsgOnTempVoice 制作平台语音
+func MakePrintMsgOnTempVoice(param map[string]string, setting *model.PrintSettingObj, userId string) (string, error) {
+ // 打订单
+ if param[model.OrderStatusPrint] != "" {
+ // 订单提示设置
+ printMsg, err := PrinterOrderVoice(param, setting, userId)
+ if err != nil {
+ globals.SugarLogger.Debug("err Unmarshal userTemp.printMsg", err)
+ return "", err
+ }
+ return printMsg, nil
+ }
+ // 打运单
+ if param[model.WayBillStatusPrint] != "" {
+ switch param[model.WayBillStatusPrint] {
+ case utils.Int2Str(model.WaybillStatusCourierAssigned): // 分配骑手
+ return PrintWayBillOrderStatus(param, setting), nil
+ case utils.Int2Str(model.WaybillStatusDeliverReminder): // 催单
+ printVoiceMsg := ``
+ printVoiceValue := make([]interface{}, 0, 0)
+ //printVoiceMsg, printVoiceValue = SyntheticSpeech(printVoiceMsg, printVoiceValue, param)
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.ReminderOrderVoice)
+ return strings.Replace(fmt.Sprintf(strings.Replace(printVoiceMsg, "\n", "", -1), printVoiceValue...), "\\n", "\r\n", -1), nil
+ case utils.Int2Str(model.WaybillStatusDelivered): // 送达
+ printVoiceMsg := ``
+ printVoiceValue := make([]interface{}, 0, 0)
+ //printVoiceMsg, printVoiceValue = SyntheticSpeech(printVoiceMsg, printVoiceValue, param)
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.FinialsOrderVoice)
+ return strings.Replace(fmt.Sprintf(strings.Replace(printVoiceMsg, "\n", "", -1), printVoiceValue...), "\\n", "\r\n", -1), nil
+ }
+
+ }
+
+ // 门店状态
+ if param[model.StoreStatusPrint] != "" {
+ return PrintStoreStatus(param, setting), nil
+ }
+
+ // 进店咨询
+ if param[model.EnterTheStorePrint] != "" && setting.VoiceSetting.ConsultingPrint == model.SettingOpen {
+ return `19`, nil
+ }
+ return "", nil
+}
+
+// PrinterOrderVoice 打印机订单提示设置
+func PrinterOrderVoice(param map[string]string, setting *model.PrintSettingObj, userId string) (string, error) {
+ var (
+ printVoiceMsg string //语音信息
+ printVoiceValue = make([]interface{}, 0, 0)
+ textMsg string // 文本信息
+ err error
+ )
+
+ // 订单状态
+ switch param[model.OrderStatusPrint] {
+ // 新订单(待接单)
+ case utils.Int2Str(model.OrderStatusNew): // utils.Int2Str(model.OrderStatusFinishedPickup), utils.Int2Str(model.OrderStatusAccepted)
+ //if param[model.OrderStatusPrint] != utils.Int2Str(model.OrderStatusNew) && param[model.VendorIDPrint] == utils.Int64ToStr(model.VendorIDMTWM) {
+ // return "", err
+ //}
+ //if param[model.OrderStatusPrint] == utils.Int2Str(model.OrderStatusFinishedPickup) && param[model.VendorIDPrint] == utils.Int64ToStr(model.VendorIDEBAI) {
+ // return "", err
+ //}
+ // 称谓设置/平台语音设置
+ if setting.CallNameSetting == 64 || setting.CallNameSetting == 65 || setting.CallNameSetting == 66 {
+ // 老板
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, setting.CallNameSetting)
+ }
+ // 订单设置
+ if setting.PrintSetting.WaitOrderPrint == model.SettingOpen { // 打印订单
+ textMsg, err = MakePrintMsgOnTemp(param, userId)
+ if err != nil {
+ return "", err
+ }
+ }
+ if setting.VoiceSetting.WaitOrderVoice == model.SettingOpen { // 订单通知
+ printVoiceMsg += `%d` // 你来新订单了
+ printVoiceValue = append(printVoiceValue, model.NewOrderVoice)
+ }
+ // 申请取消
+ case utils.Int2Str(model.ApplyOrderCancel):
+ // 称谓设置/平台语音设置
+ if setting.CallNameSetting == 64 || setting.CallNameSetting == 65 || setting.CallNameSetting == 66 {
+ // 老板
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, setting.CallNameSetting)
+ }
+ // 订单设置
+ if setting.PrintSetting.ApplyUserCancelOrder == model.SettingOpen { // 申请取消打印
+ rejection := ``
+ rejectionValue := make([]interface{}, 0, 0)
+ rejection += `
客户申请取消订单:
`
+ rejection += `订单号: %s
`
+ rejection += `订单来源: %s # %s
`
+ rejection += `取消时间: %s
`
+ rejectionValue = append(rejectionValue, param[model.OrderNoPrint], param[model.VendorNamePrint], param[model.VendorOrderNoPrint], utils.Time2DateStr(time.Now()))
+ textMsg = strings.Replace(fmt.Sprintf(strings.Replace(rejection, "\n", "", -1), rejectionValue...), "\\n", "\r\n", -1)
+ }
+ if setting.VoiceSetting.ApplyUserOrderCancelVoice == model.SettingOpen { // 申请取消语音
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.ApplyCancelVoice)
+ //printVoiceMsg, printVoiceValue = SyntheticSpeech(printVoiceMsg, printVoiceValue, param)
+ }
+ // 申请退货
+ case utils.Int2Str(model.ApplyOrderRefundGoods):
+ // 称谓设置/平台语音设置
+ if setting.CallNameSetting == 64 || setting.CallNameSetting == 65 || setting.CallNameSetting == 66 {
+ // 老板
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, setting.CallNameSetting)
+ }
+ rejection := ``
+ rejectionValue := make([]interface{}, 0, 0)
+ rejection += `客户申请退货:
`
+ rejection += `订单号: %s
`
+ rejection += `订单来源: %s # %s
`
+ rejection += `原因: %s
`
+ rejectionValue = append(rejectionValue, param[model.OrderNoPrint], param[model.VendorNamePrint], param[model.VendorOrderNoPrint], param[model.RejectionReasonPrint])
+ textMsg = strings.Replace(fmt.Sprintf(strings.Replace(rejection, "\n", "", -1), rejectionValue...), "\\n", "\r\n", -1)
+
+ if setting.VoiceSetting.ApplyRefundGoodsVoice == model.SettingOpen { // 申请退货语音
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.ApplyReturnGoodsVoice)
+ // printVoiceMsg, printVoiceValue = SyntheticSpeech(printVoiceMsg, printVoiceValue, param)
+ }
+ // 申请退款
+ case utils.Int2Str(model.ApplyOrderRefund):
+ // 称谓设置/平台语音设置
+ if setting.CallNameSetting == 64 || setting.CallNameSetting == 65 || setting.CallNameSetting == 66 {
+ // 老板
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, setting.CallNameSetting)
+ }
+ // 订单设置
+ if setting.PrintSetting.ApplyUserRefund == model.SettingOpen { // 取消退款订单
+ textMsg, err = MakePrintMsgOnTemp(param, userId)
+ if err != nil {
+ return "", err
+ }
+ }
+ if setting.VoiceSetting.ApplyRefundOrderVoice == model.SettingOpen {
+ //printVoiceMsg, printVoiceValue = SyntheticSpeech(printVoiceMsg, printVoiceValue, param)
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.ApplyRefundVoice)
+ }
+ // 取消打印
+
+ case utils.Int2Str(model.OrderStatusRejection): // 拒收
+ // 称谓设置/平台语音设置
+ if setting.CallNameSetting == 64 || setting.CallNameSetting == 65 || setting.CallNameSetting == 66 {
+ // 老板
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, setting.CallNameSetting)
+ }
+ //if setting.VoiceSetting.CustomerRejectionVoice == model.SettingOpen && setting.SystemVoice == model.SettingOpen {
+ // // 暂无语音打印
+ //}
+ // 拒收暂无语音设置,使用文本提示
+ if setting.PrintSetting.CustomerRejectionPrint == model.SettingOpen { // 客户拒收打印
+ rejection := ``
+ rejectionValue := make([]interface{}, 0, 0)
+ rejection += `客户拒收信息:
`
+ rejection += `订单号: %s
`
+ rejection += `订单来源: %s # %s
`
+ rejection += `拒收原因: %s
`
+ rejectionValue = append(rejectionValue, param[model.OrderNoPrint], param[model.VendorNamePrint], param[model.VendorOrderNoPrint], param[model.RejectionReasonPrint])
+ textMsg = strings.Replace(fmt.Sprintf(strings.Replace(rejection, "\n", "", -1), rejectionValue...), "\\n", "\r\n", -1)
+ }
+
+ case utils.Int2Str(model.OrderStatusCustomerService): // 客服退款
+ // 称谓设置/平台语音设置
+ if setting.CallNameSetting == 64 || setting.CallNameSetting == 65 || setting.CallNameSetting == 66 {
+ // 老板
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, setting.CallNameSetting)
+ }
+ if setting.VoiceSetting.CusterRefundVoice == model.SettingOpen {
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.BusinessResponsibilityVoice)
+ }
+ if setting.PrintSetting.CusterRefundPrint == model.SettingOpen {
+ rejection := ``
+ rejectionValue := make([]interface{}, 0, 0)
+ rejection += `客服退款详情:
`
+ rejection += `订单号: %s
`
+ rejection += `订单来源: %s # %s
`
+ rejection += `退款原因: %s
`
+ rejection += `退款时间: %s
`
+ rejectionValue = append(rejectionValue, param[model.OrderNoPrint], param[model.VendorNamePrint], param[model.VendorOrderNoPrint], param[model.CustcareRefundReasonPrint], utils.Time2DateStr(time.Now()))
+ textMsg = strings.Replace(fmt.Sprintf(strings.Replace(rejection, "\n", "", -1), rejectionValue...), "\\n", "\r\n", -1)
+ }
+ case utils.Int2Str(model.OrderStatusCanceled), utils.Int2Str(model.CancelOrderSuccess): // 取消订单成功
+ // 称谓设置/平台语音设置
+ if setting.CallNameSetting == 64 || setting.CallNameSetting == 65 || setting.CallNameSetting == 66 {
+ // 老板
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, setting.CallNameSetting)
+ if setting.VoiceSetting.RefundGoodsVoice == model.SettingOpen {
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.CancelOrderVoice)
+ }
+ }
+ if setting.PrintSetting.CusterRefundPrint == model.SettingOpen {
+ rejection := ``
+ rejectionValue := make([]interface{}, 0, 0)
+ rejection += `订单取消成功:
`
+ rejection += `订单号: %s
`
+ rejection += `订单来源: %s # %s
`
+ rejection += `取消原因: %s
`
+ rejection += `取消成功时间: %s
`
+ rejectionValue = append(rejectionValue, param[model.OrderNoPrint], param[model.VendorNamePrint], param[model.VendorOrderNoPrint], param[model.CustcareRefundReasonPrint], utils.Time2DateStr(time.Now()))
+ textMsg = strings.Replace(fmt.Sprintf(strings.Replace(rejection, "\n", "", -1), rejectionValue...), "\\n", "\r\n", -1)
+ }
+ case utils.Int2Str(model.BusinessCancelOrder): // 商家取消打印
+ // 称谓设置/平台语音设置
+ if setting.CallNameSetting == 64 || setting.CallNameSetting == 65 || setting.CallNameSetting == 66 {
+ // 老板
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, setting.CallNameSetting)
+ }
+ if setting.PrintSetting.BusinessOrderCancel == model.SettingOpen {
+ rejection := ``
+ rejectionValue := make([]interface{}, 0, 0)
+ rejection += `商家侧取消订单:
`
+ rejection += `订单号: %s
`
+ rejection += `订单来源: %s # %s
`
+ rejection += `取消原因: %s
`
+ rejection += `取消成功时间: %s
`
+ rejectionValue = append(rejectionValue, param[model.OrderNoPrint], param[model.VendorNamePrint], param[model.VendorOrderNoPrint], param[model.CustcareRefundReasonPrint], utils.Time2DateStr(time.Now()))
+ textMsg = strings.Replace(fmt.Sprintf(strings.Replace(rejection, "\n", "", -1), rejectionValue...), "\\n", "\r\n", -1)
+ }
+ case utils.Int2Str(model.OrderRefundMoneySuccess): // 订单退款成功打印
+ // 称谓设置/平台语音设置
+ if setting.CallNameSetting == 64 || setting.CallNameSetting == 65 || setting.CallNameSetting == 66 {
+ // 老板
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, setting.CallNameSetting)
+ }
+ if setting.PrintSetting.OrderCancelSuccess == model.SettingOpen {
+ rejection := ``
+ rejectionValue := make([]interface{}, 0, 0)
+ rejection += `退款成功:
`
+ rejection += `订单号: %s
`
+ rejection += `订单来源: %s # %s
`
+ rejectionValue = append(rejectionValue, param[model.OrderNoPrint], param[model.VendorNamePrint], param[model.VendorOrderNoPrint])
+ textMsg = strings.Replace(fmt.Sprintf(strings.Replace(rejection, "\n", "", -1), rejectionValue...), "\\n", "\r\n", -1)
+ }
+ }
+
+ voice := strings.Replace(fmt.Sprintf(strings.Replace(printVoiceMsg, "\n", "", -1), printVoiceValue...), "\\n", "\r\n", -1)
+ return voice + textMsg, nil
+}
+
+// PrintWayBillOrderStatus 打印运单类通知消息
+func PrintWayBillOrderStatus(param map[string]string, setting *model.PrintSettingObj) string {
+ var (
+ printVoiceMsg string //语音信息
+ printVoiceValue = make([]interface{}, 0, 0)
+ textMsg string // 文本信息
+ textMsgValue = make([]interface{}, 0, 0) // 文本信息
+ )
+
+ switch param[model.WayBillStatusPrint] {
+ case utils.Int2Str(model.WaybillStatusAccepted), utils.Int2Str(model.WaybillStatusCourierAssigned): // 分配骑手
+ if setting.PrintSetting.RiderTakeOrder == model.SettingOpen { // 打印订单
+ textMsg += `接单骑手信息:
`
+ textMsg += `骑手姓名: %s
`
+ textMsg += `骑手电话: %s
`
+ textMsg += `接单时间: %s
`
+ textMsg += `订单来源: %s
`
+ textMsg += `单号: #%s
`
+ textMsgValue = append(textMsgValue, param[model.RiderNamePrint], param[model.RiderPhonePrint], utils.Time2DateStr(time.Now()), param[model.VendorNamePrint], param[model.VendorOrderNoPrint])
+ }
+ }
+ if setting.VoiceSetting.RiderTakeOrderVoice == model.SettingOpen { // 骑手接单语音通知
+ printVoiceMsg += `%d%d` // 骑手已经接单了
+ printVoiceValue = append(printVoiceValue, model.RiderGetOrderVoice)
+ }
+
+ msg := strings.Replace(fmt.Sprintf(strings.Replace(textMsg, "\n", "", -1), textMsgValue...), "\\n", "\r\n", -1)
+ voice := strings.Replace(fmt.Sprintf(strings.Replace(printVoiceMsg, "\n", "", -1), printVoiceValue...), "\\n", "\r\n", -1)
+ return voice + msg
+}
+
+// PrintStoreStatus 打印门店状态
+func PrintStoreStatus(param map[string]string, setting *model.PrintSettingObj) string {
+ var (
+ printVoiceMsg string //语音信息
+ printVoiceValue = make([]interface{}, 0, 0)
+ textMsg string // 文本信息
+ textMsgValue = make([]interface{}, 0, 0)
+ )
+
+ switch utils.Str2Int(param[model.StoreStatusPrint]) {
+ case -9: // 丢失授权
+ var voice string
+ if setting.VoiceSetting.LoseAuthorization == model.SettingOpen {
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.LoseTokenVoice)
+ voice = strings.Replace(fmt.Sprintf(strings.Replace(printVoiceMsg, "\n", "", -1), printVoiceValue...), "\\n", "\r\n", -1)
+ }
+
+ textMsg += `门店丢失授权通知
`
+ textMsg += `门店:%s
`
+ textMsg += `平台:%s
`
+ textMsg += `下线时间:%s
`
+ textMsg += `授权丢失,将无法继续打压订单!!!!
`
+ textMsgValue = append(textMsgValue, param[model.StoreNamePrint], param[model.VendorNamePrint], utils.Time2DateStr(time.Now()))
+ msg := strings.Replace(fmt.Sprintf(strings.Replace(textMsg, "\n", "", -1), textMsgValue...), "\\n", "\r\n", -1)
+ return voice + msg
+ default:
+ // 离线打印文本开启
+ textMsg += `门店下线通知
`
+ textMsg += `门店:%s
`
+ textMsg += `平台:%s
`
+ textMsg += `下线时间:%s
`
+ textMsgValue = append(textMsgValue, param[model.StoreNamePrint], param[model.VendorNamePrint], utils.Time2DateStr(time.Now()))
+ // 离线打印语音开启
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.StoreOfflineVoice)
+ voice := strings.Replace(fmt.Sprintf(strings.Replace(printVoiceMsg, "\n", "", -1), printVoiceValue...), "\\n", "\r\n", -1)
+ msg := strings.Replace(fmt.Sprintf(strings.Replace(textMsg, "\n", "", -1), textMsgValue...), "\\n", "\r\n", -1)
+
+ return voice + msg
+ }
+}
+
+// SyntheticSpeech 合成语音 (美团xxx号订单)
+func SyntheticSpeech(printVoiceMsg string, printVoiceValue []interface{}, param map[string]string) (string, []interface{}) {
+ printVoiceMsg += `%d` // 美团
+ switch param[model.VendorIDPrint] {
+ case utils.Int2Str(model.VendorIDJD): // 京东
+ printVoiceValue = append(printVoiceValue, model.JdVoice)
+ case utils.Int2Str(model.VendorIDMTWM): // 美团
+ printVoiceValue = append(printVoiceValue, model.MtVoice)
+ case utils.Int2Str(model.VendorIDELM): // 饿了么
+ printVoiceValue = append(printVoiceValue, model.ElmVoice)
+ case utils.Int2Str(model.VendorIDEBAI): // 饿百
+ printVoiceValue = append(printVoiceValue, model.ElmVoice)
+ case utils.Int2Str(model.VendorIDJDShop): // 京东商城
+ printVoiceValue = append(printVoiceValue, model.JdToHose)
+ case utils.Int2Str(model.VendorIDTT): // 抖音
+ // 暂无
+ }
+ if param[model.VendorOrderNoPrint] != "" {
+ switch len(param[model.VendorOrderNoPrint]) {
+ case 1:
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.NumberVoiceMap[param[model.VendorOrderNoPrint]])
+ case 2:
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.NumberVoiceMap[param[model.VendorOrderNoPrint][:1]+"0"])
+ if param[model.VendorOrderNoPrint][1:] != "0" {
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.NumberVoiceMap[param[model.VendorOrderNoPrint][1:]])
+ }
+ case 3:
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.NumberVoiceMap[param[model.VendorOrderNoPrint][0:1]+"00"])
+ if param[model.VendorOrderNoPrint][1:2] == "0" && param[model.VendorOrderNoPrint][2:] == "0" {
+
+ } else if param[model.VendorOrderNoPrint][1:2] == "0" && param[model.VendorOrderNoPrint][2:] != "0" {
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.NumberVoiceMap[param[model.VendorOrderNoPrint][1:2]])
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.NumberVoiceMap[param[model.VendorOrderNoPrint][2:]])
+ } else if param[model.VendorOrderNoPrint][1:2] != "0" && param[model.VendorOrderNoPrint][2:] == "0" {
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.NumberVoiceMap[param[model.VendorOrderNoPrint][1:2]+"0"])
+ } else if param[model.VendorOrderNoPrint][1:2] != "0" && param[model.VendorOrderNoPrint][2:] != "0" {
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.NumberVoiceMap[param[model.VendorOrderNoPrint][1:2]+"0"])
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.NumberVoiceMap[param[model.VendorOrderNoPrint][2:]])
+ }
+ }
+ }
+ printVoiceMsg += `%d`
+ printVoiceValue = append(printVoiceValue, model.OrderNoVoice)
+ return printVoiceMsg, printVoiceValue
+}
diff --git a/controllers/api_controller.go b/controllers/api_controller.go
index 252ad68d2..9b7c9f784 100644
--- a/controllers/api_controller.go
+++ b/controllers/api_controller.go
@@ -14,6 +14,7 @@ import (
"git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego/client/orm"
"github.com/astaxie/beego/server/web"
+ "math/rand"
"net/http"
"net/url"
"reflect"
@@ -383,6 +384,14 @@ func (c *ApiController) DoPrint(dataMap map[string]interface{}) (data, errCode s
return msgID, errCode, err
}
+func RandStringBytes(n int) string {
+ b := make([]byte, n)
+ for i := range b {
+ b[i] = letterBytes[rand.Intn(len(letterBytes))]
+ }
+ return string(b)
+}
+
//获取某打印消息
func (c *ApiController) GetPrintMsg(dataMap map[string]interface{}) (data map[string]interface{}, errCode string, err error) {
var (