打印到家订单

This commit is contained in:
gazebo
2020-02-05 10:16:07 +08:00
parent 5659eaa847
commit 2ea4f30326
4 changed files with 53 additions and 30 deletions

View File

@@ -4,27 +4,33 @@ import (
"fmt" "fmt"
"strings" "strings"
"git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/netprinter"
"git.rosy.net.cn/jx-callback/business/jxutils/weixinmsg" "git.rosy.net.cn/jx-callback/business/jxutils/weixinmsg"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner/purchase/jd"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/api"
) )
func (c *OrderManager) OnNewFakeJdOrder(vendorOrderID string) (err error) { func (c *OrderManager) OnNewFakeJdOrder(vendorOrderID string) (err error) {
orderInfo, err := api.FakeJdAPI.FakeQuerySingleOrder(vendorOrderID) utils.CallFuncAsync(func() {
if err == nil { orderInfo, err := api.FakeJdAPI.FakeQuerySingleOrderRaw(vendorOrderID)
err = c.notifyNewFakeJdOrder(orderInfo) if err == nil {
} err = c.notifyNewFakeJdOrder(jd.Map2Order(orderInfo))
}
if err != nil {
globals.SugarLogger.Warnf("OnNewFakeJdOrder failed with err:%v", err)
}
})
return err return err
} }
func (c *OrderManager) notifyNewFakeJdOrder(orderInfo *jdapi.OrderInfo) (err error) { func (c *OrderManager) notifyNewFakeJdOrder(order *model.GoodsOrder) (err error) {
vendorStoreID := orderInfo.DeliveryStationNo
db := dao.GetDB() db := dao.GetDB()
storeDetail, err := dao.GetStoreDetailByVendorStoreID(db, vendorStoreID, model.VendorIDJD) storeDetail, err := dao.GetStoreDetailByVendorStoreID(db, order.VendorStoreID, model.VendorIDJD)
if err != nil { if err != nil {
return err return err
} }
@@ -32,25 +38,34 @@ func (c *OrderManager) notifyNewFakeJdOrder(orderInfo *jdapi.OrderInfo) (err err
if storeDetail.LinkStoreID != 0 { if storeDetail.LinkStoreID != 0 {
realStoreID = storeDetail.LinkStoreID realStoreID = storeDetail.LinkStoreID
} }
notifyWxNewFakeJdOrder(orderInfo, realStoreID) notifyWxNewFakeJdOrder(order, realStoreID)
netprinter.PrintOrderByOrder4Store(jxcontext.AdminCtx, order, realStoreID)
return err return err
} }
func notifyWxNewFakeJdOrder(order *jdapi.OrderInfo, storeID int) (err error) { func notifyWxNewFakeJdOrder(order *model.GoodsOrder, storeID int) (err error) {
globals.SugarLogger.Debugf("notifyWxNewFakeJdOrder orderID:%s", order.SrcOrderID) globals.SugarLogger.Debugf("notifyWxNewFakeJdOrder orderID:%s", order.VendorOrderID)
sb := new(strings.Builder) sb := new(strings.Builder)
sb.WriteString("老板,你有新订单了\n") sb.WriteString("老板,你有新订单了\n")
sb.WriteString(fmt.Sprintf("订单号:%s\n", order.SrcOrderID)) sb.WriteString(fmt.Sprintf("订单号:%s\n", order.VendorOrderID))
sb.WriteString(fmt.Sprintf("买家:%s\n", order.BuyerFullName)) sb.WriteString("送达时间:")
sb.WriteString(fmt.Sprintf("电话:%s\n", order.BuyerMobile)) if order.BusinessType == model.BusinessTypeDingshida {
sb.WriteString(fmt.Sprintf("收货地址:%s\n", order.BuyerFullAddress)) sb.WriteString(utils.Time2Str(order.ExpectedDeliveredTime))
sb.WriteString("商品详情:\n") } else {
for _, product := range order.Product { sb.WriteString("立即达")
sb.WriteString(fmt.Sprintf("\t%s*%d\n", product.SkuName, product.SkuCount))
} }
title := fmt.Sprintf("你有到家菜市新订单%d", order.OrderNum) sb.WriteString("\n")
context := sb.String() sb.WriteString(fmt.Sprintf("买家:%s\n", order.ConsigneeName))
_, err = weixinmsg.SendStoreMessage(jxcontext.AdminCtx, title, context, []int{storeID}, true, true) sb.WriteString(fmt.Sprintf("电话:%s\n", order.ConsigneeMobile))
sb.WriteString(fmt.Sprintf("收货地址:%s\n", order.ConsigneeAddress))
sb.WriteString("商品详情:\n")
for _, sku := range order.Skus {
sb.WriteString(fmt.Sprintf("\t%s*%d\n", sku.SkuName, sku.Count))
}
title := fmt.Sprintf("你有到家菜市新订单%d", order.OrderSeq)
content := sb.String()
// globals.SugarLogger.Debugf("notifyWxNewFakeJdOrder, orderID:%s, content:%s", order.VendorOrderID, content)
_, err = weixinmsg.SendStoreMessage(jxcontext.AdminCtx, title, content, []int{storeID}, true, true)
return err return err
} }

View File

@@ -46,9 +46,13 @@ func PrintOrder(ctx *jxcontext.Context, vendorOrderID string, vendorID int) (pri
} }
func PrintOrderByOrder(ctx *jxcontext.Context, order *model.GoodsOrder) (printResult *partner.PrinterStatus, err error) { func PrintOrderByOrder(ctx *jxcontext.Context, order *model.GoodsOrder) (printResult *partner.PrinterStatus, err error) {
globals.SugarLogger.Debugf("PrintOrderByOrder orderID:%s", order.VendorOrderID) return PrintOrderByOrder4Store(ctx, order, jxutils.GetSaleStoreIDFromOrder(order))
}
func PrintOrderByOrder4Store(ctx *jxcontext.Context, order *model.GoodsOrder, storeID int) (printResult *partner.PrinterStatus, err error) {
globals.SugarLogger.Debugf("PrintOrderByOrder4Store orderID:%s", order.VendorOrderID)
store := &model.Store{} store := &model.Store{}
store.ID = jxutils.GetSaleStoreIDFromOrder(order) store.ID = storeID
db := dao.GetDB() db := dao.GetDB()
if err = dao.GetEntity(db, store); err == nil { if err = dao.GetEntity(db, store); err == nil {
handler, err := GetHandlerFromStore(store) handler, err := GetHandlerFromStore(store)
@@ -63,7 +67,7 @@ func PrintOrderByOrder(ctx *jxcontext.Context, order *model.GoodsOrder) (printRe
} }
} }
if err != nil { if err != nil {
globals.SugarLogger.Infof("PrintOrderByOrder orderID:%s failed with error:%v", order.VendorOrderID, err) globals.SugarLogger.Infof("PrintOrderByOrder4Store orderID:%s failed with error:%v", order.VendorOrderID, err)
} }
return printResult, err return printResult, err
} }

