From edf6810f2ff9ac32230f58f62a753454b8e24269 Mon Sep 17 00:00:00 2001
From: zhansan <1061428287@qq.com>
Date: 星期一, 18 九月 2023 20:05:38 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/WMS

---
 constvar/const.go                 |   27 +
 controllers/product_controller.go |   78 ++++
 models/product.go                 |   74 ++--
 request/product_request.go        |    6 
 docs/swagger.yaml                 |  208 ++++++++++++
 docs/docs.go                      |  303 +++++++++++++++++
 docs/swagger.json                 |  301 +++++++++++++++++
 router/router.go                  |    8 
 8 files changed, 968 insertions(+), 37 deletions(-)

diff --git a/constvar/const.go b/constvar/const.go
index 8e45297..640baa6 100644
--- a/constvar/const.go
+++ b/constvar/const.go
@@ -46,9 +46,30 @@
 type ProductType int
 
 const (
-	ProductTypeRaw      = iota + 1 // 鍘熸潗鏂�
-	ProductTypeSemi                // 鍗婃垚鍝�
-	ProductTypeFinished            // 鎴愬搧
+	Consumables   ProductType = iota + 1 // 娑堣�楀搧
+	Server                               // 鏈嶅姟
+	StoredProduct                        // 鍙偍瀛樼殑浜у搧
+)
+
+// InvoicingStrategy 寮�绁ㄧ瓥鐣�
+type InvoicingStrategy int
+
+const (
+	IndentNumber       InvoicingStrategy = iota + 1 //璁㈣喘鏁伴噺
+	DeliverNumber                                   //浜や粯鏁伴噺
+	PrepaidPrice                                    //棰勪粯\鍥哄畾浠锋牸
+	Milestones                                      //鍩轰簬閲岀▼纰�
+	BasedDeliverNumber                              //鍩轰簬浜や粯鏁伴噺
+)
+
+// OrderCreation 璁㈠崟鍒涘缓
+type OrderCreation int
+
+const (
+	Nothing       OrderCreation = iota + 1 //涓嶆搷浣�
+	Task                                   //浠诲姟
+	Object                                 //椤圭洰
+	TaskAndObject                          //浠诲姟鍜岄」鐩�
 )
 
 type ProductStatus int
diff --git a/controllers/product_controller.go b/controllers/product_controller.go
new file mode 100644
index 0000000..7c78abc
--- /dev/null
+++ b/controllers/product_controller.go
@@ -0,0 +1,78 @@
+package controllers
+
+import (
+	"github.com/gin-gonic/gin"
+	"wms/extend/code"
+	"wms/extend/util"
+	"wms/models"
+	"wms/request"
+)
+
+type ProductController struct {
+}
+
+// AddProduct
+// @Tags      浜у搧
+// @Summary   娣诲姞浜у搧
+// @Produce   application/json
+// @Param     object  body  models.Product true  "浜у搧淇℃伅"
+// @Success   200 {object} util.Response "鎴愬姛"
+// @Router    /api-wms/v1/product/addProduct [post]
+func (slf ProductController) AddProduct(c *gin.Context) {
+	var params models.Product
+	if err := c.BindJSON(&params); err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+		return
+	}
+	if params.Name == "" {
+		util.ResponseFormat(c, code.RequestParamError, "浜у搧鍚嶇О涓嶈兘涓虹┖")
+		return
+	}
+	if params.SalePrice.IntPart() <= 0 {
+		util.ResponseFormat(c, code.RequestParamError, "浜у搧鍞环涓嶈兘灏忎簬绛変簬闆�")
+		return
+	}
+	err := models.NewProductSearch().Create(&params)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "浜у搧淇℃伅淇濆瓨澶辫触")
+		return
+	}
+	util.ResponseFormat(c, code.Success, "淇濆瓨鎴愬姛")
+}
+
+// GetProductList
+// @Tags      浜у搧
+// @Summary   鑾峰彇浜у搧鍒楄〃
+// @Produce   application/json
+// @Param     object  body  request.GetProductList true  "鏌ヨ鍙傛暟"
+// @Success   200 {object} util.ResponseList{data=[]models.Product}	"鎴愬姛"
+// @Router    /api-wms/v1/product/getProductList [post]
+func (slf ProductController) GetProductList(c *gin.Context) {
+	var params request.GetProductList
+	if err := c.BindJSON(&params); err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+		return
+	}
+	search := models.NewProductSearch()
+	if params.PageInfo.Check() {
+		search.SetPage(params.Page, params.PageSize)
+	}
+	products, total, err := search.SetKeyword(params.KeyWord).SetOrder("created_at desc").Find()
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触")
+		return
+	}
+
+	util.ResponseFormatList(c, code.Success, products, int(total))
+}
+
+// GetProductDetails
+// @Tags      浜у搧
+// @Summary   鑾峰彇浜у搧璇︽儏
+// @Produce   application/json
+// @Param     object  body  request.GetProductList true  "鏌ヨ鍙傛暟"
+// @Success   200 {object} util.ResponseList{data=[]models.Product}	"鎴愬姛"
+// @Router    /api-wms/v1/product/getProductList [post]
+func (slf ProductController) GetProductDetails(c *gin.Context) {
+
+}
diff --git a/docs/docs.go b/docs/docs.go
index 0f27c63..ef21891 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -324,6 +324,81 @@
                 }
             }
         },
