From 35edc2fddbd90831ef7bf79043871c9d8d50003d Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 29 八月 2023 19:00:46 +0800
Subject: [PATCH] fix

---
 api/v1/purchase/purchase.go         |    2 
 model/purchase/purchase.go          |    9 +
 model/purchase/purchase_products.go |    2 
 docs/swagger.yaml                   |   70 +++++++++++++
 docs/docs.go                        |  105 ++++++++++++++++++++
 docs/swagger.json                   |  105 ++++++++++++++++++++
 6 files changed, 280 insertions(+), 13 deletions(-)

diff --git a/api/v1/purchase/purchase.go b/api/v1/purchase/purchase.go
index fe6f3ac..388ddd7 100644
--- a/api/v1/purchase/purchase.go
+++ b/api/v1/purchase/purchase.go
@@ -36,12 +36,14 @@
 	var params purchaserequest.AddPurchase
 	err := c.ShouldBindJSON(&params)
 	if err != nil {
+		global.GVA_LOG.Error("Add Purchase failed", zap.Error(err))
 		response.FailWithMessage(err.Error(), c)
 		return
 	}
 
 	var purchaseRecord purchase.Purchase
 	if err := mapstructure.Decode(params.Purchase, &purchaseRecord); err != nil {
+		global.GVA_LOG.Error("Add Purchase failed", zap.Error(err))
 		response.FailWithMessage(err.Error(), c)
 		return
 	}
diff --git a/docs/docs.go b/docs/docs.go
index fb4982c..00c67da 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -8414,6 +8414,21 @@
                 "OrderStatusCompleted"
             ]
         },
+        "purchase.PriceAdjustmentType": {
+            "type": "integer",
+            "enum": [
+                1,
+                2
+            ],
+            "x-enum-comments": {
+                "PriceAdjustmentTypeAdd": "澧炲姞",
+                "PriceAdjustmentTypeSub": "鍑忓皯"
+            },
+            "x-enum-varnames": [
+                "PriceAdjustmentTypeAdd",
+                "PriceAdjustmentTypeSub"
+            ]
+        },
         "purchase.Purchase": {
             "type": "object",
             "properties": {
@@ -8449,6 +8464,10 @@
                     "description": "閲囪喘缂栧彿",
                     "type": "string"
                 },
+                "orderSource": {
+                    "description": "鍗曟嵁鏉ユ簮",
+                    "type": "string"
+                },
                 "orderType": {
                     "description": "鍗曟嵁绫诲瀷",
                     "type": "string"
@@ -8456,6 +8475,18 @@
                 "phone": {
                     "description": "鑱旂郴浜虹數璇�",
                     "type": "string"
+                },
+                "priceAdjustment": {
+                    "description": "浠锋牸璋冩暣鍊�",
+                    "type": "number"
+                },
+                "priceAdjustmentType": {
+                    "description": "浠锋牸璋冩暣绫诲瀷",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/purchase.PriceAdjustmentType"
+                        }
+                    ]
                 },
                 "purchaseType": {
                     "$ref": "#/definitions/purchase.PurchaseType"
@@ -8466,6 +8497,10 @@
                 },
                 "quantity": {
                     "description": "閲囪喘鏁伴噺",
+                    "type": "number"
+                },
+                "realTotalPrice": {
+                    "description": "鏈�缁堜环鏍�",
                     "type": "number"
                 },
                 "remark": {
@@ -8491,9 +8526,25 @@
                     "description": "渚涘簲鍟唅d",
                     "type": "integer"
                 },
+                "totalPrice": {
+                    "description": "浠风◣鍚堣",
+                    "type": "number"
+                },
                 "warehouse": {
                     "description": "鏀惰揣浠撳簱",
                     "type": "string"
+                },
+                "wholeDiscount": {
+                    "description": "鏁村崟鎶樻墸鍊�",
+                    "type": "number"
+                },
+                "wholeDiscountType": {
+                    "description": "鏁村崟鎶樻墸绫诲瀷",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/purchase.WholeDiscountType"
+                        }
+                    ]
                 }
             }
         },
@@ -8515,9 +8566,6 @@
                 "price": {
                     "description": "閲囪喘鍗曚环",
                     "type": "number"
-                },
-                "product": {
-                    "$ref": "#/definitions/test.Product"
                 },
                 "productId": {
                     "description": "浜у搧id",
@@ -8562,6 +8610,21 @@
                 }
             }
         },
