新增京西商城自提单

This commit is contained in:
苏尹岚
2020-04-20 16:25:15 +08:00
parent 236ea9dd15
commit 63c2c6326b
3 changed files with 17 additions and 12 deletions

View File

@@ -1211,7 +1211,7 @@ func refreshStoreSkuPrice(ctx *jxcontext.Context, db *dao.DaoDB, skuID int) (err
} }
} }
}() }()
dao.UpdateEntity(db, storeSku, "Price", "JdSyncStatus", "MtwmSyncStatus", "EbaiSyncStatus", "JxPrice") dao.UpdateEntity(db, storeSku, "Price", "JdSyncStatus", "MtwmSyncStatus", "EbaiSyncStatus", "JxPrice", "LastOperator")
dao.Commit(db) dao.Commit(db)
return retVal, err return retVal, err
}, list) }, list)

View File

@@ -194,8 +194,8 @@ func GetMyOrderCountInfo(ctx *jxcontext.Context, fromDate, toDate time.Time, sta
return countInfo, err return countInfo, err
} }
func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, createType int, fromStoreID int) (outJxOrder *JxOrderInfo, err error) { func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, createType int, fromStoreID int, IsDeliverySelf bool) (outJxOrder *JxOrderInfo, err error) {
outJxOrder, deliveryAddress, err := generateOrder(ctx, jxOrder, addressID, fromStoreID, "") outJxOrder, deliveryAddress, err := generateOrder(ctx, jxOrder, addressID, fromStoreID, "", IsDeliverySelf)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -207,7 +207,7 @@ func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64,
return nil, fmt.Errorf("商品或配送信息发生改变,请重新下单") return nil, fmt.Errorf("商品或配送信息发生改变,请重新下单")
} }
outJxOrder.OrderID = GenOrderNo(ctx) outJxOrder.OrderID = GenOrderNo(ctx)
order, err2 := jxOrder2GoodsOrder(ctx, outJxOrder, deliveryAddress, "") order, err2 := jxOrder2GoodsOrder(ctx, outJxOrder, deliveryAddress, "", IsDeliverySelf)
if err = err2; err == nil { if err = err2; err == nil {
order.AddressID = addressID order.AddressID = addressID
order.Status = model.OrderStatusWait4Pay order.Status = model.OrderStatusWait4Pay
@@ -407,7 +407,7 @@ func isTimeInOpTime(openTime1, closeTime1, openTime2, closeTime2 int16, time2Che
return false return false
} }
func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, fromStoreID int, userID string) (outJxOrder *JxOrderInfo, deliveryAddress *dao.UserDeliveryAddressEx, err error) { func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, fromStoreID int, userID string, IsDeliverySelf bool) (outJxOrder *JxOrderInfo, deliveryAddress *dao.UserDeliveryAddressEx, err error) {
db := dao.GetDB() db := dao.GetDB()
if jxOrder.StoreID == 0 { if jxOrder.StoreID == 0 {
return nil, nil, fmt.Errorf("没有指定门店信息") return nil, nil, fmt.Errorf("没有指定门店信息")
@@ -683,7 +683,7 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
} }
if outJxOrder.OrderPrice >= int64(storeDetail.DeliveryFeeDeductionSill) { if outJxOrder.OrderPrice >= int64(storeDetail.DeliveryFeeDeductionSill) {
outJxOrder.FreightPrice -= int64(storeDetail.DeliveryFeeDeductionFee) outJxOrder.FreightPrice -= int64(storeDetail.DeliveryFeeDeductionFee)
if outJxOrder.FreightPrice < 0 { if outJxOrder.FreightPrice < 0 || IsDeliverySelf {
outJxOrder.FreightPrice = 0 outJxOrder.FreightPrice = 0
} }
} }
@@ -732,7 +732,7 @@ func matterSkusLimited(skus []*JxSkuInfo, storeID int) (err error) {
return err return err
} }
func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAddress *dao.UserDeliveryAddressEx, userID string) (order *model.GoodsOrder, err error) { func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAddress *dao.UserDeliveryAddressEx, userID string, IsDeliverySelf bool) (order *model.GoodsOrder, err error) {
order = &model.GoodsOrder{ order = &model.GoodsOrder{
VendorOrderID: utils.Int64ToStr(jxOrder.OrderID), VendorOrderID: utils.Int64ToStr(jxOrder.OrderID),
VendorID: model.VendorIDJX, VendorID: model.VendorIDJX,
@@ -791,6 +791,10 @@ func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAd
order.ConsigneeAddress = deliveryAddress.Address order.ConsigneeAddress = deliveryAddress.Address
order.Flag = 1 order.Flag = 1
} }
//如果是自提单就设置
if IsDeliverySelf {
order.DeliveryType = model.OrderDeliveryTypeSelfTake
}
return order, err return order, err
} }
@@ -880,14 +884,14 @@ func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) {
outOrders, _, _ := tryToSplitMatterOrder(buildJxOrderInfo(order, orderSkus)) outOrders, _, _ := tryToSplitMatterOrder(buildJxOrderInfo(order, orderSkus))
//以下为仿照CreateOrder改了一些参数 //以下为仿照CreateOrder改了一些参数
for k, v := range outOrders { for k, v := range outOrders {
outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID, order.UserID) outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, v, order.AddressID, order.FromStoreID, order.UserID, false)
if err != nil { if err != nil {
return err return err
} }
//分包后的子订单ID默认是后面加两位目前的规则要改的话要注意取消订单那的判断 //分包后的子订单ID默认是后面加两位目前的规则要改的话要注意取消订单那的判断
outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1) outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + int64(k+1)
checkMatterDeliveryAddress(deliveryAddress) checkMatterDeliveryAddress(deliveryAddress)
order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress, order.UserID) order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress, order.UserID, false)
if err = err2; err == nil { if err = err2; err == nil {
order2.AddressID = order.AddressID order2.AddressID = order.AddressID
order2.Status = model.OrderStatusDelivering order2.Status = model.OrderStatusDelivering
@@ -1635,13 +1639,13 @@ func SendFailedMatterOrder(ctx *jxcontext.Context, vendorOrderID string) (err er
} }
func createMatterOrder(jxOrder *JxOrderInfo, order *model.GoodsOrder, newOrderIDSuffix int64) (order2 *model.GoodsOrder, err error) { func createMatterOrder(jxOrder *JxOrderInfo, order *model.GoodsOrder, newOrderIDSuffix int64) (order2 *model.GoodsOrder, err error) {
outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, jxOrder, order.AddressID, order.FromStoreID, order.UserID) outJxOrder, deliveryAddress, err := generateOrder(jxcontext.AdminCtx, jxOrder, order.AddressID, order.FromStoreID, order.UserID, false)
if err != nil { if err != nil {
return nil, err return nil, err
} }
outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + newOrderIDSuffix outJxOrder.OrderID = utils.Str2Int64(order.VendorOrderID)*100 + newOrderIDSuffix
checkMatterDeliveryAddress(deliveryAddress) checkMatterDeliveryAddress(deliveryAddress)
order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress, order.UserID) order2, err2 := jxOrder2GoodsOrder(jxcontext.AdminCtx, outJxOrder, deliveryAddress, order.UserID, false)
if err = err2; err == nil { if err = err2; err == nil {
order2.AddressID = order.AddressID order2.AddressID = order.AddressID
order2.Status = model.OrderStatusDelivering order2.Status = model.OrderStatusDelivering

View File

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