+        "/api-wms/v1/product/addProduct": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "浜у搧"
+                ],
+                "summary": "娣诲姞浜у搧",
+                "parameters": [
+                    {
+                        "description": "浜у搧淇℃伅",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/models.Product"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api-wms/v1/product/getProductList": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "浜у搧"
+                ],
+                "summary": "鑾峰彇浜у搧璇︽儏",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.GetProductList"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/util.ResponseList"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "type": "array",
+                                            "items": {
+                                                "$ref": "#/definitions/models.Product"
+                                            }
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
         "/api-wms/v1/warehouse/operationType": {
             "get": {
                 "produces": [
@@ -632,6 +707,30 @@
                 "BaseOperationTypeInternal"
             ]
         },
+        "constvar.InvoicingStrategy": {
+            "type": "integer",
+            "enum": [
+                1,
+                2,
+                3,
+                4,
+                5
+            ],
+            "x-enum-comments": {
+                "BasedDeliverNumber": "鍩轰簬浜や粯鏁伴噺",
+                "DeliverNumber": "浜や粯鏁伴噺",
+                "IndentNumber": "璁㈣喘鏁伴噺",
+                "Milestones": "鍩轰簬閲岀▼纰�",
+                "PrepaidPrice": "棰勪粯\\鍥哄畾浠锋牸"
+            },
+            "x-enum-varnames": [
+                "IndentNumber",
+                "DeliverNumber",
+                "PrepaidPrice",
+                "Milestones",
+                "BasedDeliverNumber"
+            ]
+        },
         "constvar.LocationType": {
             "type": "integer",
             "enum": [
@@ -681,6 +780,45 @@
                 "OperationStatus_Waiting",
                 "OperationStatus_Ready",
                 "OperationStatus_Finish"
+            ]
+        },
+        "constvar.OrderCreation": {
+            "type": "integer",
+            "enum": [
+                1,
+                2,
+                3,
+                4
+            ],
+            "x-enum-comments": {
+                "Nothing": "涓嶆搷浣�",
+                "Object": "椤圭洰",
+                "Task": "浠诲姟",
+                "TaskAndObject": "浠诲姟鍜岄」鐩�"
+            },
+            "x-enum-varnames": [
+                "Nothing",
+                "Task",
+                "Object",
+                "TaskAndObject"
+            ]
+        },
+        "constvar.ProductType": {
+            "type": "integer",
+            "enum": [
+                1,
+                2,
+                3
+            ],
+            "x-enum-comments": {
+                "Consumables": "娑堣�楀搧",
+                "Server": "鏈嶅姟",
+                "StoredProduct": "鍙偍瀛樼殑浜у搧"
+            },
+            "x-enum-varnames": [
+                "Consumables",
+                "Server",
+                "StoredProduct"
             ]
         },
         "constvar.ReservationMethod": {
@@ -947,6 +1085,153 @@
                 }
             }
         },
