fnps
This commit is contained in:
116
business/partner/delivery/fn/waybill.go
Normal file
116
business/partner/delivery/fn/waybill.go
Normal file
@@ -0,0 +1,116 @@
|
||||
package fn
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/partner/delivery"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/fnpsapi"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
)
|
||||
|
||||
var (
|
||||
curDeliveryHandler *DeliveryHandler
|
||||
)
|
||||
|
||||
type DeliveryHandler struct {
|
||||
}
|
||||
|
||||
func init() {
|
||||
if api.FnAPI != nil {
|
||||
curDeliveryHandler = new(DeliveryHandler)
|
||||
partner.RegisterDeliveryPlatform(curDeliveryHandler, true)
|
||||
}
|
||||
}
|
||||
|
||||
func (c *DeliveryHandler) GetVendorID() int {
|
||||
return model.VendorIDFengNiao
|
||||
}
|
||||
|
||||
func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) {
|
||||
err = api.FnAPI.CancelOrder(&fnpsapi.CancelOrderParam{
|
||||
PartnerOrderCode: bill.VendorOrderID,
|
||||
OrderCancelReasonCode: 1, //用户取消
|
||||
OrderCancelCode: fnpsapi.OrderCancelReson8,
|
||||
OrderCancelTime: time.Now().UnixNano() / 1e6,
|
||||
})
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) {
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
)
|
||||
storeDetail, err := dao.GetStoreDetail(db, order.StoreID, order.VendorID, order.VendorOrgCode)
|
||||
deliveryFee, _, err := delivery.CalculateOrderDeliveryFee(order, time.Now(), db)
|
||||
if err == nil {
|
||||
if err = delivery.CallCreateWaybillPolicy(deliveryFee, maxDeliveryFee, order, model.VendorIDFengNiao); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
params := &fnpsapi.CreateOrderParam{
|
||||
PartnerOrderCode: order.VendorOrderID,
|
||||
NotifyURL: globals.FnNotifyURL,
|
||||
ChainStoreCode: order.VendorStoreID,
|
||||
OrderType: 1, //即时达
|
||||
TransportInfo: &fnpsapi.TransportInfo{
|
||||
TransportName: order.StoreName,
|
||||
TransportAddress: storeDetail.Address,
|
||||
TransportLongitude: jxutils.IntCoordinate2Standard(storeDetail.Lng),
|
||||
TransportLatitude: jxutils.IntCoordinate2Standard(storeDetail.Lat),
|
||||
PositionSource: 3,
|
||||
TransportTel: storeDetail.Tel1,
|
||||
},
|
||||
OrderAddTime: order.OrderCreatedAt.UnixNano() / 1e6,
|
||||
OrderTotalAmount: jxutils.IntPrice2Standard(order.SalePrice),
|
||||
OrderActualAmount: jxutils.IntPrice2Standard(order.ActualPayPrice),
|
||||
OrderWeight: float64(jxutils.IntWeight2Float(order.Weight)),
|
||||
OrderRemark: utils.FilterMb4("客户电话:" + order.ConsigneeMobile + "," + order.BuyerComment + ",取货失败或配送遇到问题请联系18048531223,禁止未配送直接完成定单!"),
|
||||
IsInvoiced: 0,
|
||||
OrderPaymentStatus: 1,
|
||||
OrderPaymentMethod: 1,
|
||||
IsAgentPayment: 0,
|
||||
GoodsCount: order.GoodsCount,
|
||||
ReceiverInfo: &fnpsapi.ReceiverInfo{
|
||||
ReceiverName: order.ConsigneeName,
|
||||
ReceiverAddress: order.ConsigneeAddress,
|
||||
ReceiverLongitude: jxutils.IntCoordinate2Standard(order.ConsigneeLng),
|
||||
ReceiverLatitude: jxutils.IntCoordinate2Standard(order.ConsigneeLat),
|
||||
ReceiverPrimaryPhone: order.ConsigneeMobile,
|
||||
ReceiverSecondPhone: order.ConsigneeMobile2,
|
||||
PositionSource: 3,
|
||||
},
|
||||
SerialNumber: model.VendorNames[order.VendorID] + " #" + utils.Int2Str(order.OrderSeq),
|
||||
}
|
||||
var skuInfo []*fnpsapi.ItemsJSON
|
||||
for _, v := range order.Skus {
|
||||
skuInfo = append(skuInfo, &fnpsapi.ItemsJSON{
|
||||
ItemID: utils.Int2Str(v.SkuID),
|
||||
ItemName: v.SkuName,
|
||||
ItemQuantity: v.Count,
|
||||
ItemPrice: jxutils.IntPrice2Standard(v.SalePrice),
|
||||
ItemActualPrice: jxutils.IntPrice2Standard(v.SalePrice),
|
||||
})
|
||||
}
|
||||
err = api.FnAPI.CreateOrder(params)
|
||||
}
|
||||
return bill, err
|
||||
}
|
||||
|
||||
func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *partner.WaybillFeeInfo, err error) {
|
||||
|
||||
return deliveryFeeInfo, err
|
||||
}
|
||||
Reference in New Issue
Block a user