From 90341876ca9590b69f9a8fda7203bdec8fb210ae Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期一, 29 七月 2024 20:08:45 +0800
Subject: [PATCH] 产品列表增加产品分类id数组参数 & 修复一些bug

---
 controllers/product_controller.go |   22 +++++++----
 models/product_category.go        |    8 ++++
 request/product_request.go        |    5 +-
 docs/swagger.yaml                 |   15 ++++++-
 docs/docs.go                      |   19 ++++++++-
 docs/swagger.json                 |   19 ++++++++-
 6 files changed, 69 insertions(+), 19 deletions(-)

diff --git a/controllers/product_controller.go b/controllers/product_controller.go
index 9b81e63..56ab486 100644
--- a/controllers/product_controller.go
+++ b/controllers/product_controller.go
@@ -109,6 +109,7 @@
 // @Summary   鑾峰彇浜у搧鍒楄〃
 // @Produce   application/json
 // @Param     object  body  request.GetProductList true  "鏌ヨ鍙傛暟"
+// @Param     Authorization	header string true "token"
 // @Success   200 {object} util.ResponseList{data=[]models.Material}	"鎴愬姛"
 // @Router    /api-wms/v1/product/getProductList [post]
 func (slf ProductController) GetProductList(c *gin.Context) {
@@ -121,7 +122,12 @@
 	if params.PageInfo.Check() {
 		search.SetPage(params.Page, params.PageSize)
 	}
-	products, total, err := search.SetPreload(true).SetKeyword(params.KeyWord).SetCategoryId(params.CategoryId).SetOrder("created_at desc").Find()
+	products, total, err := search.SetPreload(true).
+		SetKeyword(params.KeyWord).
+		SetCategoryId(params.CategoryId).
+		SetCategoryIds(params.CategoryIds).
+		SetOrder("created_at desc").
+		Find()
 	if err != nil {
 		util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触")
 		return
@@ -136,15 +142,14 @@
 		util.ResponseFormat(c, code.RequestParamError, "浜у搧绫诲瀷鏌ユ壘澶辫触")
 		return
 	}
+	categoryMap := models.CategoryMap(categories)
 	for _, product := range products {
-		for _, category := range categories {
-			if product.CategoryId == int(category.ID) {
-				product.CategoryName = category.Name
-			}
+		if product.CategoryId != 0 && categoryMap[product.CategoryId] != nil {
+			product.CategoryName = categoryMap[product.CategoryId].Name
 		}
 		var totalAmount decimal.Decimal
-		if err := models.NewOperationSearch().Orm.
-			Table("wms_operation_details").
+		db := models.NewOperationSearch().Orm
+		if err := db.Table("wms_operation_details").
 			InnerJoins("INNER JOIN wms_operation on wms_operation_details.operation_id=wms_operation.id").
 			Select("IFNULL(SUM(wms_operation_details.amount), 0) as total_count").
 			Where("wms_operation_details.product_id=? and wms_operation.`status`=? and wms_operation.base_operation_type in (?)", product.ID, constvar.OperationStatus_Ready, []constvar.BaseOperationType{constvar.BaseOperationTypeIncoming, constvar.BaseOperationTypeOutgoing, constvar.BaseOperationTypeDisuse}).
@@ -157,7 +162,8 @@
 		product.PredictionAmount = product.Amount.Add(totalAmount)
 
 		var statisticsList []*request.ProductStatistics
-		if err := models.NewOperationSearch().Orm.Table("wms_operation").
+		db2 := models.NewOperationSearch().Orm
+		if err := db2.Table("wms_operation").
 			InnerJoins("INNER JOIN wms_operation_details on wms_operation_details.operation_id=wms_operation.id").
 			Select("SUM(wms_operation_details.amount) as total_amount,wms_operation.base_operation_type").
 			Where("wms_operation_details.product_id=? and wms_operation.`status`=? and wms_operation.base_operation_type in (?)", product.ID, constvar.OperationStatus_Finish, []constvar.BaseOperationType{constvar.BaseOperationTypeIncoming, constvar.BaseOperationTypeOutgoing, constvar.BaseOperationTypeDisuse}).
diff --git a/docs/docs.go b/docs/docs.go
index 95b1f70..6d7e4cc 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -3229,6 +3229,13 @@
                         "schema": {
                             "$ref": "#/definitions/request.GetProductList"
                         }
+                    },
+                    {
+                        "type": "string",
+                        "description": "token",
+                        "name": "Authorization",
+                        "in": "header",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -6302,7 +6309,7 @@
                     "type": "string"
                 },
                 "silkMarket": {
-                    "description": "搴勫彛缂栫爜",
+                    "description": "搴勫彛",
                     "type": "string"
                 },
                 "sourceNumber": {
@@ -6784,6 +6791,12 @@
                 "categoryId": {
                     "type": "integer"
                 },
+                "categoryIds": {
+                    "type": "array",
+                    "items": {
+                        "type": "integer"
+                    }
+                },
                 "keyWord": {
                     "type": "string"
                 },
@@ -6947,7 +6960,7 @@
                     "type": "number"
                 },
                 "silkMarket": {
-                    "description": "搴勫彛缂栫爜",
+                    "description": "搴勫彛",
                     "type": "string"
                 },
                 "silkMarketClose": {
@@ -7426,7 +7439,7 @@
                     "type": "string"
                 },
                 "silkMarket": {
-                    "description": "搴勫彛缂栫爜",
+                    "description": "搴勫彛",
                     "type": "string"
                 },
                 "sourceNumber": {
diff --git a/docs/swagger.json b/docs/swagger.json
index 760e12d..3bc9602 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -3218,6 +3218,13 @@
                         "schema": {
                             "$ref": "#/definitions/request.GetProductList"
                         }
+                    },
+                    {
+                        "type": "string",
+                        "description": "token",
+                        "name": "Authorization",
+                        "in": "header",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -6291,7 +6298,7 @@
                     "type": "string"
                 },
                 "silkMarket": {
-                    "description": "搴勫彛缂栫爜",
+                    "description": "搴勫彛",
                     "type": "string"
                 },
                 "sourceNumber": {
@@ -6773,6 +6780,12 @@
                 "categoryId": {
                     "type": "integer"
                 },
+                "categoryIds": {
+                    "type": "array",
+                    "items": {
+                        "type": "integer"
+                    }
+                },
                 "keyWord": {
                     "type": "string"
                 },
@@ -6936,7 +6949,7 @@
                     "type": "number"
                 },
                 "silkMarket": {
-                    "description": "搴勫彛缂栫爜",
+                    "description": "搴勫彛",
                     "type": "string"
                 },
                 "silkMarketClose": {
@@ -7415,7 +7428,7 @@
                     "type": "string"
                 },
                 "silkMarket": {
-                    "description": "搴勫彛缂栫爜",
+                    "description": "搴勫彛",
                     "type": "string"
                 },
                 "sourceNumber": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 86a7c4e..e3e5cb4 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -1582,7 +1582,7 @@
         description: 鑱旂郴鐢佃瘽
         type: string
       silkMarket:
-        description: 搴勫彛缂栫爜
+        description: 搴勫彛
         type: string
       sourceNumber:
         description: 婧愬崟鍙�
@@ -1910,6 +1910,10 @@
     properties:
       categoryId:
         type: integer
+      categoryIds:
+        items:
+          type: integer
+        type: array
       keyWord:
         type: string
       page:
@@ -2029,7 +2033,7 @@
         description: 閿�鍞崟浠�
         type: number
       silkMarket:
-        description: 搴勫彛缂栫爜
+        description: 搴勫彛
         type: string
       silkMarketClose:
         description: 搴勫彛鍏抽棴
@@ -2358,7 +2362,7 @@
         description: 鑱旂郴鐢佃瘽
         type: string
       silkMarket:
-        description: 搴勫彛缂栫爜
+        description: 搴勫彛
         type: string
       sourceNumber:
         description: 婧愬崟鍙�
@@ -4554,6 +4558,11 @@
         required: true
         schema:
           $ref: '#/definitions/request.GetProductList'
+      - description: token
+        in: header
+        name: Authorization
+        required: true
+        type: string
       produces:
       - application/json
       responses:
diff --git a/models/product_category.go b/models/product_category.go
index af90da8..fd051af 100644
--- a/models/product_category.go
+++ b/models/product_category.go
@@ -262,3 +262,11 @@
 
 	return nil
 }
+
+func CategoryMap(records []*ProductCategory) (m map[int]*ProductCategory) {
+	m = make(map[int]*ProductCategory, len(records))
+	for _, record := range records {
+		m[record.Id] = record
+	}
+	return m
+}
diff --git a/request/product_request.go b/request/product_request.go
index e9e10a1..d987c9b 100644
--- a/request/product_request.go
+++ b/request/product_request.go
@@ -7,8 +7,9 @@
 
 type GetProductList struct {
 	PageInfo
-	KeyWord    string `json:"keyWord"`
-	CategoryId int    `json:"categoryId"`
+	KeyWord     string `json:"keyWord"`
+	CategoryId  int    `json:"categoryId"`
+	CategoryIds []int  `json:"categoryIds"`
 }
 
 type QueryOperationList struct {

--
Gitblit v1.8.0