From a86df1054649f0594e4c77174fd254b8abd800ca Mon Sep 17 00:00:00 2001
From: wangpengfei <274878379@qq.com>
Date: 星期二, 15 八月 2023 11:22:10 +0800
Subject: [PATCH] fix
---
service/salesRefund.go | 49 ++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 44 insertions(+), 5 deletions(-)
diff --git a/service/salesRefund.go b/service/salesRefund.go
index 78bd789..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
}
@@ -36,6 +62,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
@@ -44,11 +79,15 @@
return ecode.OK
}
-func (SalesRefundService) GetSalesRefundList(page, pageSize int, keyword string) ([]*model.SalesRefund, int) {
+func (SalesRefundService) GetSalesRefundList(page, pageSize int, keywordType constvar.SalesRefundKeywordType, keyword string) ([]*model.SalesRefund, int64, int) {
// get contact list
- contacts, err := model.NewSalesRefundSearch().SetKeyword(keyword).SetPage(page, pageSize).FindAll()
+ contacts, total, err := model.NewSalesRefundSearch().
+ SetKeywordType(keywordType).
+ SetKeyword(keyword).
+ SetPreload(true).
+ SetPage(page, pageSize).FindAll()
if err != nil {
- return nil, ecode.SalesRefundListErr
+ return nil, 0, ecode.SalesRefundListErr
}
- return contacts, ecode.OK
+ return contacts, total, ecode.OK
}
--
Gitblit v1.8.0