物料订单增加配送员等
This commit is contained in:
@@ -1179,23 +1179,8 @@ func GetMatterStoreOrderCount(ctx *jxcontext.Context, storeID int) (result *Orde
|
|||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
orderPays []*model.OrderPay
|
orderPays []*model.OrderPay
|
||||||
orderCount = &OrderCount{}
|
orderCount = &OrderCount{}
|
||||||
|
orderTime time.Time
|
||||||
)
|
)
|
||||||
sql2 := `
|
|
||||||
SELECT COUNT(*) count
|
|
||||||
FROM goods_order
|
|
||||||
WHERE IF(store_id = 0,jx_store_id,store_id) = ?
|
|
||||||
AND order_created_at <= NOW() AND order_created_at >= ?
|
|
||||||
AND status = ?
|
|
||||||
`
|
|
||||||
sqlParams2 := []interface{}{
|
|
||||||
storeID,
|
|
||||||
time.Now().AddDate(0, 0, -7),
|
|
||||||
model.OrderStatusFinished,
|
|
||||||
}
|
|
||||||
err = dao.GetRow(db, &orderCount, sql2, sqlParams2)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
sql := `
|
sql := `
|
||||||
SELECT b.*
|
SELECT b.*
|
||||||
FROM goods_order a
|
FROM goods_order a
|
||||||
@@ -1215,8 +1200,27 @@ func GetMatterStoreOrderCount(ctx *jxcontext.Context, storeID int) (result *Orde
|
|||||||
} else {
|
} else {
|
||||||
orderCount.Flag = true
|
orderCount.Flag = true
|
||||||
}
|
}
|
||||||
|
orderTime = *orderPay.PayFinishedAt
|
||||||
} else {
|
} else {
|
||||||
|
orderTime = time.Now().AddDate(0, 0, -7)
|
||||||
orderCount.Flag = true
|
orderCount.Flag = true
|
||||||
}
|
}
|
||||||
|
sql2 := `
|
||||||
|
SELECT COUNT(*) count
|
||||||
|
FROM goods_order
|
||||||
|
WHERE IF(store_id = 0,jx_store_id,store_id) = ?
|
||||||
|
AND order_created_at <= NOW() AND order_created_at >= ?
|
||||||
|
AND status = ?
|
||||||
|
`
|
||||||
|
sqlParams2 := []interface{}{
|
||||||
|
storeID,
|
||||||
|
orderTime,
|
||||||
|
model.OrderStatusFinished,
|
||||||
|
}
|
||||||
|
err = dao.GetRow(db, &orderCount, sql2, sqlParams2)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
return orderCount, err
|
return orderCount, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"crypto/md5"
|
"crypto/md5"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
|
"regexp"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@@ -132,6 +133,8 @@ var (
|
|||||||
6039387: 200,
|
6039387: 200,
|
||||||
6039390: 200,
|
6039390: 200,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
regexpCnameAndCmobile = regexp.MustCompile(`配送员,(.*),手机号,(.*)`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@@ -224,7 +227,7 @@ func Pay4Order(ctx *jxcontext.Context, orderID int64, payType int, vendorPayType
|
|||||||
err = dao.CreateEntity(dao.GetDB(), orderPay)
|
err = dao.CreateEntity(dao.GetDB(), orderPay)
|
||||||
}
|
}
|
||||||
case model.PayTypeTL:
|
case model.PayTypeTL:
|
||||||
if orderPay, err = pay4OrderByTL(ctx, order, vendorPayType); err == nil {
|
if orderPay, err = pay4OrderByTL(ctx, order, vendorPayType); err == nil && orderPay != nil {
|
||||||
dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName())
|
dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName())
|
||||||
err = dao.CreateEntity(dao.GetDB(), orderPay)
|
err = dao.CreateEntity(dao.GetDB(), orderPay)
|
||||||
}
|
}
|
||||||
@@ -607,11 +610,19 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
|
|||||||
}
|
}
|
||||||
deliveryAddress.ConsigneeName = storeDetail2.Name
|
deliveryAddress.ConsigneeName = storeDetail2.Name
|
||||||
outJxOrder.FromStoreID = fromStoreID
|
outJxOrder.FromStoreID = fromStoreID
|
||||||
|
// if outJxOrder.Weight > 5000 {
|
||||||
|
// _, freightPrice, err := tryToSplitMatterOrder(outJxOrder)
|
||||||
|
// if err != nil {
|
||||||
|
// return nil, nil, err
|
||||||
|
// }
|
||||||
|
// outJxOrder.FreightPrice = int64(freightPrice)
|
||||||
|
// } else {
|
||||||
if outJxOrder.Weight <= 2000 {
|
if outJxOrder.Weight <= 2000 {
|
||||||
outJxOrder.FreightPrice = 500
|
outJxOrder.FreightPrice = 500
|
||||||
} else {
|
} else {
|
||||||
outJxOrder.FreightPrice = utils.Float64TwoInt64(500 + math.Ceil((utils.Int2Float64(outJxOrder.Weight)-2000)/1000)*200)
|
outJxOrder.FreightPrice = utils.Float64TwoInt64(500 + math.Ceil((utils.Int2Float64(outJxOrder.Weight)-2000)/1000)*200)
|
||||||
}
|
}
|
||||||
|
// }
|
||||||
} else {
|
} else {
|
||||||
if outJxOrder.FreightPrice > specialFreightPrice {
|
if outJxOrder.FreightPrice > specialFreightPrice {
|
||||||
outJxOrder.FreightPrice = specialFreightPrice
|
outJxOrder.FreightPrice = specialFreightPrice
|
||||||
@@ -633,6 +644,27 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
|
|||||||
return outJxOrder, deliveryAddress, err
|
return outJxOrder, deliveryAddress, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func tryToSplitMatterOrder(jxOrder *JxOrderInfo) (outOrder []*JxOrderInfo, freightPrice int, err error) {
|
||||||
|
var (
|
||||||
|
skus = jxOrder.Skus
|
||||||
|
weightList []int
|
||||||
|
weightMap = make(map[int]*JxSkuInfo)
|
||||||
|
)
|
||||||
|
for _, v := range skus {
|
||||||
|
for i := 0; i < v.Count; i++ {
|
||||||
|
weightList = append(weightList, v.Weight)
|
||||||
|
}
|
||||||
|
weightMap[v.Weight] = v
|
||||||
|
}
|
||||||
|
sort.Sort(sort.Reverse(sort.IntSlice(weightList)))
|
||||||
|
for _, v := range weightList {
|
||||||
|
if weightMap[v] != nil {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return outOrder, freightPrice, err
|
||||||
|
}
|
||||||
|
|
||||||
func matterSkusLimited(skus []*JxSkuInfo, storeID int) (err error) {
|
func matterSkusLimited(skus []*JxSkuInfo, storeID int) (err error) {
|
||||||
result, err := orderman.GetMatterStoreOrderCount(nil, storeID)
|
result, err := orderman.GetMatterStoreOrderCount(nil, storeID)
|
||||||
sum := 0
|
sum := 0
|
||||||
@@ -750,46 +782,56 @@ func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
orderSkus := goods[0].Skus
|
orderSkus := goods[0].Skus
|
||||||
if order.Weight <= 5000 { //如果总重量小于5kg就直接发单
|
// if order.Weight <= 5000 { //如果总重量小于5kg就直接发单
|
||||||
var (
|
var (
|
||||||
goodsNos []string
|
goodsNos []string
|
||||||
prices []string
|
prices []string
|
||||||
quantities []string
|
quantities []string
|
||||||
)
|
)
|
||||||
err = changeOrderStatus(order.VendorOrderID, model.OrderStatusDelivering, "")
|
err = changeOrderStatus(order.VendorOrderID, model.OrderStatusDelivering, "")
|
||||||
for _, v := range orderSkus {
|
for _, v := range orderSkus {
|
||||||
skus, err := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil)
|
skus, err := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil)
|
||||||
if err != nil || len(skus) == 0 {
|
if err != nil || len(skus) == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
|
||||||
goodsNos = append(goodsNos, skus[0].EclpID)
|
|
||||||
prices = append(prices, "0")
|
|
||||||
quantities = append(quantities, utils.Int2Str(v.Count))
|
|
||||||
}
|
}
|
||||||
result, err := api.JdEclpAPI.AddOrder(&jdeclpapi.AddOrderParam{
|
goodsNos = append(goodsNos, skus[0].EclpID)
|
||||||
IsvUUID: order.VendorOrderID,
|
prices = append(prices, "0")
|
||||||
IsvSource: jdeclpapi.IsvSource,
|
quantities = append(quantities, utils.Int2Str(v.Count))
|
||||||
ShopNo: jdeclpapi.ShopNo,
|
|
||||||
DepartmentNo: jdeclpapi.DepartmentNo,
|
|
||||||
WarehouseNo: jdeclpapi.WarehouseNo,
|
|
||||||
SalesPlatformOrderNo: order.VendorOrderID,
|
|
||||||
SalePlatformSource: jdeclpapi.SalePlatformSource,
|
|
||||||
ConsigneeName: order.ConsigneeName,
|
|
||||||
ConsigneeMobile: order.ConsigneeMobile,
|
|
||||||
ConsigneeAddress: order.ConsigneeAddress,
|
|
||||||
OrderMark: jdeclpapi.OrderMark,
|
|
||||||
GoodsNo: strings.Join(goodsNos, ","),
|
|
||||||
Price: strings.Join(prices, ","),
|
|
||||||
Quantity: strings.Join(quantities, ","),
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
order.EclpOutID = result
|
|
||||||
dao.UpdateEntity(db, order, "EclpOutID")
|
|
||||||
} else { //如果重量超过5kg则需要进行拆单分包,商品分包规则。最后一个包不超过5kg,其他包不超过3kg
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
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: jdeclpapi.SalePlatformSource,
|
||||||
|
ConsigneeName: order.ConsigneeName,
|
||||||
|
ConsigneeMobile: order.ConsigneeMobile,
|
||||||
|
ConsigneeAddress: order.ConsigneeAddress,
|
||||||
|
OrderMark: jdeclpapi.OrderMark,
|
||||||
|
GoodsNo: strings.Join(goodsNos, ","),
|
||||||
|
Price: strings.Join(prices, ","),
|
||||||
|
Quantity: strings.Join(quantities, ","),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
order.EclpOutID = result
|
||||||
|
dao.UpdateEntity(db, order, "EclpOutID")
|
||||||
|
waybill := &model.Waybill{
|
||||||
|
VendorOrderID: order.VendorOrderID,
|
||||||
|
OrderVendorID: model.VendorIDJX,
|
||||||
|
VendorWaybillID: order.EclpOutID,
|
||||||
|
WaybillVendorID: model.VendorIDJDWL,
|
||||||
|
Status: model.WaybillStatusDelivering,
|
||||||
|
WaybillCreatedAt: time.Now(),
|
||||||
|
StatusTime: time.Now(),
|
||||||
|
}
|
||||||
|
dao.CreateEntity(db, waybill)
|
||||||
|
// } else { //如果重量超过5kg则需要进行拆单分包,商品分包规则。最后一个包不超过5kg,其他包不超过3kg
|
||||||
|
|
||||||
|
// }
|
||||||
//刷新一下库存
|
//刷新一下库存
|
||||||
for _, v := range goods[0].Skus {
|
for _, v := range goods[0].Skus {
|
||||||
cms.RefreshMatterStock(jxcontext.AdminCtx, v.SkuID)
|
cms.RefreshMatterStock(jxcontext.AdminCtx, v.SkuID)
|
||||||
@@ -1157,5 +1199,27 @@ func GetMatterOrderStatus(ctx *jxcontext.Context, vendorOrderID string) (result
|
|||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if len(getTrackMessagePlusByOrderResult.ResultData) > 0 {
|
||||||
|
var (
|
||||||
|
waybillCode = getTrackMessagePlusByOrderResult.ResultData[0].WaybillCode
|
||||||
|
cName string
|
||||||
|
cMobile string
|
||||||
|
)
|
||||||
|
for _, vv := range getTrackMessagePlusByOrderResult.ResultData {
|
||||||
|
if vv.OpeTitle == "配送员收货" {
|
||||||
|
result := regexpCnameAndCmobile.FindAllStringSubmatch(vv.OpeName, -1)
|
||||||
|
cName = result[0][1]
|
||||||
|
cMobile = result[0][2]
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
waybills, _ := dao.GetWayBillByOrderID(db, -1, model.VendorIDJX, -1, vendorOrderID)
|
||||||
|
if len(waybills) > 0 {
|
||||||
|
waybills[0].VendorWaybillID = waybillCode
|
||||||
|
waybills[0].CourierName = cName
|
||||||
|
waybills[0].CourierMobile = cMobile
|
||||||
|
dao.UpdateEntity(db, waybills[0], "VendorWaybillID", "CourierName", "CourierMobile")
|
||||||
|
}
|
||||||
|
}
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -264,7 +264,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
|
|||||||
foodData["min_order_count"] = 1
|
foodData["min_order_count"] = 1
|
||||||
foodData["unit"] = storeSku.Unit
|
foodData["unit"] = storeSku.Unit
|
||||||
foodData["box_num"] = 1
|
foodData["box_num"] = 1
|
||||||
foodData["box_price"] = jxutils.IntPrice2Standard(storeSku.BoxFee)
|
// foodData["box_price"] = jxutils.IntPrice2Standard(storeSku.BoxFee)
|
||||||
catCode := tryCatName2Code(storeSku.VendorCatID)
|
catCode := tryCatName2Code(storeSku.VendorCatID)
|
||||||
if catCode != "" {
|
if catCode != "" {
|
||||||
foodData["category_code"] = catCode
|
foodData["category_code"] = catCode
|
||||||
|
|||||||
Reference in New Issue
Block a user