From f264456b1e4fd284f53ecc4c70a3b951578bfd2d Mon Sep 17 00:00:00 2001 From: wangpengfei <274878379@qq.com> Date: 星期五, 18 八月 2023 17:13:05 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- service/salesDetails.go | 25 ++++++++++++++++++++++++- 1 files changed, 24 insertions(+), 1 deletions(-) diff --git a/service/salesDetails.go b/service/salesDetails.go index fb9b9dd..a2e5ad8 100644 --- a/service/salesDetails.go +++ b/service/salesDetails.go @@ -5,6 +5,7 @@ "aps_crm/model" "aps_crm/pkg/ecode" "github.com/shopspring/decimal" + "gorm.io/gorm" ) type SalesDetailsService struct{} @@ -71,7 +72,29 @@ salesDetails.AmountReceivable = salesDetails.AmountTotal.Sub(salesDetails.AmountReceived) salesDetails.AmountUnInvoiced = salesDetails.AmountTotal.Sub(salesDetails.AmountInvoiced) - err = model.NewSalesDetailsSearch().SetId(salesDetails.Id).Update(salesDetails) + err = model.WithTransaction(func(db *gorm.DB) error { + err = model.NewSalesDetailsSearch().SetId(salesDetails.Id).Update(salesDetails) + if err != nil { + return err + } + err = model.NewProductSearch(db).SetIds(removedProductIds).Delete() + if err != nil { + return err + } + err = model.NewProductSearch(db).CreateBatch(newProducts) + if err != nil { + return err + } + var rel []*model.SalesDetailsProduct + for _, p := range newProducts { + rel = append(rel, &model.SalesDetailsProduct{ + SalesDetailsId: salesDetails.Id, + ProductId: p.Id, + }) + } + return model.NewSalesDetailsProductSearch().CreateBatch(rel) + }) + if err != nil { return ecode.SalesDetailsSetErr } -- Gitblit v1.8.0