From 66bdac9c2ce5163a368d7094161bb94e247ad1b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 4 Jun 2020 15:15:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=EF=BC=8C=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8=E6=9A=82?= =?UTF-8?q?=E5=81=9C=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 9 +- business/jxstore/cms/store_sku.go | 1 + business/jxutils/jxutils.go | 34 ++++++++ business/partner/delivery/jdeclp/waybill.go | 82 +++++++++++++++++++ .../partner/delivery/jdeclp/waybill_test.go | 1 + 5 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 business/partner/delivery/jdeclp/waybill.go create mode 100644 business/partner/delivery/jdeclp/waybill_test.go diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 74d031328..689189091 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1043,12 +1043,19 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o StoreName: jdsOrder.StoreName, OrderCreatedAt: utils.Str2Time(jdsOrder.OrderCreateTime + ":00"), ConsigneeAddress: orderDetail.ConsigneeAddress, - ConsigneeMobile: orderDetail.ConsigneeMobile, ConsigneeName: orderDetail.ConsigneeName, ActualPayPrice: orderDetail.ActualPayPrice, Status: model.OrderStatusNew, TotalShopMoney: utils.Float64TwoInt64(math.Round(utils.Int64ToFloat64(orderDetail.ActualPayPrice) * jdshopapi.JdsPayPercentage)), } + //获取真实手机号 + fakeMobile, err := api.JdShopAPI.PhoneSensltiveInfo(order.VendorOrderID2, orderDetail.MobileKey) + if err != nil { + globals.SugarLogger.Debugf("jds PhoneSensltiveInfo error: %v", err.Error()) + continue + } else { + order.ConsigneeMobile = jxutils.DecryptDESECB([]byte(fakeMobile), []byte(jdshopapi.JdsMobileKey)) + } if order.TotalShopMoney < 100 { order.TotalShopMoney = 100 } diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index fcc75c0f0..58c271b01 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4479,6 +4479,7 @@ func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*StoreSkuBindInfo) (isAudit bool, err error) { globals.SugarLogger.Debugf("doStoreSkuAudit storeIDs: %v", storeIDs) + time.Sleep(time.Second / 5) db := dao.GetDB() for _, storeID := range storeIDs { for _, skuBindInfo := range skuBindInfos { diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index 723130186..945b0f832 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -3,6 +3,8 @@ package jxutils import ( "bytes" "context" + "crypto/aes" + "encoding/base64" "fmt" "io/ioutil" "math" @@ -882,3 +884,35 @@ func TranslateSoundSize(vendorID, soundPercentage int) (soundSize string) { } return soundSize } + +//ECB,AES模式解密 +//目前就京东商城订单手机号解密用 +func DecryptDESECB(d, key []byte) string { + data, err := base64.StdEncoding.DecodeString(string(d)) + if err != nil { + return "" + } + block, err := aes.NewCipher(key) + if err != nil { + return "" + } + bs := block.BlockSize() + if len(data)%bs != 0 { + return "" + } + out := make([]byte, len(data)) + dst := out + for len(data) > 0 { + block.Decrypt(dst, data[:bs]) + data = data[bs:] + dst = dst[bs:] + } + out = PKCS5UnPadding(out) + return string(out) +} + +func PKCS5UnPadding(origData []byte) []byte { + length := len(origData) + unpadding := int(origData[length-1]) + return origData[:(length - unpadding)] +} diff --git a/business/partner/delivery/jdeclp/waybill.go b/business/partner/delivery/jdeclp/waybill.go new file mode 100644 index 000000000..dabe83115 --- /dev/null +++ b/business/partner/delivery/jdeclp/waybill.go @@ -0,0 +1,82 @@ +package jdeclp + +import ( + "fmt" + + "git.rosy.net.cn/baseapi/platformapi/jdeclpapi" + "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + "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" + "git.rosy.net.cn/jx-callback/globals/api" +) + +var ( + CurDeliveryHandler *DeliveryHandler +) + +type DeliveryHandler struct { +} + +func init() { + CurDeliveryHandler = new(DeliveryHandler) + partner.RegisterDeliveryPlatform(CurDeliveryHandler, true) +} + +func (c *DeliveryHandler) GetVendorID() int { + return model.VendorIDJDWL +} + +func (c *DeliveryHandler) CreateStore(ctx *jxcontext.Context, storeDetail *dao.StoreDetail2) (vendorStoreID string, status int, err error) { + return vendorStoreID, status, err +} +func (c *DeliveryHandler) GetStore(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeDetail *dao.StoreDetail2, err error) { + return storeDetail, err +} +func (c *DeliveryHandler) IsErrStoreNotExist(err error) bool { + return false +} +func (c *DeliveryHandler) IsErrStoreExist(err error) bool { + return false +} +func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) { + storeID := jxutils.GetShowStoreIDFromOrder(order) + stores, err := dao.GetStoreList(dao.GetDB(), []int{storeID}, nil, nil, nil, "") + if len(stores) == 0 || err != nil { + return bill, fmt.Errorf("未查询到该门店! 门店id :[%v]", storeID) + } + _, err = api.JdEclpAPI.WaybillReceive(&jdeclpapi.WaybillReceiveParam{ + SalePlat: jdeclpapi.SalePlatSourceDelivery, + CustomerCode: jdeclpapi.CustomerCode, + OrderID: order.VendorOrderID, + SenderName: order.StoreName, + SenderAddress: stores[0].Address, + SenderTel: stores[0].Tel1, + ReceiveName: order.ConsigneeName, + ReceiveAddress: order.ConsigneeAddress, + ReceiveTel: order.ConsigneeMobile, + Weight: order.Weight, + Vloumn: order.Weight, + PackageCount: 1, + Description: "生鲜", + }) + // partner.CurOrderManager.OnWaybillStatusChanged(order) + return bill, err +} +func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) { + err = api.JdEclpAPI.CancelWayBill(&jdeclpapi.CancelWayBillParam{ + WaybillCode: bill.VendorWaybillID, + CustomerCode: jdeclpapi.CustomerCode, + Source: "JOS", + CancelReason: cancelReason, + OperatorName: "jxadmin", + }) + return err +} +func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *partner.WaybillFeeInfo, err error) { + return deliveryFeeInfo, err +} +func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) { + return err +} diff --git a/business/partner/delivery/jdeclp/waybill_test.go b/business/partner/delivery/jdeclp/waybill_test.go new file mode 100644 index 000000000..a8b1b4a51 --- /dev/null +++ b/business/partner/delivery/jdeclp/waybill_test.go @@ -0,0 +1 @@ +package jdeclp