From d87a424d3e1737a730b4c503ac1dbb74a176fe58 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期三, 16 八月 2023 11:23:39 +0800 Subject: [PATCH] 退货单批量删除返回失败的 --- service/salesReturn.go | 59 +++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 49 insertions(+), 10 deletions(-) diff --git a/service/salesReturn.go b/service/salesReturn.go index b6839ea..231d7d3 100644 --- a/service/salesReturn.go +++ b/service/salesReturn.go @@ -4,11 +4,20 @@ "aps_crm/constvar" "aps_crm/model" "aps_crm/pkg/ecode" + "github.com/shopspring/decimal" + "gorm.io/gorm" ) type SalesReturnService struct{} func (slf SalesReturnService) AddSalesReturn(salesReturn *model.SalesReturn) int { + salesReturn.AmountShouldRefund = decimal.Zero + salesReturn.AmountHasRefund = decimal.Zero + salesReturn.AmountTotal = decimal.Zero + for _, product := range salesReturn.Products { + salesReturn.AmountTotal = salesReturn.AmountTotal.Add(product.Amount.Mul(product.Price)) + } + salesReturn.AmountShouldRefund = salesReturn.AmountTotal err := model.NewSalesReturnSearch().Create(salesReturn) if err != nil { return ecode.SalesReturnExist @@ -17,33 +26,52 @@ return ecode.OK } -func (SalesReturnService) DeleteSalesReturn(id int) int { - _, err := model.NewSalesReturnSearch().SetId(id).Find() +func (slf SalesReturnService) DeleteSalesReturn(id int) int { + _, err := model.NewSalesReturnSearch().SetId(id).First() if err != nil { return ecode.SalesReturnNotExist } - - err = model.NewSalesReturnSearch().SetId(id).Delete() + err = model.WithTransaction(func(db *gorm.DB) error { + err = model.NewSalesReturnSearch().SetId(id).Delete() + if err != nil { + return err + } + err = model.NewSalesRefundSearch().SetSourceType(constvar.RefundSourceTypeSalesReturn).SetSourceId(id).Delete() + if err != nil { + return err + } + return nil + }) if err != nil { return ecode.SalesReturnNotExist } return ecode.OK } -func (SalesReturnService) BatchDeleteSalesReturn(ids []int) int { - err := model.NewSalesReturnSearch().DeleteByIds(ids) - if err != nil { - return ecode.DBErr +func (slf SalesReturnService) BatchDeleteSalesReturn(ids []int) (failIds []int, code int) { + for _, id := range ids { + code = slf.DeleteSalesReturn(id) + if code != ecode.OK { + failIds = append(failIds, id) + } } - return ecode.OK + return failIds, code } func (SalesReturnService) UpdateSalesReturn(salesReturn *model.SalesReturn) int { // check salesReturn exist - _, err := model.NewSalesReturnSearch().SetId(salesReturn.Id).Find() + _, err := model.NewSalesReturnSearch().SetId(salesReturn.Id).First() if err != nil { return ecode.SalesReturnNotExist } + + salesReturn.AmountShouldRefund = decimal.Zero + salesReturn.AmountHasRefund = decimal.Zero + salesReturn.AmountTotal = decimal.Zero + for _, product := range salesReturn.Products { + salesReturn.AmountTotal = salesReturn.AmountTotal.Add(product.Amount.Mul(product.Price)) + } + salesReturn.AmountShouldRefund = salesReturn.AmountTotal err = model.NewSalesReturnSearch().SetId(salesReturn.Id).Update(salesReturn) if err != nil { @@ -66,3 +94,14 @@ } return contacts, total, ecode.OK } + +func (SalesReturnService) GetSalesReturnListByIds(ids []int) ([]*model.SalesReturn, int) { + // get contact list + salesReturns, err := model.NewSalesReturnSearch(). + SetIds(ids). + Find() + if err != nil { + return nil, ecode.SalesReturnListErr + } + return salesReturns, ecode.OK +} -- Gitblit v1.8.0