From 7d874eca222d06e7772f3a3de0852669dd700cbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Thu, 11 Aug 2022 13:49:12 +0800 Subject: [PATCH] 1 --- controllers/app/wx_login.go | 18 ++ controllers/app/wx_print.go | 7 + dao/print_setting.go | 35 +++ dao/temp_dao.go | 14 +- model/app_model/print_setting.go | 15 ++ model/model.go | 37 +++ routers/v3_app_router.go | 4 + .../print_server/app_server/print_setting.go | 66 ++++++ .../print_server/app_server/setting_test.go | 7 +- services/print_server/app_server/temp.go | 210 +++++++++-------- .../print_server/app_server/temp_config.go | 214 +++++++----------- .../app_server/temp_voice_config.go | 90 ++++++++ services/print_server/app_server/wx_login.go | 44 ++++ 13 files changed, 537 insertions(+), 224 deletions(-) create mode 100644 services/print_server/app_server/temp_voice_config.go 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 +}