1
This commit is contained in:
@@ -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
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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打开]
|
||||
|
||||
@@ -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"`
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
}
|
||||
|
||||
@@ -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 添加或者修改模板
|
||||
|
||||
@@ -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"` // 打印次数
|
||||
}
|
||||
|
||||
90
services/print_server/app_server/temp_voice_config.go
Normal file
90
services/print_server/app_server/temp_voice_config.go
Normal 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
|
||||
//)
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user