- log msg refactor, add orderID to all logs.

This commit is contained in:
gazebo
2018-07-22 16:44:44 +08:00
parent 0cb34fe089
commit 7ae0944fc9
14 changed files with 57 additions and 66 deletions

View File

@@ -35,7 +35,7 @@ func addOrderOrWaybillStatus(status *model.OrderStatus, db orm.Ormer) (isDuplica
created, _, err := db.ReadOrCreate(status, "VendorOrderID", "VendorID", "OrderType", "VendorStatus", "StatusTime")
if err == nil {
if !created {
globals.SugarLogger.Infof("duplicated event:%v", status)
globals.SugarLogger.Debugf("duplicated event:%v", status)
isDuplicated = true
status.DuplicatedCount++
utils.CallFuncLogError(func() error {
@@ -46,7 +46,7 @@ func addOrderOrWaybillStatus(status *model.OrderStatus, db orm.Ormer) (isDuplica
}
if err != nil {
// todo 这里居然会有主键重复错误,逻辑上是不应该的
globals.SugarLogger.Warnf("access db error:%v", err)
globals.SugarLogger.Warnf("addOrderOrWaybillStatus status:%v, access db error:%v", status, err)
}
return isDuplicated, err
}
@@ -85,7 +85,7 @@ func GetDataCityCodeFromOrder(order *model.GoodsOrder) (retVal string, err error
if err != nil && num == 1 {
retVal = lists[0][0].(string)
} else {
globals.SugarLogger.Errorf("can not find store info for vendorID:%d, store:%s", order.VendorID, order.VendorStoreID)
globals.SugarLogger.Errorf("GetDataCityCodeFromOrder can not find store info for vendorID:%d, store:%s", order.VendorID, order.VendorStoreID)
}
return retVal, err
}

View File

@@ -7,7 +7,6 @@ import (
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/scheduler"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
)
@@ -64,9 +63,6 @@ func (c *WaybillController) callbackMsg2Waybill(msg *dadaapi.CallbackMsg) (retVa
// DeliveryPlatformHandler
func (c *WaybillController) CreateWaybill(order *model.GoodsOrder) (err error) {
globals.SugarLogger.Infof("CreateWaybill order:%v", order)
return nil
billParams := &dadaapi.OperateOrderRequiredParams{
ShopNo: utils.Int2Str(order.StoreID), // 当前达达的门店号与京西是一样的
OriginID: jxutils.ComposeUniversalOrderID(order.VendorOrderID, order.VendorID),
@@ -89,9 +85,6 @@ func (c *WaybillController) CreateWaybill(order *model.GoodsOrder) (err error) {
}
func (c *WaybillController) CancelWaybill(bill *model.Waybill) (err error) {
globals.SugarLogger.Infof("CancelWaybill bill:%v", bill)
return nil
reasonID := dadaapi.ReasonIDOther
reasonMsg := "other reason"
if bill.Status < model.WaybillStatusAccepted {

View File

@@ -88,7 +88,7 @@ func (c *OrderController) onOrderStatusMsg(msg *elmapi.CallbackOrderStatusMsg) (
case elmapi.MsgTypeOrderFinished:
status.Status = model.OrderStatusFinished
default:
globals.SugarLogger.Warnf("elm msg:%d not handled", msg.MsgType)
globals.SugarLogger.Warnf("onOrderStatusMsg elm msg:%v not handled", msg)
return elmapi.SuccessResponse
}
err := controller.OrderManager.OnOrderStatusChanged(status)

View File

@@ -24,7 +24,7 @@ func (c *OrderController) legacyWriteElmOrder(order *model.GoodsOrder) (err erro
}
_, err = db.Insert(legacyOrder)
if err != nil {
globals.SugarLogger.Infof("legacyWriteElmOrder orderID:%v insert error:%v", order.VendorOrderID, err)
globals.SugarLogger.Infof("legacyWriteElmOrder orderID:%s insert error:%v", order.VendorOrderID, err)
}
return err
}
@@ -34,15 +34,14 @@ func (c *OrderController) legacyElmOrderStatusChanged(status *model.OrderStatus)
legacyOrder := &legacyorder.Elemeorder2{
Orderid: status.VendorOrderID,
}
if err = db.Read(legacyOrder, "Orderid"); err == nil {
_, legacyOrder.Type = c.spliltCompositeState(status.VendorStatus)
utils.CallFuncLogError(func() error {
_, err = db.Update(legacyOrder, "Type")
return err
}, "legacyWriteElmOrder")
}, "legacyWriteElmOrder status:%v", status)
} else {
globals.SugarLogger.Infof("read legacyElmOrder error:%v", err)
globals.SugarLogger.Infof("legacyElmOrderStatusChanged db.Read status:%v, error:%v", status, err)
}
return err
}

View File

@@ -24,7 +24,7 @@ func (c *OrderController) legacyWriteJdOrder(order *model.GoodsOrder, delOldFirs
}
_, err = db.Insert(legacyOrder)
if err != nil {
globals.SugarLogger.Infof("legacyWriteJdOrder orderID:%v insert error:%v", order.VendorOrderID, err)
globals.SugarLogger.Infof("legacyWriteJdOrder orderID:%s insert error:%v", order.VendorOrderID, err)
}
return err
}
@@ -41,9 +41,9 @@ func (c *OrderController) legacyJdOrderStatusChanged(status *model.OrderStatus)
legacyOrder.Orderstatustime = utils.Time2Str(status.StatusTime)
_, err = db.Update(legacyOrder, "Orderstatus", "Orderstatustime")
return err
}, "legacyJdOrderStatusChanged")
}, "legacyJdOrderStatusChanged, status:%v", status)
} else {
globals.SugarLogger.Infof("read legacyJdOrder error:%v", err)
globals.SugarLogger.Infof("legacyJdOrderStatusChanged db.Read status:%v, error:%v", status, err)
}
return err
}

