From 2ea4f3032682f7f9e3d498603da8d1e620036de5 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 5 Feb 2020 10:16:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=88=B0=E5=AE=B6=E8=AE=A2?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/fake_jd_order.go | 57 ++++++++++++------- business/jxutils/netprinter/netprinter.go | 10 +++- business/jxutils/weixinmsg/weixinmsg.go | 4 +- business/partner/purchase/jd/order.go | 12 ++-- 4 files changed, 53 insertions(+), 30 deletions(-) diff --git a/business/jxcallback/orderman/fake_jd_order.go b/business/jxcallback/orderman/fake_jd_order.go index 135b755cc..9863d4a46 100644 --- a/business/jxcallback/orderman/fake_jd_order.go +++ b/business/jxcallback/orderman/fake_jd_order.go @@ -4,27 +4,33 @@ import ( "fmt" "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/netprinter" "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/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/api" ) func (c *OrderManager) OnNewFakeJdOrder(vendorOrderID string) (err error) { - orderInfo, err := api.FakeJdAPI.FakeQuerySingleOrder(vendorOrderID) - if err == nil { - err = c.notifyNewFakeJdOrder(orderInfo) - } + utils.CallFuncAsync(func() { + orderInfo, err := api.FakeJdAPI.FakeQuerySingleOrderRaw(vendorOrderID) + if err == nil { + err = c.notifyNewFakeJdOrder(jd.Map2Order(orderInfo)) + } + if err != nil { + globals.SugarLogger.Warnf("OnNewFakeJdOrder failed with err:%v", err) + } + }) return err } -func (c *OrderManager) notifyNewFakeJdOrder(orderInfo *jdapi.OrderInfo) (err error) { - vendorStoreID := orderInfo.DeliveryStationNo +func (c *OrderManager) notifyNewFakeJdOrder(order *model.GoodsOrder) (err error) { db := dao.GetDB() - storeDetail, err := dao.GetStoreDetailByVendorStoreID(db, vendorStoreID, model.VendorIDJD) + storeDetail, err := dao.GetStoreDetailByVendorStoreID(db, order.VendorStoreID, model.VendorIDJD) if err != nil { return err } @@ -32,25 +38,34 @@ func (c *OrderManager) notifyNewFakeJdOrder(orderInfo *jdapi.OrderInfo) (err err if storeDetail.LinkStoreID != 0 { realStoreID = storeDetail.LinkStoreID } - notifyWxNewFakeJdOrder(orderInfo, realStoreID) + notifyWxNewFakeJdOrder(order, realStoreID) + netprinter.PrintOrderByOrder4Store(jxcontext.AdminCtx, order, realStoreID) return err } -func notifyWxNewFakeJdOrder(order *jdapi.OrderInfo, storeID int) (err error) { - globals.SugarLogger.Debugf("notifyWxNewFakeJdOrder orderID:%s", order.SrcOrderID) +func notifyWxNewFakeJdOrder(order *model.GoodsOrder, storeID int) (err error) { + globals.SugarLogger.Debugf("notifyWxNewFakeJdOrder orderID:%s", order.VendorOrderID) sb := new(strings.Builder) sb.WriteString("老板,你有新订单了\n") - sb.WriteString(fmt.Sprintf("订单号:%s\n", order.SrcOrderID)) - sb.WriteString(fmt.Sprintf("买家:%s\n", order.BuyerFullName)) - sb.WriteString(fmt.Sprintf("电话:%s\n", order.BuyerMobile)) - sb.WriteString(fmt.Sprintf("收货地址:%s\n", order.BuyerFullAddress)) - sb.WriteString("商品详情:\n") - for _, product := range order.Product { - sb.WriteString(fmt.Sprintf("\t%s*%d\n", product.SkuName, product.SkuCount)) + sb.WriteString(fmt.Sprintf("订单号:%s\n", order.VendorOrderID)) + sb.WriteString("送达时间:") + if order.BusinessType == model.BusinessTypeDingshida { + sb.WriteString(utils.Time2Str(order.ExpectedDeliveredTime)) + } else { + sb.WriteString("立即达") } - title := fmt.Sprintf("你有到家菜市新订单%d", order.OrderNum) - context := sb.String() - _, err = weixinmsg.SendStoreMessage(jxcontext.AdminCtx, title, context, []int{storeID}, true, true) + sb.WriteString("\n") + sb.WriteString(fmt.Sprintf("买家:%s\n", order.ConsigneeName)) + 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 } diff --git a/business/jxutils/netprinter/netprinter.go b/business/jxutils/netprinter/netprinter.go index 8e56bad09..84d8f85d0 100644 --- a/business/jxutils/netprinter/netprinter.go +++ b/business/jxutils/netprinter/netprinter.go @@ -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) { - 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.ID = jxutils.GetSaleStoreIDFromOrder(order) + store.ID = storeID db := dao.GetDB() if err = dao.GetEntity(db, store); err == nil { handler, err := GetHandlerFromStore(store) @@ -63,7 +67,7 @@ func PrintOrderByOrder(ctx *jxcontext.Context, order *model.GoodsOrder) (printRe } } 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 } diff --git a/business/jxutils/weixinmsg/weixinmsg.go b/business/jxutils/weixinmsg/weixinmsg.go index 5569ee077..003b9b309 100644 --- a/business/jxutils/weixinmsg/weixinmsg.go +++ b/business/jxutils/weixinmsg/weixinmsg.go @@ -48,14 +48,14 @@ const ( WX_MTPS_DELIVERY_DONE_TEMPLATE_ID = "YXdCrQAHZlcZX1htYUiarrLmtkmKAjp7rynjwObgODo" //微信美团配送员配送完成推送 WX_MTPS_UNABLE_DELIVER_TEMPLATE_ID = "ZFph5Hp7oLlrzVRXbsKIC_StmaBeB9Dlp4tlHeAmUQ8" //微信美团配送配送能力不足推送 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_DONE_TEMPLATE_ID = "YXdCrQAHZlcZX1htYUiarrLmtkmKAjp7rynjwObgODo" //微信达达众包配送员配送完成推送 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_REJECTED_TEMPLATE_ID = "tn2QXWi4HtSIwaztmtN6Bb2uzNL-jBxWltCZTDNJuYE" WX_ORDER_APPLY_CANCEL_TEMPLATE_ID = "e6urTtcm4PL0rgDMG_1qWNOwrE3Qxqcm_dx0kWWCmEI" diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index 8a3f50e81..6f4dcc2d2 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -160,12 +160,16 @@ func (c *PurchaseHandler) GetOrder(vendorOrgCode, orderID string) (order *model. func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) { order, err := getAPI(vendorOrgCode).QuerySingleOrder2(vendorOrderID) if err == nil { - status = p.getStatusFromVendorStatus(utils.Int2Str(order.OrderStatus)) + status = getStatusFromVendorStatus(utils.Int2Str(order.OrderStatus)) } return status, err } 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 orderID := utils.Int64ToStr(utils.MustInterface2Int64(result["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.InvoiceEmail = utils.Interface2String(orderInvoice["invoiceMail"]) } - order.Status = c.getStatusFromVendorStatus(order.VendorStatus) + order.Status = getStatusFromVendorStatus(order.VendorStatus) businessTage := utils.Interface2String(result["businessTag"]) if strings.Index(businessTage, "dj_aging_immediately") >= 0 { order.BusinessType = model.BusinessTypeImmediate @@ -303,7 +307,7 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *jdapi.CallbackOrderMsg) *model if msg.MsgURL == jdapi.CallbackMsgOrderAddTips { orderStatus.VendorStatus = jdapi.CallbackMsgOrderAddTips } - orderStatus.Status = c.getStatusFromVendorStatus(orderStatus.VendorStatus) + orderStatus.Status = getStatusFromVendorStatus(orderStatus.VendorStatus) return orderStatus } @@ -322,7 +326,7 @@ func (c *PurchaseHandler) postFakeMsg(vendorOrgCode, vendorOrderID, vendorStatus } // IPurchasePlatformHandler -func (c *PurchaseHandler) getStatusFromVendorStatus(vendorStatus string) int { +func getStatusFromVendorStatus(vendorStatus string) int { if status, ok := VendorStatus2StatusMap[vendorStatus]; ok { return status }