From 6e87a1f6795af50133b10fa853fd6c2d14bb698c Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期日, 13 八月 2023 15:20:27 +0800 Subject: [PATCH] 完善退款单 --- service/salesRefund.go | 36 +++++++++++++++++++++++++++++++++++- 1 files changed, 35 insertions(+), 1 deletions(-) diff --git a/service/salesRefund.go b/service/salesRefund.go index de91872..d3414df 100644 --- a/service/salesRefund.go +++ b/service/salesRefund.go @@ -8,11 +8,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 } @@ -36,6 +61,15 @@ 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) if err != nil { return ecode.SalesRefundSetErr -- Gitblit v1.8.0