View File

@@ -62,7 +62,7 @@ func (c *WaybillController) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal
case mtpsapi.OrderStatusCanceled:
order.Status = model.WaybillStatusCanceled
default:
globals.SugarLogger.Warnf("unknown msg:%v", msg)
globals.SugarLogger.Warnf("onWaybillMsg unknown msg:%v", msg)
return mtpsapi.SuccessResponse
}
return mtpsapi.Err2CallbackResponse(controller.WaybillManager.OnWaybillStatusChanged(order), order.VendorStatus)
@@ -102,7 +102,7 @@ func (c *WaybillController) calculateDeliveryFee(bill *model.Waybill) (retVal in
if err == nil && num == 1 {
delieveryFee = utils.Str2Int64(lists[0][0].(string))
} else {
globals.SugarLogger.Warnf("calculateDeliveryFee can not cal delivery fee for orderid:%s, num:%d, error:%v", order.VendorOrderID, num, err)
globals.SugarLogger.Warnf("calculateDeliveryFee can not calculate delivery fee for orderID:%s, num:%d, error:%v", order.VendorOrderID, num, err)
return 0
}
@@ -139,9 +139,6 @@ func (c *WaybillController) calculateDeliveryFee(bill *model.Waybill) (retVal in
// DeliveryPlatformHandler
func (c *WaybillController) CreateWaybill(order *model.GoodsOrder) (err error) {
globals.SugarLogger.Infof("CreateWaybill bill:%v", order)
return nil
db := orm.NewOrm()
// 忽略坐标转换错误,即使是转换出错,也只能当成转换成功来处理,底层会有错误日志输出
lngFloat, latFloat, _ := jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType)
@@ -181,9 +178,6 @@ func (c *WaybillController) CreateWaybill(order *model.GoodsOrder) (err error) {
}
func (c *WaybillController) CancelWaybill(bill *model.Waybill) (err error) {
globals.SugarLogger.Infof("CancelWaybill bill:%v", bill)
return nil
reasonID := mtpsapi.CancelReasonMerchantOther
reasonMsg := "other reason"
if bill.Status < model.WaybillStatusAccepted {
@@ -206,7 +200,7 @@ func (c *WaybillController) getDeliveryID(order *model.GoodsOrder, db orm.Ormer)
err = utils.CallFuncLogError(func() error {
err2 := db.Read(jxorder, "OrderId")
return err2
}, "getDeliveryID")
}, "getDeliveryID, orderID:%s", order.VendorOrderID)
return int64(jxorder.Id), err
}
@@ -218,7 +212,7 @@ func (c *WaybillController) getMTPSShopID(order *model.GoodsOrder, db orm.Ormer)
if err != nil && num == 1 {
retVal = lists[0][0].(string)
} else {
globals.SugarLogger.Errorf("can not find mtps store info for store:%d", JxStoreID)
globals.SugarLogger.Errorf("getMTPSShopID can not find mtps store info for orderID:%s, store:%d", order.VendorOrderID, JxStoreID)
}
return retVal, err
}

