diff --git a/controllers/app/wx_login.go b/controllers/app/wx_login.go
index 0596da8..45a8d62 100644
--- a/controllers/app/wx_login.go
+++ b/controllers/app/wx_login.go
@@ -83,3 +83,21 @@ func (a *Auth2Controller) GetUserPhoneByWeChat(c *gin.Context) {
return map[string]interface{}{"phone": phone}, "", nil
})
}
+
+// GetToken4Jxc4 获取京西菜市授权用户创建门店,和创建门店美团关联
+// @Title 获取京西菜市授权用户创建门店
+// @Description 获取京西菜市授权用户创建门店
+// @Success 200 {object} controllers.CallResult
+// @Failure 200 {object} controllers.CallResult
+// @router /getToken4Jxc4 [get]
+func (a *Auth2Controller) GetToken4Jxc4(c *gin.Context) {
+ controllers.CallFunc(c, func() (retVal interface{}, errCode string, err error) {
+ service := app_server.UserLogin{}
+ token, err := service.GetJxc4Token()
+ if err != nil {
+ return nil, "", err
+ }
+
+ return map[string]interface{}{"token": token}, "", nil
+ })
+}
diff --git a/controllers/app/wx_print.go b/controllers/app/wx_print.go
index b47199b..4cfa34a 100644
--- a/controllers/app/wx_print.go
+++ b/controllers/app/wx_print.go
@@ -1,6 +1,7 @@
package app
import (
+ "errors"
"git.rosy.net.cn/jx-print/controllers"
"git.rosy.net.cn/jx-print/model"
printModel "git.rosy.net.cn/jx-print/model/app_model"
@@ -176,6 +177,12 @@ func (p *Print) TestPrint(c *gin.Context) {
controllers.BuildErrJson(c, err)
return
}
+
+ if param.OrderNo >= 999999999 {
+ controllers.BuildErrJson(c, errors.New("订单编号最多65536"))
+ return
+ }
+
if tokenInfo = controllers.CheckToken(c); tokenInfo == nil {
return
}
diff --git a/dao/print_setting.go b/dao/print_setting.go
index d6182b0..d21abb4 100644
--- a/dao/print_setting.go
+++ b/dao/print_setting.go
@@ -75,3 +75,38 @@ func (p *PrintSettingDao) DeleteSetting(printNo []string) error {
_, err := globals.GetDB().Exec(`DELETE FROM print_setting WHERE print_no in (?)`, []interface{}{printNo}...)
return err
}
+
+// GetUserPrintSetting 获取用户打印机设置
+func (p *PrintSettingDao) GetUserPrintSetting(userId, printNo string) {
+ sql := `
+ SELECT
+ s.*
+ FROM
+ printer p
+ INNER JOIN print_setting s ON s.print_no = p.print_no
+ WHERE
+ p.user_id = ?
+ AND p.print_no = ?
+`
+ param := []interface{}{userId, printNo}
+
+ var setting *settingModel.PrintSetting
+ if err := globals.GetDB().QueryRow(sql, param...).Scan(&setting); err != nil {
+ return
+ }
+ if setting == nil {
+ return
+ }
+
+ //json.Unmarshal([]byte(setting.))
+}
+
+// QueryPrintSetting 查询打印机设置
+func (p *PrintSettingDao) QueryPrintSetting(printNo string) (*settingModel.PrintSetting, error) {
+ var result *settingModel.PrintSetting
+ if err := globals.GetDB().QueryRow(`SELECT * FROM print_setting WHERE print_no = ? AND deleted_at = ?`, printNo, utils.DefaultTimeValue).Scan(&result); err != nil {
+ return nil, err
+ }
+
+ return result, nil
+}
diff --git a/dao/temp_dao.go b/dao/temp_dao.go
index 2380c0f..b7efb52 100644
--- a/dao/temp_dao.go
+++ b/dao/temp_dao.go
@@ -59,12 +59,24 @@ func DeleteAllTemp(userId string, printNo []string) error {
// SelectUserTemp 查询用户模板
func SelectUserTemp(userId string) ([]*app_model.SystemTemp, error) {
var result []*app_model.SystemTemp
- if err := globals.GetDB().Select(&result, `SELECT * FROM system_temp WHERE user_id = ? AND deleted_at = ? ORDER BY created_at desc `, []interface{}{userId}...); err != nil {
+ if err := globals.GetDB().Select(&result, `SELECT * FROM system_temp WHERE user_id = ? AND deleted_at = ? ORDER BY created_at desc `, []interface{}{userId, utils.DefaultTimeValue}...); err != nil {
return nil, err
}
return result, nil
}
+// SelectUserDefaultTemp 查询用户默认模板
+func SelectUserDefaultTemp(userId string, tempType string) (*app_model.SystemTemp, bool, error) {
+ var result []*app_model.SystemTemp
+ if err := globals.GetDB().Select(&result, `SELECT * FROM system_temp WHERE user_id = ? AND temp_type = ? AND is_use = ? AND deleted_at = ? ORDER BY created_at desc `, []interface{}{userId, tempType, 1, utils.DefaultTimeValue}...); err != nil {
+ return nil, false, err
+ }
+ if len(result) <= 0 {
+ return nil, false, nil
+ }
+ return result[0], true, nil
+}
+
// QuerySystemTemp 查询系统模板
func QuerySystemTemp() ([]*app_model.SystemTemp, error) {
var result []*app_model.SystemTemp
diff --git a/model/app_model/print_setting.go b/model/app_model/print_setting.go
index 63f6b8f..ec1d204 100644
--- a/model/app_model/print_setting.go
+++ b/model/app_model/print_setting.go
@@ -19,6 +19,21 @@ type PrintSetting struct {
PickingSetting string `orm:"type(varchar);size(255)" json:"picking_setting" db:"picking_setting"` // 拣货语音设置
}
+type PrintSettingObj struct {
+ ID int
+ CreatedAt time.Time
+ UpdatedAt time.Time
+ DeletedAt time.Time
+ PrintNo string // 打印机编号
+ CallNameSetting int // 称谓设置 [64-默认老板]
+ SystemVoice int // 平台语音开关[1打开]
+ PrintVoiceSetting *PrintVoice // 打印机提示语音设置
+ OrderVoiceSetting *OrderVoice // 订单提示设置
+ RiderVoiceSetting *RiderVoice // 骑手动态提示设置
+ CustomerVoiceSetting *CustomerReceivingGoods // 客户收货提示设置
+ PickingSetting *ShopPickingVoice // 拣货语音设置
+}
+
// PrintVoice 打印机提示语音设置
type PrintVoice struct {
TimeVoice int `json:"time_voice"` // 平台语音开关[1打开]
diff --git a/model/model.go b/model/model.go
index 2cc059a..7750c75 100644
--- a/model/model.go
+++ b/model/model.go
@@ -265,3 +265,40 @@ type CallBack struct {
Code string `json:"code"`
Desc string `json:"desc"`
}
+
+type AutoGenerated struct {
+ Code string `json:"code"`
+ Desc string `json:"desc"`
+ Data struct {
+ UserID string `json:"userID"`
+ UserID2 string `json:"userID2"`
+ Mobile string `json:"mobile"`
+ Email string `json:"email"`
+ Name string `json:"name"`
+ Avatar string `json:"avatar"`
+ AuthBindInfo struct {
+ ID int `json:"id"`
+ CreatedAt time.Time `json:"createdAt"`
+ UpdatedAt time.Time `json:"updatedAt"`
+ LastOperator string `json:"lastOperator"`
+ DeletedAt time.Time `json:"deletedAt"`
+ AuthID string `json:"authID"`
+ BindType int `json:"bindType"`
+ Type string `json:"type"`
+ TypeID string `json:"typeID"`
+ UserID string `json:"userID"`
+ Status int `json:"status"`
+ AuthID2 string `json:"authID2"`
+ Remark string `json:"remark"`
+ DetailData string `json:"detailData"`
+ UserData interface{} `json:"userData"`
+ UserHint interface{} `json:"userHint"`
+ } `json:"authBindInfo"`
+ LoginTime time.Time `json:"loginTime"`
+ ExpiresAt int `json:"expiresAt"`
+ Token string `json:"token"`
+ TokenType int `json:"tokenType"`
+ IsExistOpenID bool `json:"isExistOpenID"`
+ AppID string `json:"appId"`
+ } `json:"data"`
+}
diff --git a/routers/v3_app_router.go b/routers/v3_app_router.go
index 7ae5bfc..016bc9a 100644
--- a/routers/v3_app_router.go
+++ b/routers/v3_app_router.go
@@ -11,4 +11,8 @@ func InitV3App(v2 *gin.RouterGroup) {
appNo.POST("/getUserPhone", app.Auth2ControllerController.GetUserPhoneByWeChat) // 获取微信用户电话
appNo.POST("/login", app.Auth2ControllerController.Login) // 微信登录
+
+ //
+ appNo.POST("/getToken4Jxc4", app.Auth2ControllerController.GetToken4Jxc4) // 微信登录京西菜市,获取菜市token
+
}
diff --git a/services/print_server/app_server/print_setting.go b/services/print_server/app_server/print_setting.go
index de06782..b3bd045 100644
--- a/services/print_server/app_server/print_setting.go
+++ b/services/print_server/app_server/print_setting.go
@@ -59,6 +59,19 @@ func (p *PrintSettingServer) DeletePrintSetting(printNo []string) error {
return dao.PrintSettingInfoDao.DeleteSetting(printNo)
}
+// QueryPrintSetting 查询用户打印机设置
+func (p *PrintSettingServer) QueryPrintSetting(printNo string) (*settingModel.PrintSettingObj, error) {
+ PrintSetting, err := dao.PrintSettingInfoDao.QueryPrintSetting(printNo)
+ if err != nil {
+ return nil, err
+ }
+ if PrintSetting == nil {
+ return nil, errors.New("打印机设置查询错误")
+ }
+ return UnMarshalString2Json(PrintSetting)
+}
+
+// MarshalJson2String 工具类
func MarshalJson2String(param *settingModel.PrintSetting) (*settingModel.PrintSetting, error) {
// 打印机提示语音设置
printVoiceSetting := &settingModel.PrintVoice{
@@ -134,3 +147,56 @@ func MarshalJson2String(param *settingModel.PrintSetting) (*settingModel.PrintSe
param.PickingSetting = string(pickingSettingByte)
return param, nil
}
+
+// UnMarshalString2Json 将字符串设置转换为对象设置
+func UnMarshalString2Json(param *settingModel.PrintSetting) (*settingModel.PrintSettingObj, error) {
+ var (
+ printVoiceSetting = &settingModel.PrintVoice{}
+ orderVoiceSetting = &settingModel.OrderVoice{}
+ riderVoiceSetting = &settingModel.RiderVoice{}
+ customerVoiceSetting = &settingModel.CustomerReceivingGoods{}
+ pickingSetting = &settingModel.ShopPickingVoice{}
+ )
+
+ result := &settingModel.PrintSettingObj{
+ ID: param.ID,
+ CreatedAt: param.CreatedAt,
+ UpdatedAt: param.UpdatedAt,
+ DeletedAt: param.DeletedAt,
+ PrintNo: param.PrintNo,
+ CallNameSetting: param.CallNameSetting,
+ SystemVoice: param.SystemVoice,
+ PrintVoiceSetting: nil,
+ OrderVoiceSetting: nil,
+ RiderVoiceSetting: nil,
+ CustomerVoiceSetting: nil,
+ PickingSetting: nil,
+ }
+
+ if err := json.Unmarshal([]byte(param.PrintVoiceSetting), printVoiceSetting); err != nil {
+ return nil, err
+ }
+ result.PrintVoiceSetting = printVoiceSetting
+
+ if err := json.Unmarshal([]byte(param.OrderVoiceSetting), orderVoiceSetting); err != nil {
+ return nil, err
+ }
+ result.OrderVoiceSetting = orderVoiceSetting
+
+ if err := json.Unmarshal([]byte(param.RiderVoiceSetting), riderVoiceSetting); err != nil {
+ return nil, err
+ }
+ result.RiderVoiceSetting = riderVoiceSetting
+
+ if err := json.Unmarshal([]byte(param.CustomerVoiceSetting), customerVoiceSetting); err != nil {
+ return nil, err
+ }
+ result.CustomerVoiceSetting = customerVoiceSetting
+
+ if err := json.Unmarshal([]byte(param.PickingSetting), pickingSetting); err != nil {
+ return nil, err
+ }
+ result.PickingSetting = pickingSetting
+
+ return result, nil
+}
diff --git a/services/print_server/app_server/setting_test.go b/services/print_server/app_server/setting_test.go
index 2f93ddc..f9002f3 100644
--- a/services/print_server/app_server/setting_test.go
+++ b/services/print_server/app_server/setting_test.go
@@ -2,10 +2,13 @@ package app_server
import (
"fmt"
+ "strings"
"testing"
)
func TestBinding(t *testing.T) {
- err := PrintSettingInfoServer.SystemInitPrintSetting("199308263974")
- fmt.Println(err)
+ fmt.Println(strings.Contains(`{"msg":"非专送、快送、混合送订单不允许调用此接口","code":1047}}`, "1047"))
+}
+
+func TestBind(t *testing.T) {
}
diff --git a/services/print_server/app_server/temp.go b/services/print_server/app_server/temp.go
index cbea837..94a5062 100644
--- a/services/print_server/app_server/temp.go
+++ b/services/print_server/app_server/temp.go
@@ -6,110 +6,142 @@ import (
"fmt"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-print/dao"
+ "git.rosy.net.cn/jx-print/globals"
tempModel "git.rosy.net.cn/jx-print/model/app_model"
"sort"
+ "strings"
"time"
)
+var SystemTemp map[string]*tempModel.SystemTemp
+
+func init() {
+ SystemTemp = make(map[string]*tempModel.SystemTemp, 0)
+ var sysTemp = TempServer{}
+ sysTempList, err := sysTemp.QuerySystemTemp()
+ if err != nil {
+ globals.SugarLogger.Debug("query system temp err :", err)
+ return
+ }
+ if len(sysTempList) <= 0 {
+ globals.SugarLogger.Debug("query system temp err :", "system temp don't have")
+ // 不存在系统模板,初始化系统模板
+ //InitSystemTemp()
+ }
+ temp := make(map[string]*tempModel.SystemTemp, 0)
+ for _, v := range sysTempList {
+ temp[v.TempSize] = v
+ SystemTemp[v.TempSize] = v
+ }
+
+ now := time.Now()
+ param := &tempModel.SystemTemp{
+ CreatedAt: &now,
+ UpdatedAt: &now,
+ LastOperator: "system",
+ DeletedAt: &utils.DefaultTimeValue,
+ TempName: "",
+ TempRank: SystemTempKey,
+ Temp: "",
+ UserId: "system_user",
+ TempType: tempModel.TempTypeMerchant,
+ TempSize: tempModel.SystemTempSizeBig,
+ PrintSn: "system",
+ IsUse: 1,
+ }
+
+ // 初始化大字体模板
+ if _, v := temp[tempModel.SystemTempSizeBig]; !v {
+ param.TempName = "system" + tempModel.SystemTempSizeBig
+ param.Temp = SystemTempValue
+ if err := dao.AddTemp(param); err != nil {
+ globals.SugarLogger.Debug("init system temp err :", err)
+ }
+ SystemTemp[tempModel.SystemTempSizeBig] = param
+ }
+
+ // 初始化中字体模板
+ if _, v := temp[tempModel.SystemTempSizeMedium]; !v {
+ param.TempName = "system" + tempModel.SystemTempSizeMedium
+ medium := strings.Replace(SystemTempValue, "", "", -1)
+ medium2 := strings.Replace(medium, "", "", -1)
+ param.Temp = medium2
+ param.TempSize = tempModel.SystemTempSizeMedium
+ param.IsUse = 2
+ if err := dao.AddTemp(param); err != nil {
+ globals.SugarLogger.Debug("init system temp err :", err)
+ }
+ SystemTemp[tempModel.SystemTempSizeMedium] = param
+ }
+
+ // 初始化小字体模板
+ if _, v := temp[tempModel.SystemTempSizeSmall]; !v {
+ param.TempName = "system" + tempModel.SystemTempSizeSmall
+ medium := strings.Replace(SystemTempValue, "", " ", -1)
+ medium2 := strings.Replace(medium, "", " ", -1)
+ param.Temp = medium2
+ param.TempSize = tempModel.SystemTempSizeSmall
+ param.IsUse = 2
+ if err := dao.AddTemp(param); err != nil {
+ globals.SugarLogger.Debug("init system temp err :", err)
+ }
+ SystemTemp[tempModel.SystemTempSizeSmall] = param
+ }
+
+}
+
type TempServer struct {
}
-// MakeSystemTempFontSmall 制作系统模板小字体
-func (t *TempServer) MakeSystemTempFontSmall(param map[string]interface{}) (string, error) {
- if len(param) <= 0 {
- return "", errors.New("参数不能为空")
+// MakePrintMsgOnTemp 将打印数据渲染到模板当中
+func (t *TempServer) MakePrintMsgOnTemp(param map[string]string, userId string) (string, error) {
+ // 查询用户默认模板,不存在则使用系统默认模板
+ var userTemp *tempModel.SystemTemp
+ userTemp, isHave, err := dao.SelectUserDefaultTemp(userId, tempModel.TempTypeMerchant)
+ if err != nil {
+ return "", err
}
- orderPrint := &JXPrintData{}
- if err := utils.Map2StructByJson(param, orderPrint, false); err != nil {
- return "", errors.New("参数不能为空")
- }
- // 头部模板,订单
- var orderParams []interface{}
- headTemp := tempBegin
- orderParams = append(orderParams, orderPrint.EBailOrderNo, orderPrint.PayOrderTime, orderPrint.TrySendTime, orderPrint.OrderNo)
- // 是否为预订单
- if orderPrint.BusinessType == "2" {
- headTemp += tempBusiness
+ if userTemp == nil || !isHave {
+ userTemp = SystemTemp[tempModel.SystemTempSizeBig]
}
- // 订单来源信息
- pickupTemp := tempBegin2
- orderParams = append(orderParams, orderPrint.VendorName, orderPrint.VendorOrderNo, orderPrint.QRCOrder)
- if orderPrint.VendorID == utils.Int2Str(tempModel.VendorIDEBAI) {
- getCode := fmt.Sprintf(tempEBail, orderPrint.VendorName, orderPrint.EBaiCode)
- pickupTemp += getCode
- }
+ // 需要打印数据
+ printMsg := ""
+ printValue := make([]interface{}, 0, 0)
+ for _, v := range strings.Split(userTemp.TempRank, ",") {
+ switch v {
+ case "skuName", "skuNumber", "skuPrice", "skuAllPrice", "allSkuTypeCount", "allSkuCount":
+ continue
+ case "goodsListDetail":
+ printMsg += TempTag[v]
+ skuList := make([]*SkuListPrintOrder, 0, 0)
+ if err := json.Unmarshal([]byte(param[v]), skuList); err != nil {
+ return "", err
+ }
+ for i := 0; i < len(skuList); i++ {
+ printMsg += TempTag["skuName"]
+ printMsg += TempTag["skuNumber"]
+ printMsg += TempTag["skuPrice"]
+ printMsg += TempTag["skuAllPrice"]
+ printValue = append(printValue, skuList[i].SkuName, skuList[i].SkuName, skuList[i].SalePrice, skuList[i].TotalCountPrice)
+ if skuList[i].Upc != "" {
+ printMsg += TempTag["sku"]
+ printValue = append(printValue, skuList[i].Upc)
+ }
- // 客户信息
- userInfo := tempBegin3
- orderParams = append(orderParams, orderPrint.ConsigneeName, orderPrint.ConsigneeMobile, orderPrint.ConsigneeAddress, orderPrint.BuyerComment)
-
- // 商品信息
- skuList := ""
- for _, v := range orderPrint.SkuList {
- sku := fmt.Sprintf(skuListTemp, v.SkuName, v.SkuCount, v.SalePrice, v.TotalCountPrice)
- if v.Upc != "" {
- sku += fmt.Sprintf(`
upc码:%s
`, v.Upc)
+ }
+ case "businessType":
+ if param[v] == "2" { // 是预订单
+ printMsg += TempTag[v]
+ }
+ default:
+ printMsg += TempTag[v]
+ printValue = append(printValue, param[v])
}
- skuList += sku
+
}
- // 统计信息
- statInfo := tempEnd
- orderParams = append(orderParams, orderPrint.AllSkuTypeCount, orderPrint.AllSkuCount, orderPrint.StoreName, orderPrint.StoreTel, orderPrint.OfficialName)
- // 语音模板
- soundTemp := fmt.Sprintf(soundTemp, "老板,你有新订单了")
- orderFmt := soundTemp + pickupTemp + userInfo + skuList + statInfo
- return fmt.Sprintf(orderFmt, orderParams), nil
-}
-
-// MakeSystemTempFontBig 制作系统模板大字体
-func (t *TempServer) MakeSystemTempFontBig(param map[string]interface{}) (string, error) {
- if len(param) <= 0 {
- return "", errors.New("参数不能为空")
- }
- orderPrint := &JXPrintData{}
- if err := utils.Map2StructByJson(param, orderPrint, false); err != nil {
- return "", errors.New("参数不能为空")
- }
- // 头部模板,订单
- var orderParams []interface{}
- headTemp := tempBeginBig
- orderParams = append(orderParams, orderPrint.EBailOrderNo, orderPrint.PayOrderTime, orderPrint.TrySendTime, orderPrint.OrderNo)
- // 是否为预订单
- if orderPrint.BusinessType == "2" {
- headTemp += tempBusinessBig
- }
-
- // 订单来源信息
- pickupTemp := tempBegin2Big
- orderParams = append(orderParams, orderPrint.VendorName, orderPrint.VendorOrderNo, orderPrint.QRCOrder)
- if orderPrint.VendorID == utils.Int2Str(tempModel.VendorIDEBAI) {
- getCode := fmt.Sprintf(tempEBailBig, orderPrint.VendorName, orderPrint.EBaiCode)
- pickupTemp += getCode
- }
-
- // 客户信息
- userInfo := tempBegin3Big
- orderParams = append(orderParams, orderPrint.ConsigneeName, orderPrint.ConsigneeMobile, orderPrint.ConsigneeAddress, orderPrint.BuyerComment)
-
- // 商品信息
- skuList := ""
- for _, v := range orderPrint.SkuList {
- sku := fmt.Sprintf(skuListTempBig, v.SkuName, v.SkuCount, v.SalePrice, v.TotalCountPrice)
- if v.Upc != "" {
- sku += fmt.Sprintf(`upc码:%s
`, v.Upc)
- }
- skuList += sku
- }
-
- // 统计信息
- statInfo := tempEndBig
- orderParams = append(orderParams, orderPrint.AllSkuTypeCount, orderPrint.AllSkuCount, orderPrint.StoreName, orderPrint.StoreTel, orderPrint.OfficialName)
- // 语音模板
- soundTemp := fmt.Sprintf(soundTemp, "老板,你有新订单了")
- orderFmt := soundTemp + pickupTemp + userInfo + skuList + statInfo
- return fmt.Sprintf(orderFmt, orderParams), nil
+ return strings.Replace(fmt.Sprintf(strings.Replace(printMsg, "\n", "", -1), printValue...), "\\n", "\r\n", -1), nil
}
// AddOrUpdateTemp 添加或者修改模板
diff --git a/services/print_server/app_server/temp_config.go b/services/print_server/app_server/temp_config.go
index 501f5e2..689cc3c 100644
--- a/services/print_server/app_server/temp_config.go
+++ b/services/print_server/app_server/temp_config.go
@@ -1,97 +1,44 @@
package app_server
-import (
- "git.rosy.net.cn/baseapi/utils"
- "git.rosy.net.cn/jx-print/dao"
- "git.rosy.net.cn/jx-print/globals"
- tempModel "git.rosy.net.cn/jx-print/model/app_model"
- "strings"
- "time"
-)
-
-var SystemTemp map[string]*tempModel.SystemTemp
+var TempTag map[string]string
func init() {
- var sysTemp = TempServer{}
- sysTempList, err := sysTemp.QuerySystemTemp()
- if err != nil {
- globals.SugarLogger.Debug("query system temp err :", err)
- return
- }
- if len(sysTempList) <= 0 {
- globals.SugarLogger.Debug("query system temp err :", "system temp don't have")
- return
- }
- temp := make(map[string]*tempModel.SystemTemp, 0)
- for _, v := range sysTempList {
- temp[v.TempSize] = v
- SystemTemp[v.TempSize] = v
- }
-
- now := time.Now()
- param := &tempModel.SystemTemp{
- CreatedAt: &now,
- UpdatedAt: &now,
- LastOperator: "system",
- DeletedAt: &utils.DefaultTimeValue,
- TempName: "system",
- TempRank: SystemTempKey,
- Temp: "",
- UserId: "system_user",
- TempType: tempModel.TempTypeMerchant,
- TempSize: tempModel.SystemTempSizeBig,
- PrintSn: "system",
- IsUse: 1,
- }
-
- // 初始化大字体模板
- if _, v := temp[tempModel.SystemTempSizeBig]; !v {
- param.TempName += tempModel.SystemTempSizeBig
- param.Temp = SystemTempValue
- if err := dao.AddTemp(param); err != nil {
- globals.SugarLogger.Debug("init system temp err :", err)
- }
- SystemTemp[tempModel.SystemTempSizeBig] = param
- }
-
- // 初始化中字体模板
- if _, v := temp[tempModel.SystemTempSizeMedium]; !v {
- param.TempName += tempModel.SystemTempSizeMedium
- medium := strings.Replace(SystemTempValue, "", "", -1)
- medium2 := strings.Replace(medium, "", "", -1)
- param.Temp = medium2
- if err := dao.AddTemp(param); err != nil {
- globals.SugarLogger.Debug("init system temp err :", err)
- }
- if err := dao.AddTemp(param); err != nil {
- globals.SugarLogger.Debug("init system temp err :", err)
- }
- SystemTemp[tempModel.SystemTempSizeMedium] = param
- }
-
- // 初始化小字体模板
- if _, v := temp[tempModel.SystemTempSizeSmall]; !v {
- param.TempName += tempModel.SystemTempSizeSmall
- medium := strings.Replace(SystemTempValue, "", " ", -1)
- medium2 := strings.Replace(medium, "", " ", -1)
- param.Temp = medium2
- if err := dao.AddTemp(param); err != nil {
- globals.SugarLogger.Debug("init system temp err :", err)
- }
- if err := dao.AddTemp(param); err != nil {
- globals.SugarLogger.Debug("init system temp err :", err)
- }
- SystemTemp[tempModel.SystemTempSizeSmall] = param
- }
-
+ TempTag = make(map[string]string, 26)
+ TempTag["title"] = Title
+ TempTag["sound"] = Sound
+ TempTag["eBailOrderNo"] = EBailOrderNo
+ TempTag["payOrderTime"] = PayOrderTime
+ TempTag["trySendTime"] = TrySendTime
+ TempTag["orderNo"] = OrderNo
+ TempTag["businessType"] = BusinessType
+ TempTag["vendorName"] = VendorName
+ TempTag["eBaiCode"] = EBaiCode
+ TempTag["qRCOrder"] = QRCOrder
+ TempTag["eBaiVendorName"] = EBaiVendorName
+ TempTag["eBaiOrderNo"] = EBaiOrderNo
+ TempTag["consigneeName"] = ConsigneeName
+ TempTag["consigneeMobile"] = ConsigneeMobile
+ TempTag["consigneeAddress"] = ConsigneeAddress
+ TempTag["buyerComment"] = BuyerComment
+ TempTag["goodsListDetail"] = GoodsListDetail
+ TempTag["skuName"] = SkuName
+ TempTag["skuNumber"] = SkuNumber
+ TempTag["skuPrice"] = SkuPrice
+ TempTag["skuAllPrice"] = SkuAllPrice
+ TempTag["allSkuTypeCount"] = AllSkuTypeCount
+ TempTag["allSkuCount"] = AllSkuCount
+ TempTag["storeName"] = StoreName
+ TempTag["storeTel"] = StoreTel
+ TempTag["officialName"] = OfficialName
}
// SystemTempKey 系统数据库模板排序
const (
//SystemTempKey 公共参数 EBaiOrderNo= vendorName EBaiVendorName = vendorOrderNo
- SystemTempKey = "sound,eBailOrderNo,payOrderTime,trySendTime,orderNo,businessType,vendorName,eBaiCode,qRCOrder,eBaiVendorName,eBaiOrderNo,consigneeName," +
- "consigneeMobile,consigneeAddress,buyerComment,skuName,skuNumber,skuPrice,skuAllPrice,allSkuTypeCount,allSkuCount,storeName,storeTel,officialName"
+ SystemTempKey = "title,sound,eBailOrderNo,payOrderTime,trySendTime,orderNo,businessType,vendorName,eBaiCode,qRCOrder,eBaiVendorName,eBaiOrderNo,consigneeName," +
+ "consigneeMobile,consigneeAddress,buyerComment,goodsListDetail,skuName,skuNumber,skuPrice,skuAllPrice,skuUpc,allSkuTypeCount,allSkuCount,storeName,storeTel,officialName"
SystemTempValue = "{" +
+ "title:" + Title + "," +
"sound:" + Sound + "," +
"eBailOrderNo:" + EBailOrderNo + "," +
"payOrderTime:" + PayOrderTime + "," +
@@ -107,10 +54,12 @@ const (
"consigneeMobile:" + ConsigneeMobile + "," +
"consigneeAddress:" + ConsigneeAddress + "," +
"buyerComment:" + BuyerComment + "," +
+ "goodsListDetail:" + GoodsListDetail + "," +
"skuName:" + SkuName + "," +
"skuNumber:" + SkuNumber + "," +
"skuPrice:" + SkuPrice + "," +
"skuAllPrice:" + SkuAllPrice + "," +
+ "skuUpc:" + SkuUpc + "," +
"allSkuTypeCount:" + AllSkuTypeCount + "," +
"allSkuCount:" + AllSkuCount + "," +
"storeName:" + StoreName + "," +
@@ -118,12 +67,12 @@ const (
"officialName:" + OfficialName +
"}"
- Sound = `
%s
`
-
- EBailOrderNo = `%s
- 手机买菜上京西
+ Title = `手机买菜上京西
极速到家送惊喜
--------------------------------
`
+
+ Sound = `
%s
`
+ EBailOrderNo = `%s
`
PayOrderTime = ` 下单时间: %s
`
TrySendTime = ` 预计送达: %s
`
OrderNo = ` 订单编号: %s
`
@@ -139,28 +88,67 @@ const (
ConsigneeMobile = ` 电话: %s
`
ConsigneeAddress = ` 地址: %s
`
- BuyerComment = ` 客户备注:
%s
- 商品明细:
+ BuyerComment = ` 客户备注:
%s
`
+ GoodsListDetail = `商品明细:
品名 数量 单价 小计
--------------------------------
`
+
SkuName = `%s
`
SkuNumber = `x%s`
SkuPrice = ` ¥%s`
SkuAllPrice = ` ¥%s
`
+ SkuUpc = `upc码: %s\n`
AllSkuTypeCount = `
共%s种,`
AllSkuCount = `%s件商品
--------------------------------
`
- StoreName = `商品质量问题请联系:
- %s:`
- StoreTel = `%s
- 更多信息请关注官方微信: `
+ StoreName = `商品质量问题请联系:
%s:`
+ StoreTel = `%s
更多信息请关注官方微信: `
OfficialName = `%s
--------------------------------
--------------------------------
`
)
+type SkuListPrintOrder struct {
+ SkuName string `json:"skuName"` // 商品名称
+ SkuCount string `json:"skuCount"` // 商品数量
+ SalePrice string `json:"salePrice"` // 单价
+ TotalCountPrice string `json:"totalCountPrice"` // 总价
+ Upc string `json:"upc"` // 条形码
+}
+
+type JXPrintData struct {
+ EBailOrderNo string `json:"e_bail_order_no"` // 饿百取货码(品牌名称)
+ BusinessType string `json:"business_type"` // 是否为预定单 2-是/1-否
+ PayOrderTime string `json:"pay_order_time"` // 下单时间
+ TrySendTime string `json:"try_send_time"` // 预计送达时间
+ OrderNo string `json:"order_no"` // 订单编号
+ VendorName string `json:"vendor_name"` // 订单来源平台名称
+ VendorID string `json:"vendor_id"` // 订单来源平台Id
+ VendorOrderNo string `json:"vendor_order_no"` // 订单序号
+ EBaiCode string `json:"e_bai_code"` // 饿百取货码
+ QRCOrder string `json:"qrc_order"` // 订单二维码单号,还是订单Id
+ ConsigneeName string `json:"consignee_name"` // 客户名称
+ ConsigneeMobile string `json:"consignee_mobile"` // 客户电话
+ ConsigneeAddress string `json:"consignee_address"` // 客户地址
+ BuyerComment string `json:"buyer_comment"` // 客户备注
+ SkuList []*SkuListPrintOrder `json:"sku_list"` // 商品列表
+ SkuName string `json:"sku_name"` // 商品名称
+ SkuCount string `json:"sku_count"` // 商品件数
+ SkuOnePrice string `json:"sku_one_price"` // 商品单价
+ SkuAllPrice string `json:"sku_all_price"` // 商品总价 = 商品件数 x 商品件数
+ AllSkuTypeCount string `json:"all_sku_type_count"` // 商品种类
+ AllSkuCount string `json:"all_sku_count"` // 商品总数量
+ UserPayMoney string `json:"user_pay_money"` // 用户支付
+ StoreName string `json:"store_name"` // 门店名称
+ StoreTel string `json:"store_tel"` // 门店电话
+ OfficialName string `json:"official_name"` // 官方名称
+ BigFont string `json:"big_font"` // 是否为大字体
+ PrintNumber string `json:"print_number"` // 打印次数
+}
+
+/************************一下模板将不再使用,直接将标签替换*****************************************/
// 小字体系统模板
const (
// 模板开始
@@ -404,41 +392,3 @@ const (
`
)
-
-type SkuListPrintOrder struct {
- SkuName string `json:"skuName"` // 商品名称
- SkuCount string `json:"skuCount"` // 商品数量
- SalePrice string `json:"salePrice"` // 单价
- TotalCountPrice string `json:"totalCountPrice"` // 总价
- Upc string `json:"upc"` // 条形码
-}
-
-type JXPrintData struct {
- EBailOrderNo string `json:"e_bail_order_no"` // 饿百取货码(品牌名称)
- BusinessType string `json:"business_type"` // 是否为预定单 2-是/1-否
- PayOrderTime string `json:"pay_order_time"` // 下单时间
- TrySendTime string `json:"try_send_time"` // 预计送达时间
- OrderNo string `json:"order_no"` // 订单编号
- VendorName string `json:"vendor_name"` // 订单来源平台名称
- VendorID string `json:"vendor_id"` // 订单来源平台Id
- VendorOrderNo string `json:"vendor_order_no"` // 订单序号
- EBaiCode string `json:"e_bai_code"` // 饿百取货码
- QRCOrder string `json:"qrc_order"` // 订单二维码单号,还是订单Id
- ConsigneeName string `json:"consignee_name"` // 客户名称
- ConsigneeMobile string `json:"consignee_mobile"` // 客户电话
- ConsigneeAddress string `json:"consignee_address"` // 客户地址
- BuyerComment string `json:"buyer_comment"` // 客户备注
- SkuList []*SkuListPrintOrder `json:"sku_list"` // 商品列表
- SkuName string `json:"sku_name"` // 商品名称
- SkuCount string `json:"sku_count"` // 商品件数
- SkuOnePrice string `json:"sku_one_price"` // 商品单价
- SkuAllPrice string `json:"sku_all_price"` // 商品总价 = 商品件数 x 商品件数
- AllSkuTypeCount string `json:"all_sku_type_count"` // 商品种类
- AllSkuCount string `json:"all_sku_count"` // 商品总数量
- UserPayMoney string `json:"user_pay_money"` // 用户支付
- StoreName string `json:"store_name"` // 门店名称
- StoreTel string `json:"store_tel"` // 门店电话
- OfficialName string `json:"official_name"` // 官方名称
- BigFont string `json:"big_font"` // 是否为大字体
- PrintNumber string `json:"print_number"` // 打印次数
-}
diff --git a/services/print_server/app_server/temp_voice_config.go b/services/print_server/app_server/temp_voice_config.go
new file mode 100644
index 0000000..4fb4f7f
--- /dev/null
+++ b/services/print_server/app_server/temp_voice_config.go
@@ -0,0 +1,90 @@
+package app_server
+
+// VoiceOrder 语音播报 : 老板你有新订单了,美团52号订单
+func (t *TempServer) VoiceOrder(userId, printNo string) {
+ // 获取用户设置
+
+ // voice := ``
+
+}
+
+//
+//const (
+//1 // 欢迎使用京西云打印机.mp3
+//2 // 网络连接成功.mp3
+//3 // 网络连接失败和心跳失败.mp3
+//4 // 打印机缺纸或装纸错误.mp3
+//5 // WIFI密码错误.mp3
+//6 // 新定单-后台设置播放几次.mp3
+//7 // 待接单每1分钟1次.mp3
+//8 // 待拣货每5分钟1次.mp3
+//9 // 骑手接单了.mp3
+//10 // 定单完成.mp3
+//11 // 催单.mp3
+//12 // 定单被取消了.mp3
+//13 // 申请取消-后台设置播放几次.mp3
+//14 // 申请退款-后台甚至播放几次.mp3
+//15 // 申请退货-后台设置播放几次.mp3
+//16 // 投递失败.mp3
+//17 // 失去授权-联播3次.mp3
+//18 // 商家责任客服退款.mp3
+//19 // 进店咨询.mp3
+//20 // 店铺被下线-联播3次.mp3
+//21 // 请关注.mp3
+//22 // 饿了么.mp3
+//23 // 京东到家.mp3
+//24 // 京西.mp3
+//25 // 美团外卖.mp3
+//26 // 微盟.mp3
+//27 // 淘宝.mp3
+//28 // 京东.mp3
+//29 // 拼多多.mp3
+//30 // 美团.mp3
+//31 // 微店.mp3
+//32 // 新店.mp3
+//33 // 有赞.mp3
+//34 // 0.mp3
+//35 // 1.mp3
+//36 // 2.mp3
+//37 // 3.mp3
+//38 // 4.mp3
+//39 // 5.mp3
+//40 // 6.mp3
+//41 // 7.mp3
+//42 // 8.mp3
+//43 // 9.mp3
+//44 // 10.mp3
+//45 // 20.mp3
+//46 // 30.mp3
+//47 // 40.mp3
+//48 // 50.mp3
+//49 // 60.mp3
+//50 // 70.mp3
+//51 // 80.mp3
+//52 // 90.mp3
+//53 // 100.mp3
+//54 // 200.mp3
+//55 // 300.mp3
+//56 // 400.mp3
+//57 // 500.mp3
+//58 // 600.mp3
+//59 // 700.mp3
+//60 // 800.mp3
+//61 // 900.mp3
+//62 // 1000.mp3
+//63 // 号定单.mp3
+//64 // 老板.mp3
+//65 // 大哥.mp3
+//66 // 大姐.mp3
+//67 // 到店支付.mp3
+//68 // 点.mp3
+//69 // 余额不足5元.mp3
+//70 // 星期一.mp3
+//71 // 星期二.mp3
+//72 // 星期三.mp3
+//73 // 星期四.mp3
+//74 // 星期五.mp3
+//75 // 星期六.mp3
+//76 // 星期天.mp3
+//77 // 元.mp3
+//)
diff --git a/services/print_server/app_server/wx_login.go b/services/print_server/app_server/wx_login.go
index bcc75f4..171b1db 100644
--- a/services/print_server/app_server/wx_login.go
+++ b/services/print_server/app_server/wx_login.go
@@ -14,7 +14,12 @@ import (
wxLogin "git.rosy.net.cn/jx-print/model/app_model"
"git.rosy.net.cn/jx-print/services/api"
"github.com/gin-gonic/gin"
+ "io/ioutil"
+ "net/http"
+ "net/url"
"reflect"
+ "strconv"
+ "strings"
"time"
)
@@ -168,3 +173,42 @@ func PKCS7UnPadding(origData []byte) (bs []byte) {
}
return
}
+
+// Jxc4UserToken 全局变量,缓存菜市管理系统token
+var Jxc4UserToken = map[string]string{"token": "", "expirationTime": ""}
+
+// GetJxc4Token 获取京西菜市token
+func (u *UserLogin) GetJxc4Token() (string, error) {
+ if Jxc4UserToken["token"] != "" && Jxc4UserToken["expirationTime"] != "" {
+ timeBegin, _ := strconv.ParseInt(Jxc4UserToken["expirationTime"], 10, 64)
+ timeNow := time.Now().Unix()
+ if timeBegin-timeNow > 0 { // 没过期
+ return Jxc4UserToken["token"], nil
+ }
+ }
+ //TODO 参数为登录菜市管理系统的管理员用户账号:目前账号为 15141938808 密码111111
+ params := map[string]interface{}{"authType": "localpass", "authIDType": "mobile", "authID": "15141938808", "authSecret": "96e79218965eb72c92a549dd5a330112"}
+ retVal := make(url.Values)
+ for k, v := range params {
+ retVal.Set(k, fmt.Sprint(v))
+ }
+
+ strings.NewReader(utils.Map2URLValues(params).Encode())
+ resp, err := http.Post("https://www.jxc4.com/v2/auth2/Login", "application/x-www-form-urlencoded", strings.NewReader(retVal.Encode()))
+ if err != nil {
+ return "", err
+ }
+ defer resp.Body.Close()
+ bodyResp, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ return "", err
+ }
+
+ jxc4User := &model.AutoGenerated{}
+ if err := json.Unmarshal(bodyResp, jxc4User); err != nil {
+ return "", err
+ }
+ Jxc4UserToken["token"] = jxc4User.Data.Token
+ Jxc4UserToken["expirationTime"] = strconv.FormatInt(time.Now().Unix(), 64)
+ return jxc4User.Data.Token, nil
+}