+        "purchase.WholeDiscountType": {
+            "type": "integer",
+            "enum": [
+                1,
+                2
+            ],
+            "x-enum-comments": {
+                "WholeDiscountTypeDiscount": "鐩存帴闄嶄环",
+                "WholeDiscountTypePercent": "鐧惧垎姣旈檷浠�"
+            },
+            "x-enum-varnames": [
+                "WholeDiscountTypePercent",
+                "WholeDiscountTypeDiscount"
+            ]
+        },
         "purchaserequest.AddPurchase": {
             "type": "object",
             "properties": {
@@ -8603,9 +8666,29 @@
                     "description": "鑱旂郴浜虹數璇�",
                     "type": "string"
                 },
+                "priceAdjustment": {
+                    "description": "浠锋牸璋冩暣鍊�",
+                    "type": "number"
+                },
+                "priceAdjustmentType": {
+                    "description": "浠锋牸璋冩暣绫诲瀷",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/purchase.PriceAdjustmentType"
+                        }
+                    ]
+                },
                 "purchaseTypeId": {
                     "description": "閲囪喘绫诲瀷id",
                     "type": "integer"
+                },
+                "quantity": {
+                    "description": "閲囪喘鏁伴噺",
+                    "type": "number"
+                },
+                "realTotalPrice": {
+                    "description": "鏈�缁堜环鏍�",
+                    "type": "number"
                 },
                 "remark": {
                     "description": "澶囨敞",
@@ -8626,6 +8709,22 @@
                 "supplierId": {
                     "description": "渚涘簲鍟唅d",
                     "type": "integer"
+                },
+                "totalPrice": {
+                    "description": "浠风◣鍚堣",
+                    "type": "number"
+                },
+                "wholeDiscount": {
+                    "description": "鏁村崟鎶樻墸鍊�",
+                    "type": "number"
+                },
+                "wholeDiscountType": {
+                    "description": "鏁村崟鎶樻墸绫诲瀷",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/purchase.WholeDiscountType"
+                        }
+                    ]
                 }
             }
         },
diff --git a/docs/swagger.json b/docs/swagger.json
index 6e56b99..af79a49 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -8405,6 +8405,21 @@
                 "OrderStatusCompleted"
             ]
         },
+        "purchase.PriceAdjustmentType": {
+            "type": "integer",
+            "enum": [
+                1,
+                2
+            ],
+            "x-enum-comments": {
+                "PriceAdjustmentTypeAdd": "澧炲姞",
+                "PriceAdjustmentTypeSub": "鍑忓皯"
+            },
+            "x-enum-varnames": [
+                "PriceAdjustmentTypeAdd",
+                "PriceAdjustmentTypeSub"
+            ]
+        },
         "purchase.Purchase": {
             "type": "object",
             "properties": {
@@ -8440,6 +8455,10 @@
                     "description": "閲囪喘缂栧彿",
                     "type": "string"
                 },
+                "orderSource": {
+                    "description": "鍗曟嵁鏉ユ簮",
+                    "type": "string"
+                },
                 "orderType": {
                     "description": "鍗曟嵁绫诲瀷",
                     "type": "string"
@@ -8447,6 +8466,18 @@
                 "phone": {
                     "description": "鑱旂郴浜虹數璇�",
                     "type": "string"
+                },
+                "priceAdjustment": {
+                    "description": "浠锋牸璋冩暣鍊�",
+                    "type": "number"
+                },
+                "priceAdjustmentType": {
+                    "description": "浠锋牸璋冩暣绫诲瀷",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/purchase.PriceAdjustmentType"
+                        }
+                    ]
                 },
                 "purchaseType": {
                     "$ref": "#/definitions/purchase.PurchaseType"
@@ -8457,6 +8488,10 @@
                 },
                 "quantity": {
                     "description": "閲囪喘鏁伴噺",
+                    "type": "number"
+                },
+                "realTotalPrice": {
+                    "description": "鏈�缁堜环鏍�",
                     "type": "number"
                 },
                 "remark": {
@@ -8482,9 +8517,25 @@
                     "description": "渚涘簲鍟唅d",
                     "type": "integer"
                 },
+                "totalPrice": {
+                    "description": "浠风◣鍚堣",
+                    "type": "number"
+                },
                 "warehouse": {
                     "description": "鏀惰揣浠撳簱",
                     "type": "string"
+                },
+                "wholeDiscount": {
+                    "description": "鏁村崟鎶樻墸鍊�",
+                    "type": "number"
+                },
+                "wholeDiscountType": {
+                    "description": "鏁村崟鎶樻墸绫诲瀷",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/purchase.WholeDiscountType"
+                        }
+                    ]
                 }
             }
         },
@@ -8506,9 +8557,6 @@
                 "price": {
                     "description": "閲囪喘鍗曚环",
                     "type": "number"
-                },
-                "product": {
-                    "$ref": "#/definitions/test.Product"
                 },
                 "productId": {
                     "description": "浜у搧id",
@@ -8553,6 +8601,21 @@
                 }
             }
         },
