From 115bd9b51f5d8eade4658f844de37516486c60e7 Mon Sep 17 00:00:00 2001 From: liujiandao <274878379@qq.com> Date: 星期六, 18 十一月 2023 17:25:25 +0800 Subject: [PATCH] crm获取aps项目模块信息 --- service/salesReturn.go | 64 ++++++++++++++++++++++++++++---- 1 files changed, 56 insertions(+), 8 deletions(-) diff --git a/service/salesReturn.go b/service/salesReturn.go index 231d7d3..ab8fef5 100644 --- a/service/salesReturn.go +++ b/service/salesReturn.go @@ -3,6 +3,7 @@ import ( "aps_crm/constvar" "aps_crm/model" + "aps_crm/model/request" "aps_crm/pkg/ecode" "github.com/shopspring/decimal" "gorm.io/gorm" @@ -16,6 +17,7 @@ salesReturn.AmountTotal = decimal.Zero for _, product := range salesReturn.Products { salesReturn.AmountTotal = salesReturn.AmountTotal.Add(product.Amount.Mul(product.Price)) + product.Id = 0 } salesReturn.AmountShouldRefund = salesReturn.AmountTotal err := model.NewSalesReturnSearch().Create(salesReturn) @@ -32,11 +34,11 @@ return ecode.SalesReturnNotExist } err = model.WithTransaction(func(db *gorm.DB) error { - err = model.NewSalesReturnSearch().SetId(id).Delete() + err = model.NewSalesReturnSearch().SetOrm(db).SetId(id).Delete() if err != nil { return err } - err = model.NewSalesRefundSearch().SetSourceType(constvar.RefundSourceTypeSalesReturn).SetSourceId(id).Delete() + err = model.NewSalesRefundSearch().SetOrm(db).SetSourceType(constvar.RefundSourceTypeSalesReturn).SetSourceId(id).Delete() if err != nil { return err } @@ -73,21 +75,67 @@ } salesReturn.AmountShouldRefund = salesReturn.AmountTotal - err = model.NewSalesReturnSearch().SetId(salesReturn.Id).Update(salesReturn) + old, err := model.NewSalesReturnSearch().SetId(salesReturn.Id).SetPreload(true).First() if err != nil { - return ecode.SalesReturnSetErr + return ecode.DBErr + } + newProducts, removedProducts := NewProductsService().PickDiffProducts(salesReturn.Products, old.Products) + err = model.WithTransaction(func(db *gorm.DB) error { + err := model.NewSalesReturnSearch().SetId(salesReturn.Id).Update(salesReturn) + if err != nil { + return err + } + if len(removedProducts) > 0 { + removedProductIds := make([]uint, 0, len(removedProducts)) + for _, product := range removedProducts { + removedProductIds = append(removedProductIds, product.Id) + } + err = model.NewProductSearch(db).SetIds(removedProductIds).Delete() + if err != nil { + return err + } + } + if len(newProducts) > 0 { + for _, p := range newProducts { + p.Id = 0 + } + err = model.NewProductSearch(db).CreateBatch(newProducts) + if err != nil { + return err + } + var rel []*model.SalesReturnProduct + for _, p := range newProducts { + rel = append(rel, &model.SalesReturnProduct{ + SalesReturnId: salesReturn.Id, + ProductId: p.Id, + }) + } + err = model.NewSalesReturnProductSearch().CreateBatch(rel) + if err != nil { + return err + } + } + return nil + }) + + if err != nil { + return ecode.DBErr } return ecode.OK } -func (SalesReturnService) GetSalesReturnList(page, pageSize int, keywordType constvar.SalesReturnKeywordType, keyword string) ([]*model.SalesReturn, int64, int) { +func (SalesReturnService) GetSalesReturnList(params request.GetSalesReturnList, memberIds []int) ([]*model.SalesReturn, int64, int) { // get contact list contacts, total, err := model.NewSalesReturnSearch(). - SetKeywordType(keywordType). - SetKeyword(keyword). - SetPage(page, pageSize). + SetKeywordType(params.KeywordType). + SetKeyword(params.Keyword). + SetPage(params.Page, params.PageSize). + SetSourceId(params.SourceId). + SetSourceType(params.SourceType). + SetClientId(params.ClientId). SetPreload(true). + SetMemberIds(memberIds). FindAll() if err != nil { return nil, 0, ecode.SalesReturnListErr -- Gitblit v1.8.0