京西也支持订单转移
This commit is contained in:
@@ -1593,36 +1593,42 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int)
|
|||||||
} else {
|
} else {
|
||||||
return "", fmt.Errorf("未查询到该门店对应的平台信息!门店:[%v]", order.StoreID)
|
return "", fmt.Errorf("未查询到该门店对应的平台信息!门店:[%v]", order.StoreID)
|
||||||
}
|
}
|
||||||
if len(order.VendorOrderID) > 12 {
|
if order.VendorID == model.VendorIDJDShop {
|
||||||
var goodsOrders []*model.GoodsOrder
|
if len(order.VendorOrderID) > 12 {
|
||||||
sql := `
|
var goodsOrders []*model.GoodsOrder
|
||||||
SELECT * FROM goods_order WHERE vendor_order_id2 = ? ORDER BY vendor_order_id DESC
|
sql := `
|
||||||
`
|
SELECT * FROM goods_order WHERE vendor_order_id2 = ? ORDER BY vendor_order_id DESC
|
||||||
sqlParams := []interface{}{order.VendorOrderID2}
|
`
|
||||||
err = dao.GetRows(db, &goodsOrders, sql, sqlParams)
|
sqlParams := []interface{}{order.VendorOrderID2}
|
||||||
if goodsOrders[0].Status != model.OrderStatusCanceled {
|
err = dao.GetRows(db, &goodsOrders, sql, sqlParams)
|
||||||
err = jdshop.ChangeOrderStatus(goodsOrders[0].VendorOrderID, model.OrderStatusCanceled, "订单转移被取消")
|
if goodsOrders[0].Status != model.OrderStatusCanceled {
|
||||||
|
err = jdshop.ChangeOrderStatus(goodsOrders[0].VendorOrderID, model.OrderStatusCanceled, "订单转移被取消")
|
||||||
|
}
|
||||||
|
// suffix := utils.Str2Int(goodsOrders[0].VendorOrderID[12:len(goodsOrders[0].VendorOrderID)])
|
||||||
|
// suffix++
|
||||||
|
if len(order.VendorOrderID2) > 18 {
|
||||||
|
order.VendorOrderID2 = order.VendorOrderID2[0:12]
|
||||||
|
}
|
||||||
|
order.VendorOrderID = utils.Int64ToStr(utils.Str2Int64(order.VendorOrderID2)*10000) + utils.Int2Str(time.Now().Second())
|
||||||
|
if len(order.VendorOrderID) < 18 {
|
||||||
|
order.VendorOrderID = order.VendorOrderID + "0"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// suffix := utils.Str2Int(goodsOrders[0].VendorOrderID[12:len(goodsOrders[0].VendorOrderID)])
|
if storeID != model.JdShopMainStoreID {
|
||||||
// suffix++
|
order.DeliveryFlag = model.NO
|
||||||
if len(order.VendorOrderID2) > 18 {
|
|
||||||
order.VendorOrderID2 = order.VendorOrderID2[0:12]
|
|
||||||
}
|
|
||||||
order.VendorOrderID = utils.Int64ToStr(utils.Str2Int64(order.VendorOrderID2)*10000) + utils.Int2Str(time.Now().Second())
|
|
||||||
if len(order.VendorOrderID) < 18 {
|
|
||||||
order.VendorOrderID = order.VendorOrderID + "0"
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
order.VendorOrderID2 = order.VendorOrderID
|
||||||
|
order.VendorOrderID = utils.Int64ToStr(jxutils.GenOrderNo())
|
||||||
|
order.DeliveryFlag = model.NO
|
||||||
}
|
}
|
||||||
for _, sku := range skus {
|
for _, sku := range skus {
|
||||||
sku.VendorOrderID = order.VendorOrderID
|
sku.VendorOrderID = order.VendorOrderID
|
||||||
sku.ID = 0
|
sku.ID = 0
|
||||||
order.Skus = append(order.Skus, sku)
|
order.Skus = append(order.Skus, sku)
|
||||||
}
|
}
|
||||||
if storeID != model.JdShopMainStoreID {
|
|
||||||
order.DeliveryFlag = model.NO
|
|
||||||
}
|
|
||||||
order.Status = model.OrderStatusNew
|
|
||||||
setJdsOrderSeq(order)
|
setJdsOrderSeq(order)
|
||||||
|
order.Status = model.OrderStatusNew
|
||||||
err = partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order))
|
err = partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order))
|
||||||
vendorOrderIDJds = order.VendorOrderID
|
vendorOrderIDJds = order.VendorOrderID
|
||||||
return vendorOrderIDJds, err
|
return vendorOrderIDJds, err
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"crypto/aes"
|
"crypto/aes"
|
||||||
|
"crypto/md5"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@@ -26,9 +27,10 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
routinePool *routinepool.Pool
|
routinePool *routinepool.Pool
|
||||||
skuNamePat *regexp.Regexp
|
skuNamePat *regexp.Regexp
|
||||||
emailPat *regexp.Regexp
|
emailPat *regexp.Regexp
|
||||||
|
orderNoBeginTimestamp int64
|
||||||
|
|
||||||
resourceTypeMap = map[int][]string{
|
resourceTypeMap = map[int][]string{
|
||||||
model.VendorIDQiNiuCloud: []string{
|
model.VendorIDQiNiuCloud: []string{
|
||||||
@@ -75,6 +77,7 @@ func init() {
|
|||||||
// https://stackoverflow.com/questions/38933898/error-parsing-regexp-invalid-or-unsupported-perl-syntax
|
// https://stackoverflow.com/questions/38933898/error-parsing-regexp-invalid-or-unsupported-perl-syntax
|
||||||
skuNamePat = regexp.MustCompile(`([\((\[【][^\((\[【\))\]】]*[\))\]】])?(.*?)([((].*[))])?\s*约?([1-9][\d\.]*)(g|G|kg|kG|Kg|KG|l|L|ml|mL|Ml|ML|克)\s*([((].*[))])?\s*(?:\/|/|)\s*([^\s()()]{0,2})(\s.*)?$\s*([((].*[))])?$`)
|
skuNamePat = regexp.MustCompile(`([\((\[【][^\((\[【\))\]】]*[\))\]】])?(.*?)([((].*[))])?\s*约?([1-9][\d\.]*)(g|G|kg|kG|Kg|KG|l|L|ml|mL|Ml|ML|克)\s*([((].*[))])?\s*(?:\/|/|)\s*([^\s()()]{0,2})(\s.*)?$\s*([((].*[))])?$`)
|
||||||
emailPat = regexp.MustCompile(`[A-Za-z0-9_\-.]+@(?:[A-Za-z0-9_\-]+\.)+[A-Za-z]+`)
|
emailPat = regexp.MustCompile(`[A-Za-z0-9_\-.]+@(?:[A-Za-z0-9_\-]+\.)+[A-Za-z]+`)
|
||||||
|
orderNoBeginTimestamp = utils.Str2Time("2010-01-01 00:00:00").Unix()
|
||||||
}
|
}
|
||||||
|
|
||||||
func getJxStoreIDFromOrder(order *model.GoodsOrder) (retVal int) {
|
func getJxStoreIDFromOrder(order *model.GoodsOrder) (retVal int) {
|
||||||
@@ -168,6 +171,36 @@ func GetPossibleVendorIDFromVendorOrderID(vendorOrderID string) (vendorID int) {
|
|||||||
return vendorID
|
return vendorID
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GenOrderNo() (orderNo int64) {
|
||||||
|
const prefix = 88
|
||||||
|
const randPartNum = 1000
|
||||||
|
orderNo = time.Now().Unix() - orderNoBeginTimestamp
|
||||||
|
orderNo = orderNo * randPartNum
|
||||||
|
md5Bytes := md5.Sum([]byte(utils.GetUUID()))
|
||||||
|
randPart := 0
|
||||||
|
for k, v := range md5Bytes {
|
||||||
|
randPart += int(v) << ((k % 3) * 8)
|
||||||
|
}
|
||||||
|
orderNo += int64(randPart % randPartNum)
|
||||||
|
orderNo += int64(math.Pow10(int(math.Log10(float64(orderNo)))+1)) * prefix
|
||||||
|
return orderNo
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenAfsOrderNo() (orderNo int64) {
|
||||||
|
const prefix = 80
|
||||||
|
const randPartNum = 100
|
||||||
|
orderNo = time.Now().Unix() - orderNoBeginTimestamp
|
||||||
|
orderNo = orderNo * randPartNum
|
||||||
|
md5Bytes := md5.Sum([]byte(utils.GetUUID()))
|
||||||
|
randPart := 0
|
||||||
|
for k, v := range md5Bytes {
|
||||||
|
randPart += int(v) << ((k % 3) * 8)
|
||||||
|
}
|
||||||
|
orderNo += int64(randPart % randPartNum)
|
||||||
|
orderNo += int64(math.Pow10(int(math.Log10(float64(orderNo)))+1)) * prefix
|
||||||
|
return orderNo
|
||||||
|
}
|
||||||
|
|
||||||
func GetPossibleVendorIDFromAfsOrderID(afsOrderID string) (vendorID int) {
|
func GetPossibleVendorIDFromAfsOrderID(afsOrderID string) (vendorID int) {
|
||||||
vendorID = model.VendorIDUnknown
|
vendorID = model.VendorIDUnknown
|
||||||
if afsOrderIDInt64 := utils.Str2Int64WithDefault(afsOrderID, 0); afsOrderIDInt64 > 0 {
|
if afsOrderIDInt64 := utils.Str2Int64WithDefault(afsOrderID, 0); afsOrderIDInt64 > 0 {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package localjx
|
package localjx
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/md5"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
"regexp"
|
"regexp"
|
||||||
@@ -140,8 +139,6 @@ type MatterOrderStatus struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
orderNoBeginTimestamp int64
|
|
||||||
|
|
||||||
weekdayMap = map[int]string{
|
weekdayMap = map[int]string{
|
||||||
1: "一",
|
1: "一",
|
||||||
2: "二",
|
2: "二",
|
||||||
@@ -174,7 +171,6 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
orderNoBeginTimestamp = utils.Str2Time("2010-01-01 00:00:00").Unix()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetMyOrders(ctx *jxcontext.Context, fromDateStr, toDateStr string, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
func GetMyOrders(ctx *jxcontext.Context, fromDateStr, toDateStr string, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
||||||
@@ -250,7 +246,7 @@ func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64,
|
|||||||
if jxOrder.IsPriceDefend == model.YES {
|
if jxOrder.IsPriceDefend == model.YES {
|
||||||
outJxOrder.OrderID = jxOrder.OrderID
|
outJxOrder.OrderID = jxOrder.OrderID
|
||||||
} else {
|
} else {
|
||||||
outJxOrder.OrderID = GenOrderNo(ctx)
|
outJxOrder.OrderID = jxutils.GenOrderNo()
|
||||||
}
|
}
|
||||||
order, err2 := jxOrder2GoodsOrder(ctx, outJxOrder, deliveryAddress, "", IsDeliverySelf)
|
order, err2 := jxOrder2GoodsOrder(ctx, outJxOrder, deliveryAddress, "", IsDeliverySelf)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
@@ -273,7 +269,7 @@ func buildDefendPriceOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, address
|
|||||||
)
|
)
|
||||||
issue = jxutils.GetDefendPriceIssue()
|
issue = jxutils.GetDefendPriceIssue()
|
||||||
priceDefendOrder := &model.PriceDefendOrder{
|
priceDefendOrder := &model.PriceDefendOrder{
|
||||||
VendorOrderID: utils.Int64ToStr(GenOrderNo(ctx)),
|
VendorOrderID: utils.Int64ToStr(jxutils.GenOrderNo()),
|
||||||
StoreID: jxOrder.StoreID,
|
StoreID: jxOrder.StoreID,
|
||||||
SkuID: jxOrder.Skus[0].SkuID,
|
SkuID: jxOrder.Skus[0].SkuID,
|
||||||
AddressID: addressID,
|
AddressID: addressID,
|
||||||
@@ -471,37 +467,6 @@ func OnPayFinished(orderPay *model.OrderPay) (err error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GenOrderNo(ctx *jxcontext.Context) (orderNo int64) {
|
|
||||||
const prefix = 88
|
|
||||||
const randPartNum = 1000
|
|
||||||
orderNo = time.Now().Unix() - orderNoBeginTimestamp
|
|
||||||
// fmt.Println(orderNo)
|
|
||||||
orderNo = orderNo * randPartNum
|
|
||||||
md5Bytes := md5.Sum([]byte(utils.GetUUID()))
|
|
||||||
randPart := 0
|
|
||||||
for k, v := range md5Bytes {
|
|
||||||
randPart += int(v) << ((k % 3) * 8)
|
|
||||||
}
|
|
||||||
orderNo += int64(randPart % randPartNum)
|
|
||||||
orderNo += int64(math.Pow10(int(math.Log10(float64(orderNo)))+1)) * prefix
|
|
||||||
return orderNo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenAfsOrderNo(ctx *jxcontext.Context) (orderNo int64) {
|
|
||||||
const prefix = 80
|
|
||||||
const randPartNum = 100
|
|
||||||
orderNo = time.Now().Unix() - orderNoBeginTimestamp
|
|
||||||
orderNo = orderNo * randPartNum
|
|
||||||
md5Bytes := md5.Sum([]byte(utils.GetUUID()))
|
|
||||||
randPart := 0
|
|
||||||
for k, v := range md5Bytes {
|
|
||||||
randPart += int(v) << ((k % 3) * 8)
|
|
||||||
}
|
|
||||||
orderNo += int64(randPart % randPartNum)
|
|
||||||
orderNo += int64(math.Pow10(int(math.Log10(float64(orderNo)))+1)) * prefix
|
|
||||||
return orderNo
|
|
||||||
}
|
|
||||||
|
|
||||||
func GenPayOrderID(order *model.GoodsOrder) (payOrderID int64) {
|
func GenPayOrderID(order *model.GoodsOrder) (payOrderID int64) {
|
||||||
return utils.Str2Int64(order.VendorOrderID)
|
return utils.Str2Int64(order.VendorOrderID)
|
||||||
}
|
}
|
||||||
@@ -2007,7 +1972,7 @@ func CreateOrderByPriceDefend(ctx *jxcontext.Context) (err error) {
|
|||||||
BuyerComment: "守价订单",
|
BuyerComment: "守价订单",
|
||||||
StoreID: vv[0].StoreID,
|
StoreID: vv[0].StoreID,
|
||||||
IsPriceDefend: model.YES,
|
IsPriceDefend: model.YES,
|
||||||
OrderID: GenOrderNo(ctx),
|
OrderID: jxutils.GenOrderNo(),
|
||||||
UserID: address.UserID,
|
UserID: address.UserID,
|
||||||
}
|
}
|
||||||
for _, priceDefend := range vv {
|
for _, priceDefend := range vv {
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
@@ -142,7 +144,7 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G
|
|||||||
|
|
||||||
func buildOrderStatus(ctx *jxcontext.Context, order *model.GoodsOrder, reason string, isJxShop bool) (orderStatus *model.OrderStatus) {
|
func buildOrderStatus(ctx *jxcontext.Context, order *model.GoodsOrder, reason string, isJxShop bool) (orderStatus *model.OrderStatus) {
|
||||||
orderStatus = &model.OrderStatus{
|
orderStatus = &model.OrderStatus{
|
||||||
VendorOrderID: utils.Int64ToStr(localjx.GenAfsOrderNo(ctx)), // 是售后单ID,不是订单ID,订单ID在RefVendorOrderID中
|
VendorOrderID: utils.Int64ToStr(jxutils.GenAfsOrderNo()), // 是售后单ID,不是订单ID,订单ID在RefVendorOrderID中
|
||||||
VendorID: order.VendorID,
|
VendorID: order.VendorID,
|
||||||
OrderType: model.OrderTypeAfsOrder,
|
OrderType: model.OrderTypeAfsOrder,
|
||||||
RefVendorOrderID: order.VendorOrderID,
|
RefVendorOrderID: order.VendorOrderID,
|
||||||
|
|||||||
Reference in New Issue
Block a user