+        "purchase.WholeDiscountType": {
+            "type": "integer",
+            "enum": [
+                1,
+                2
+            ],
+            "x-enum-comments": {
+                "WholeDiscountTypeDiscount": "鐩存帴闄嶄环",
+                "WholeDiscountTypePercent": "鐧惧垎姣旈檷浠�"
+            },
+            "x-enum-varnames": [
+                "WholeDiscountTypePercent",
+                "WholeDiscountTypeDiscount"
+            ]
+        },
         "purchaserequest.AddPurchase": {
             "type": "object",
             "properties": {
@@ -8594,9 +8657,29 @@
                     "description": "鑱旂郴浜虹數璇�",
                     "type": "string"
                 },
+                "priceAdjustment": {
+                    "description": "浠锋牸璋冩暣鍊�",
+                    "type": "number"
+                },
+                "priceAdjustmentType": {
+                    "description": "浠锋牸璋冩暣绫诲瀷",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/purchase.PriceAdjustmentType"
+                        }
+                    ]
+                },
                 "purchaseTypeId": {
                     "description": "閲囪喘绫诲瀷id",
                     "type": "integer"
+                },
+                "quantity": {
+                    "description": "閲囪喘鏁伴噺",
+                    "type": "number"
+                },
+                "realTotalPrice": {
+                    "description": "鏈�缁堜环鏍�",
+                    "type": "number"
                 },
                 "remark": {
                     "description": "澶囨敞",
@@ -8617,6 +8700,22 @@
                 "supplierId": {
                     "description": "渚涘簲鍟唅d",
                     "type": "integer"
+                },
+                "totalPrice": {
+                    "description": "浠风◣鍚堣",
+                    "type": "number"
+                },
+                "wholeDiscount": {
+                    "description": "鏁村崟鎶樻墸鍊�",
+                    "type": "number"
+                },
+                "wholeDiscountType": {
+                    "description": "鏁村崟鎶樻墸绫诲瀷",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/purchase.WholeDiscountType"
+                        }
+                    ]
                 }
             }
         },
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index d593c53..265cc91 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -694,6 +694,17 @@
     - OrderStatusReceived
     - OrderStatusStored
     - OrderStatusCompleted
+  purchase.PriceAdjustmentType:
+    enum:
+    - 1
+    - 2
+    type: integer
+    x-enum-comments:
+      PriceAdjustmentTypeAdd: 澧炲姞
+      PriceAdjustmentTypeSub: 鍑忓皯
+    x-enum-varnames:
+    - PriceAdjustmentTypeAdd
+    - PriceAdjustmentTypeSub
   purchase.Purchase:
     properties:
       contact:
@@ -720,12 +731,22 @@
       number:
         description: 閲囪喘缂栧彿
         type: string
+      orderSource:
+        description: 鍗曟嵁鏉ユ簮
+        type: string
       orderType:
         description: 鍗曟嵁绫诲瀷
         type: string
       phone:
         description: 鑱旂郴浜虹數璇�
         type: string
+      priceAdjustment:
+        description: 浠锋牸璋冩暣鍊�
+        type: number
+      priceAdjustmentType:
+        allOf:
+        - $ref: '#/definitions/purchase.PriceAdjustmentType'
+        description: 浠锋牸璋冩暣绫诲瀷
       purchaseType:
         $ref: '#/definitions/purchase.PurchaseType'
       purchaseTypeId:
@@ -733,6 +754,9 @@
         type: integer
       quantity:
         description: 閲囪喘鏁伴噺
+        type: number
+      realTotalPrice:
+        description: 鏈�缁堜环鏍�
         type: number
       remark:
         description: 澶囨敞
@@ -749,9 +773,19 @@
       supplierId:
         description: 渚涘簲鍟唅d
         type: integer
+      totalPrice:
+        description: 浠风◣鍚堣
+        type: number
       warehouse:
         description: 鏀惰揣浠撳簱
         type: string
+      wholeDiscount:
+        description: 鏁村崟鎶樻墸鍊�
+        type: number
+      wholeDiscountType:
+        allOf:
+        - $ref: '#/definitions/purchase.WholeDiscountType'
+        description: 鏁村崟鎶樻墸绫诲瀷
     type: object
   purchase.PurchaseProducts:
     properties:
@@ -767,8 +801,6 @@
       price:
         description: 閲囪喘鍗曚环
         type: number
-      product:
-        $ref: '#/definitions/test.Product'
       productId:
         description: 浜у搧id
         type: integer
@@ -800,6 +832,17 @@
         description: 鎺掑簭
         type: integer
     type: object
+  purchase.WholeDiscountType:
+    enum:
+    - 1
+    - 2
+    type: integer
+    x-enum-comments:
+      WholeDiscountTypeDiscount: 鐩存帴闄嶄环
+      WholeDiscountTypePercent: 鐧惧垎姣旈檷浠�
+    x-enum-varnames:
+    - WholeDiscountTypePercent
+    - WholeDiscountTypeDiscount
   purchaserequest.AddPurchase:
     properties:
       productList:
