From 74ab043dd37ff3135a27e7d589be7c04b2e31519 Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Thu, 2 Sep 2021 15:31:30 +0800 Subject: [PATCH] aa --- .../jxcallback/scheduler/defsch/defsch.go | 37 ++++++++++++++++++- business/model/dao/store.go | 27 ++++++++++++++ business/partner/delivery/dada/waybill.go | 4 ++ 3 files changed, 67 insertions(+), 1 deletion(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 54a056dbf..eae125a94 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -554,6 +554,11 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo } } } + //if !model.IsWaybillPlatformOwn(bill) { + // if storeDetail, err2 := dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, ""); err2 == nil { + // s.updateBrandAccount(storeDetail, bill) + // } + //} } flag2Clear := model.WaybillVendorID2Mask(bill.WaybillVendorID) if order.DeliveryFlag&flag2Clear != 0 { @@ -1371,7 +1376,33 @@ func (s *DefScheduler) updateStoreAccount(order *model.GoodsOrder, bill *model.W func (s *DefScheduler) updateBrandAccount(store *dao.StoreDetail, bill *model.Waybill) { globals.SugarLogger.Debugf("updateBrandAccount bill: %v", utils.Format4Output(bill, true)) - partner.CurStoreAcctManager.InsertBrandBill(jxcontext.AdminCtx, store.BrandID, int(bill.DesiredFee), model.BrandBillTypeExpend, model.BrandBillFeeTypeDelivery, bill.VendorOrderID) + brandBills, _ := dao.GetBrandBill(dao.GetDB(), store.BrandID, bill.VendorOrderID, model.BrandBillTypeExpend, model.BrandBillFeeTypeDelivery) + if len(brandBills) == 0 { + partner.CurStoreAcctManager.InsertBrandBill(jxcontext.AdminCtx, store.BrandID, int(bill.DesiredFee), model.BrandBillTypeExpend, model.BrandBillFeeTypeDelivery, bill.VendorOrderID) + } else { + //可能有对冲的 + sum := 0 + for _, v := range brandBills { + sum += v.Price + } + if sum == 0 { + partner.CurStoreAcctManager.InsertBrandBill(jxcontext.AdminCtx, store.BrandID, int(bill.DesiredFee), model.BrandBillTypeExpend, model.BrandBillFeeTypeDelivery, bill.VendorOrderID) + } + } +} + +func (s *DefScheduler) reverseBrandAccount(store *dao.StoreDetail, bill *model.Waybill) { + globals.SugarLogger.Debugf("reverseBrandAccount bill: %v", utils.Format4Output(bill, true)) + brandBills, _ := dao.GetBrandBill(dao.GetDB(), store.BrandID, bill.VendorOrderID, model.BrandBillTypeExpend, model.BrandBillFeeTypeDelivery) + if len(brandBills) > 0 { + sum := 0 + for _, v := range brandBills { + sum += v.Price + } + if sum > 0 { + partner.CurStoreAcctManager.InsertBrandBill(jxcontext.AdminCtx, store.BrandID, int(bill.DesiredFee), model.BrandBillTypeExpend, model.BrandBillFeeTypeDelivery, bill.VendorOrderID) + } + } } func (s *DefScheduler) updateBillsInfo(savedOrderInfo *WatchOrderInfo, bill *model.Waybill) (isBillExist bool) { @@ -1539,6 +1570,10 @@ func (s *DefScheduler) ProxyCancelWaybill(order *model.GoodsOrder, bill *model.W if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 { if err = s.CancelWaybill(bill, cancelReasonID, cancelReason); err != nil { partner.CurOrderManager.OnOrderMsg(order, "取消三方运单失败", err.Error()) + } else { + if storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), jxutils.GetSaleStoreIDFromOrder(order), order.VendorID, order.VendorOrgCode); storeDetail != nil { + s.reverseBrandAccount(storeDetail, bill) + } } return err } diff --git a/business/model/dao/store.go b/business/model/dao/store.go index 62ad3e3e0..fe8f91130 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -1369,3 +1369,30 @@ func GetBrandBalance(db *DaoDB, brandID int) (result int, err error) { err = GetRow(db, &balance, sql, sqlParams) return balance.Balance, err } + +func GetBrandBill(db *DaoDB, brandID int, vendorOrderID string, billType, feeType int) (result []*model.BrandBill, err error) { + sql := ` + SELECT * + FROM brand_bill + WHERE 1 = 1 + ` + sqlParams := []interface{}{} + if brandID != 0 { + sql += " AND brand_id = ?" + sqlParams = append(sqlParams, brandID) + } + if billType != 0 { + sql += " AND bill_type = ?" + sqlParams = append(sqlParams, billType) + } + if feeType != 0 { + sql += " AND fee_type = ?" + sqlParams = append(sqlParams, feeType) + } + if vendorOrderID != "" { + sql += " AND vendor_order_id = ?" + sqlParams = append(sqlParams, vendorOrderID) + } + err = GetRows(db, &result, sql, sqlParams) + return result, err +} diff --git a/business/partner/delivery/dada/waybill.go b/business/partner/delivery/dada/waybill.go index 40372672e..3302639d2 100644 --- a/business/partner/delivery/dada/waybill.go +++ b/business/partner/delivery/dada/waybill.go @@ -77,6 +77,10 @@ func (c *DeliveryHandler) onWaybillMsg(msg *dadaapi.CallbackMsg) (retVal *dadaap case dadaapi.OrderStatusAccepted: order.Status = model.WaybillStatusAccepted order.Remark = order.CourierName + "," + order.CourierMobile + if dadaOrder, err := api.DadaAPI.QueryOrderInfo(msg.OrderID); err == nil { + order.ActualFee = jxutils.StandardPrice2Int(dadaOrder.ActualFee) + order.DesiredFee = jxutils.StandardPrice2Int(dadaOrder.DeliveryFee) + } case dadaapi.OrderStatusDelivering: order.Status = model.WaybillStatusDelivering case dadaapi.OrderStatusFinished: