From 548030097f2b95dff474c397c7393168c73ab8a2 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期三, 20 九月 2023 09:51:04 +0800
Subject: [PATCH] 产品与产品类型功能开发
---
controllers/product_controller.go | 214 +++
models/product_category.go | 10
go.mod | 9
models/material.go | 474 ++++++++
docs/swagger.yaml | 461 ++++++--
docs/docs.go | 667 +++++++++--
docs/swagger.json | 665 +++++++++--
router/router.go | 13
constvar/const.go | 18
go.sum | 17
utils/util.go | 11
models/db.go | 3
models/product.go | 583 +++++-----
13 files changed, 2,416 insertions(+), 729 deletions(-)
diff --git a/constvar/const.go b/constvar/const.go
index 640baa6..009b7e9 100644
--- a/constvar/const.go
+++ b/constvar/const.go
@@ -51,6 +51,22 @@
StoredProduct // 鍙偍瀛樼殑浜у搧
)
+type MaterialMode string
+
+const (
+ MaterialModeRaw MaterialMode = "鍘熸潗鏂�"
+ MaterialModeSemi MaterialMode = "鍗婃垚鍝�"
+ MaterialModeFinished MaterialMode = "鎴愬搧"
+)
+
+type MaterialStatus int
+
+const (
+ MaterialStatusCreate MaterialStatus = iota // 鏂板缓
+ MaterialStatusActive // 鍚敤
+ MaterialStatusInactive = -1 // 鍋滅敤
+)
+
// InvoicingStrategy 寮�绁ㄧ瓥鐣�
type InvoicingStrategy int
@@ -131,7 +147,7 @@
const (
CostingMethodStandardPrice CostingMethod = iota + 1 //鏍囧噯浠锋牸
CostingMethodFIFO //鍏堣繘鍏堝嚭
- CostingMethodAverageCost //
+ CostingMethodAverageCost //骞冲潎鎴愭湰
)
func (t CostingMethod) Valid() bool {
diff --git a/controllers/product_controller.go b/controllers/product_controller.go
index 7c78abc..0f57587 100644
--- a/controllers/product_controller.go
+++ b/controllers/product_controller.go
@@ -2,10 +2,12 @@
import (
"github.com/gin-gonic/gin"
+ "github.com/spf13/cast"
"wms/extend/code"
"wms/extend/util"
"wms/models"
"wms/request"
+ "wms/utils"
)
type ProductController struct {
@@ -15,11 +17,11 @@
// @Tags 浜у搧
// @Summary 娣诲姞浜у搧
// @Produce application/json
-// @Param object body models.Product true "浜у搧淇℃伅"
+// @Param object body models.Material true "浜у搧淇℃伅"
// @Success 200 {object} util.Response "鎴愬姛"
// @Router /api-wms/v1/product/addProduct [post]
func (slf ProductController) AddProduct(c *gin.Context) {
- var params models.Product
+ var params models.Material
if err := c.BindJSON(¶ms); err != nil {
util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
return
@@ -32,7 +34,16 @@
util.ResponseFormat(c, code.RequestParamError, "浜у搧鍞环涓嶈兘灏忎簬绛変簬闆�")
return
}
- err := models.NewProductSearch().Create(¶ms)
+ if params.Model == "" {
+ util.ResponseFormat(c, code.RequestParamError, "鐗╂枡绫诲瀷涓嶈兘涓虹┖")
+ return
+ }
+ if params.Unit == "" {
+ util.ResponseFormat(c, code.RequestParamError, "鍗曚綅涓嶈兘涓虹┖")
+ return
+ }
+ params.ID = utils.GetUUID()
+ err := models.NewMaterialSearch().Create(¶ms)
if err != nil {
util.ResponseFormat(c, code.RequestParamError, "浜у搧淇℃伅淇濆瓨澶辫触")
return
@@ -45,7 +56,7 @@
// @Summary 鑾峰彇浜у搧鍒楄〃
// @Produce application/json
// @Param object body request.GetProductList true "鏌ヨ鍙傛暟"
-// @Success 200 {object} util.ResponseList{data=[]models.Product} "鎴愬姛"
+// @Success 200 {object} util.ResponseList{data=[]models.Material} "鎴愬姛"
// @Router /api-wms/v1/product/getProductList [post]
func (slf ProductController) GetProductList(c *gin.Context) {
var params request.GetProductList
@@ -53,7 +64,7 @@
util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
return
}
- search := models.NewProductSearch()
+ search := models.NewMaterialSearch()
if params.PageInfo.Check() {
search.SetPage(params.Page, params.PageSize)
}
@@ -70,9 +81,196 @@
// @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]
+// @Param id path string true "id" "鏌ヨ鍙傛暟"
+// @Success 200 {object} util.Response{data=models.Material} "鎴愬姛"
+// @Router /api-wms/v1/product/getProductDetails/{id} [get]
func (slf ProductController) GetProductDetails(c *gin.Context) {
+ id := c.Param("id")
+ if id == "" {
+ util.ResponseFormat(c, code.RequestParamError, "鏃犳晥id")
+ return
+ }
+ material, err := models.NewMaterialSearch().SetID(id).First()
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触")
+ return
+ }
+ util.ResponseFormat(c, code.Success, material)
+}
+// UpdateProduct
+// @Tags 浜у搧
+// @Summary 淇敼浜у搧
+// @Produce application/json
+// @Param object body models.Material true "浜у搧淇℃伅"
+// @Success 200 {object} util.Response "鎴愬姛"
+// @Router /api-wms/v1/product/updateProduct [post]
+func (slf ProductController) UpdateProduct(c *gin.Context) {
+ var params models.Material
+ if err := c.BindJSON(¶ms); 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
+ }
+ if params.Model == "" {
+ util.ResponseFormat(c, code.RequestParamError, "鐗╂枡绫诲瀷涓嶈兘涓虹┖")
+ return
+ }
+ if params.Unit == "" {
+ util.ResponseFormat(c, code.RequestParamError, "鍗曚綅涓嶈兘涓虹┖")
+ return
+ }
+ err := models.NewMaterialSearch().SetID(params.ID).Save(¶ms)
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "浜у搧淇℃伅鏇存柊澶辫触")
+ return
+ }
+ util.ResponseFormat(c, code.Success, "鏇存柊鎴愬姛")
+}
+
+// DeleteProduct
+// @Tags 浜у搧
+// @Summary 鍒犻櫎浜у搧
+// @Produce application/json
+// @Param id path string true "id" "鏌ヨ鍙傛暟"
+// @Success 200 {object} util.Response "鎴愬姛"
+// @Router /api-wms/v1/product/deleteProduct/{id} [delete]
+func (slf ProductController) DeleteProduct(c *gin.Context) {
+ id := c.Param("id")
+ if id == "" {
+ util.ResponseFormat(c, code.RequestParamError, "鏃犳晥id")
+ return
+ }
+ err := models.NewMaterialSearch().SetID(id).Delete()
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍒犻櫎澶辫触")
+ return
+ }
+ util.ResponseFormat(c, code.Success, "鍒犻櫎鎴愬姛")
+}
+
+// AddProductCategory
+// @Tags 浜у搧绫诲瀷
+// @Summary 娣诲姞浜у搧绫诲瀷
+// @Produce application/json
+// @Param object body models.ProductCategory true "浜у搧绫诲瀷淇℃伅"
+// @Success 200 {object} util.Response "鎴愬姛"
+// @Router /api-wms/v1/product/addProductCategory [post]
+func (slf ProductController) AddProductCategory(c *gin.Context) {
+ var params models.ProductCategory
+ if err := c.BindJSON(¶ms); err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+ return
+ }
+ if params.Name == "" {
+ util.ResponseFormat(c, code.RequestParamError, "浜у搧绫诲瀷鍚嶇О涓嶈兘涓虹┖")
+ return
+ }
+ err := models.NewProductCategorySearch().Create(¶ms)
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "浜у搧绫诲瀷淇℃伅淇濆瓨澶辫触")
+ return
+ }
+ util.ResponseFormat(c, code.Success, "淇濆瓨鎴愬姛")
+}
+
+// GetProductCategoryList
+// @Tags 浜у搧绫诲瀷
+// @Summary 鑾峰彇浜у搧绫诲瀷鍒楄〃
+// @Produce application/json
+// @Param object body request.GetProductList true "鏌ヨ鍙傛暟"
+// @Success 200 {object} util.ResponseList{data=[]models.ProductCategory} "鎴愬姛"
+// @Router /api-wms/v1/product/getProductCategoryList [post]
+func (slf ProductController) GetProductCategoryList(c *gin.Context) {
+ var params request.GetProductList
+ if err := c.BindJSON(¶ms); err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+ return
+ }
+ search := models.NewProductCategorySearch()
+ if params.PageInfo.Check() {
+ search.SetPage(params.Page, params.PageSize)
+ }
+ list, 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, list, int(total))
+}
+
+// GetProductCategoryDetails
+// @Tags 浜у搧绫诲瀷
+// @Summary 鑾峰彇浜у搧绫诲瀷璇︽儏
+// @Produce application/json
+// @Param id path string true "id" "鏌ヨ鍙傛暟"
+// @Success 200 {object} util.Response{data=models.Material} "鎴愬姛"
+// @Router /api-wms/v1/product/getProductCategoryDetails/{id} [get]
+func (slf ProductController) GetProductCategoryDetails(c *gin.Context) {
+ id := c.Param("id")
+ if id == "" {
+ util.ResponseFormat(c, code.RequestParamError, "鏃犳晥id")
+ return
+ }
+
+ first, err := models.NewProductCategorySearch().SetID(cast.ToUint(id)).First()
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触")
+ return
+ }
+ util.ResponseFormat(c, code.Success, first)
+}
+
+// UpdateProductCategory
+// @Tags 浜у搧绫诲瀷
+// @Summary 淇敼浜у搧绫诲瀷
+// @Produce application/json
+// @Param object body models.ProductCategory true "浜у搧淇℃伅"
+// @Success 200 {object} util.Response "鎴愬姛"
+// @Router /api-wms/v1/product/updateProductCategory [post]
+func (slf ProductController) UpdateProductCategory(c *gin.Context) {
+ var params models.ProductCategory
+ if err := c.BindJSON(¶ms); err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
+ return
+ }
+ if params.Name == "" {
+ util.ResponseFormat(c, code.RequestParamError, "浜у搧绫诲瀷鍚嶇О涓嶈兘涓虹┖")
+ return
+ }
+ err := models.NewProductCategorySearch().SetID(params.ID).Save(¶ms)
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "浜у搧绫诲瀷淇℃伅鏇存柊澶辫触")
+ return
+ }
+ util.ResponseFormat(c, code.Success, "鏇存柊鎴愬姛")
+}
+
+// DeleteProductCategory
+// @Tags 浜у搧绫诲瀷
+// @Summary 鍒犻櫎浜у搧绫诲瀷
+// @Produce application/json
+// @Param id path string true "id" "鏌ヨ鍙傛暟"
+// @Success 200 {object} util.Response "鎴愬姛"
+// @Router /api-wms/v1/product/deleteProductCategory/{id} [delete]
+func (slf ProductController) DeleteProductCategory(c *gin.Context) {
+ id := c.Param("id")
+ if id == "" {
+ util.ResponseFormat(c, code.RequestParamError, "鏃犳晥id")
+ return
+ }
+ err := models.NewProductCategorySearch().SetID(cast.ToUint(id)).Delete()
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍒犻櫎澶辫触")
+ return
+ }
+ util.ResponseFormat(c, code.Success, "鍒犻櫎鎴愬姛")
}
diff --git a/docs/docs.go b/docs/docs.go
index d8f9095..dd6d9d1 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -340,7 +340,7 @@
"in": "body",
"required": true,
"schema": {
- "$ref": "#/definitions/models.Product"
+ "$ref": "#/definitions/models.Material"
}
}
],
@@ -354,15 +354,141 @@
}
}
},
- "/api-wms/v1/product/getProductList": {
+ "/api-wms/v1/product/addProductCategory": {
"post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "浜у搧绫诲瀷"
+ ],
+ "summary": "娣诲姞浜у搧绫诲瀷",
+ "parameters": [
+ {
+ "description": "浜у搧绫诲瀷淇℃伅",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/models.ProductCategory"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/util.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api-wms/v1/product/deleteProduct/{id}": {
+ "delete": {
"produces": [
"application/json"
],
"tags": [
"浜у搧"
],
- "summary": "鑾峰彇浜у搧璇︽儏",
+ "summary": "鍒犻櫎浜у搧",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "id",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/util.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api-wms/v1/product/deleteProductCategory/{id}": {
+ "delete": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "浜у搧绫诲瀷"
+ ],
+ "summary": "鍒犻櫎浜у搧绫诲瀷",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "id",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/util.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api-wms/v1/product/getProductCategoryDetails/{id}": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "浜у搧绫诲瀷"
+ ],
+ "summary": "鑾峰彇浜у搧绫诲瀷璇︽儏",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "id",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/util.Response"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "$ref": "#/definitions/models.Material"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "/api-wms/v1/product/getProductCategoryList": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "浜у搧绫诲瀷"
+ ],
+ "summary": "鑾峰彇浜у搧绫诲瀷鍒楄〃",
"parameters": [
{
"description": "鏌ヨ鍙傛暟",
@@ -388,12 +514,157 @@
"data": {
"type": "array",
"items": {
- "$ref": "#/definitions/models.Product"
+ "$ref": "#/definitions/models.ProductCategory"
}
}
}
}
]
+ }
+ }
+ }
+ }
+ },
+ "/api-wms/v1/product/getProductDetails/{id}": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "浜у搧"
+ ],
+ "summary": "鑾峰彇浜у搧璇︽儏",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "id",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/util.Response"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "$ref": "#/definitions/models.Material"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "/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.Material"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "/api-wms/v1/product/updateProduct": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "浜у搧"
+ ],
+ "summary": "淇敼浜у搧",
+ "parameters": [
+ {
+ "description": "浜у搧淇℃伅",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/models.Material"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/util.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api-wms/v1/product/updateProductCategory": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "浜у搧绫诲瀷"
+ ],
+ "summary": "淇敼浜у搧绫诲瀷",
+ "parameters": [
+ {
+ "description": "浜у搧淇℃伅",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/models.ProductCategory"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/util.Response"
}
}
}
@@ -707,6 +978,52 @@
"BaseOperationTypeInternal"
]
},
+ "constvar.CostingMethod": {
+ "type": "integer",
+ "enum": [
+ 1,
+ 2,
+ 3
+ ],
+ "x-enum-comments": {
+ "CostingMethodAverageCost": "骞冲潎鎴愭湰",
+ "CostingMethodFIFO": "鍏堣繘鍏堝嚭",
+ "CostingMethodStandardPrice": "鏍囧噯浠锋牸"
+ },
+ "x-enum-varnames": [
+ "CostingMethodStandardPrice",
+ "CostingMethodFIFO",
+ "CostingMethodAverageCost"
+ ]
+ },
+ "constvar.ForceRemovalStrategy": {
+ "type": "integer",
+ "enum": [
+ 1,
+ 2,
+ 3
+ ],
+ "x-enum-varnames": [
+ "ForceRemovalStrategyFIFO",
+ "ForceRemovalStrategyLIFO",
+ "ForceRemovalStrategyClosestLocation"
+ ]
+ },
+ "constvar.InventoryValuation": {
+ "type": "integer",
+ "enum": [
+ 1,
+ 2
+ ],
+ "x-enum-comments": {
+ "InventoryValuationAuto": "鑷姩",
+ "InventoryValuationManual": "鎵嬪姩"
+ },
+ "x-enum-varnames": [
+ "InventoryValuationManual",
+ "InventoryValuationAuto"
+ ]
+ },
"constvar.InvoicingStrategy": {
"type": "integer",
"enum": [
@@ -761,6 +1078,19 @@
"LocationTypeTransit"
]
},
+ "constvar.MaterialMode": {
+ "type": "string",
+ "enum": [
+ "鍘熸潗鏂�",
+ "鍗婃垚鍝�",
+ "鎴愬搧"
+ ],
+ "x-enum-varnames": [
+ "MaterialModeRaw",
+ "MaterialModeSemi",
+ "MaterialModeFinished"
+ ]
+ },
"constvar.OperationStatus": {
"type": "integer",
"enum": [
@@ -801,24 +1131,6 @@
"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": {
@@ -971,6 +1283,157 @@
}
}
},
+ "models.Material": {
+ "type": "object",
+ "properties": {
+ "HSCode": {
+ "type": "string"
+ },
+ "amount": {
+ "type": "number"
+ },
+ "barcode": {
+ "description": "鏉$爜",
+ "type": "string"
+ },
+ "buyExplain": {
+ "type": "string"
+ },
+ "canBePurchased": {
+ "description": "鏄惁鍙噰璐�",
+ "type": "boolean"
+ },
+ "categoryId": {
+ "description": "浜у搧绫诲埆id",
+ "type": "integer"
+ },
+ "companyId": {
+ "type": "integer"
+ },
+ "companyName": {
+ "type": "string"
+ },
+ "controlStrategy": {
+ "$ref": "#/definitions/constvar.InvoicingStrategy"
+ },
+ "cost": {
+ "description": "鎴愭湰",
+ "type": "number"
+ },
+ "currencyName": {
+ "type": "string"
+ },
+ "customerTaxes": {
+ "description": "瀹㈡埛绋庣櫨鍒嗘瘮",
+ "type": "number"
+ },
+ "deliveryAdvanceTime": {
+ "type": "integer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "inStorageExplain": {
+ "type": "string"
+ },
+ "internalNotes": {
+ "description": "鍐呴儴璇存槑",
+ "type": "string"
+ },
+ "internalReference": {
+ "description": "鍐呴儴鍙傝��",
+ "type": "string"
+ },
+ "internalTransferExplain": {
+ "type": "string"
+ },
+ "invoicingStrategy": {
+ "description": "wms娣诲姞瀛楁",
+ "allOf": [
+ {
+ "$ref": "#/definitions/constvar.InvoicingStrategy"
+ }
+ ]
+ },
+ "isSale": {
+ "description": "PurchaseType constvar.PurchaseType ` + "`" + `gorm:\"type:int(11);comment:閲囪喘绫诲瀷\" json:\"purchaseType\"` + "`" + `",
+ "type": "boolean"
+ },
+ "maxInventory": {
+ "type": "number"
+ },
+ "minInventory": {
+ "description": "Explain string ` + "`" + `gorm:\"type:varchar(512);comment:缂栧彿璇存槑\" json:\"explain\"` + "`" + `\nCodeStandardID string ` + "`" + `gorm:\"type:varchar(191);comment:缂栫爜瑙勮寖ID\" json:\"codeStandardID\"` + "`" + `\nSpecs string ` + "`" + `gorm:\"type:varchar(191);comment:鐗╂枡瑙勬牸\" json:\"specs\"` + "`" + `\nType string ` + "`" + `gorm:\"type:varchar(191);comment:鐗╂枡鍨嬪彿\" json:\"type\"` + "`" + `",
+ "type": "number"
+ },
+ "minPurchaseAmount": {
+ "description": "PurchaseAheadDay int ` + "`" + `gorm:\"type:int(11);comment:閲囪喘鎻愬墠鏈�(澶�)\" json:\"purchaseAheadDay\"` + "`" + `\nProduceAheadDay int ` + "`" + `gorm:\"type:int(11);comment:鍒堕�犳彁鍓嶆湡(澶�)\" json:\"produceAheadDay\"` + "`" + `",
+ "type": "number"
+ },
+ "model": {
+ "description": "MaterialType constvar.ProductType ` + "`" + `gorm:\"index;type:int(11);comment:鐗╂枡绫诲瀷(鏁板瓧)\" json:\"materialType\"` + "`" + `",
+ "allOf": [
+ {
+ "$ref": "#/definitions/constvar.MaterialMode"
+ }
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "orderCreation": {
+ "$ref": "#/definitions/constvar.OrderCreation"
+ },
+ "originCountryId": {
+ "type": "integer"
+ },
+ "originCountryName": {
+ "type": "string"
+ },
+ "outStorageExplain": {
+ "type": "string"
+ },
+ "principal": {
+ "description": "璐熻矗浜�",
+ "type": "string"
+ },
+ "productTagId": {
+ "description": "浜у搧鏍囩",
+ "type": "integer"
+ },
+ "productTagName": {
+ "type": "string"
+ },
+ "purchasePrice": {
+ "type": "number"
+ },
+ "salePrice": {
+ "type": "number"
+ },
+ "selectProduct": {
+ "type": "integer"
+ },
+ "sellExplain": {
+ "type": "string"
+ },
+ "supplier": {
+ "description": "FSource string ` + "`" + `gorm:\"type:varchar(191);comment:鐢熶骇杞﹂棿\" json:\"-\"` + "`" + `\nStatus constvar.MaterialStatus ` + "`" + `gorm:\"type:int(11);comment:鐘舵�乗" json:\"status\"` + "`" + `",
+ "type": "string"
+ },
+ "unit": {
+ "description": "LockAmount decimal.Decimal ` + "`" + `gorm:\"type:decimal(35,18);default:0;comment:閿佸畾鏁伴噺\" json:\"lockAmount\"` + "`" + `",
+ "type": "string"
+ },
+ "volume": {
+ "description": "浣撶Н",
+ "type": "number"
+ },
+ "weight": {
+ "description": "閲嶉噺",
+ "type": "number"
+ }
+ }
+ },
"models.OperationType": {
"type": "object",
"properties": {
@@ -1085,150 +1548,50 @@
}
}
},
- "models.Product": {
+ "models.ProductCategory": {
"type": "object",
"properties": {
- "HSCode": {
- "type": "string"
+ "costingMethod": {
+ "description": "鎴愭湰鏂规硶",
+ "allOf": [
+ {
+ "$ref": "#/definitions/constvar.CostingMethod"
+ }
+ ]
},
- "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"
+ "forceRemovalStrategy": {
+ "description": "寮哄埗涓嬫灦绛栫暐",
+ "allOf": [
+ {
+ "$ref": "#/definitions/constvar.ForceRemovalStrategy"
+ }
+ ]
},
"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": "浜у搧绫诲瀷",
+ "inventoryValuation": {
+ "description": "搴撳瓨璁′环",
"allOf": [
{
- "$ref": "#/definitions/constvar.ProductType"
+ "$ref": "#/definitions/constvar.InventoryValuation"
}
]
},
- "updateTime": {
+ "name": {
+ "description": "浣嶇疆鍚嶇О",
"type": "string"
},
- "volume": {
- "description": "浣撶Н",
- "type": "number"
+ "parentId": {
+ "description": "涓婄骇id",
+ "type": "integer"
},
- "weight": {
- "description": "閲嶉噺",
- "type": "number"
+ "routeId": {
+ "type": "integer"
+ },
+ "routeName": {
+ "description": "鍏徃",
+ "type": "string"
}
}
},
@@ -1706,6 +2069,8 @@
Description: "",
InfoInstanceName: "swagger",
SwaggerTemplate: docTemplate,
+ LeftDelim: "{{",
+ RightDelim: "}}",
}
func init() {
diff --git a/docs/swagger.json b/docs/swagger.json
index 85fbd31..1435b82 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -328,7 +328,7 @@
"in": "body",
"required": true,
"schema": {
- "$ref": "#/definitions/models.Product"
+ "$ref": "#/definitions/models.Material"
}
}
],
@@ -342,15 +342,141 @@
}
}
},
- "/api-wms/v1/product/getProductList": {
+ "/api-wms/v1/product/addProductCategory": {
"post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "浜у搧绫诲瀷"
+ ],
+ "summary": "娣诲姞浜у搧绫诲瀷",
+ "parameters": [
+ {
+ "description": "浜у搧绫诲瀷淇℃伅",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/models.ProductCategory"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/util.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api-wms/v1/product/deleteProduct/{id}": {
+ "delete": {
"produces": [
"application/json"
],
"tags": [
"浜у搧"
],
- "summary": "鑾峰彇浜у搧璇︽儏",
+ "summary": "鍒犻櫎浜у搧",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "id",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/util.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api-wms/v1/product/deleteProductCategory/{id}": {
+ "delete": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "浜у搧绫诲瀷"
+ ],
+ "summary": "鍒犻櫎浜у搧绫诲瀷",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "id",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/util.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api-wms/v1/product/getProductCategoryDetails/{id}": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "浜у搧绫诲瀷"
+ ],
+ "summary": "鑾峰彇浜у搧绫诲瀷璇︽儏",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "id",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/util.Response"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "$ref": "#/definitions/models.Material"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "/api-wms/v1/product/getProductCategoryList": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "浜у搧绫诲瀷"
+ ],
+ "summary": "鑾峰彇浜у搧绫诲瀷鍒楄〃",
"parameters": [
{
"description": "鏌ヨ鍙傛暟",
@@ -376,12 +502,157 @@
"data": {
"type": "array",
"items": {
- "$ref": "#/definitions/models.Product"
+ "$ref": "#/definitions/models.ProductCategory"
}
}
}
}
]
+ }
+ }
+ }
+ }
+ },
+ "/api-wms/v1/product/getProductDetails/{id}": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "浜у搧"
+ ],
+ "summary": "鑾峰彇浜у搧璇︽儏",
+ "parameters": [
+ {
+ "type": "string",
+ "description": "id",
+ "name": "id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/util.Response"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "data": {
+ "$ref": "#/definitions/models.Material"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "/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.Material"
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "/api-wms/v1/product/updateProduct": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "浜у搧"
+ ],
+ "summary": "淇敼浜у搧",
+ "parameters": [
+ {
+ "description": "浜у搧淇℃伅",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/models.Material"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/util.Response"
+ }
+ }
+ }
+ }
+ },
+ "/api-wms/v1/product/updateProductCategory": {
+ "post": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "浜у搧绫诲瀷"
+ ],
+ "summary": "淇敼浜у搧绫诲瀷",
+ "parameters": [
+ {
+ "description": "浜у搧淇℃伅",
+ "name": "object",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/models.ProductCategory"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "鎴愬姛",
+ "schema": {
+ "$ref": "#/definitions/util.Response"
}
}
}
@@ -695,6 +966,52 @@
"BaseOperationTypeInternal"
]
},
+ "constvar.CostingMethod": {
+ "type": "integer",
+ "enum": [
+ 1,
+ 2,
+ 3
+ ],
+ "x-enum-comments": {
+ "CostingMethodAverageCost": "骞冲潎鎴愭湰",
+ "CostingMethodFIFO": "鍏堣繘鍏堝嚭",
+ "CostingMethodStandardPrice": "鏍囧噯浠锋牸"
+ },
+ "x-enum-varnames": [
+ "CostingMethodStandardPrice",
+ "CostingMethodFIFO",
+ "CostingMethodAverageCost"
+ ]
+ },
+ "constvar.ForceRemovalStrategy": {
+ "type": "integer",
+ "enum": [
+ 1,
+ 2,
+ 3
+ ],
+ "x-enum-varnames": [
+ "ForceRemovalStrategyFIFO",
+ "ForceRemovalStrategyLIFO",
+ "ForceRemovalStrategyClosestLocation"
+ ]
+ },
+ "constvar.InventoryValuation": {
+ "type": "integer",
+ "enum": [
+ 1,
+ 2
+ ],
+ "x-enum-comments": {
+ "InventoryValuationAuto": "鑷姩",
+ "InventoryValuationManual": "鎵嬪姩"
+ },
+ "x-enum-varnames": [
+ "InventoryValuationManual",
+ "InventoryValuationAuto"
+ ]
+ },
"constvar.InvoicingStrategy": {
"type": "integer",
"enum": [
@@ -749,6 +1066,19 @@
"LocationTypeTransit"
]
},
+ "constvar.MaterialMode": {
+ "type": "string",
+ "enum": [
+ "鍘熸潗鏂�",
+ "鍗婃垚鍝�",
+ "鎴愬搧"
+ ],
+ "x-enum-varnames": [
+ "MaterialModeRaw",
+ "MaterialModeSemi",
+ "MaterialModeFinished"
+ ]
+ },
"constvar.OperationStatus": {
"type": "integer",
"enum": [
@@ -789,24 +1119,6 @@
"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": {
@@ -959,6 +1271,157 @@
}
}
},
+ "models.Material": {
+ "type": "object",
+ "properties": {
+ "HSCode": {
+ "type": "string"
+ },
+ "amount": {
+ "type": "number"
+ },
+ "barcode": {
+ "description": "鏉$爜",
+ "type": "string"
+ },
+ "buyExplain": {
+ "type": "string"
+ },
+ "canBePurchased": {
+ "description": "鏄惁鍙噰璐�",
+ "type": "boolean"
+ },
+ "categoryId": {
+ "description": "浜у搧绫诲埆id",
+ "type": "integer"
+ },
+ "companyId": {
+ "type": "integer"
+ },
+ "companyName": {
+ "type": "string"
+ },
+ "controlStrategy": {
+ "$ref": "#/definitions/constvar.InvoicingStrategy"
+ },
+ "cost": {
+ "description": "鎴愭湰",
+ "type": "number"
+ },
+ "currencyName": {
+ "type": "string"
+ },
+ "customerTaxes": {
+ "description": "瀹㈡埛绋庣櫨鍒嗘瘮",
+ "type": "number"
+ },
+ "deliveryAdvanceTime": {
+ "type": "integer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "inStorageExplain": {
+ "type": "string"
+ },
+ "internalNotes": {
+ "description": "鍐呴儴璇存槑",
+ "type": "string"
+ },
+ "internalReference": {
+ "description": "鍐呴儴鍙傝��",
+ "type": "string"
+ },
+ "internalTransferExplain": {
+ "type": "string"
+ },
+ "invoicingStrategy": {
+ "description": "wms娣诲姞瀛楁",
+ "allOf": [
+ {
+ "$ref": "#/definitions/constvar.InvoicingStrategy"
+ }
+ ]
+ },
+ "isSale": {
+ "description": "PurchaseType constvar.PurchaseType `gorm:\"type:int(11);comment:閲囪喘绫诲瀷\" json:\"purchaseType\"`",
+ "type": "boolean"
+ },
+ "maxInventory": {
+ "type": "number"
+ },
+ "minInventory": {
+ "description": "Explain string `gorm:\"type:varchar(512);comment:缂栧彿璇存槑\" json:\"explain\"`\nCodeStandardID string `gorm:\"type:varchar(191);comment:缂栫爜瑙勮寖ID\" json:\"codeStandardID\"`\nSpecs string `gorm:\"type:varchar(191);comment:鐗╂枡瑙勬牸\" json:\"specs\"`\nType string `gorm:\"type:varchar(191);comment:鐗╂枡鍨嬪彿\" json:\"type\"`",
+ "type": "number"
+ },
+ "minPurchaseAmount": {
+ "description": "PurchaseAheadDay int `gorm:\"type:int(11);comment:閲囪喘鎻愬墠鏈�(澶�)\" json:\"purchaseAheadDay\"`\nProduceAheadDay int `gorm:\"type:int(11);comment:鍒堕�犳彁鍓嶆湡(澶�)\" json:\"produceAheadDay\"`",
+ "type": "number"
+ },
+ "model": {
+ "description": "MaterialType constvar.ProductType `gorm:\"index;type:int(11);comment:鐗╂枡绫诲瀷(鏁板瓧)\" json:\"materialType\"`",
+ "allOf": [
+ {
+ "$ref": "#/definitions/constvar.MaterialMode"
+ }
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "orderCreation": {
+ "$ref": "#/definitions/constvar.OrderCreation"
+ },
+ "originCountryId": {
+ "type": "integer"
+ },
+ "originCountryName": {
+ "type": "string"
+ },
+ "outStorageExplain": {
+ "type": "string"
+ },
+ "principal": {
+ "description": "璐熻矗浜�",
+ "type": "string"
+ },
+ "productTagId": {
+ "description": "浜у搧鏍囩",
+ "type": "integer"
+ },
+ "productTagName": {
+ "type": "string"
+ },
+ "purchasePrice": {
+ "type": "number"
+ },
+ "salePrice": {
+ "type": "number"
+ },
+ "selectProduct": {
+ "type": "integer"
+ },
+ "sellExplain": {
+ "type": "string"
+ },
+ "supplier": {
+ "description": "FSource string `gorm:\"type:varchar(191);comment:鐢熶骇杞﹂棿\" json:\"-\"`\nStatus constvar.MaterialStatus `gorm:\"type:int(11);comment:鐘舵�乗" json:\"status\"`",
+ "type": "string"
+ },
+ "unit": {
+ "description": "LockAmount decimal.Decimal `gorm:\"type:decimal(35,18);default:0;comment:閿佸畾鏁伴噺\" json:\"lockAmount\"`",
+ "type": "string"
+ },
+ "volume": {
+ "description": "浣撶Н",
+ "type": "number"
+ },
+ "weight": {
+ "description": "閲嶉噺",
+ "type": "number"
+ }
+ }
+ },
"models.OperationType": {
"type": "object",
"properties": {
@@ -1073,150 +1536,50 @@
}
}
},
- "models.Product": {
+ "models.ProductCategory": {
"type": "object",
"properties": {
- "HSCode": {
- "type": "string"
+ "costingMethod": {
+ "description": "鎴愭湰鏂规硶",
+ "allOf": [
+ {
+ "$ref": "#/definitions/constvar.CostingMethod"
+ }
+ ]
},
- "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"
+ "forceRemovalStrategy": {
+ "description": "寮哄埗涓嬫灦绛栫暐",
+ "allOf": [
+ {
+ "$ref": "#/definitions/constvar.ForceRemovalStrategy"
+ }
+ ]
},
"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": "浜у搧绫诲瀷",
+ "inventoryValuation": {
+ "description": "搴撳瓨璁′环",
"allOf": [
{
- "$ref": "#/definitions/constvar.ProductType"
+ "$ref": "#/definitions/constvar.InventoryValuation"
}
]
},
- "updateTime": {
+ "name": {
+ "description": "浣嶇疆鍚嶇О",
"type": "string"
},
- "volume": {
- "description": "浣撶Н",
- "type": "number"
+ "parentId": {
+ "description": "涓婄骇id",
+ "type": "integer"
},
- "weight": {
- "description": "閲嶉噺",
- "type": "number"
+ "routeId": {
+ "type": "integer"
+ },
+ "routeName": {
+ "description": "鍏徃",
+ "type": "string"
}
}
},
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 76b7b0e..2d89dc0 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -13,6 +13,41 @@
- BaseOperationTypeIncoming
- BaseOperationTypeOutgoing
- BaseOperationTypeInternal
+ constvar.CostingMethod:
+ enum:
+ - 1
+ - 2
+ - 3
+ type: integer
+ x-enum-comments:
+ CostingMethodAverageCost: 骞冲潎鎴愭湰
+ CostingMethodFIFO: 鍏堣繘鍏堝嚭
+ CostingMethodStandardPrice: 鏍囧噯浠锋牸
+ x-enum-varnames:
+ - CostingMethodStandardPrice
+ - CostingMethodFIFO
+ - CostingMethodAverageCost
+ constvar.ForceRemovalStrategy:
+ enum:
+ - 1
+ - 2
+ - 3
+ type: integer
+ x-enum-varnames:
+ - ForceRemovalStrategyFIFO
+ - ForceRemovalStrategyLIFO
+ - ForceRemovalStrategyClosestLocation
+ constvar.InventoryValuation:
+ enum:
+ - 1
+ - 2
+ type: integer
+ x-enum-comments:
+ InventoryValuationAuto: 鑷姩
+ InventoryValuationManual: 鎵嬪姩
+ x-enum-varnames:
+ - InventoryValuationManual
+ - InventoryValuationAuto
constvar.InvoicingStrategy:
enum:
- 1
@@ -59,6 +94,16 @@
- LocationTypeInventoryLoss
- LocationTypeProduction
- LocationTypeTransit
+ constvar.MaterialMode:
+ enum:
+ - 鍘熸潗鏂�
+ - 鍗婃垚鍝�
+ - 鎴愬搧
+ type: string
+ x-enum-varnames:
+ - MaterialModeRaw
+ - MaterialModeSemi
+ - MaterialModeFinished
constvar.OperationStatus:
enum:
- 1
@@ -93,20 +138,6 @@
- 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
@@ -212,6 +243,120 @@
updateTime:
type: string
type: object
+ models.Material:
+ properties:
+ HSCode:
+ type: string
+ amount:
+ type: number
+ barcode:
+ description: 鏉$爜
+ type: string
+ buyExplain:
+ type: string
+ canBePurchased:
+ description: 鏄惁鍙噰璐�
+ type: boolean
+ categoryId:
+ description: 浜у搧绫诲埆id
+ type: integer
+ companyId:
+ type: integer
+ companyName:
+ type: string
+ controlStrategy:
+ $ref: '#/definitions/constvar.InvoicingStrategy'
+ cost:
+ description: 鎴愭湰
+ type: number
+ currencyName:
+ type: string
+ customerTaxes:
+ description: 瀹㈡埛绋庣櫨鍒嗘瘮
+ type: number
+ deliveryAdvanceTime:
+ type: integer
+ id:
+ type: string
+ inStorageExplain:
+ type: string
+ internalNotes:
+ description: 鍐呴儴璇存槑
+ type: string
+ internalReference:
+ description: 鍐呴儴鍙傝��
+ type: string
+ internalTransferExplain:
+ type: string
+ invoicingStrategy:
+ allOf:
+ - $ref: '#/definitions/constvar.InvoicingStrategy'
+ description: wms娣诲姞瀛楁
+ isSale:
+ description: PurchaseType constvar.PurchaseType `gorm:"type:int(11);comment:閲囪喘绫诲瀷"
+ json:"purchaseType"`
+ type: boolean
+ maxInventory:
+ type: number
+ minInventory:
+ description: |-
+ Explain string `gorm:"type:varchar(512);comment:缂栧彿璇存槑" json:"explain"`
+ CodeStandardID string `gorm:"type:varchar(191);comment:缂栫爜瑙勮寖ID" json:"codeStandardID"`
+ Specs string `gorm:"type:varchar(191);comment:鐗╂枡瑙勬牸" json:"specs"`
+ Type string `gorm:"type:varchar(191);comment:鐗╂枡鍨嬪彿" json:"type"`
+ type: number
+ minPurchaseAmount:
+ description: |-
+ PurchaseAheadDay int `gorm:"type:int(11);comment:閲囪喘鎻愬墠鏈�(澶�)" json:"purchaseAheadDay"`
+ ProduceAheadDay int `gorm:"type:int(11);comment:鍒堕�犳彁鍓嶆湡(澶�)" json:"produceAheadDay"`
+ type: number
+ model:
+ allOf:
+ - $ref: '#/definitions/constvar.MaterialMode'
+ description: MaterialType constvar.ProductType `gorm:"index;type:int(11);comment:鐗╂枡绫诲瀷(鏁板瓧)"
+ json:"materialType"`
+ name:
+ type: string
+ orderCreation:
+ $ref: '#/definitions/constvar.OrderCreation'
+ originCountryId:
+ type: integer
+ originCountryName:
+ type: string
+ outStorageExplain:
+ type: string
+ principal:
+ description: 璐熻矗浜�
+ type: string
+ productTagId:
+ description: 浜у搧鏍囩
+ type: integer
+ productTagName:
+ type: string
+ purchasePrice:
+ type: number
+ salePrice:
+ type: number
+ selectProduct:
+ type: integer
+ sellExplain:
+ type: string
+ supplier:
+ description: |-
+ FSource string `gorm:"type:varchar(191);comment:鐢熶骇杞﹂棿" json:"-"`
+ Status constvar.MaterialStatus `gorm:"type:int(11);comment:鐘舵��" json:"status"`
+ type: string
+ unit:
+ description: LockAmount decimal.Decimal `gorm:"type:decimal(35,18);default:0;comment:閿佸畾鏁伴噺"
+ json:"lockAmount"`
+ type: string
+ volume:
+ description: 浣撶Н
+ type: number
+ weight:
+ description: 閲嶉噺
+ type: number
+ type: object
models.OperationType:
properties:
ReservationDaysBeforePriority:
@@ -282,106 +427,33 @@
description: 浠撳簱id
type: integer
type: object
- models.Product:
+ models.ProductCategory:
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
+ costingMethod:
+ allOf:
+ - $ref: '#/definitions/constvar.CostingMethod'
+ description: 鎴愭湰鏂规硶
+ forceRemovalStrategy:
+ allOf:
+ - $ref: '#/definitions/constvar.ForceRemovalStrategy'
+ description: 寮哄埗涓嬫灦绛栫暐
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:
+ inventoryValuation:
allOf:
- - $ref: '#/definitions/constvar.ProductType'
- description: 浜у搧绫诲瀷
- updateTime:
+ - $ref: '#/definitions/constvar.InventoryValuation'
+ description: 搴撳瓨璁′环
+ name:
+ description: 浣嶇疆鍚嶇О
type: string
- volume:
- description: 浣撶Н
- type: number
- weight:
- description: 閲嶉噺
- type: number
+ parentId:
+ description: 涓婄骇id
+ type: integer
+ routeId:
+ type: integer
+ routeName:
+ description: 鍏徃
+ type: string
type: object
models.Warehouse:
properties:
@@ -902,7 +974,7 @@
name: object
required: true
schema:
- $ref: '#/definitions/models.Product'
+ $ref: '#/definitions/models.Material'
produces:
- application/json
responses:
@@ -911,6 +983,133 @@
schema:
$ref: '#/definitions/util.Response'
summary: 娣诲姞浜у搧
+ tags:
+ - 浜у搧
+ /api-wms/v1/product/addProductCategory:
+ post:
+ parameters:
+ - description: 浜у搧绫诲瀷淇℃伅
+ in: body
+ name: object
+ required: true
+ schema:
+ $ref: '#/definitions/models.ProductCategory'
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: 鎴愬姛
+ schema:
+ $ref: '#/definitions/util.Response'
+ summary: 娣诲姞浜у搧绫诲瀷
+ tags:
+ - 浜у搧绫诲瀷
+ /api-wms/v1/product/deleteProduct/{id}:
+ delete:
+ parameters:
+ - description: id
+ in: path
+ name: id
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: 鎴愬姛
+ schema:
+ $ref: '#/definitions/util.Response'
+ summary: 鍒犻櫎浜у搧
+ tags:
+ - 浜у搧
+ /api-wms/v1/product/deleteProductCategory/{id}:
+ delete:
+ parameters:
+ - description: id
+ in: path
+ name: id
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: 鎴愬姛
+ schema:
+ $ref: '#/definitions/util.Response'
+ summary: 鍒犻櫎浜у搧绫诲瀷
+ tags:
+ - 浜у搧绫诲瀷
+ /api-wms/v1/product/getProductCategoryDetails/{id}:
+ get:
+ parameters:
+ - description: id
+ in: path
+ name: id
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: 鎴愬姛
+ schema:
+ allOf:
+ - $ref: '#/definitions/util.Response'
+ - properties:
+ data:
+ $ref: '#/definitions/models.Material'
+ type: object
+ summary: 鑾峰彇浜у搧绫诲瀷璇︽儏
+ tags:
+ - 浜у搧绫诲瀷
+ /api-wms/v1/product/getProductCategoryList:
+ 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.ProductCategory'
+ type: array
+ type: object
+ summary: 鑾峰彇浜у搧绫诲瀷鍒楄〃
+ tags:
+ - 浜у搧绫诲瀷
+ /api-wms/v1/product/getProductDetails/{id}:
+ get:
+ parameters:
+ - description: id
+ in: path
+ name: id
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: 鎴愬姛
+ schema:
+ allOf:
+ - $ref: '#/definitions/util.Response'
+ - properties:
+ data:
+ $ref: '#/definitions/models.Material'
+ type: object
+ summary: 鑾峰彇浜у搧璇︽儏
tags:
- 浜у搧
/api-wms/v1/product/getProductList:
@@ -933,12 +1132,50 @@
- properties:
data:
items:
- $ref: '#/definitions/models.Product'
+ $ref: '#/definitions/models.Material'
type: array
type: object
- summary: 鑾峰彇浜у搧璇︽儏
+ summary: 鑾峰彇浜у搧鍒楄〃
tags:
- 浜у搧
+ /api-wms/v1/product/updateProduct:
+ post:
+ parameters:
+ - description: 浜у搧淇℃伅
+ in: body
+ name: object
+ required: true
+ schema:
+ $ref: '#/definitions/models.Material'
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: 鎴愬姛
+ schema:
+ $ref: '#/definitions/util.Response'
+ summary: 淇敼浜у搧
+ tags:
+ - 浜у搧
+ /api-wms/v1/product/updateProductCategory:
+ post:
+ parameters:
+ - description: 浜у搧淇℃伅
+ in: body
+ name: object
+ required: true
+ schema:
+ $ref: '#/definitions/models.ProductCategory'
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: 鎴愬姛
+ schema:
+ $ref: '#/definitions/util.Response'
+ summary: 淇敼浜у搧绫诲瀷
+ tags:
+ - 浜у搧绫诲瀷
/api-wms/v1/warehouse/operationType:
get:
parameters:
diff --git a/go.mod b/go.mod
index 84ea6f9..4a55e73 100644
--- a/go.mod
+++ b/go.mod
@@ -6,6 +6,7 @@
basic.com/aps/nsqclient.git v0.0.0-20230517072415-37491f4a5d25
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/gin-gonic/gin v1.9.0
+ github.com/google/uuid v1.1.2
github.com/nsqio/go-nsq v1.1.0
github.com/shopspring/decimal v1.3.1
github.com/spf13/cast v1.5.0
@@ -14,7 +15,7 @@
github.com/swaggo/gin-swagger v1.6.0
github.com/swaggo/swag v1.16.1
go.uber.org/zap v1.24.0
- golang.org/x/crypto v0.11.0
+ golang.org/x/crypto v0.12.0
google.golang.org/genproto v0.0.0-20230323212658-478b75c54725
gopkg.in/natefinch/lumberjack.v2 v2.2.1
gorm.io/driver/mysql v1.5.0
@@ -62,9 +63,9 @@
go.uber.org/atomic v1.9.0 // indirect
go.uber.org/multierr v1.8.0 // indirect
golang.org/x/arch v0.4.0 // indirect
- golang.org/x/net v0.12.0 // indirect
- golang.org/x/sys v0.10.0 // indirect
- golang.org/x/text v0.11.0 // indirect
+ golang.org/x/net v0.14.0 // indirect
+ golang.org/x/sys v0.11.0 // indirect
+ golang.org/x/text v0.12.0 // indirect
golang.org/x/tools v0.11.0 // indirect
google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
diff --git a/go.sum b/go.sum
index 4aa9e74..3191386 100644
--- a/go.sum
+++ b/go.sum
@@ -165,6 +165,7 @@
github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
@@ -304,8 +305,8 @@
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA=
-golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
+golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk=
+golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -376,8 +377,8 @@
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50=
-golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
+golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14=
+golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -440,8 +441,8 @@
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA=
-golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
@@ -453,8 +454,8 @@
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4=
-golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc=
+golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
diff --git a/models/db.go b/models/db.go
index e32a28e..ed1c78b 100644
--- a/models/db.go
+++ b/models/db.go
@@ -82,8 +82,9 @@
OperationDetails{},
Scrap{},
MoveHistory{},
- Product{},
+ //Product{},
ProductCategory{},
+ Material{},
)
return err
}
diff --git a/models/material.go b/models/material.go
new file mode 100644
index 0000000..26bd05e
--- /dev/null
+++ b/models/material.go
@@ -0,0 +1,474 @@
+package models
+
+import (
+ "fmt"
+ "github.com/shopspring/decimal"
+ "gorm.io/gorm"
+ "wms/constvar"
+ "wms/pkg/mysqlx"
+)
+
+type (
+ // Material 鐗╂枡
+ Material struct {
+ BaseModelString
+ Name string `gorm:"unique;type:varchar(191);not null;comment:鐗╂枡鍚嶇О" json:"name"`
+ //MaterialType constvar.ProductType `gorm:"index;type:int(11);comment:鐗╂枡绫诲瀷(鏁板瓧)" json:"materialType"`
+ Model constvar.MaterialMode `gorm:"type:varchar(191);not null;comment:鐗╂枡绫诲瀷(瀛楃涓�)" json:"model"`
+ //Explain string `gorm:"type:varchar(512);comment:缂栧彿璇存槑" json:"explain"`
+ //CodeStandardID string `gorm:"type:varchar(191);comment:缂栫爜瑙勮寖ID" json:"codeStandardID"`
+ //Specs string `gorm:"type:varchar(191);comment:鐗╂枡瑙勬牸" json:"specs"`
+ //Type string `gorm:"type:varchar(191);comment:鐗╂枡鍨嬪彿" json:"type"`
+ MinInventory decimal.Decimal `gorm:"type:decimal(35,18);comment:鏈�灏忓簱瀛�" json:"minInventory"`
+ MaxInventory decimal.Decimal `gorm:"type:decimal(35,18);comment:鏈�澶у簱瀛�" json:"maxInventory"`
+ Amount decimal.Decimal `gorm:"type:decimal(35,18);comment:鏁伴噺" json:"amount"`
+ //LockAmount decimal.Decimal `gorm:"type:decimal(35,18);default:0;comment:閿佸畾鏁伴噺" json:"lockAmount"`
+ Unit string `gorm:"type:varchar(100);comment:鍗曚綅" json:"unit"`
+ //Note string `gorm:"type:varchar(1024);comment:澶囨敞" json:"note"`
+ TemplateID string `gorm:"type:varchar(191);comment:妯℃澘ID" json:"-"`
+ //FSource string `gorm:"type:varchar(191);comment:鐢熶骇杞﹂棿" json:"-"`
+ //Status constvar.MaterialStatus `gorm:"type:int(11);comment:鐘舵��" json:"status"`
+ Supplier string `gorm:"type:varchar(191);comment:渚涘簲鍟�" json:"supplier"`
+ PurchasePrice decimal.Decimal `gorm:"type:decimal(35,18);comment:閲囪喘浠锋牸" json:"purchasePrice"`
+ //PurchaseAheadDay int `gorm:"type:int(11);comment:閲囪喘鎻愬墠鏈�(澶�)" json:"purchaseAheadDay"`
+ //ProduceAheadDay int `gorm:"type:int(11);comment:鍒堕�犳彁鍓嶆湡(澶�)" json:"produceAheadDay"`
+ MinPurchaseAmount decimal.Decimal `gorm:"type:decimal(35,18);comment:鏈�灏忛噰璐噺" json:"minPurchaseAmount"`
+ //PurchaseType constvar.PurchaseType `gorm:"type:int(11);comment:閲囪喘绫诲瀷" json:"purchaseType"`
+ IsSale bool `gorm:"type:tinyint(1);comment:鏄惁閿�鍞�" json:"isSale"`
+ SalePrice decimal.Decimal `gorm:"type:decimal(35,18);comment:閿�鍞崟浠�" json:"salePrice"`
+ AutoIncr uint `gorm:"type:int(11);comment:鑷ID;default:0;" json:"-"`
+ //wms娣诲姞瀛楁
+ InvoicingStrategy constvar.InvoicingStrategy `gorm:"type:int(11);comment:寮�绁ㄧ瓥鐣�" json:"invoicingStrategy"`
+ OrderCreation constvar.OrderCreation `gorm:"type:int(11);comment:璁㈠崟鍒涘缓" json:"orderCreation"`
+ 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"` //鍐呴儴璇存槑
+ 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"` //鏄惁鍙噰璐�
+ CurrencyName string `gorm:"type:varchar(255);comment:甯佺鍚嶇О" json:"currencyName"`
+ DeliveryAdvanceTime int `gorm:"type:int(11);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"` //浣撶Н
+ 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"`
+ //CompanyArr []IdAndName `gorm:"-" json:"companyArr"`
+ }
+
+ MaterialSearch struct {
+ Material
+ //MaterialTypes []constvar.MaterialType
+ Keyword string
+ //SetTemplateType constvar.SetTemplateType
+ Order string
+ PageNum int
+ PageSize int
+ Ids []string
+ Orm *gorm.DB
+ }
+
+ IdAndName struct {
+ Id string `json:"id"`
+ Name string `json:"name"`
+ }
+)
+
+func (slf Material) TableName() string {
+ return "material"
+}
+
+func NewMaterialSearch() *MaterialSearch {
+ return &MaterialSearch{Orm: mysqlx.GetDB()}
+}
+
+func (slf *MaterialSearch) SetOrm(tx *gorm.DB) *MaterialSearch {
+ slf.Orm = tx
+ return slf
+}
+
+func (slf *MaterialSearch) SetPage(page, size int) *MaterialSearch {
+ slf.PageNum, slf.PageSize = page, size
+ return slf
+}
+
+func (slf *MaterialSearch) SetOrder(order string) *MaterialSearch {
+ slf.Order = order
+ return slf
+}
+
+func (slf *MaterialSearch) SetID(id string) *MaterialSearch {
+ slf.ID = id
+ return slf
+}
+
+func (slf *MaterialSearch) SetIsSale(isSale bool) *MaterialSearch {
+ slf.IsSale = isSale
+ return slf
+}
+
+func (slf *MaterialSearch) SetIDs(ids []string) *MaterialSearch {
+ slf.Ids = ids
+ return slf
+}
+
+func (slf *MaterialSearch) SetName(name string) *MaterialSearch {
+ slf.Name = name
+ return slf
+}
+
+//func (slf *MaterialSearch) SetMaterialType(materialType constvar.MaterialType) *MaterialSearch {
+// slf.MaterialType = materialType
+// return slf
+//}
+//
+//func (slf *MaterialSearch) SetMaterialTypes(materialTypes []constvar.MaterialType) *MaterialSearch {
+// slf.MaterialTypes = materialTypes
+// return slf
+//}
+
+func (slf *MaterialSearch) SetKeyword(keyword string) *MaterialSearch {
+ slf.Keyword = keyword
+ return slf
+}
+
+func (slf *MaterialSearch) SetTemplateID(id string) *MaterialSearch {
+ slf.TemplateID = id
+ return slf
+}
+
+//
+//func (slf *MaterialSearch) SetSetTemplateType(setType constvar.SetTemplateType) *MaterialSearch {
+// slf.SetTemplateType = setType
+// return slf
+//}
+
+//func (slf *MaterialSearch) SetStatus(status constvar.MaterialStatus) *MaterialSearch {
+// slf.Status = status
+// return slf
+//}
+
+func (slf *MaterialSearch) build() *gorm.DB {
+ var db = slf.Orm.Table(slf.TableName())
+
+ if slf.ID != "" {
+ db = db.Where("id = ?", slf.ID)
+ }
+
+ if slf.Name != "" {
+ db = db.Where("name = ?", slf.Name)
+ }
+
+ if slf.TemplateID != "" {
+ db = db.Where("template_id = ?", slf.TemplateID)
+ }
+
+ //if slf.SetTemplateType > 0 {
+ // if slf.SetTemplateType == constvar.SetTemplateTypeWithTemplate { // 妯℃澘ID闈炵┖
+ // db = db.Where("template_id <> ?", "")
+ // } else if slf.SetTemplateType == constvar.SetTemplateTypeWithNoTemplate {
+ // db = db.Where("template_id = ?", "")
+ // }
+ //}
+
+ //if slf.MaterialType > 0 {
+ // db = db.Where("material_type = ?", slf.MaterialType)
+ //}
+
+ //if len(slf.MaterialTypes) > 0 {
+ // var query string
+ // for i, materialType := range slf.MaterialTypes {
+ // if i == 0 {
+ // query += fmt.Sprintf("(material_type = %d", materialType)
+ // } else {
+ // query += fmt.Sprintf(" or material_type = %d", materialType)
+ // }
+ // if i == len(slf.MaterialTypes)-1 {
+ // query += ")"
+ // }
+ // }
+ // db = db.Where(query)
+ //}
+
+ if slf.Keyword != "" {
+ db = db.Where("name LIKE ? or id LIKE ? ", "%"+slf.Keyword+"%", "%"+slf.Keyword+"%")
+ }
+
+ if slf.Order != "" {
+ db = db.Order(slf.Order)
+ }
+
+ //if slf.Status != 0 {
+ // db = db.Where("status = ?", slf.Status)
+ //}
+ if len(slf.Ids) > 0 {
+ db = db.Where("id in ?", slf.Ids)
+ }
+ if slf.IsSale {
+ db = db.Where("is_sale = ?", 1)
+ }
+
+ return db
+}
+
+// Create 鍗曟潯鎻掑叆
+func (slf *MaterialSearch) Create(record *Material) error {
+ var db = slf.build()
+
+ if err := db.Create(record).Error; err != nil {
+ return fmt.Errorf("create err: %v, record: %+v", err, record)
+ }
+
+ return nil
+}
+
+// CreateBatch 鎵归噺鎻掑叆
+func (slf *MaterialSearch) CreateBatch(records []*Material) error {
+ var db = slf.build()
+
+ if err := db.Create(&records).Error; err != nil {
+ return fmt.Errorf("create batch err: %v, records: %+v", err, records)
+ }
+
+ return nil
+}
+
+func (slf *MaterialSearch) Save(record *Material) error {
+ var db = slf.build()
+
+ if err := db.Omit("CreatedAt").Save(record).Error; err != nil {
+ return fmt.Errorf("save err: %v, record: %+v", err, record)
+ }
+
+ return nil
+}
+
+func (slf *MaterialSearch) UpdateByMap(upMap map[string]interface{}) error {
+ var (
+ db = slf.build()
+ )
+
+ if err := db.Updates(upMap).Error; err != nil {
+ return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap)
+ }
+
+ return nil
+}
+
+func (slf *MaterialSearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error {
+ var (
+ db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+ )
+
+ if err := db.Updates(upMap).Error; err != nil {
+ return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap)
+ }
+
+ return nil
+}
+
+func (slf *MaterialSearch) Delete() error {
+ var db = slf.build()
+
+ if err := db.Unscoped().Delete(&Material{}).Error; err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func (slf *MaterialSearch) First() (*Material, error) {
+ var (
+ record = new(Material)
+ db = slf.build()
+ )
+
+ if err := db.First(record).Error; err != nil {
+ return record, err
+ }
+
+ return record, nil
+}
+
+func (slf *MaterialSearch) Find() ([]*Material, int64, error) {
+ var (
+ records = make([]*Material, 0)
+ total int64
+ db = slf.build()
+ )
+
+ if err := db.Count(&total).Error; err != nil {
+ return records, total, fmt.Errorf("find count err: %v", err)
+ }
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, total, fmt.Errorf("find records err: %v", err)
+ }
+
+ return records, total, nil
+}
+
+func (slf *MaterialSearch) FindNotTotal() ([]*Material, error) {
+ var (
+ records = make([]*Material, 0)
+ db = slf.build()
+ )
+
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, fmt.Errorf("find records err: %v", err)
+ }
+
+ return records, nil
+}
+
+// FindByQuery 鎸囧畾鏉′欢鏌ヨ.
+func (slf *MaterialSearch) FindByQuery(query string, args []interface{}) ([]*Material, int64, error) {
+ var (
+ records = make([]*Material, 0)
+ total int64
+ db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+ )
+
+ if err := db.Count(&total).Error; err != nil {
+ return records, total, fmt.Errorf("find by query count err: %v", err)
+ }
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
+ }
+
+ return records, total, nil
+}
+
+// FindByQueryNotTotal 鎸囧畾鏉′欢鏌ヨ&涓嶆煡璇㈡�绘潯鏁�.
+func (slf *MaterialSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*Material, error) {
+ var (
+ records = make([]*Material, 0)
+ db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+ )
+
+ if slf.PageNum*slf.PageSize > 0 {
+ db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+ }
+ if err := db.Find(&records).Error; err != nil {
+ return records, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
+ }
+
+ return records, nil
+}
+
+//func (slf *MaterialSearch) Upsert(materialList []*Material) error {
+// var buffer bytes.Buffer
+// sql := fmt.Sprintf("insert into `%s` (`id`,`created_at`,`updated_at`,`name`,`model`,`material_type`,`explain`,`code_standard_id`,`specs`,"+
+// "`type`,`min_inventory`,`max_inventory`,`amount`,`unit`,`note`,`f_source`, `purchase_type`) values", slf.TableName())
+// if _, err := buffer.WriteString(sql); err != nil {
+// return err
+// }
+//
+// for i, e := range materialList {
+// buffer.WriteString(fmt.Sprintf("('%v','%v','%v','%v','%v','%v','%v','%v','%v','%v','%v','%v','%v','%v','%v','%v', '%d')", e.ID, e.CreatedAt.String(), e.UpdatedAt.String(), e.Name,
+// e.Model, e.MaterialType, e.Explain, e.CodeStandardID, e.Specs, e.Type, e.MinInventory, e.MaxInventory, e.Amount, e.Unit, e.Note, e.FSource, int(e.PurchaseType)))
+// if i == len(materialList)-1 {
+// buffer.WriteString("")
+// } else {
+// buffer.WriteString(",")
+// }
+// }
+// buffer.WriteString(fmt.Sprintf("on duplicate key update `updated_at`=values(`updated_at`), `name`=values(`name`), `specs`=values(`specs`), `type`=values(`type`), " +
+// "`min_inventory`=values(`min_inventory`), `max_inventory`=values(`max_inventory`), `amount`=values(`amount`), `unit`=values(`unit`), `note`=values(`note`), `f_source`=values(`f_source`), `purchase_type`=values(`purchase_type`);"))
+// err := slf.Orm.Exec(buffer.String()).Error
+// if err != nil {
+// logx.Errorf("Upsert sql:%v, err:%v", buffer.String(), err)
+// }
+// return err
+//}
+
+func (slf *MaterialSearch) GetMaterialListByIds(ids []string) ([]*Material, error) {
+ var (
+ records = make([]*Material, 0)
+ db = slf.Orm.Table(slf.TableName()).Where("id in (?)", ids)
+ )
+
+ if err := db.Find(&records).Error; err != nil {
+ return records, fmt.Errorf("find records err: %v", err)
+ }
+
+ return records, nil
+}
+
+//func ExportMaterial(materials []*Material) (string, error) {
+// var fileName string
+// f := excelize.NewFile()
+//
+// f.SetCellValue("Sheet1", "A1", "鐗╂枡缂栫爜")
+// f.SetCellValue("Sheet1", "B1", "缂栫爜璇存槑")
+// f.SetCellValue("Sheet1", "C1", "鐗╂枡鍚嶇О")
+// f.SetCellValue("Sheet1", "D1", "鐗╂枡瑙勬牸")
+// f.SetCellValue("Sheet1", "E1", "鐗╂枡鍨嬪彿")
+// f.SetCellValue("Sheet1", "F1", "渚涘簲鍟�")
+// f.SetCellValue("Sheet1", "G1", "閲囪喘浠锋牸")
+// f.SetCellValue("Sheet1", "H1", "瀹夊叏搴撳瓨")
+// f.SetCellValue("Sheet1", "I1", "鍓╀綑搴撳瓨")
+// f.SetCellValue("Sheet1", "J1", "鐗╂枡绫诲瀷")
+// f.SetCellValue("Sheet1", "K1", "鍗曚綅")
+// f.SetCellValue("Sheet1", "L1", "澶囨敞")
+//
+// for i, m := range materials {
+// f.SetCellValue("Sheet1", "A"+strconv.Itoa(i+2), m.ID)
+// f.SetCellValue("Sheet1", "B"+strconv.Itoa(i+2), m.Explain)
+// f.SetCellValue("Sheet1", "C"+strconv.Itoa(i+2), m.Name)
+// f.SetCellValue("Sheet1", "D"+strconv.Itoa(i+2), m.Specs)
+// f.SetCellValue("Sheet1", "E"+strconv.Itoa(i+2), m.Type)
+// f.SetCellValue("Sheet1", "F"+strconv.Itoa(i+2), m.Supplier)
+// f.SetCellValue("Sheet1", "G"+strconv.Itoa(i+2), m.PurchasePrice.String())
+// f.SetCellValue("Sheet1", "H"+strconv.Itoa(i+2), m.MinInventory.String()+"-"+m.MaxInventory.String())
+// f.SetCellValue("Sheet1", "I"+strconv.Itoa(i+2), m.Amount.String())
+// f.SetCellValue("Sheet1", "J"+strconv.Itoa(i+2), m.Model)
+// f.SetCellValue("Sheet1", "K"+strconv.Itoa(i+2), m.Unit)
+// f.SetCellValue("Sheet1", "L"+strconv.Itoa(i+2), m.Note)
+// }
+//
+// fileName = "material.xlsx"
+// if err := f.SaveAs(fileName); err != nil {
+// return fileName, err
+// }
+//
+// return fileName, nil
+//}
+
+func (slf *MaterialSearch) MaxAutoIncr() (int64, error) {
+ type Result struct {
+ Max int64
+ }
+
+ var (
+ result Result
+ db = slf.build()
+ )
+
+ err := db.Select("MAX(auto_incr) as max").Scan(&result).Error
+ if err != nil {
+ return result.Max, fmt.Errorf("max err: %v", err)
+ }
+ return result.Max, nil
+}
diff --git a/models/product.go b/models/product.go
index 66c371d..373ee26 100644
--- a/models/product.go
+++ b/models/product.go
@@ -1,293 +1,294 @@
package models
-import (
- "fmt"
- "github.com/shopspring/decimal"
- "gorm.io/gorm"
- "wms/constvar"
- "wms/pkg/mysqlx"
-)
-
-type (
- // Product 浜у搧
- Product struct {
- WmsModel
- 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 {
- Product
- Order string
- PageNum int
- PageSize int
- Keyword string
- Orm *gorm.DB
- Preload bool
- }
-
- PurchaseInfo struct {
- PurchasePrice decimal.Decimal `gorm:"type:decimal(35,18);comment:閲囪喘浠锋牸" json:"purchasePrice"`
- PurchaseAheadDay int `gorm:"type:int(11);comment:閲囪喘鎻愬墠鏈�(澶�)" json:"purchaseAheadDay"`
- ProduceAheadDay int `gorm:"type:int(11);comment:鍒堕�犳彁鍓嶆湡(澶�)" json:"produceAheadDay"`
- MinPurchaseAmount decimal.Decimal `gorm:"type:decimal(35,18);comment:鏈�灏忛噰璐噺" json:"minPurchaseAmount"`
- }
-)
-
-func (slf *Product) TableName() string {
- return "wms_product"
-}
-
-func (slf *Product) BeforeCreate(db *gorm.DB) error {
- return nil
-}
-
-func (slf *Product) AfterFind(db *gorm.DB) error {
- return nil
-}
-
-func NewProductSearch() *ProductSearch {
- return &ProductSearch{Orm: mysqlx.GetDB()}
-}
-
-func (slf *ProductSearch) SetOrm(tx *gorm.DB) *ProductSearch {
- slf.Orm = tx
- return slf
-}
-
-func (slf *ProductSearch) SetPage(page, size int) *ProductSearch {
- slf.PageNum, slf.PageSize = page, size
- return slf
-}
-
-func (slf *ProductSearch) SetOrder(order string) *ProductSearch {
- slf.Order = order
- return slf
-}
-
-func (slf *ProductSearch) SetID(id uint) *ProductSearch {
- slf.ID = id
- return slf
-}
-
-func (slf *ProductSearch) SetName(name string) *ProductSearch {
- slf.Name = name
- return slf
-}
-
-func (slf *ProductSearch) SetKeyword(keyword string) *ProductSearch {
- slf.Keyword = keyword
- return slf
-}
-
-func (slf *ProductSearch) SetPreload(preload bool) *ProductSearch {
- slf.Preload = preload
- return slf
-}
-
-func (slf *ProductSearch) build() *gorm.DB {
- var db = slf.Orm.Model(&Product{})
-
- if slf.ID != 0 {
- db = db.Where("id = ?", slf.ID)
- }
-
- if slf.Order != "" {
- db = db.Order(slf.Order)
- }
-
- if slf.Keyword != "" {
- db = db.Where("name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
- }
-
- if slf.Name != "" {
- db = db.Where("name = ?", slf.Name)
- }
-
- return db
-}
-
-// Create 鍗曟潯鎻掑叆
-func (slf *ProductSearch) Create(record *Product) error {
- var db = slf.build()
-
- if err := db.Create(record).Error; err != nil {
- return err
- }
-
- return nil
-}
-
-// CreateBatch 鎵归噺鎻掑叆
-func (slf *ProductSearch) CreateBatch(records []*Product) error {
- var db = slf.build()
-
- if err := db.Create(&records).Error; err != nil {
- return fmt.Errorf("create batch err: %v, records: %+v", err, records)
- }
-
- return nil
-}
-
-func (slf *ProductSearch) Update(record *Product) error {
- var db = slf.build()
-
- if err := db.Omit("CreatedAt").Updates(record).Error; err != nil {
- return fmt.Errorf("save err: %v, record: %+v", err, record)
- }
-
- return nil
-}
-
-func (slf *ProductSearch) UpdateByMap(upMap map[string]interface{}) error {
- var (
- db = slf.build()
- )
-
- if err := db.Updates(upMap).Error; err != nil {
- return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap)
- }
-
- return nil
-}
-
-func (slf *ProductSearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error {
- var (
- db = slf.Orm.Table(slf.TableName()).Where(query, args...)
- )
-
- if err := db.Updates(upMap).Error; err != nil {
- return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap)
- }
-
- return nil
-}
-
-func (slf *ProductSearch) Delete() error {
- var db = slf.build()
- return db.Delete(&Product{}).Error
-}
-
-func (slf *ProductSearch) First() (*Product, error) {
- var (
- record = new(Product)
- db = slf.build()
- )
-
- if err := db.First(record).Error; err != nil {
- return record, err
- }
-
- return record, nil
-}
-
-func (slf *ProductSearch) Find() ([]*Product, int64, error) {
- var (
- records = make([]*Product, 0)
- total int64
- db = slf.build()
- )
-
- if err := db.Count(&total).Error; err != nil {
- return records, total, fmt.Errorf("find count err: %v", err)
- }
- if slf.PageNum*slf.PageSize > 0 {
- db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
- }
- if err := db.Find(&records).Error; err != nil {
- return records, total, fmt.Errorf("find records err: %v", err)
- }
-
- return records, total, nil
-}
-
-func (slf *ProductSearch) FindNotTotal() ([]*Product, error) {
- var (
- records = make([]*Product, 0)
- db = slf.build()
- )
-
- if slf.PageNum*slf.PageSize > 0 {
- db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
- }
- if err := db.Find(&records).Error; err != nil {
- return records, fmt.Errorf("find records err: %v", err)
- }
-
- return records, nil
-}
-
-// FindByQuery 鎸囧畾鏉′欢鏌ヨ.
-func (slf *ProductSearch) FindByQuery(query string, args []interface{}) ([]*Product, int64, error) {
- var (
- records = make([]*Product, 0)
- total int64
- db = slf.Orm.Table(slf.TableName()).Where(query, args...)
- )
-
- if err := db.Count(&total).Error; err != nil {
- return records, total, fmt.Errorf("find by query count err: %v", err)
- }
- if slf.PageNum*slf.PageSize > 0 {
- db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
- }
- if err := db.Find(&records).Error; err != nil {
- return records, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
- }
-
- return records, total, nil
-}
-
-// FindByQueryNotTotal 鎸囧畾鏉′欢鏌ヨ&涓嶆煡璇㈡�绘潯鏁�.
-func (slf *ProductSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*Product, error) {
- var (
- records = make([]*Product, 0)
- db = slf.Orm.Table(slf.TableName()).Where(query, args...)
- )
-
- if slf.PageNum*slf.PageSize > 0 {
- db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
- }
- if err := db.Find(&records).Error; err != nil {
- return records, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
- }
-
- return records, nil
-}
+//
+//import (
+// "fmt"
+// "github.com/shopspring/decimal"
+// "gorm.io/gorm"
+// "wms/constvar"
+// "wms/pkg/mysqlx"
+//)
+//
+//type (
+// // Product 浜у搧
+// Product struct {
+// WmsModel
+// 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 {
+// Product
+// Order string
+// PageNum int
+// PageSize int
+// Keyword string
+// Orm *gorm.DB
+// Preload bool
+// }
+//
+// PurchaseInfo struct {
+// PurchasePrice decimal.Decimal `gorm:"type:decimal(35,18);comment:閲囪喘浠锋牸" json:"purchasePrice"`
+// PurchaseAheadDay int `gorm:"type:int(11);comment:閲囪喘鎻愬墠鏈�(澶�)" json:"purchaseAheadDay"`
+// ProduceAheadDay int `gorm:"type:int(11);comment:鍒堕�犳彁鍓嶆湡(澶�)" json:"produceAheadDay"`
+// MinPurchaseAmount decimal.Decimal `gorm:"type:decimal(35,18);comment:鏈�灏忛噰璐噺" json:"minPurchaseAmount"`
+// }
+//)
+//
+//func (slf *Product) TableName() string {
+// return "wms_product"
+//}
+//
+//func (slf *Product) BeforeCreate(db *gorm.DB) error {
+// return nil
+//}
+//
+//func (slf *Product) AfterFind(db *gorm.DB) error {
+// return nil
+//}
+//
+//func NewProductSearch() *ProductSearch {
+// return &ProductSearch{Orm: mysqlx.GetDB()}
+//}
+//
+//func (slf *ProductSearch) SetOrm(tx *gorm.DB) *ProductSearch {
+// slf.Orm = tx
+// return slf
+//}
+//
+//func (slf *ProductSearch) SetPage(page, size int) *ProductSearch {
+// slf.PageNum, slf.PageSize = page, size
+// return slf
+//}
+//
+//func (slf *ProductSearch) SetOrder(order string) *ProductSearch {
+// slf.Order = order
+// return slf
+//}
+//
+//func (slf *ProductSearch) SetID(id uint) *ProductSearch {
+// slf.ID = id
+// return slf
+//}
+//
+//func (slf *ProductSearch) SetName(name string) *ProductSearch {
+// slf.Name = name
+// return slf
+//}
+//
+//func (slf *ProductSearch) SetKeyword(keyword string) *ProductSearch {
+// slf.Keyword = keyword
+// return slf
+//}
+//
+//func (slf *ProductSearch) SetPreload(preload bool) *ProductSearch {
+// slf.Preload = preload
+// return slf
+//}
+//
+//func (slf *ProductSearch) build() *gorm.DB {
+// var db = slf.Orm.Model(&Product{})
+//
+// if slf.ID != 0 {
+// db = db.Where("id = ?", slf.ID)
+// }
+//
+// if slf.Order != "" {
+// db = db.Order(slf.Order)
+// }
+//
+// if slf.Keyword != "" {
+// db = db.Where("name like ?", fmt.Sprintf("%%%v%%", slf.Keyword))
+// }
+//
+// if slf.Name != "" {
+// db = db.Where("name = ?", slf.Name)
+// }
+//
+// return db
+//}
+//
+//// Create 鍗曟潯鎻掑叆
+//func (slf *ProductSearch) Create(record *Product) error {
+// var db = slf.build()
+//
+// if err := db.Create(record).Error; err != nil {
+// return err
+// }
+//
+// return nil
+//}
+//
+//// CreateBatch 鎵归噺鎻掑叆
+//func (slf *ProductSearch) CreateBatch(records []*Product) error {
+// var db = slf.build()
+//
+// if err := db.Create(&records).Error; err != nil {
+// return fmt.Errorf("create batch err: %v, records: %+v", err, records)
+// }
+//
+// return nil
+//}
+//
+//func (slf *ProductSearch) Update(record *Product) error {
+// var db = slf.build()
+//
+// if err := db.Omit("CreatedAt").Updates(record).Error; err != nil {
+// return fmt.Errorf("save err: %v, record: %+v", err, record)
+// }
+//
+// return nil
+//}
+//
+//func (slf *ProductSearch) UpdateByMap(upMap map[string]interface{}) error {
+// var (
+// db = slf.build()
+// )
+//
+// if err := db.Updates(upMap).Error; err != nil {
+// return fmt.Errorf("update by map err: %v, upMap: %+v", err, upMap)
+// }
+//
+// return nil
+//}
+//
+//func (slf *ProductSearch) UpdateByQuery(query string, args []interface{}, upMap map[string]interface{}) error {
+// var (
+// db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+// )
+//
+// if err := db.Updates(upMap).Error; err != nil {
+// return fmt.Errorf("update by query err: %v, query: %s, args: %+v, upMap: %+v", err, query, args, upMap)
+// }
+//
+// return nil
+//}
+//
+//func (slf *ProductSearch) Delete() error {
+// var db = slf.build()
+// return db.Delete(&Product{}).Error
+//}
+//
+//func (slf *ProductSearch) First() (*Product, error) {
+// var (
+// record = new(Product)
+// db = slf.build()
+// )
+//
+// if err := db.First(record).Error; err != nil {
+// return record, err
+// }
+//
+// return record, nil
+//}
+//
+//func (slf *ProductSearch) Find() ([]*Product, int64, error) {
+// var (
+// records = make([]*Product, 0)
+// total int64
+// db = slf.build()
+// )
+//
+// if err := db.Count(&total).Error; err != nil {
+// return records, total, fmt.Errorf("find count err: %v", err)
+// }
+// if slf.PageNum*slf.PageSize > 0 {
+// db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+// }
+// if err := db.Find(&records).Error; err != nil {
+// return records, total, fmt.Errorf("find records err: %v", err)
+// }
+//
+// return records, total, nil
+//}
+//
+//func (slf *ProductSearch) FindNotTotal() ([]*Product, error) {
+// var (
+// records = make([]*Product, 0)
+// db = slf.build()
+// )
+//
+// if slf.PageNum*slf.PageSize > 0 {
+// db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+// }
+// if err := db.Find(&records).Error; err != nil {
+// return records, fmt.Errorf("find records err: %v", err)
+// }
+//
+// return records, nil
+//}
+//
+//// FindByQuery 鎸囧畾鏉′欢鏌ヨ.
+//func (slf *ProductSearch) FindByQuery(query string, args []interface{}) ([]*Product, int64, error) {
+// var (
+// records = make([]*Product, 0)
+// total int64
+// db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+// )
+//
+// if err := db.Count(&total).Error; err != nil {
+// return records, total, fmt.Errorf("find by query count err: %v", err)
+// }
+// if slf.PageNum*slf.PageSize > 0 {
+// db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+// }
+// if err := db.Find(&records).Error; err != nil {
+// return records, total, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
+// }
+//
+// return records, total, nil
+//}
+//
+//// FindByQueryNotTotal 鎸囧畾鏉′欢鏌ヨ&涓嶆煡璇㈡�绘潯鏁�.
+//func (slf *ProductSearch) FindByQueryNotTotal(query string, args []interface{}) ([]*Product, error) {
+// var (
+// records = make([]*Product, 0)
+// db = slf.Orm.Table(slf.TableName()).Where(query, args...)
+// )
+//
+// if slf.PageNum*slf.PageSize > 0 {
+// db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize)
+// }
+// if err := db.Find(&records).Error; err != nil {
+// return records, fmt.Errorf("find by query records err: %v, query: %s, args: %+v", err, query, args)
+// }
+//
+// return records, nil
+//}
diff --git a/models/product_category.go b/models/product_category.go
index 1658605..b1985d3 100644
--- a/models/product_category.go
+++ b/models/product_category.go
@@ -243,3 +243,13 @@
return records, nil
}
+
+func (slf *ProductCategorySearch) Save(record *ProductCategory) error {
+ var db = slf.build()
+
+ if err := db.Omit("CreatedAt").Save(record).Error; err != nil {
+ return fmt.Errorf("save err: %v, record: %+v", err, record)
+ }
+
+ return nil
+}
diff --git a/router/router.go b/router/router.go
index 0df3ac9..926c4af 100644
--- a/router/router.go
+++ b/router/router.go
@@ -73,8 +73,17 @@
productController := new(controllers.ProductController)
productAPI := r.Group(urlPrefix + "/product")
{
- productAPI.POST("addProduct", productController.AddProduct) // 鏂板浜у搧
- productAPI.POST("getProductList", productController.GetProductList) // 鑾峰彇浜у搧鍒楄〃
+ productAPI.POST("addProduct", productController.AddProduct) // 鏂板浜у搧
+ productAPI.POST("getProductList", productController.GetProductList) // 鑾峰彇浜у搧鍒楄〃
+ productAPI.GET("getProductDetails/:id", productController.GetProductDetails) // 鑾峰彇浜у搧璇︽儏
+ productAPI.POST("updateProduct", productController.UpdateProduct) // 淇敼浜у搧璇︽儏
+ productAPI.DELETE("deleteProduct/:id", productController.DeleteProduct) // 鍒犻櫎浜у搧
+
+ productAPI.POST("addProductCategory", productController.AddProductCategory) //娣诲姞浜у搧绫诲瀷
+ productAPI.POST("getProductCategoryList", productController.GetProductCategoryList) //鑾峰彇浜у搧绫诲瀷鍒楄〃
+ productAPI.GET("getProductCategoryDetails/:id", productController.GetProductCategoryDetails) //鑾峰彇浜у搧绫诲瀷璇︽儏
+ productAPI.POST("updateProductCategory", productController.UpdateProductCategory) //淇敼浜у搧绫诲瀷
+ productAPI.DELETE("deleteProductCategory/:id", productController.DeleteProductCategory) //鍒犻櫎浜у搧绫诲瀷
}
return r
diff --git a/utils/util.go b/utils/util.go
new file mode 100644
index 0000000..61c9c1c
--- /dev/null
+++ b/utils/util.go
@@ -0,0 +1,11 @@
+package utils
+
+import (
+ "github.com/google/uuid"
+ "strings"
+)
+
+func GetUUID() string {
+ s := uuid.New().String()
+ return strings.ReplaceAll(s, "-", "")
+}
--
Gitblit v1.8.0