View File

@@ -33,7 +33,7 @@ func (c *OrderController) LoadPendingOrders() []*model.GoodsOrder {
ORDER by order_created_at
`, time.Now().Add(-pendingOrderGapMax), model.OrderStatusEndBegin).QueryRows(&orders)
if err != nil {
globals.SugarLogger.Warnf("init load pending orders error:%v", err)
globals.SugarLogger.Warnf("LoadPendingOrders load pending orders error:%v", err)
return nil
}
return orders
@@ -94,11 +94,11 @@ func (c *OrderController) saveOrder(order *model.GoodsOrder, isAdjust bool, db o
// 忽略查找JX信息错误
c.updateOrderOtherInfo(order, db)
db.Begin()
// globals.SugarLogger.Debugf("new order:%v", order)
order.ID = 0
order.WaybillVendorID = model.VendorIDUnknown
order.OrderFinishedAt = utils.DefaultTimeValue
order.OrderCreatedAt = order.StatusTime
globals.SugarLogger.Debugf("saveOrder isAdjust:%t, order:%v", isAdjust, order)
created, _, err2 := db.ReadOrCreate(order, "VendorOrderID", "VendorID")
if err = err2; err == nil {
if created {
@@ -113,7 +113,7 @@ func (c *OrderController) saveOrder(order *model.GoodsOrder, isAdjust bool, db o
sql = sql[:len(sql)-1] + ";"
if _, err = db.Raw(sql, params...).Exec(); err != nil {
db.Rollback()
baseapi.SugarLogger.Infof("insert order_sku error:%v", err)
baseapi.SugarLogger.Infof("saveOrder insert order:%v, order_sku error:%v", order, err)
} else {
db.Commit()
if globals.GenerateLegacyJxOrder {
@@ -124,11 +124,11 @@ func (c *OrderController) saveOrder(order *model.GoodsOrder, isAdjust bool, db o
order.DuplicatedCount++
db.Update(order, "DuplicatedCount")
db.Commit()
baseapi.SugarLogger.Infof("duplicated order:%s vendorID:%d, msg received", order.VendorOrderID, order.VendorID)
baseapi.SugarLogger.Infof("saveOrder duplicated orderid:%s msg received", order.VendorOrderID)
}
} else {
db.Rollback()
globals.SugarLogger.Warnf("create order:%v, error:%v", order, err)
globals.SugarLogger.Warnf("saveOrder create order:%v, error:%v", order, err)
}
return err
}
@@ -166,11 +166,11 @@ func (c *OrderController) updateOrderSkuOtherInfo(orderSkus []*model.OrderSku, d
if jxskuid, ok := skumapper[v.VendorSkuID]; ok {
v.JxSkuID = int(utils.Str2Int64(jxskuid))
} else {
globals.SugarLogger.Infof("can not find sku map:%v", v.VendorSkuID)
globals.SugarLogger.Infof("updateOrderSkuOtherInfo can not find sku map:%v", v)
}
}
} else {
globals.SugarLogger.Errorf("can not get sku info for vendorID:%d, vendorOrderID:%s, num:%d, error:%v", orderSkus[0].VendorID, orderSkus[0].VendorOrderID, num, err)
globals.SugarLogger.Errorf("updateOrderSkuOtherInfo can not get sku info for orderID:%s, num:%d, error:%v", orderSkus[0].VendorOrderID, num, err)
}
return err
}
@@ -198,7 +198,7 @@ func (c *OrderController) updateOrderOtherInfo(order *model.GoodsOrder, db orm.O
if num, err := db.Raw(sql, utils.Str2Int64(order.VendorStoreID)).ValuesList(&lists); err == nil && num == 1 {
order.JxStoreID = int(utils.Str2Int64(lists[0][0].(string)))
} else {
globals.SugarLogger.Errorf("can not find store info for vendorID:%d, store:%s, num:%d, error:%v", order.VendorID, order.VendorStoreID, num, err)
globals.SugarLogger.Errorf("updateOrderOtherInfo can not find store info for orderID:%s, store:%s, num:%d, error:%v", order.VendorOrderID, order.VendorStoreID, num, err)
}
err = c.updateOrderSkuOtherInfo(order.Skus, db)
return err
@@ -221,7 +221,7 @@ func (c *OrderController) addOrderStatus(orderStatus *model.OrderStatus, db orm.
utils.CallFuncLogError(func() error {
_, err = db.QueryTable("goods_order").Filter("vendor_order_id", orderStatus.VendorOrderID).Filter("vendor_id", orderStatus.VendorID).Update(params)
return err
}, "update order, status:%v", orderStatus)
}, "addOrderStatus update order, status:%v", orderStatus)
}
return isDuplicated, err
}
@@ -249,6 +249,6 @@ func (c *OrderController) UpdateWaybillVendorID(bill *model.Waybill) (err error)
utils.CallFuncLogError(func() error {
_, err = db.QueryTable("goods_order").Filter("vendor_order_id", bill.VendorOrderID).Filter("vendor_id", bill.OrderVendorID).Update(params)
return err
}, "update order, bill%v", bill)
}, "UpdateWaybillVendorID update order, bill:%v", bill)
return err
}

View File

@@ -166,7 +166,7 @@ func (c *OrderController) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Orm
_, err = db.Insert(jxorder)
if err != nil {
db.Rollback()
globals.SugarLogger.Infof("insert jxorder error:%v", err)
globals.SugarLogger.Infof("insert jxorder:%v error:%v", jxorder, 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, sku_img) VALUES"
@@ -178,7 +178,7 @@ func (c *OrderController) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Orm
sql = sql[:len(sql)-1] + ";"
if _, err = db.Raw(sql, params...).Exec(); err != nil {
db.Rollback()
baseapi.SugarLogger.Infof("insert jxordersku error:%v", err)
baseapi.SugarLogger.Infof("insert jxordersku jxorder:%v error:%v", jxorder, err)
} else {
db.Commit()
vendorOrderID := utils.Str2Int64(order.VendorOrderID)
@@ -230,7 +230,7 @@ func (c *OrderController) legacyJxOrderStatusChanged(status *model.OrderStatus,
return err
}, "legacyJxOrderStatusChanged")
} else {
globals.SugarLogger.Infof("read legacyJxOrder error:%v, orderID:%d", err, jxorder.OrderId)
globals.SugarLogger.Infof("read legacyJxOrder orderID:%d error:%v, ", jxorder.OrderId, err)
}
return err
}
@@ -273,7 +273,7 @@ func (c *WaybillController) legacyWaybillStatusChanged(bill *model.Waybill, db o
return err
}, "legacyJxOrderStatusChanged")
} else {
globals.SugarLogger.Infof("read legacyJxOrder error:%v, orderID:%d", err, jxorder.OrderId)
globals.SugarLogger.Infof("read legacyJxOrder, orderID:%d error:%v", jxorder.OrderId, err)
}
return err
}

View File

@@ -35,7 +35,7 @@ func (w *WaybillController) LoadPendingWaybills() []*model.Waybill {
`, time.Now().Add(-pendingOrderGapMax), model.WaybillStatusEndBegin,
time.Now().Add(-pendingOrderGapMax), model.WaybillStatusEndBegin).QueryRows(&bills)
if err != nil {
globals.SugarLogger.Warnf("init load pending waybills error:%v", err)
globals.SugarLogger.Warnf("LoadPendingWaybills load pending waybills error:%v", err)
return nil
}
return bills
@@ -47,15 +47,16 @@ func (w *WaybillController) onWaybillNew(bill *model.Waybill, db orm.Ormer) (isD
bill.ID = 0
bill.WaybillCreatedAt = bill.StatusTime
bill.WaybillFinishedAt = utils.DefaultTimeValue
globals.SugarLogger.Debugf("onWaybillNew bill:%v", bill)
created, _, err2 := db.ReadOrCreate(bill, "VendorWaybillID", "WaybillVendorID")
if err = err2; err == nil {
if !created {
bill.DuplicatedCount++
db.Update(bill, "DuplicatedCount")
globals.SugarLogger.Infof("duplicated bill:%v vendorID:%d, msg received", bill.VendorWaybillID, bill.WaybillVendorID)
globals.SugarLogger.Infof("onWaybillNew duplicated bill:%v msg received", bill)
}
} else {
globals.SugarLogger.Warnf("create bill:%v, error:%v", bill, err)
globals.SugarLogger.Warnf("onWaybillNew create bill:%v, error:%v", bill, err)
}
}
return isDuplicated, err
@@ -106,7 +107,7 @@ func (w *WaybillController) addWaybillStatus(bill *model.Waybill, db orm.Ormer,
utils.CallFuncLogError(func() error {
_, err = db.QueryTable("waybill").Filter("vendor_waybill_id", bill.VendorWaybillID).Filter("waybill_vendor_id", bill.WaybillVendorID).Update(params)
return err
}, "update waybill status, bill:%v", bill)
}, "addWaybillStatus update waybill status, bill:%v", bill)
}
return isDuplicated, err
}

