京东eclp物流对接
This commit is contained in:
@@ -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:"-"`
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -170,6 +170,10 @@ jd2Token = "29e0e567-c475-433a-aff0-37176ee8d8a7"
|
||||
jd2AppKey = "7fb947624ff847ae94ff2f068cc99652"
|
||||
jd2Secret = "1097abd7ef09427099b4922784af123a"
|
||||
|
||||
jdEclpAccessToken = ""
|
||||
jdEclpAppKey = ""
|
||||
jdEclpAppSecret = ""
|
||||
|
||||
elmIsProd = true
|
||||
elmToken = ""
|
||||
elmAppKey = "KLRDcOZGrk"
|
||||
|
||||
@@ -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
|
||||
})
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user