zhangqian
2023-08-13 6e87a1f6795af50133b10fa853fd6c2d14bb698c
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