View File

@@ -60,39 +60,45 @@ func GetWeixinOpenIDsFromStoreID(storeID int) (retVal []string) {
WHERE jxstoreid = ? AND parentid = -1 AND openid IS NOT NULL
`, storeID, storeID).ValuesList(&lists)
if err != nil || num == 0 {
globals.SugarLogger.Infof("can not find openid for store:%d, num:%d, error:%v", storeID, num, err)
globals.SugarLogger.Infof("GetWeixinOpenIDsFromStoreID can not find openid for store:%d, num:%d, error:%v", storeID, num, err)
return retVal
}
for _, v := range lists {
retVal = append(retVal, v[0].(string))
}
// todo调试只发给我
globals.SugarLogger.Debugf("GetWeixinOpenIDsFromStoreID store:%d, openids:%v", storeID, retVal)
if storeID == 100146 {
retVal = []string{"oYN_ust9hXKEvEv0X6Mq6nlAWs_E"}
} else {
retVal = []string{}
if !globals.ReallyCallPlatformAPI {
// todo调试只发给我
globals.SugarLogger.Debugf("GetWeixinOpenIDsFromStoreID store:%d, openids:%v", storeID, retVal)
if storeID == 100146 {
retVal = []string{"oYN_ust9hXKEvEv0X6Mq6nlAWs_E"}
} else {
retVal = nil
}
}
return retVal
}
func SendMsgToStore(storeID int, templateID, downloadURL string, data interface{}) (err error) {
openIDs := GetWeixinOpenIDsFromStoreID(storeID)
errCount := 0
successCount := 0
for _, openID := range openIDs {
err2 := api.WeixinAPI.MessageTemplateSend(openID, templateID, downloadURL, nil, data)
if err2 != nil {
if err2 := api.WeixinAPI.MessageTemplateSend(openID, templateID, downloadURL, nil, data); err2 == nil {
successCount++
} else {
err = err2
errCount++
}
}
if errCount < len(openIDs) {
if successCount > 0 {
err = nil // 只要成功一个都当成成功
}
if err != nil {
globals.SugarLogger.Debugf("SendMsgToStore all failed storeID:%d, templateID:%s, error:%v", storeID, templateID, err)
}
return err
}
func NotifyNewOrder(order *model.GoodsOrder) (err error) {
globals.SugarLogger.Debugf("NotifyNewOrder orderID:%s", order.VendorOrderID)
sb := new(strings.Builder)
sb.WriteString("老板,")
sb.WriteString(order.ConsigneeName)
@@ -136,6 +142,7 @@ func NotifyNewOrder(order *model.GoodsOrder) (err error) {
}
func NotifyWaybillStatus(bill *model.Waybill, order *model.GoodsOrder) error {
globals.SugarLogger.Debugf("NotifyWaybillStatus bill:%v", bill)
var title string
var templateID string
remark := ""
@@ -149,14 +156,14 @@ func NotifyWaybillStatus(bill *model.Waybill, order *model.GoodsOrder) error {
}
titleColor = WX_HIGHLEVEL_TEMPLATE_COLOR
remark = FormatDeliveryTime(order)
title = fmt.Sprintf("%s %d#订单长时间无人配送,我们已安排%s配送员%s电话号码%s负责配送。^_^", model.VendorChineseNames[bill.OrderVendorID], order.OrderSeq, model.VendorChineseNames[bill.WaybillVendorID], bill.CourierName, bill.CourierMobile)
title = fmt.Sprintf("%s %d订单长时间无人配送,我们已安排%s配送员%s电话号码%s负责配送。^_^", model.VendorChineseNames[bill.OrderVendorID], order.OrderSeq, model.VendorChineseNames[bill.WaybillVendorID], bill.CourierName, bill.CourierMobile)
case model.WaybillStatusDelivered:
if bill.WaybillVendorID == model.VendorIDMTPS {
templateID = WX_MTPS_DELIVERY_DONE_TEMPLATE_ID
} else if bill.WaybillVendorID == model.VendorIDDada {
templateID = WX_DADA_DELIVERY_DONE_TEMPLATE_ID
}
titleColor = venderColors[bill.WaybillVendorID]
titleColor = venderColors[bill.OrderVendorID]
title = fmt.Sprintf("%s 第%d号订单的配送完成", model.VendorChineseNames[bill.OrderVendorID], order.OrderSeq)
}
if templateID != "" {

View File

@@ -70,7 +70,7 @@ func init() {
// 以下是订单
func (s *DefScheduler) OnOrderNew(order *model.GoodsOrder) (err error) {
globals.SugarLogger.Debugf("OnOrderNew, order:%v", order)
globals.SugarLogger.Debugf("OnOrderNew, orderID:%s", order.VendorOrderID)
watchInfo := &WatchOrderInfo{
order: order,
}

View File

@@ -80,7 +80,6 @@ func (o *OrderController) NewOrder(msg *elmapi.CallbackMsg, orderId string, user
retVal = errResponseDBError
} else {
if created || rec.Type < msg.Type {
// todo 回调消息里已经有详情,这里是否有必要再取一次?
result, err := api.ElmAPI.GetOrder(orderId)
if err != nil {
retVal = errResponseCallELMAPIError

View File

@@ -133,11 +133,11 @@ func (f *API) AccessFreshFood(apiStr string, params url.Values) error {
if err == nil && response != nil && response.StatusCode == 200 {
break
} else {
globals.SugarLogger.Infof("Call %s error:%v, response: %v", fullURL, err, response)
globals.SugarLogger.Infof("AccessFreshFood Call %s error:%v, response: %v", fullURL, err, response)
}
}
if err != nil || response.StatusCode != 200 {
globals.SugarLogger.Errorf("Call %s error:%v, url:%s, response: %v", fullURL, err, fullURL, response)
globals.SugarLogger.Errorf("AccessFreshFood Call %s error:%v, url:%s, response: %v", fullURL, err, fullURL, response)
if err != nil {
return err
}

View File

@@ -28,7 +28,6 @@ func InitOrder() {
orderMsgChan = make(chan jdapi.CallbackOrderMsg, 128)
go orderMsgHandlerRoutine()
// todo 这样操作在有多个进程时,会有问题
// 另外当前这个模式可能会出现同一个订单的消息虽然远程推送过来顺序是对的但经过处理后推送到freshfood时乱序因为每个消息的处理时间是不确定的
handlePendingOrderMsg()
}
@@ -161,7 +160,6 @@ func newOrder(msg *jdapi.CallbackOrderMsg) error {
rec.Msg, _ = result["msg"].(string)
rec.Success, _ = result["success"].(bool)
// todo
rec.CityName = "all"
data := result["data"].(map[string]interface{})