View File

@@ -48,14 +48,14 @@ const (
WX_MTPS_DELIVERY_DONE_TEMPLATE_ID = "YXdCrQAHZlcZX1htYUiarrLmtkmKAjp7rynjwObgODo" //微信美团配送员配送完成推送 WX_MTPS_DELIVERY_DONE_TEMPLATE_ID = "YXdCrQAHZlcZX1htYUiarrLmtkmKAjp7rynjwObgODo" //微信美团配送员配送完成推送
WX_MTPS_UNABLE_DELIVER_TEMPLATE_ID = "ZFph5Hp7oLlrzVRXbsKIC_StmaBeB9Dlp4tlHeAmUQ8" //微信美团配送配送能力不足推送 WX_MTPS_UNABLE_DELIVER_TEMPLATE_ID = "ZFph5Hp7oLlrzVRXbsKIC_StmaBeB9Dlp4tlHeAmUQ8" //微信美团配送配送能力不足推送
WX_MTPS_DELIVERY_EXCEPTION_TEMPLATE_ID = "RkfOFHgR1N75L4-a6Gv0DljpCsVfOHhLm_vyXh8MR-w" //微信美团配送异常推送 WX_MTPS_DELIVERY_EXCEPTION_TEMPLATE_ID = "RkfOFHgR1N75L4-a6Gv0DljpCsVfOHhLm_vyXh8MR-w" //微信美团配送异常推送
WX_BAD_COMMENT_PUSH_TEMPLATE_ID = "NaMEzjctvVPQ9ishTI1dKpp5QSYV2FWcWftSSjDrpN8" //"zMZH5Ek0k1OHlWnsDb98UaHEOlkJZYok2QOJUfwfJWs" //微信差评消息推送 WX_BAD_COMMENT_PUSH_TEMPLATE_ID = "NaMEzjctvVPQ9ishTI1dKpp5QSYV2FWcWftSSjDrpN8" //微信差评消息推送
WX_DADA_DELIVERY_GRABDONE_TEMPLATE_ID = "h4dkON6AgnHz1XmaksEUB_8Bcir4V8MSexUhC149pPE" //微信达达众包配送员接单推送 WX_DADA_DELIVERY_GRABDONE_TEMPLATE_ID = "h4dkON6AgnHz1XmaksEUB_8Bcir4V8MSexUhC149pPE" //微信达达众包配送员接单推送
WX_DADA_DELIVERY_DONE_TEMPLATE_ID = "YXdCrQAHZlcZX1htYUiarrLmtkmKAjp7rynjwObgODo" //微信达达众包配送员配送完成推送 WX_DADA_DELIVERY_DONE_TEMPLATE_ID = "YXdCrQAHZlcZX1htYUiarrLmtkmKAjp7rynjwObgODo" //微信达达众包配送员配送完成推送
WX_SALE_BILL_TEMPLATE_ID = "eTUuFZMWH7IsVBfcxNMpmaHYaxRkUaD6zG8wSGJDcic" WX_SALE_BILL_TEMPLATE_ID = "eTUuFZMWH7IsVBfcxNMpmaHYaxRkUaD6zG8wSGJDcic"
WX_NORMAL_STORE_MSG_TEMPLATE_ID = "UlLvTMXDPIX9Ztyu3MMb84Zu-cCFo7trvQI8YRrAFjc" //"7ngcTFYiUFw66BMzIYntM1tpy-xZkJwlcCT5pVtXwtw" WX_NORMAL_STORE_MSG_TEMPLATE_ID = "EUeIJEz2TLUAn4TU2EffOGYLd3dEaYndD_y6Sw9FcSU"
// WX_CHANGE_APPROVED_TEMPLATE_ID = "gIG2olBZtQbjXmp6doNB_dESu60By5xuXYOGxksLv3Y" // WX_CHANGE_APPROVED_TEMPLATE_ID = "gIG2olBZtQbjXmp6doNB_dESu60By5xuXYOGxksLv3Y"
// WX_CHANGE_REJECTED_TEMPLATE_ID = "tn2QXWi4HtSIwaztmtN6Bb2uzNL-jBxWltCZTDNJuYE" // WX_CHANGE_REJECTED_TEMPLATE_ID = "tn2QXWi4HtSIwaztmtN6Bb2uzNL-jBxWltCZTDNJuYE"
WX_ORDER_APPLY_CANCEL_TEMPLATE_ID = "e6urTtcm4PL0rgDMG_1qWNOwrE3Qxqcm_dx0kWWCmEI" WX_ORDER_APPLY_CANCEL_TEMPLATE_ID = "e6urTtcm4PL0rgDMG_1qWNOwrE3Qxqcm_dx0kWWCmEI"

View File

@@ -160,12 +160,16 @@ func (c *PurchaseHandler) GetOrder(vendorOrgCode, orderID string) (order *model.
func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) { func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) {
order, err := getAPI(vendorOrgCode).QuerySingleOrder2(vendorOrderID) order, err := getAPI(vendorOrgCode).QuerySingleOrder2(vendorOrderID)
if err == nil { if err == nil {
status = p.getStatusFromVendorStatus(utils.Int2Str(order.OrderStatus)) status = getStatusFromVendorStatus(utils.Int2Str(order.OrderStatus))
} }
return status, err return status, err
} }
func (c *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) { func (c *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) {
return Map2Order(orderData)
}
func Map2Order(orderData map[string]interface{}) (order *model.GoodsOrder) {
result := orderData result := orderData
orderID := utils.Int64ToStr(utils.MustInterface2Int64(result["orderId"])) orderID := utils.Int64ToStr(utils.MustInterface2Int64(result["orderId"]))
globals.SugarLogger.Debugf("jd Map2Order orderID:%s", orderID) globals.SugarLogger.Debugf("jd Map2Order orderID:%s", orderID)
@@ -206,7 +210,7 @@ func (c *PurchaseHandler) Map2Order(orderData map[string]interface{}) (order *mo
order.InvoiceTaxerID = utils.Interface2String(orderInvoice["invoiceDutyNo"]) order.InvoiceTaxerID = utils.Interface2String(orderInvoice["invoiceDutyNo"])
order.InvoiceEmail = utils.Interface2String(orderInvoice["invoiceMail"]) order.InvoiceEmail = utils.Interface2String(orderInvoice["invoiceMail"])
} }
order.Status = c.getStatusFromVendorStatus(order.VendorStatus) order.Status = getStatusFromVendorStatus(order.VendorStatus)
businessTage := utils.Interface2String(result["businessTag"]) businessTage := utils.Interface2String(result["businessTag"])
if strings.Index(businessTage, "dj_aging_immediately") >= 0 { if strings.Index(businessTage, "dj_aging_immediately") >= 0 {
order.BusinessType = model.BusinessTypeImmediate order.BusinessType = model.BusinessTypeImmediate
@@ -303,7 +307,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *jdapi.CallbackOrderMsg) *model
if msg.MsgURL == jdapi.CallbackMsgOrderAddTips { if msg.MsgURL == jdapi.CallbackMsgOrderAddTips {
orderStatus.VendorStatus = jdapi.CallbackMsgOrderAddTips orderStatus.VendorStatus = jdapi.CallbackMsgOrderAddTips
} }
orderStatus.Status = c.getStatusFromVendorStatus(orderStatus.VendorStatus) orderStatus.Status = getStatusFromVendorStatus(orderStatus.VendorStatus)
return orderStatus return orderStatus
} }
@@ -322,7 +326,7 @@ func (c *PurchaseHandler) postFakeMsg(vendorOrgCode, vendorOrderID, vendorStatus
} }
// IPurchasePlatformHandler // IPurchasePlatformHandler
func (c *PurchaseHandler) getStatusFromVendorStatus(vendorStatus string) int { func getStatusFromVendorStatus(vendorStatus string) int {
if status, ok := VendorStatus2StatusMap[vendorStatus]; ok { if status, ok := VendorStatus2StatusMap[vendorStatus]; ok {
return status return status
} }