This commit is contained in:
邹宗楠
2022-08-11 13:49:12 +08:00
parent 8a118b092f
commit 7d874eca22
13 changed files with 537 additions and 224 deletions

View File

@@ -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
})
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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

View File

@@ -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打开]

View File

@@ -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"`
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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) {
}

View File

@@ -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, "<b>", "<hb>", -1)
medium2 := strings.Replace(medium, "</b>", "</hb>", -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, "<b>", " ", -1)
medium2 := strings.Replace(medium, "</b>", " ", -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(`<center>upc码:%s</center><br>`, 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(`<center>upc码:%s</center><br>`, 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 添加或者修改模板

View File

@@ -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, "<b>", "<hb>", -1)
medium2 := strings.Replace(medium, "</b>", "</hb>", -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, "<b>", " ", -1)
medium2 := strings.Replace(medium, "</b>", " ", -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 = `<br><sound>%s</sound><br>`
EBailOrderNo = `<center><b>%s</b></center><br><br>
<center>手机买菜上京西</center><br>
Title = `<center>手机买菜上京西</center><br>
<center>极速到家送惊喜</center><br>
--------------------------------<br>`
Sound = `<br><sound>%s</sound><br>`
EBailOrderNo = `<center><b>%s</b></center><br><br>`
PayOrderTime = ` <b>下单时间: %s</b><br>`
TrySendTime = ` <b>预计送达: %s</b><br>`
OrderNo = ` <b>订单编号: %s</b><br>`
@@ -139,28 +88,67 @@ const (
ConsigneeMobile = ` <b>电话: %s<br>`
ConsigneeAddress = ` <b>地址: %s<br><br>`
BuyerComment = ` <b>客户备注:</b><br><b>%s</b><br><br>
商品明细:<br>
BuyerComment = ` <b>客户备注:</b><br><b>%s</b><br><br>`
GoodsListDetail = `商品明细:<br>
品名 数量 单价 小计<br>
--------------------------------<br>`
SkuName = `<b>%s</b><br>`
SkuNumber = `<b>x%s</b>`
SkuPrice = ` <b>¥%s</b>`
SkuAllPrice = ` <b>¥%s</b><br>`
SkuUpc = `upc码 %s\n`
AllSkuTypeCount = `<br><br><b>共%s种,`
AllSkuCount = `%s件商品</b><br>--------------------------------<br>`
StoreName = `<center><b>商品质量问题请联系:</b></center><br>
<center><b>%s:`
StoreTel = `%s</b></center><br><br>
更多信息请关注官方微信: `
StoreName = `<center><b>商品质量问题请联系:</b></center><br><center><b>%s:`
StoreTel = `%s</b></center><br><br>更多信息请关注官方微信: `
OfficialName = `<b>%s</b><br><br><br>
--------------------------------<br>
--------------------------------<br><br>`
)
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 (
<br>
`
)
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"` // 打印次数
}

View File

@@ -0,0 +1,90 @@
package app_server
// VoiceOrder 语音播报 : 老板你有新订单了,美团52号订单
func (t *TempServer) VoiceOrder(userId, printNo string) {
// 获取用户设置
// voice := `<sound>`
}
//
//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
//)

View File

@@ -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
}