diff --git a/business/jxcallback/orderman/order_afs.go b/business/jxcallback/orderman/order_afs.go index 04d44140c..fa7d1ab6c 100644 --- a/business/jxcallback/orderman/order_afs.go +++ b/business/jxcallback/orderman/order_afs.go @@ -235,15 +235,23 @@ func (c *OrderManager) addAfsOrderStatus(db *dao.DaoDB, orderStatus *model.Order } } } - - utils.CallFuncLogError(func() error { - _, err = dao.UpdateEntity(db, order, updateFields...) - return err - }, "addAfsOrderStatus update orderID:%s, status:%v", order.VendorOrderID, orderStatus) + _, err = dao.UpdateEntity(db, order, updateFields...) + //utils.CallFuncLogError(func() error { + // _, err = dao.UpdateEntity(db, order, updateFields...) + // return err + //}, "addAfsOrderStatus update orderID:%s, status:%v", order.VendorOrderID, orderStatus) } else { isDuplicated = true } } else { + // 这是发现有部分订单已经完成,但是没有完成时间影响到导出结果错误 + if model.IsAfsOrderFinalStatus(orderStatus.Status) || orderStatus.Status == model.AfsOrderStatusNew && order.VendorID == model.VendorIDMTWM { + if afsOrderObj, _ := partner.CurOrderManager.LoadAfsOrder(orderStatus.VendorOrderID, orderStatus.VendorID); afsOrderObj != nil { + afsOrderObj.AfsFinishedAt = time.Now() + afsOrderObj.Status = orderStatus.Status + dao.UpdateEntity(db, afsOrderObj, "AfsFinishedAt", "Status") + } + } if dao.IsNoRowsError(err) { // todo 消息错序 err = nil } else { diff --git a/business/jxcallback/orderman/orderman_ext.go b/business/jxcallback/orderman/orderman_ext.go index 04e6b65f0..d25f2c0ae 100644 --- a/business/jxcallback/orderman/orderman_ext.go +++ b/business/jxcallback/orderman/orderman_ext.go @@ -452,15 +452,20 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS var order *model.GoodsOrderExt var orders2 []*model.GoodsOrderExt for _, v := range orders { - globals.SugarLogger.Debugf("========orders := %s", utils.Format4Output(orders, false)) - globals.SugarLogger.Debugf("========afsSkuMap := %s", utils.Format4Output(afsSkuMap, false)) if afsInfo := afsSkuMap[jxutils.ComposeUniversalOrderID(v.VendorOrderID, v.VendorID)]; afsInfo != nil { - if afsInfo[v.SkuID] != nil && afsInfo[v.SkuID].Count > 0 { + if afsInfo[v.SkuID] != nil && afsInfo[v.SkuID].Count >= 0 { minus := afsInfo[v.SkuID].Count if minus > v.SkuCount2 { minus = v.SkuCount2 } v.SkuCount2 -= minus + if minus == 0 { // 有售后单,且通过,部分商品缺重等情况 + if v.EarningType == model.EarningTypeQuote { + v.SkuShopPrice = v.SkuShopPrice - utils.Float64TwoInt(float64(afsInfo[v.SkuID].UserMoney)/float64(v.SkuSalePrice)*float64(v.SkuShopPrice)) + v.SkuSalePrice = v.SkuSalePrice - int(afsInfo[v.SkuID].UserMoney) + v.SkuEarningPrice = v.SkuEarningPrice - utils.Float64TwoInt(float64(afsInfo[v.SkuID].UserMoney)/float64(v.SkuSalePrice)*float64(v.SkuEarningPrice)) + } + } afsInfo[v.SkuID].Count -= minus } } @@ -485,9 +490,9 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS skuStr = strings.Join([]string{ utils.Int2Str(v.SkuID), utils.Int2Str(v.SkuCount2), - utils.Int2Str(v.SkuShopPrice), - utils.Int2Str(v.SkuSalePrice), - utils.Int2Str(earningPrice), + utils.Int2Str(v.SkuShopPrice), // 本地结算金额 + utils.Int2Str(v.SkuSalePrice), // 售卖金额 + utils.Int2Str(earningPrice), // }, ",") } else { // 扣点 skuStr = strings.Join([]string{ @@ -1293,12 +1298,13 @@ func (c *OrderManager) getAfsOrderSkuInfo4ExportOrders(ctx *jxcontext.Context, f SELECT t2.* FROM afs_order t1 JOIN order_sku_financial t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id AND t2.is_afs_order = 1 AND t1.afs_order_id = t2.afs_order_id - WHERE t1.afs_finished_at >= ? AND t1.afs_finished_at <= ? AND t1.status = ? + WHERE t1.afs_finished_at >= ? AND t1.afs_finished_at <= ? AND (t1.status = ? OR t1.status = ?) ` sqlParams := []interface{}{ fromDate, toDate, model.AfsOrderStatusFinished, + model.AfsOrderStatusNew, } var skus []*model.OrderSkuFinancial if err = dao.GetRows(dao.GetDB(), &skus, sql, sqlParams...); err == nil { @@ -1313,6 +1319,7 @@ func (c *OrderManager) getAfsOrderSkuInfo4ExportOrders(ctx *jxcontext.Context, f skuMap[key][skuID] = v } else { skuMap[key][skuID].Count += v.Count + skuMap[key][skuID].UserMoney += v.UserMoney } } } diff --git a/business/partner/purchase/mtwm/order_afs.go b/business/partner/purchase/mtwm/order_afs.go index 2f3d20fad..2c0e4a01a 100644 --- a/business/partner/purchase/mtwm/order_afs.go +++ b/business/partner/purchase/mtwm/order_afs.go @@ -197,20 +197,6 @@ func (c *PurchaseHandler) onAfsOrderMsg(msg *mtwmapi.CallbackMsg) (retVal *mtwma } // 已经审核过的售后单子 if orderStatus.Status == model.AfsOrderStatusNew || orderStatus.Status == model.AfsOrderStatusFinished { - // 平台结算金额 - /*vendorSettle, err := mtmApi.OrderGetOrderDetail(utils.Str2Int64(order.VendorOrderID), true) // 退款列表 - if err == nil { - if poiReceiveDetailStr := utils.Interface2String(vendorSettle["poi_receive_detail"]); poiReceiveDetailStr != "" { - var poiReceiveDetail *mtwmapi.PoiReceiveDetailInfo - utils.UnmarshalUseNumber([]byte(poiReceiveDetailStr), &poiReceiveDetail) - if poiReceiveDetail != nil { - } - } - } else { - globals.SugarLogger.Debugf("美团平台售后获取结算信息错误: = %v", err) - ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "2452A93EEB9111EC9B06525400E86DC0", "美团平台售后获取结算信息错误", fmt.Sprintf("orderid := %d,%s", model.VendorIDMTWM, order.VendorOrderID)) - }*/ - // 售后金额 refundDetail, err := mtmApi.GetOrderRefundDetail(utils.Str2Int64(order.VendorOrderID), 0) if err == nil && len(refundDetail) > 0 {