@@ -829,9 +872,22 @@
       phone:
         description: 鑱旂郴浜虹數璇�
         type: string
+      priceAdjustment:
+        description: 浠锋牸璋冩暣鍊�
+        type: number
+      priceAdjustmentType:
+        allOf:
+        - $ref: '#/definitions/purchase.PriceAdjustmentType'
+        description: 浠锋牸璋冩暣绫诲瀷
       purchaseTypeId:
         description: 閲囪喘绫诲瀷id
         type: integer
+      quantity:
+        description: 閲囪喘鏁伴噺
+        type: number
+      realTotalPrice:
+        description: 鏈�缁堜环鏍�
+        type: number
       remark:
         description: 澶囨敞
         type: string
@@ -845,6 +901,16 @@
       supplierId:
         description: 渚涘簲鍟唅d
         type: integer
+      totalPrice:
+        description: 浠风◣鍚堣
+        type: number
+      wholeDiscount:
+        description: 鏁村崟鎶樻墸鍊�
+        type: number
+      wholeDiscountType:
+        allOf:
+        - $ref: '#/definitions/purchase.WholeDiscountType'
+        description: 鏁村崟鎶樻墸绫诲瀷
     type: object
   purchaserequest.PurchaseType:
     properties:
diff --git a/model/purchase/purchase.go b/model/purchase/purchase.go
index 4506751..d9f7acd 100644
--- a/model/purchase/purchase.go
+++ b/model/purchase/purchase.go
@@ -46,18 +46,19 @@
 type WholeDiscountType int
 
 const (
+	WholeDiscountTypeDefault  WholeDiscountType = 0 //鏃犳姌鎵�
 	WholeDiscountTypePercent  WholeDiscountType = 1 //鐧惧垎姣旈檷浠�
 	WholeDiscountTypeDiscount WholeDiscountType = 2 //鐩存帴闄嶄环
 )
 
 func (wdt WholeDiscountType) IsValid(totalPrice, value decimal.Decimal) bool {
-	if wdt != WholeDiscountTypePercent && wdt != WholeDiscountTypeDiscount {
+	if wdt != WholeDiscountTypePercent && wdt != WholeDiscountTypeDiscount && wdt != WholeDiscountTypeDefault {
 		return false
 	}
-	if wdt == WholeDiscountTypeDiscount && value.GreaterThanOrEqual(totalPrice) {
+	if wdt == WholeDiscountTypeDiscount && value.GreaterThan(totalPrice) {
 		return false
 	}
-	if wdt == WholeDiscountTypePercent && totalPrice.Mul(value).Div(decimal.NewFromInt(100)).GreaterThanOrEqual(totalPrice) {
+	if wdt == WholeDiscountTypePercent && totalPrice.Mul(value).Div(decimal.NewFromInt(100)).GreaterThan(totalPrice) {
 		return false
 	}
 	return true
@@ -74,7 +75,7 @@
 	if pat != PriceAdjustmentTypeAdd && pat != PriceAdjustmentTypeSub {
 		return false
 	}
-	if pat == PriceAdjustmentTypeSub && value.GreaterThanOrEqual(totalPrice) {
+	if pat == PriceAdjustmentTypeSub && value.GreaterThan(totalPrice) {
 		return false
 	}
 	return true
diff --git a/model/purchase/purchase_products.go b/model/purchase/purchase_products.go
index 20373de..c04ff6b 100644
--- a/model/purchase/purchase_products.go
+++ b/model/purchase/purchase_products.go
@@ -10,7 +10,7 @@
 	global.GVA_MODEL
 	PurchaseId int             `json:"purchaseId" form:"purchaseType" gorm:"type:int(11);not null;default 0;comment:閲囪喘绫诲瀷id"` // 閲囪喘id
 	ProductId  int             `json:"productId" form:"supplierId" gorm:"type:int(11);not null;default 0;comment:渚涘簲鍟唅d"`     // 浜у搧id
-	Product    test.Product    `json:"product" gorm:"foreignKey:ProductId"`
+	Product    test.Product    `json:"-" gorm:"foreignKey:ProductId"`
 	Amount     decimal.Decimal `json:"amount" form:"amount" gorm:"type:decimal(12,2);not null;default 0;comment:閲囪喘鏁伴噺"`  // 閲囪喘鏁伴噺
 	Price      decimal.Decimal `json:"price" form:"price" gorm:"type:decimal(12,2);not null;default 0.00;comment:閲囪喘鍗曚环"` // 閲囪喘鍗曚环
 	Total      decimal.Decimal `json:"total" form:"total" gorm:"type:decimal(12,2);not null;default 0.00;comment:閲囪喘鎬讳环"` // 閲囪喘鎬讳环

--
Gitblit v1.8.0