- write legacy jxoder almost ok.

This commit is contained in:
gazebo
2018-07-17 18:01:49 +08:00
parent 77d1ea1d77
commit f9096a7b17
14 changed files with 342 additions and 272 deletions

View File

@@ -1,7 +1,6 @@
package controller
import (
"fmt"
"strings"
"git.rosy.net.cn/baseapi"
@@ -45,6 +44,13 @@ const (
)
var (
VENDOR_ID2CARRIER_NO = map[int]string{
model.VendorIDJD: DD_CARRIER_NO,
model.VendorIDELM: EME_SELF_CARRIER_NO,
model.VendorIDDada: DDDELIVERY_CARRIER_NO,
model.VendorIDMTPS: MTPS_CARRIER_NO,
}
CARRIERS_NAMES = map[string]string{
DD_CARRIER_NO: "达达专送",
SELLER_CARRIER_NO: "门店自送",
@@ -62,7 +68,14 @@ var (
}
)
func (c *OrderController) legacyMapOrderStatus(orderStatus int) (retVal int8) {
func legacyMapCoordinateType(coordType int) (jxorderCoordType int) {
if coordType == model.CoordinateTypeMars {
return 2
}
return 0
}
func legacyMapOrderStatus(orderStatus int) (retVal int8) {
switch orderStatus {
case model.OrderStatusNew:
retVal = JX_ORDER_STATUS_WAIT_TO_ACCEPT
@@ -76,6 +89,28 @@ func (c *OrderController) legacyMapOrderStatus(orderStatus int) (retVal int8) {
retVal = JX_ORDER_STATUS_ADJUST
case model.OrderStatusApplyCancel:
retVal = JX_ORDER_STATUS_EXCEPTION_APPLY
case model.OrderStatusCanceled:
retVal = JX_ORDER_STATUS_CANCEL
}
return retVal
}
func legacyMapWaybillStatus(status int) (retVal int8) {
switch status {
case model.WaybillStatusNew:
retVal = JX_DELIVERY_STATUS_WAIT_TO_GRAB
case model.WaybillStatusAccepted:
retVal = JX_DELIVERY_STATUS_GRAB_DONE
case model.WaybillStatusCourierArrived:
retVal = JX_DELIVERY_STATUS_GET_GOODS_DONE
case model.WaybillStatusDelivering:
retVal = JX_DELIVERY_STATUS_GET_GOODS_DONE
case model.WaybillStatusDelivered:
retVal = JX_DELIVERY_STATUS_DELIVERY_DONE
case model.WaybillStatusCanceled:
retVal = JX_DELIVERY_STATUS_DELIVERY_CANCEL
case model.WaybillStatusFailed:
retVal = JX_DELIVERY_STATUS_DELIVERY_FAIL
}
return retVal
}
@@ -106,7 +141,7 @@ func (c *OrderController) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Orm
JxStoreId: utils.Int2Str(GetJxStoreIDFromOrder(order)),
JxStoreName: order.StoreName,
OrderNum: order.OrderSeq,
OrderStatus: c.legacyMapOrderStatus(order.Status),
OrderStatus: legacyMapOrderStatus(order.Status),
OrderStatusTime: utils.Time2Str(order.OrderCreatedAt),
BusinessTag: businessTags,
SkuCount: order.SkuCount,
@@ -114,23 +149,30 @@ func (c *OrderController) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Orm
BuyerFullName: order.ConsigneeName,
BuyerFullAddress: order.ConsigneeAddress,
BuyerMobile: order.ConsigneeMobile,
BuyerCoordType: order.CoordinateType,
BuyerCoordType: legacyMapCoordinateType(order.CoordinateType),
BuyerLng: IntCoordinate2Standard(order.ConsigneeLng),
BuyerLat: IntCoordinate2Standard(order.ConsigneeLat),
CityName: "all",
OrderStartTime: utils.Time2Str(order.OrderCreatedAt),
JdStoreId: order.VendorStoreID,
// DeliveryPackageWeight: float64(order.Weight) / 1000,
}
if order.ExpectedDeliveredTime.Sub(utils.DefaultTimeValue) > 0 {
jxorder.OrderPreEndDelivTime = utils.Time2Str(order.ExpectedDeliveredTime)
}
_, err = db.Insert(jxorder)
if err != nil {
db.Rollback()
globals.SugarLogger.Infof("insert jxorder error:%v", err)
return err
}
sql := "INSERT INTO jxordersku2(vender_id, order_id, jx_sku_id, sku_name, jx_store_id, sku_price, sku_count, is_gift, promotion_type, sku_plat_discount, sku_vender_discount) VALUES"
sql := "INSERT INTO jxordersku2(vender_id, order_id, jx_sku_id, sku_name, jx_store_id, sku_price, sku_count, is_gift, promotion_type, sku_plat_discount, sku_vender_discount, sku_img) VALUES"
params := []interface{}{}
for _, sku := range order.Skus {
sql += "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?),"
params = append(params, sku.VendorID, sku.VendorOrderID, sku.JxSkuID, sku.SkuName, GetJxStoreIDFromOrder(order), sku.SalePrice, sku.Count, sku.SkuType, sku.PromotionType, 0, 0)
sql += "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?),"
params = append(params, sku.VendorID, sku.VendorOrderID, sku.JxSkuID, sku.SkuName, GetJxStoreIDFromOrder(order), sku.SalePrice, sku.Count, sku.SkuType, sku.PromotionType, 0, 0, "")
}
sql = sql[:len(sql)-1] + ";"
if _, err = db.Raw(sql, params...).Exec(); err != nil {
@@ -160,27 +202,10 @@ func (c *OrderController) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Orm
`, vendorOrderID /*, vendorOrderID*/).Exec()
return err
}, "update jxordersku")
}
return err
}
func (c *OrderController) legacyGetOrderDeliveryChannel(status *model.OrderStatus) (retVal string) {
switch status.VendorID {
case model.VendorIDJD:
retVal = DD_CARRIER_NO
case model.VendorIDELM:
retVal = EME_SELF_CARRIER_NO
case model.VendorIDDada:
retVal = DDDELIVERY_CARRIER_NO
case model.VendorIDMTPS:
retVal = MTPS_CARRIER_NO
default:
panic(fmt.Sprintf("unkown vendorID:%v", status.VendorID))
}
return retVal
}
func (c *OrderController) legacyJxOrderStatusChanged(status *model.OrderStatus, db orm.Ormer) (err error) {
if db == nil {
db = orm.NewOrm()
@@ -190,9 +215,60 @@ func (c *OrderController) legacyJxOrderStatusChanged(status *model.OrderStatus,
}
if err = db.Read(jxorder, "OrderId"); err == nil {
utils.CallFuncLogError(func() error {
jxorder.OrderStatus = c.legacyMapOrderStatus(status.Status)
jxorder.OrderStatus = legacyMapOrderStatus(status.Status)
jxorder.OrderStatusTime = utils.Time2Str(status.StatusTime)
_, err = db.Update(jxorder, "OrderStatus", "OrderStatusTime")
updateFields := []string{
"OrderStatus",
"OrderStatusTime",
}
if status.Status >= model.OrderStatusEndBegin {
jxorder.DeliveryFinishTime = utils.Time2Str(status.StatusTime)
updateFields = append(updateFields, "DeliveryFinishTime")
}
_, err = db.Update(jxorder, updateFields...)
return err
}, "legacyJxOrderStatusChanged")
} else {
globals.SugarLogger.Infof("read legacyJxOrder error:%v, orderID:%d", err, jxorder.OrderId)
}
return err
}
func (c *WaybillController) legacyWaybillStatusChanged(bill *model.Waybill, db orm.Ormer) (err error) {
if db == nil {
db = orm.NewOrm()
}
jxorder := &legacyorder.Jxorder2{
OrderId: utils.Str2Int64(bill.VendorOrderID),
}
if err = db.Read(jxorder, "OrderId"); err == nil {
utils.CallFuncLogError(func() error {
updateFields := []string{
"DeliveryCarrierNo",
"DeliveryCarrierName",
"DeliveryManNo",
"DeliveryManName",
"DeliveryManPhone",
"DeliveryBillNo",
"DeliveryStatus",
}
// jxorder.DeliveryPackageWeight
jxorder.DeliveryCarrierNo = VENDOR_ID2CARRIER_NO[bill.WaybillVendorID]
jxorder.DeliveryCarrierName = CARRIERS_NAMES[jxorder.DeliveryCarrierNo]
jxorder.DeliveryManNo = bill.CourierMobile
jxorder.DeliveryManName = bill.CourierName
jxorder.DeliveryManPhone = bill.CourierMobile
jxorder.DeliveryBillNo = bill.VendorWaybillID
jxorder.DeliveryStatus = legacyMapWaybillStatus(bill.Status)
// jxorder.DeliveryConfirmTime
if bill.Status == model.WaybillStatusNew {
updateFields = append(updateFields, "DeliveryStartTime")
jxorder.DeliveryStartTime = utils.Time2Str(bill.WaybillCreatedAt)
} else if bill.Status >= model.WaybillStatusEndBegin {
jxorder.DeliveryFinishTime = utils.Time2Str(bill.WaybillCreatedAt)
updateFields = append(updateFields, "DeliveryFinishTime")
}
_, err = db.Update(jxorder, updateFields...)
return err
}, "legacyJxOrderStatusChanged")
} else {