+        "models.Product": {
+            "type": "object",
+            "properties": {
+                "HSCode": {
+                    "type": "string"
+                },
+                "barcode": {
+                    "description": "鏉$爜",
+                    "type": "string"
+                },
+                "buyExplain": {
+                    "type": "string"
+                },
+                "canBePurchased": {
+                    "description": "鏄惁鍙噰璐�",
+                    "type": "boolean"
+                },
+                "canBeSell": {
+                    "description": "鏄惁閿�鍞�",
+                    "type": "boolean"
+                },
+                "categoryId": {
+                    "description": "浜у搧鍒嗙被id",
+                    "type": "integer"
+                },
+                "companyId": {
+                    "type": "integer"
+                },
+                "companyName": {
+                    "type": "string"
+                },
+                "controlStrategy": {
+                    "$ref": "#/definitions/constvar.InvoicingStrategy"
+                },
+                "cost": {
+                    "description": "鎴愭湰",
+                    "type": "number"
+                },
+                "createTime": {
+                    "type": "string"
+                },
+                "currencyId": {
+                    "type": "integer"
+                },
+                "currencyName": {
+                    "type": "string"
+                },
+                "customerAdvanceTime": {
+                    "type": "number"
+                },
+                "customerTaxes": {
+                    "description": "瀹㈡埛绋庣櫨鍒嗘瘮",
+                    "type": "number"
+                },
+                "deliveryAdvanceTime": {
+                    "type": "number"
+                },
+                "id": {
+                    "type": "integer"
+                },
+                "inStorageExplain": {
+                    "type": "string"
+                },
+                "internalNotes": {
+                    "description": "鍐呴儴璇存槑",
+                    "type": "string"
+                },
+                "internalReference": {
+                    "description": "鍐呴儴鍙傝��",
+                    "type": "string"
+                },
+                "internalTransferExplain": {
+                    "type": "string"
+                },
+                "invoicingStrategy": {
+                    "$ref": "#/definitions/constvar.InvoicingStrategy"
+                },
+                "name": {
+                    "description": "浜у搧鍚嶇О",
+                    "type": "string"
+                },
+                "objectTemplateId": {
+                    "type": "string"
+                },
+                "orderCreation": {
+                    "$ref": "#/definitions/constvar.OrderCreation"
+                },
+                "originCountryId": {
+                    "type": "integer"
+                },
+                "originCountryName": {
+                    "type": "string"
+                },
+                "outStorageExplain": {
+                    "type": "string"
+                },
+                "price": {
+                    "type": "number"
+                },
+                "principal": {
+                    "description": "璐熻矗浜�",
+                    "type": "string"
+                },
+                "productTagId": {
+                    "description": "浜у搧鏍囩",
+                    "type": "integer"
+                },
+                "productTagName": {
+                    "type": "string"
+                },
+                "salePrice": {
+                    "description": "閿�鍞环鏍�",
+                    "type": "number"
+                },
+                "selectProduct": {
+                    "type": "integer"
+                },
+                "sellExplain": {
+                    "type": "string"
+                },
+                "supplierId": {
+                    "type": "integer"
+                },
+                "supplierName": {
+                    "type": "string"
+                },
+                "type": {
+                    "description": "浜у搧绫诲瀷",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/constvar.ProductType"
+                        }
+                    ]
+                },
+                "updateTime": {
+                    "type": "string"
+                },
+                "volume": {
+                    "description": "浣撶Н",
+                    "type": "number"
+                },
+                "weight": {
+                    "description": "閲嶉噺",
+                    "type": "number"
+                }
+            }
+        },
         "models.Warehouse": {
             "type": "object",
             "required": [
@@ -1190,6 +1475,22 @@
                 }
             }
         },
+        "request.GetProductList": {
+            "type": "object",
+            "properties": {
+                "keyWord": {
+                    "type": "string"
+                },
+                "page": {
+                    "description": "椤电爜",
+                    "type": "integer"
+                },
+                "pageSize": {
+                    "description": "姣忛〉澶у皬",
+                    "type": "integer"
+                }
+            }
+        },
         "request.OperationDetails": {
             "type": "object",
             "properties": {
@@ -1413,6 +1714,8 @@
 	Description:      "",
 	InfoInstanceName: "swagger",
 	SwaggerTemplate:  docTemplate,
+	LeftDelim:        "{{",
+	RightDelim:       "}}",
 }
 
 func init() {
diff --git a/docs/swagger.json b/docs/swagger.json
index 8d67b82..a8d4229 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -312,6 +312,81 @@
                 }
             }
         },
