diff --git a/business/model/order.go b/business/model/order.go index bf5d6153b..bbe63abbe 100644 --- a/business/model/order.go +++ b/business/model/order.go @@ -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:"-"` diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index b6ceaf343..b70f8a3da 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -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) { diff --git a/conf/app.conf b/conf/app.conf index a75502f72..73f03045f 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -170,6 +170,10 @@ jd2Token = "29e0e567-c475-433a-aff0-37176ee8d8a7" jd2AppKey = "7fb947624ff847ae94ff2f068cc99652" jd2Secret = "1097abd7ef09427099b4922784af123a" +jdEclpAccessToken = "" +jdEclpAppKey = "" +jdEclpAppSecret = "" + elmIsProd = true elmToken = "" elmAppKey = "KLRDcOZGrk" diff --git a/controllers/jx_order2.go b/controllers/jx_order2.go index 639ad78b8..a60e875dd 100644 --- a/controllers/jx_order2.go +++ b/controllers/jx_order2.go @@ -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 }) diff --git a/globals/api/api.go b/globals/api/api.go index c1a4c1bbe..1e1fa6cbd 100644 --- a/globals/api/api.go +++ b/globals/api/api.go @@ -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 {