京东eclp物流对接

This commit is contained in:
苏尹岚
2020-03-05 16:51:20 +08:00
parent 0812d243aa
commit 2cdaf741db
5 changed files with 88 additions and 5 deletions

View File

@@ -103,6 +103,7 @@ type GoodsOrder struct {
InvoiceTaxerID string `orm:"size(32);column(invoice_taxer_id)" json:"invoiceTaxerID"` // 发票纳税人识别码
InvoiceEmail string `orm:"size(64)" json:"invoiceEmail"` // 发票邮箱
VendorOrgCode string `orm:"size(64)" json:"vendorOrgCode"` // 同一平台下不同的商户代码,如果只有一个,可以为空
FromStoreID int `orm:"column(from_store_id)" json:"fromStoreID"` //物料配送门店
// 以下只是用于传递数据
OriginalData string `orm:"-" json:"-"`

View File

@@ -157,8 +157,8 @@ func GetMyOrderCountInfo(ctx *jxcontext.Context, fromDate, toDate time.Time, sta
return countInfo, err
}
func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, createType int) (outJxOrder *JxOrderInfo, err error) {
outJxOrder, deliveryAddress, err := generateOrder(ctx, jxOrder, addressID)
func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, createType int, fromStoreID int) (outJxOrder *JxOrderInfo, err error) {
outJxOrder, deliveryAddress, err := generateOrder(ctx, jxOrder, addressID, fromStoreID)
if err != nil {
return nil, err
}
@@ -360,7 +360,7 @@ func isTimeInOpTime(openTime1, closeTime1, openTime2, closeTime2 int16, time2Che
return false
}
func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64) (outJxOrder *JxOrderInfo, deliveryAddress *dao.UserDeliveryAddressEx, err error) {
func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, fromStoreID int) (outJxOrder *JxOrderInfo, deliveryAddress *dao.UserDeliveryAddressEx, err error) {
db := dao.GetDB()
if jxOrder.StoreID == 0 {
return nil, nil, fmt.Errorf("没有指定门店信息")
@@ -381,6 +381,14 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
if distance := jxutils.Point2StoreDistance(deliveryAddress.Lng, deliveryAddress.Lat, storeDetail.Lng, storeDetail.Lat, storeDetail.DeliveryRangeType, storeDetail.DeliveryRange); distance == 0 {
return nil, nil, fmt.Errorf("当前送货地址不在门店%s的配送范围", storeDetail.Name)
}
//表示此订单为物料配送订单
if fromStoreID != 0 {
storeDetail2, err2 := dao.GetStoreDetail(db, fromStoreID, model.VendorIDJX)
if err = err2; err != nil {
return nil, nil, fmt.Errorf("fromStoreID有误,[%v]", fromStoreID)
}
deliveryAddress.ConsigneeName = storeDetail2.Name
}
// 营业状态及时间检查
if storeDetail.Status != model.StoreStatusOpened { // model.StoreStatusDisabled {
@@ -571,7 +579,68 @@ func AdjustOrder(ctx *jxcontext.Context, order *model.GoodsOrder, removedSkuList
}
func PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) {
return changeOrderStatus(order.VendorOrderID, model.OrderStatusFinishedPickup, "")
err = changeOrderStatus(order.VendorOrderID, model.OrderStatusFinishedPickup, "")
err = orderSolutionForWuLiao(order)
return err
}
func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) {
if order.FromStoreID != 0 {
// var (
// goodsNos []string
// prices []int
// quantities []int
// db = dao.GetDB()
// )
err = changeOrderStatus(order.VendorOrderID, model.OrderStatusDelivering, "")
// goods, err := dao.QueryOrders(db, order.VendorOrderID, -1, []int{model.VendorIDJX}, -1, utils.ZeroTimeValue, utils.ZeroTimeValue)
// if err != nil || len(goods) == 0 {
// return err
// }
// for _, v := range goods[0].Skus {
// skus, err := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil)
// if err != nil || len(skus) == 0 {
// continue
// }
// goodsNos = append(goodsNos, skus[0].EclpID)
// prices = append(prices, 0)
// quantities = append(quantities, v.Count)
// }
// result, err := api.JdEclpAPI.AddOrder(&jdeclpapi.AddOrderParam{
// IsvUUID: order.VendorOrderID,
// IsvSource: jdeclpapi.IsvSource,
// ShopNo: jdeclpapi.ShopNo,
// DepartmentNo: jdeclpapi.DepartmentNo,
// WarehouseNo: jdeclpapi.WarehouseNo,
// SalesPlatformOrderNo: order.VendorOrderID,
// SalePlatformSource: "",
// ConsigneeName: order.ConsigneeName,
// ConsigneeMobile: order.ConsigneeMobile,
// ConsigneeAddress: order.ConsigneeAddress,
// OrderMark: jdeclpapi.OrderMark,
// GoodsNo: goodsNos,
// Price: prices,
// Quantity: quantities,
// })
// if err != nil {
// return err
// }
// wayBill := &model.Waybill{
// VendorOrderID: order.VendorOrderID,
// OrderVendorID: model.VendorIDJX,
// VendorWaybillID: result.EclpSoNo,
// WaybillVendorID: model.VendorIDJD,
// CourierName: "京东物流",
// CourierMobile: "",
// Status: model.WaybillStatusNew,
// VendorStatus: utils.Int2Str(model.WaybillStatusDelivering),
// WaybillCreatedAt: utils.DefaultTimeValue,
// WaybillFinishedAt: utils.DefaultTimeValue,
// StatusTime: time.Now(),
// }
// dao.CreateEntity(db, wayBill)
}
return err
}
func SelfDeliverDelivering(order *model.GoodsOrder, userName string) (err error) {

View File

@@ -170,6 +170,10 @@ jd2Token = "29e0e567-c475-433a-aff0-37176ee8d8a7"
jd2AppKey = "7fb947624ff847ae94ff2f068cc99652"
jd2Secret = "1097abd7ef09427099b4922784af123a"
jdEclpAccessToken = ""
jdEclpAppKey = ""
jdEclpAppSecret = ""
elmIsProd = true
elmToken = ""
elmAppKey = "KLRDcOZGrk"

View File

@@ -16,6 +16,7 @@ type JxOrderController struct {
// @Param token header string true "认证token"
// @Param jxOrder formData string true "订单信息"
// @Param addressID formData int64 true "配送地址ID"
// @Param fromStoreID formData int fasle "物料配送门店"
// @Param createType formData int false "创建类型, 0:预创建, 1:创建"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
@@ -24,7 +25,7 @@ func (c *JxOrderController) CreateOrder() {
c.callCreateOrder(func(params *tJxorderCreateOrderParams) (retVal interface{}, errCode string, err error) {
var jxOrder *localjx.JxOrderInfo
if err = utils.UnmarshalUseNumber([]byte(params.JxOrder), &jxOrder); err == nil {
retVal, err = localjx.CreateOrder(params.Ctx, jxOrder, int64(params.AddressID), params.CreateType)
retVal, err = localjx.CreateOrder(params.Ctx, jxOrder, int64(params.AddressID), params.CreateType, params.FromStoreID)
}
return retVal, "", err
})

View File

@@ -3,6 +3,8 @@ package api
import (
"time"
"git.rosy.net.cn/baseapi/platformapi/jdeclpapi"
"git.rosy.net.cn/baseapi/platformapi/tonglianpayapi"
aliyunsmsclient "github.com/KenmyZhang/aliyun-communicate"
@@ -40,6 +42,7 @@ var (
Jd2API *jdapi.API
FakeJdAPI *jdapi.API
JdEclpAPI *jdeclpapi.API
ElmAPI *elmapi.API
EbaiAPI *ebaiapi.API
@@ -104,6 +107,11 @@ func Init() {
} else {
JdAPI = nil
}
if !beego.AppConfig.DefaultBool("disableJdEclp", false) {
JdEclpAPI = jdeclpapi.New(beego.AppConfig.String("jdEclpAccessToken"), beego.AppConfig.String("jdEclpAppKey"), beego.AppConfig.String("jdEclpAppSecret"))
} else {
JdEclpAPI = nil
}
if !beego.AppConfig.DefaultBool("disableElm", false) {
ElmAPI = elmapi.New(beego.AppConfig.DefaultString("elmToken", ""), beego.AppConfig.String("elmAppKey"), beego.AppConfig.String("elmSecret"), beego.AppConfig.DefaultBool("elmIsProd", false))
} else {