+        "/api-wms/v1/product/addProduct": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "浜у搧"
+                ],
+                "summary": "娣诲姞浜у搧",
+                "parameters": [
+                    {
+                        "description": "浜у搧淇℃伅",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/models.Product"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "$ref": "#/definitions/util.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/api-wms/v1/product/getProductList": {
+            "post": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "浜у搧"
+                ],
+                "summary": "鑾峰彇浜у搧璇︽儏",
+                "parameters": [
+                    {
+                        "description": "鏌ヨ鍙傛暟",
+                        "name": "object",
+                        "in": "body",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/request.GetProductList"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/util.ResponseList"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "type": "array",
+                                            "items": {
+                                                "$ref": "#/definitions/models.Product"
+                                            }
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
         "/api-wms/v1/warehouse/operationType": {
             "get": {
                 "produces": [
@@ -620,6 +695,30 @@
                 "BaseOperationTypeInternal"
             ]
         },
+        "constvar.InvoicingStrategy": {
+            "type": "integer",
+            "enum": [
+                1,
+                2,
+                3,
+                4,
+                5
+            ],
+            "x-enum-comments": {
+                "BasedDeliverNumber": "鍩轰簬浜や粯鏁伴噺",
+                "DeliverNumber": "浜や粯鏁伴噺",
+                "IndentNumber": "璁㈣喘鏁伴噺",
+                "Milestones": "鍩轰簬閲岀▼纰�",
+                "PrepaidPrice": "棰勪粯\\鍥哄畾浠锋牸"
+            },
+            "x-enum-varnames": [
+                "IndentNumber",
+                "DeliverNumber",
+                "PrepaidPrice",
+                "Milestones",
+                "BasedDeliverNumber"
+            ]
+        },
         "constvar.LocationType": {
             "type": "integer",
             "enum": [
@@ -669,6 +768,45 @@
                 "OperationStatus_Waiting",
                 "OperationStatus_Ready",
                 "OperationStatus_Finish"
+            ]
+        },
+        "constvar.OrderCreation": {
+            "type": "integer",
+            "enum": [
+                1,
+                2,
+                3,
+                4
+            ],
+            "x-enum-comments": {
+                "Nothing": "涓嶆搷浣�",
+                "Object": "椤圭洰",
+                "Task": "浠诲姟",
+                "TaskAndObject": "浠诲姟鍜岄」鐩�"
+            },
+            "x-enum-varnames": [
+                "Nothing",
+                "Task",
+                "Object",
+                "TaskAndObject"
+            ]
+        },
+        "constvar.ProductType": {
+            "type": "integer",
+            "enum": [
+                1,
+                2,
+                3
+            ],
+            "x-enum-comments": {
+                "Consumables": "娑堣�楀搧",
+                "Server": "鏈嶅姟",
+                "StoredProduct": "鍙偍瀛樼殑浜у搧"
+            },
+            "x-enum-varnames": [
+                "Consumables",
+                "Server",
+                "StoredProduct"
             ]
         },
         "constvar.ReservationMethod": {
@@ -935,6 +1073,153 @@
                 }
             }
         },
+        "models.Product": {
+            "type": "object",
+            "properties": {
+                "HSCode": {
+                    "type": "string"
+                },
+                "barcode": {
+                    "description": "鏉$爜",
+                    "type": "string"
+                },
+                "buyExplain": {
+                    "type": "string"
+                },
+                "canBePurchased": {
+                    "description": "鏄惁鍙噰璐�",
+                    "type": "boolean"
+                },
+                "canBeSell": {
+                    "description": "鏄惁閿�鍞�",
+                    "type": "boolean"
+                },
+                "categoryId": {
+                    "description": "浜у搧鍒嗙被id",
+                    "type": "integer"
+                },
+                "companyId": {
+                    "type": "integer"
+                },
+                "companyName": {
+                    "type": "string"
+                },
+                "controlStrategy": {
+                    "$ref": "#/definitions/constvar.InvoicingStrategy"
+                },
+                "cost": {
+                    "description": "鎴愭湰",
+                    "type": "number"
+                },
+                "createTime": {
+                    "type": "string"
+                },
+                "currencyId": {
+                    "type": "integer"
+                },
+                "currencyName": {
+                    "type": "string"
+                },
+                "customerAdvanceTime": {
+                    "type": "number"
+                },
+                "customerTaxes": {
+                    "description": "瀹㈡埛绋庣櫨鍒嗘瘮",
+                    "type": "number"
+                },
+                "deliveryAdvanceTime": {
+                    "type": "number"
+                },
+                "id": {
+                    "type": "integer"
+                },
+                "inStorageExplain": {
+                    "type": "string"
+                },
+                "internalNotes": {
+                    "description": "鍐呴儴璇存槑",
+                    "type": "string"
+                },
+                "internalReference": {
+                    "description": "鍐呴儴鍙傝��",
+                    "type": "string"
+                },
+                "internalTransferExplain": {
+                    "type": "string"
+                },
+                "invoicingStrategy": {
+                    "$ref": "#/definitions/constvar.InvoicingStrategy"
+                },
+                "name": {
+                    "description": "浜у搧鍚嶇О",
+                    "type": "string"
+                },
+                "objectTemplateId": {
+                    "type": "string"
+                },
+                "orderCreation": {
+                    "$ref": "#/definitions/constvar.OrderCreation"
+                },
+                "originCountryId": {
+                    "type": "integer"
+                },
+                "originCountryName": {
+                    "type": "string"
+                },
+                "outStorageExplain": {
+                    "type": "string"
+                },
+                "price": {
+                    "type": "number"
+                },
+                "principal": {
+                    "description": "璐熻矗浜�",
+                    "type": "string"
+                },
+                "productTagId": {
+                    "description": "浜у搧鏍囩",
+                    "type": "integer"
+                },
+                "productTagName": {
+                    "type": "string"
+                },
+                "salePrice": {
+                    "description": "閿�鍞环鏍�",
+                    "type": "number"
+                },
+                "selectProduct": {
+                    "type": "integer"
+                },
+                "sellExplain": {
+                    "type": "string"
+                },
+                "supplierId": {
+                    "type": "integer"
+                },
+                "supplierName": {
+                    "type": "string"
+                },
+                "type": {
+                    "description": "浜у搧绫诲瀷",
+                    "allOf": [
+                        {
+                            "$ref": "#/definitions/constvar.ProductType"
+                        }
+                    ]
+                },
+                "updateTime": {
+                    "type": "string"
+                },
+                "volume": {
+                    "description": "浣撶Н",
+                    "type": "number"
+                },
+                "weight": {
+                    "description": "閲嶉噺",
+                    "type": "number"
+                }
+            }
+        },
         "models.Warehouse": {
             "type": "object",
             "required": [
@@ -1178,6 +1463,22 @@
                 }
             }
         },
+        "request.GetProductList": {
+            "type": "object",
+            "properties": {
+                "keyWord": {
+                    "type": "string"
+                },
+                "page": {
+                    "description": "椤电爜",
+                    "type": "integer"
+                },
+                "pageSize": {
+                    "description": "姣忛〉澶у皬",
+                    "type": "integer"
+                }
+            }
+        },
         "request.OperationDetails": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 7f4c9c9..1131974 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -13,6 +13,26 @@
     - BaseOperationTypeIncoming
     - BaseOperationTypeOutgoing
     - BaseOperationTypeInternal
+  constvar.InvoicingStrategy:
+    enum:
+    - 1
+    - 2
+    - 3
+    - 4
+    - 5
+    type: integer
+    x-enum-comments:
+      BasedDeliverNumber: 鍩轰簬浜や粯鏁伴噺
+      DeliverNumber: 浜や粯鏁伴噺
+      IndentNumber: 璁㈣喘鏁伴噺
+      Milestones: 鍩轰簬閲岀▼纰�
+      PrepaidPrice: 棰勪粯\鍥哄畾浠锋牸
+    x-enum-varnames:
+    - IndentNumber
+    - DeliverNumber
+    - PrepaidPrice
+    - Milestones
+    - BasedDeliverNumber
   constvar.LocationType:
     enum:
     - 1
@@ -56,6 +76,37 @@
     - OperationStatus_Waiting
     - OperationStatus_Ready
     - OperationStatus_Finish
+  constvar.OrderCreation:
+    enum:
+    - 1
+    - 2
+    - 3
+    - 4
+    type: integer
+    x-enum-comments:
+      Nothing: 涓嶆搷浣�
+      Object: 椤圭洰
+      Task: 浠诲姟
+      TaskAndObject: 浠诲姟鍜岄」鐩�
+    x-enum-varnames:
+    - Nothing
+    - Task
+    - Object
+    - TaskAndObject
+  constvar.ProductType:
+    enum:
+    - 1
+    - 2
+    - 3
+    type: integer
+    x-enum-comments:
+      Consumables: 娑堣�楀搧
+      Server: 鏈嶅姟
+      StoredProduct: 鍙偍瀛樼殑浜у搧
+    x-enum-varnames:
+    - Consumables
+    - Server
+    - StoredProduct
   constvar.ReservationMethod:
     enum:
     - 1
@@ -231,6 +282,107 @@
         description: 浠撳簱id
         type: integer
     type: object
+  models.Product:
+    properties:
+      HSCode:
+        type: string
+      barcode:
+        description: 鏉$爜
+        type: string
+      buyExplain:
+        type: string
+      canBePurchased:
+        description: 鏄惁鍙噰璐�
+        type: boolean
+      canBeSell:
+        description: 鏄惁閿�鍞�
+        type: boolean
+      categoryId:
+        description: 浜у搧鍒嗙被id
+        type: integer
+      companyId:
+        type: integer
+      companyName:
+        type: string
+      controlStrategy:
+        $ref: '#/definitions/constvar.InvoicingStrategy'
+      cost:
+        description: 鎴愭湰
+        type: number
+      createTime:
+        type: string
+      currencyId:
+        type: integer
+      currencyName:
+        type: string
+      customerAdvanceTime:
+        type: number
+      customerTaxes:
+        description: 瀹㈡埛绋庣櫨鍒嗘瘮
+        type: number
+      deliveryAdvanceTime:
+        type: number
+      id:
+        type: integer
+      inStorageExplain:
+        type: string
+      internalNotes:
+        description: 鍐呴儴璇存槑
+        type: string
+      internalReference:
+        description: 鍐呴儴鍙傝��
+        type: string
+      internalTransferExplain:
+        type: string
+      invoicingStrategy:
+        $ref: '#/definitions/constvar.InvoicingStrategy'
+      name:
+        description: 浜у搧鍚嶇О
+        type: string
+      objectTemplateId:
+        type: string
+      orderCreation:
+        $ref: '#/definitions/constvar.OrderCreation'
+      originCountryId:
+        type: integer
+      originCountryName:
+        type: string
+      outStorageExplain:
+        type: string
+      price:
+        type: number
+      principal:
+        description: 璐熻矗浜�
+        type: string
+      productTagId:
+        description: 浜у搧鏍囩
+        type: integer
+      productTagName:
+        type: string
+      salePrice:
+        description: 閿�鍞环鏍�
+        type: number
+      selectProduct:
+        type: integer
+      sellExplain:
+        type: string
+      supplierId:
+        type: integer
+      supplierName:
+        type: string
+      type:
+        allOf:
+        - $ref: '#/definitions/constvar.ProductType'
+        description: 浜у搧绫诲瀷
+      updateTime:
+        type: string
+      volume:
+        description: 浣撶Н
+        type: number
+      weight:
+        description: 閲嶉噺
+        type: number
+    type: object
   models.Warehouse:
     properties:
       active:
@@ -397,6 +549,17 @@
         type: array
     required:
     - code
+    type: object
+  request.GetProductList:
+    properties:
+      keyWord:
+        type: string
+      page:
+        description: 椤电爜
+        type: integer
+      pageSize:
+        description: 姣忛〉澶у皬
+        type: integer
     type: object
   request.OperationDetails:
     properties:
@@ -736,6 +899,51 @@
       summary: 娣诲姞鍏ュ簱/鍑哄簱
       tags:
       - 鍏ュ簱/鍑哄簱
+  /api-wms/v1/product/addProduct:
+    post:
+      parameters:
+      - description: 浜у搧淇℃伅
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/models.Product'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: 鎴愬姛
+          schema:
+            $ref: '#/definitions/util.Response'
+      summary: 娣诲姞浜у搧
+      tags:
+      - 浜у搧
+  /api-wms/v1/product/getProductList:
+    post:
+      parameters:
+      - description: 鏌ヨ鍙傛暟
+        in: body
+        name: object
+        required: true
+        schema:
+          $ref: '#/definitions/request.GetProductList'
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: 鎴愬姛
+          schema:
+            allOf:
+            - $ref: '#/definitions/util.ResponseList'
+            - properties:
+                data:
+                  items:
+                    $ref: '#/definitions/models.Product'
+                  type: array
+              type: object
+      summary: 鑾峰彇浜у搧璇︽儏
+      tags:
+      - 浜у搧
   /api-wms/v1/warehouse/operationType:
     get:
       parameters:
diff --git a/models/product.go b/models/product.go
index c97e2f1..b44ddbb 100644
--- a/models/product.go
+++ b/models/product.go
@@ -2,7 +2,7 @@
 
 import (
 	"fmt"
-	"google.golang.org/genproto/googleapis/type/decimal"
+	"github.com/shopspring/decimal"
 	"gorm.io/gorm"
 	"wms/constvar"
 	"wms/pkg/mysqlx"
@@ -12,39 +12,45 @@
 	// Product 浜у搧
 	Product struct {
 		WmsModel
-		Id         int                  `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
-		Name       string               `json:"name" gorm:"index;type:varchar(255);not null;comment:浜у搧鍚嶇О"` //浜у搧鍚嶇О
-		Type       constvar.ProductType `gorm:"type:tinyint;comment:浜у搧绫诲瀷" json:"type"`                     //浜у搧绫诲瀷
-		CategoryId int                  `gorm:"type:int(11);comment:浜у搧鍒嗙被" json:"categoryId"`               //浜у搧鍒嗙被id
-		Category   string               `gorm:"type:int(11);comment:浜у搧鍒嗙被" json:"category"`                 //浜у搧鍒嗙被
-		Specs      string               `gorm:"type:varchar(191);comment:浜у搧瑙勬牸" json:"specs"`               //浜у搧瑙勬牸
-		Model      string               `gorm:"type:varchar(191);comment:浜у搧鍨嬪彿" json:"model"`               //浜у搧鍨嬪彿
-		//MinInventory      decimal.Decimal         `gorm:"type:decimal(20,2);comment:鏈�灏忓簱瀛�" json:"minInventory"` //鏈�澶у簱瀛�
-		//MaxInventory      decimal.Decimal         `gorm:"type:decimal(20,2);comment:鏈�澶у簱瀛�" json:"maxInventory"` //鏈�灏忓簱瀛�
-		//Amount            decimal.Decimal         `gorm:"type:decimal(20,2);comment:鏁伴噺" json:"amount"`
-		//LockAmount        decimal.Decimal         `gorm:"type:decimal(20,2);default:0;comment:閿佸畾鏁伴噺" json:"lockAmount"`
-		Unit         string                 `gorm:"type:varchar(100);comment:鍗曚綅" json:"unit"`           //鍗曚綅
-		PurchaseUnit string                 `gorm:"type:varchar(100);comment:閲囪喘鍗曚綅" json:"purchaseUnit"` //閲囪喘鍗曚綅
-		Note         string                 `gorm:"type:varchar(1024);comment:澶囨敞" json:"note"`
-		Status       constvar.ProductStatus `gorm:"type:int(11);comment:鐘舵��" json:"status"`
-		Purchases    []*PurchaseInfo        `gorm:"-" json:"purchases"` //閲囪喘淇℃伅
-		PurchasesStr string                 `gorm:"column:purchase;type:varchar(4096);comment:璐拱淇℃伅" json:"-"`
-
-		//PurchaseType     constvar.PurchaseType `gorm:"type:int(11);comment:閲囪喘绫诲瀷" json:"purchaseType"`            ///閲囪喘绫诲瀷
-		CanBePurchased   bool            `gorm:"type:int(11);not null;comment:鏄惁鍙噰璐�" json:"purchaseType"`           //鏄惁鍙噰璐�
-		IsSale           bool            `gorm:"type:tinyint(1);comment:鏄惁閿�鍞�" json:"isSale"`                        //鏄惁閿�鍞�
-		SalePrice        decimal.Decimal `gorm:"type:decimal(35,18);comment:閿�鍞崟浠�" json:"salePrice"`                 //閿�鍞环鏍�
-		CustomerTaxes    decimal.Decimal `gorm:"type:decimal(20,2);not null;comment:瀹㈡埛绋�" json:"customerTaxes"`      //瀹㈡埛绋庣櫨鍒嗘瘮
-		Cost             decimal.Decimal `gorm:"type:decimal(20,2);not null;comment:鎴愭湰" json:"cost"`                //鎴愭湰
-		OptionalProducts []int           `gorm:"type:varchar(255);not null;comment:鐩镐技浜у搧id" json:"optionalProducts"` //鐩歌瘑浜у搧
-		Principal        string          `gorm:"type:varchar(255);not null;comment:璐熻矗浜�" json:"principal"`           //璐熻矗浜�
-		Weight           string          `gorm:"type:decimal(20,2);not null;comment:閲嶉噺" json:"weight"`              //閲嶉噺
-		Volume           string          `gorm:"type:decimal(20,2);not null;comment:浣撶Н" json:"volume"`              //浣撶Н
-
-		InternalReference string `gorm:"type:varchar(255);not null;comment:鍐呴儴鍙傝��" json:"internalReference"` //鍐呴儴鍙傝��
-		Barcode           string `gorm:"type:varchar(255);not null;comment:鏉$爜" json:"barcode"`             //鏉$爜
-		Tags              string `gorm:"type:varchar(255);not null;comment:浜у搧鏍囩" json:"tags"`              //浜у搧鏍囩
-		InternalNotes     string `gorm:"type:varchar(512);not null;comment:鍐呴儴璇存槑" json:"internalNotes"`     //鍐呴儴璇存槑
+		Id                      int                        `gorm:"column:id;primary_key;AUTO_INCREMENT" json:"id"`
+		Name                    string                     `gorm:"index;type:varchar(255);not null;comment:浜у搧鍚嶇О" json:"name"` //浜у搧鍚嶇О
+		Type                    constvar.ProductType       `gorm:"type:int(11);comment:浜у搧绫诲瀷" json:"type"`                     //浜у搧绫诲瀷
+		InvoicingStrategy       constvar.InvoicingStrategy `gorm:"type:int(11);comment:寮�绁ㄧ瓥鐣�" json:"invoicingStrategy"`
+		OrderCreation           constvar.OrderCreation     `gorm:"type:int(11);comment:璁㈠崟鍒涘缓" json:"orderCreation"`
+		ObjectTemplateId        string                     `gorm:"type:varchar(191);comment:椤圭洰妯$増id" json:"objectTemplateId"`
+		SalePrice               decimal.Decimal            `gorm:"type:decimal(35,18);comment:閿�鍞崟浠�" json:"salePrice"`       //閿�鍞环鏍�
+		CustomerTaxes           decimal.Decimal            `gorm:"type:decimal(20,2);comment:瀹㈡埛绋�" json:"customerTaxes"`     //瀹㈡埛绋庣櫨鍒嗘瘮
+		Cost                    decimal.Decimal            `gorm:"type:decimal(20,2);comment:鎴愭湰" json:"cost"`               //鎴愭湰
+		CategoryId              int                        `gorm:"type:int(11);comment:浜у搧绫诲瀷id" json:"categoryId"`           //浜у搧鍒嗙被id
+		InternalReference       string                     `gorm:"type:varchar(255);comment:鍐呴儴鍙傝��" json:"internalReference"` //鍐呴儴鍙傝��
+		Barcode                 string                     `gorm:"type:varchar(255);comment:鏉$爜" json:"barcode"`             //鏉$爜
+		ProductTagId            int                        `gorm:"type:int(11);comment:浜у搧鏍囩id" json:"productTagId"`         //浜у搧鏍囩
+		ProductTagName          string                     `gorm:"type:varchar(255);comment:浜у搧鏍囩鍚嶇О" json:"productTagName"`
+		CompanyId               int                        `gorm:"type:int(11);comment:鍏徃id" json:"companyId"`
+		CompanyName             string                     `gorm:"type:varchar(255);comment:鍏徃鍚嶇О" json:"companyName"`
+		InternalNotes           string                     `gorm:"type:varchar(512);comment:鍐呴儴璇存槑" json:"internalNotes"` //鍐呴儴璇存槑
+		CanBeSell               bool                       `gorm:"type:tinyint(1);comment:鏄惁鍙攢鍞�" json:"canBeSell"`      //鏄惁閿�鍞�
+		SelectProduct           int                        `gorm:"type:int(11);comment:鍙�変骇鍝乮d" json:"selectProduct"`
+		SellExplain             string                     `gorm:"type:varchar(512);comment:閿�鍞鏄�" json:"sellExplain"`
+		CanBePurchased          bool                       `gorm:"type:int(11);comment:鏄惁鍙噰璐�" json:"canBePurchased"` //鏄惁鍙噰璐�
+		SupplierId              int                        `gorm:"type:int(11);comment:渚涘簲鍟唅d" json:"supplierId"`
+		SupplierName            string                     `gorm:"type:varchar(255);comment:渚涘簲鍟嗗悕绉�" json:"supplierName"`
+		Price                   decimal.Decimal            `gorm:"type:decimal(20,2);comment:浠锋牸" json:"price"`
+		CurrencyId              int                        `gorm:"type:int(11);comment:甯佺id" json:"currencyId"`
+		CurrencyName            string                     `gorm:"type:varchar(255);comment:甯佺鍚嶇О" json:"currencyName"`
+		DeliveryAdvanceTime     decimal.Decimal            `gorm:"type:decimal(20,5);comment:鎻愬墠浜よ揣鏃堕棿" json:"deliveryAdvanceTime"`
+		ControlStrategy         constvar.InvoicingStrategy `gorm:"type:int(11);comment:鎺у埗绛栫暐" json:"controlStrategy"`
+		BuyExplain              string                     `gorm:"type:varchar(512);comment:閲囪喘璇存槑" json:"buyExplain"`
+		Principal               string                     `gorm:"type:varchar(255);comment:璐熻矗浜�" json:"principal"` //璐熻矗浜�
+		Weight                  decimal.Decimal            `gorm:"type:decimal(20,2);comment:閲嶉噺" json:"weight"`    //閲嶉噺
+		Volume                  decimal.Decimal            `gorm:"type:decimal(20,2);comment:浣撶Н" json:"volume"`    //浣撶Н
+		CustomerAdvanceTime     decimal.Decimal            `gorm:"type:decimal(20,5);comment:瀹㈡埛鍓嶇疆鏃堕棿" json:"customerAdvanceTime"`
+		HSCode                  string                     `gorm:"type:varchar(255);comment:HS缂栫爜" json:"HSCode"`
+		OriginCountryId         int                        `gorm:"type:int(11);comment:鍘熶骇鍦癷d" json:"originCountryId"`
+		OriginCountryName       string                     `gorm:"type:varchar(255);comment:鍘熶骇鍦板悕绉�" json:"originCountryName"`
+		InStorageExplain        string                     `gorm:"type:varchar(512);comment:鍏ュ簱璇存槑" json:"inStorageExplain"`
+		OutStorageExplain       string                     `gorm:"type:varchar(512);comment:鍑哄簱璇存槑" json:"outStorageExplain"`
+		InternalTransferExplain string                     `gorm:"type:varchar(512);comment:鍐呴儴璋冩嫧璇存槑" json:"internalTransferExplain"`
 	}
 
 	ProductSearch struct {
diff --git a/request/product_request.go b/request/product_request.go
new file mode 100644
index 0000000..8af1cd0
--- /dev/null
+++ b/request/product_request.go
@@ -0,0 +1,6 @@
+package request
+
+type GetProductList struct {
+	PageInfo
+	KeyWord string `json:"keyWord"`
+}
diff --git a/router/router.go b/router/router.go
index 6da897f..0df3ac9 100644
--- a/router/router.go
+++ b/router/router.go
@@ -69,5 +69,13 @@
 		operationAPI.POST("operation", operationController.Add)
 	}
 
+	//浜у搧
+	productController := new(controllers.ProductController)
+	productAPI := r.Group(urlPrefix + "/product")
+	{
+		productAPI.POST("addProduct", productController.AddProduct)         // 鏂板浜у搧
+		productAPI.POST("getProductList", productController.GetProductList) // 鑾峰彇浜у搧鍒楄〃
+	}
+
 	return r
 }

--
Gitblit v1.8.0