From f84d9c46574a2cd663105859035bc17891270923 Mon Sep 17 00:00:00 2001 From: wangpengfei <274878379@qq.com> Date: 星期一, 14 八月 2023 10:41:54 +0800 Subject: [PATCH] Merge branch 'master' into fly --- service/salesRefund.go | 59 +++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 49 insertions(+), 10 deletions(-) diff --git a/service/salesRefund.go b/service/salesRefund.go index 5efa2e1..1403dac 100644 --- a/service/salesRefund.go +++ b/service/salesRefund.go @@ -1,6 +1,7 @@ package service import ( + "aps_crm/constvar" "aps_crm/model" "aps_crm/pkg/ecode" ) @@ -8,11 +9,36 @@ type SalesRefundService struct{} func (SalesRefundService) AddSalesRefund(salesRefund *model.SalesRefund) int { - err := model.NewSalesRefundSearch().Create(salesRefund) + salesReturnRecord, err := model.NewSalesReturnSearch().SetId(salesRefund.SourceId).Find() + if err != nil { + return ecode.SalesReturnNotExist + } + + if code := CheckProduct(salesReturnRecord.Products, salesRefund.Products); code != ecode.OK { + return code + } + + err = model.NewSalesRefundSearch().Create(salesRefund) if err != nil { return ecode.SalesRefundExist } + return ecode.OK +} + +func CheckProduct(returnProducts, refundProducts []*model.Product) int { + returnProductsMap := make(map[uint]*model.Product, len(returnProducts)) + for _, product := range returnProducts { + returnProductsMap[product.Id] = product + } + for _, product := range refundProducts { + if returnProductsMap[product.Id] == nil { + return ecode.SalesRefundProductNotExist + } + if returnProductsMap[product.Id].Price != product.Price || product.Amount.GreaterThan(returnProductsMap[product.Id].Amount) { + return ecode.SalesRefundProductPriceOrAmountErr + } + } return ecode.OK } @@ -29,20 +55,20 @@ return ecode.OK } -func (SalesRefundService) GetSalesRefundList() ([]*model.SalesRefund, int) { - list, err := model.NewSalesRefundSearch().FindAll() - if err != nil { - return nil, ecode.SalesRefundListErr - } - - return list, ecode.OK -} - func (SalesRefundService) UpdateSalesRefund(salesRefund *model.SalesRefund) int { // check salesRefund exist _, err := model.NewSalesRefundSearch().SetId(salesRefund.Id).Find() if err != nil { return ecode.SalesRefundNotExist + } + + salesReturnRecord, err := model.NewSalesReturnSearch().SetId(salesRefund.SourceId).Find() + if err != nil { + return ecode.SalesReturnNotExist + } + + if code := CheckProduct(salesReturnRecord.Products, salesRefund.Products); code != ecode.OK { + return code } err = model.NewSalesRefundSearch().SetId(salesRefund.Id).Update(salesRefund) @@ -52,3 +78,16 @@ return ecode.OK } + +func (SalesRefundService) GetSalesRefundList(page, pageSize int, keywordType constvar.SalesRefundKeywordType, keyword string) ([]*model.SalesRefund, int64, int) { + // get contact list + contacts, total, err := model.NewSalesRefundSearch(). + SetKeywordType(keywordType). + SetKeyword(keyword). + SetPreload(true). + SetPage(page, pageSize).FindAll() + if err != nil { + return nil, 0, ecode.SalesRefundListErr + } + return contacts, total, ecode.OK +} -- Gitblit v1.8.0