Files
jx-callback/business/controller/order_legacy.go
gazebo 805925ff58 - mtps, dada create waybill
- create legacy jxorder(not finished).
2018-07-14 14:35:51 +08:00

120 lines
4.5 KiB
Go

package controller
import (
"git.rosy.net.cn/baseapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/legacyorder"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego/orm"
)
// legacy
const (
JX_ORDER_STATUS_WAIT_TO_ACCEPT = -1 //未接单(41000)
JX_ORDER_STATUS_PICKING = 0 //拣货(32000->或定时召唤达达)
JX_ORDER_STATUS_WAIT_FOR_DELIVERY = 1 //待配送(2->或转商家自送)
JX_ORDER_STATUS_DELIVERING = 2 //配送中(33040)
JX_ORDER_STATUS_DELIVERY_DONE = 3 //已完成(33060->90000)
JX_ORDER_STATUS_EXCEPTION_APPLY = 4 //异常申请
JX_ORDER_STATUS_NOT_DELIVER = 5 //不配送
JX_ORDER_STATUS_AFTER_SALE = 6 //售后单
JX_ORDER_STATUS_CANCEL = 7 //已取消
JX_ORDER_STATUS_ADJUST = 8 //调整单
JX_DELIVERY_STATUS_NOT_DELIVERY = -1 //尚未申请配送
JX_DELIVERY_STATUS_WAIT_TO_GRAB = 0 //等待抢单
JX_DELIVERY_STATUS_GRAB_DONE = 1 //已抢单
JX_DELIVERY_STATUS_FAIL_TO_GET_GOODS = 2 //取货失败
JX_DELIVERY_STATUS_FAIL_TO_GET_GOODS_WAIT_TO_CONFIRM = 3 //取货失败待审核
JX_DELIVERY_STATUS_GET_GOODS_DONE = 4 //取货完成
JX_DELIVERY_STATUS_DELIVERY_FAIL = 5 //投递失败
JX_DELIVERY_STATUS_DELIVERY_DONE = 6 //已完成
JX_DELIVERY_STATUS_DELIVERY_CANCEL = 7 //已取消
)
func (c *OrderController) legacyMapOrderStatus(orderStatus int) (retVal int8) {
switch orderStatus {
case model.OrderStatusNew:
retVal = JX_ORDER_STATUS_WAIT_TO_ACCEPT
case model.OrderStatusAccepted:
retVal = JX_ORDER_STATUS_PICKING
case model.OrderStatusDelivering:
retVal = JX_ORDER_STATUS_DELIVERING
case model.OrderStatusDelivered:
retVal = JX_ORDER_STATUS_DELIVERY_DONE
case model.OrderStatusAdjust:
retVal = JX_ORDER_STATUS_ADJUST
case model.OrderStatusApplyCancel:
retVal = JX_ORDER_STATUS_EXCEPTION_APPLY
}
return retVal
}
func (c *OrderController) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Ormer, isDelFirst bool) (err error) {
db.Begin()
if isDelFirst {
db.Raw("DELETE FROM jxorder2 WHERE order_id = ?", utils.Str2Int64(order.VendorOrderID))
db.Raw("DELETE FROM jxordersku2 WHERE order_id = ?", utils.Str2Int64(order.VendorOrderID))
}
jxorder := &legacyorder.Jxorder2{
VenderId: int8(order.VendorID),
OrderId: utils.Str2Int64(order.VendorOrderID),
JxStoreId: utils.Int2Str(order.JxStoreID),
JxStoreName: order.StoreName,
OrderNum: order.SkuCount,
OrderStatus: c.legacyMapOrderStatus(order.Status),
OrderStatusTime: utils.Time2Str(order.OrderCreatedAt),
BusinessTag: "",
SkuCount: order.SkuCount,
OrderBuyerRemark: order.BuyerComment,
BuyerFullName: order.ConsigneeName,
BuyerFullAddress: order.ConsigneeAddress,
BuyerMobile: order.ConsigneeMobile,
BuyerCoordType: order.CoordinateType,
BuyerLng: IntCoordinate2Standard(order.ConsigneeLng),
BuyerLat: IntCoordinate2Standard(order.ConsigneeLat),
}
_, err = db.Insert(jxorder)
if err != nil {
db.Rollback()
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"
params := []interface{}{}
for _, sku := range order.Skus {
sql += "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?),"
params = append(params, sku.VendorID, sku.VendorOrderID, sku.JxSkuID, sku.SkuName, order.JxStoreID, sku.SalePrice, sku.Count, sku.SkuType, sku.PromotionType, 0, 0)
}
sql = sql[:len(sql)-1] + ";"
if _, err = db.Raw(sql, params...).Exec(); err != nil {
db.Rollback()
baseapi.SugarLogger.Infof("insert jxordersku2 error:%v", err)
} else {
db.Commit()
}
return err
}
func (c *OrderController) legacyJxOrderStatusChanged(status *model.OrderStatus, db orm.Ormer) (err error) {
if db == nil {
db = orm.NewOrm()
}
jxorder := &legacyorder.Jxorder2{
OrderId: utils.Str2Int64(status.VendorOrderID),
}
if err = db.Read(jxorder, "OrderId"); err == nil {
utils.CallFuncLogError(func() error {
jxorder.OrderStatus = c.legacyMapOrderStatus(status.Status)
jxorder.OrderStatusTime = utils.Time2Str(status.StatusTime)
_, err = db.Update(jxorder, "OrderStatus", "OrderStatusTime")
return err
}, "legacyJxOrderStatusChanged")
} else {
globals.SugarLogger.Infof("read legacyJxOrder error:%v", err)
}
return err
}