From 03915064efe8fd7f222e4aac199af7e2d37deec6 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期三, 15 十一月 2023 20:11:20 +0800
Subject: [PATCH] 增加产品类别

---
 /dev/null                      |   23 -----
 model/test/response/product.go |   13 +++
 service/test/product.go        |   23 +++++
 model/test/product.go          |    1 
 model/test/material.go         |    8 -
 docs/swagger.yaml              |   19 ++--
 api/v1/test/product.go         |   65 ++++++++--------
 docs/docs.go                   |   30 ++++---
 model/test/request/product.go  |    2 
 docs/swagger.json              |   30 ++++---
 10 files changed, 116 insertions(+), 98 deletions(-)

diff --git a/api/v1/test/product.go b/api/v1/test/product.go
index bcd2eea..aba8c67 100644
--- a/api/v1/test/product.go
+++ b/api/v1/test/product.go
@@ -2,7 +2,6 @@
 
 import (
 	"github.com/gin-gonic/gin"
-	"github.com/spf13/cast"
 	"go.uber.org/zap"
 	"google.golang.org/grpc"
 	"google.golang.org/grpc/credentials/insecure"
@@ -12,7 +11,6 @@
 	"srm/model/test"
 	testReq "srm/model/test/request"
 	testResp "srm/model/test/response"
-	"srm/proto/product"
 	"srm/service"
 )
 
@@ -195,6 +193,7 @@
 			MaximumStock:     item.MaximumStock,
 			Remark:           "",
 			SupplierName:     item.Supplier.Name,
+			CategoryName:     item.CategoryName,
 		})
 	}
 
@@ -242,39 +241,39 @@
 		return
 	}
 
-	cli := product.NewProductServiceClient(productServiceConn)
-	getProductListResponse, err := cli.GetProductList(c, &product.GetProductListRequest{
-		Page:          cast.ToInt32(pageInfo.Page),
-		PageSize:      cast.ToInt32(pageInfo.PageSize),
-		ProductNumber: pageInfo.Number,
-		ProductName:   pageInfo.Name,
-	})
-	rawProductList := getProductListResponse.List
-	productList := make([]testResp.Product, len(rawProductList))
-
-	for k, v := range rawProductList {
-		productList[k].Number = v.Number
-		productList[k].Name = v.Name
-		productList[k].Unit = v.Unit
-		productList[k].PurchasePrice = v.SalePrice
-		min := int64(v.MinInventory)
-		productList[k].MinimumStock = min
-		max := int64(v.MaxInventory)
-		productList[k].MaximumStock = max
-		productList[k].Remark = v.Node
-		productList[k].ProductType = v.MaterialMode
-	}
-
-	if err != nil || getProductListResponse.Code != 0 {
+	list, total, err := pService.GetMaterials(pageInfo)
+	if err != nil {
 		global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
 		response.FailWithMessage("鑾峰彇澶辫触", c)
-	} else {
-		response.OkWithDetailed(response.PageResult{
-			List:     productList,
-			Total:    int64(len(productList)),
-			Page:     pageInfo.Page,
-			PageSize: pageInfo.PageSize,
-		}, "鑾峰彇鎴愬姛", c)
+		return
 	}
 
+	productList := make([]testResp.Material, len(list))
+
+	for _, item := range list {
+		productList = append(productList, testResp.Material{
+			Name:           item.Name,
+			Number:         item.ID,
+			Unit:           item.Unit,
+			Specifications: item.Specs,
+			ModelNumber:    string(item.Model),
+			MinimumStock:   item.MinInventory.IntPart(),
+			MaximumStock:   item.MaxInventory.IntPart(),
+			Remark:         "",
+			CategoryName:   item.CategoryName,
+		})
+	}
+
+	if err != nil {
+		global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+		response.FailWithMessage("鑾峰彇澶辫触", c)
+	}
+
+	response.OkWithDetailed(response.PageResult{
+		List:     productList,
+		Total:    total,
+		Page:     pageInfo.Page,
+		PageSize: pageInfo.PageSize,
+	}, "鑾峰彇鎴愬姛", c)
+
 }
diff --git a/docs/docs.go b/docs/docs.go
index a8e10bb..bb1bbe9 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -1257,6 +1257,11 @@
                 "summary": "鍒嗛〉鑾峰彇Product鍒楄〃",
                 "parameters": [
                     {
+                        "type": "string",
+                        "name": "categoryName",
+                        "in": "query"
+                    },
+                    {
                         "type": "integer",
                         "name": "deliveryTime",
                         "in": "query"
@@ -1292,11 +1297,6 @@
                         "type": "integer",
                         "description": "姣忛〉澶у皬",
                         "name": "pageSize",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "name": "productType",
                         "in": "query"
                     },
                     {
@@ -1369,6 +1369,11 @@
                 "summary": "鍒嗛〉鑾峰彇Product鍒楄〃",
                 "parameters": [
                     {
+                        "type": "string",
+                        "name": "categoryName",
+                        "in": "query"
+                    },
+                    {
                         "type": "integer",
                         "name": "deliveryTime",
                         "in": "query"
@@ -1404,11 +1409,6 @@
                         "type": "integer",
                         "description": "姣忛〉澶у皬",
                         "name": "pageSize",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "name": "productType",
                         "in": "query"
                     },
                     {
@@ -3807,6 +3807,9 @@
         "request.Product": {
             "type": "object",
             "properties": {
+                "categoryName": {
+                    "type": "string"
+                },
                 "deliveryTime": {
                     "type": "integer"
                 },
@@ -3817,9 +3820,6 @@
                     "type": "string"
                 },
                 "number": {
-                    "type": "string"
-                },
-                "productType": {
                     "type": "string"
                 },
                 "purchasePrice": {
@@ -4111,6 +4111,10 @@
         "test.SupplierMaterial": {
             "type": "object",
             "properties": {
+                "categoryName": {
+                    "description": "浜у搧绫诲埆鍚嶇О",
+                    "type": "string"
+                },
                 "created_at": {
                     "type": "string"
                 },
diff --git a/docs/swagger.json b/docs/swagger.json
index 285d41b..c682e63 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -1248,6 +1248,11 @@
                 "summary": "鍒嗛〉鑾峰彇Product鍒楄〃",
                 "parameters": [
                     {
+                        "type": "string",
+                        "name": "categoryName",
+                        "in": "query"
+                    },
+                    {
                         "type": "integer",
                         "name": "deliveryTime",
                         "in": "query"
@@ -1283,11 +1288,6 @@
                         "type": "integer",
                         "description": "姣忛〉澶у皬",
                         "name": "pageSize",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "name": "productType",
                         "in": "query"
                     },
                     {
@@ -1360,6 +1360,11 @@
                 "summary": "鍒嗛〉鑾峰彇Product鍒楄〃",
                 "parameters": [
                     {
+                        "type": "string",
+                        "name": "categoryName",
+                        "in": "query"
+                    },
+                    {
                         "type": "integer",
                         "name": "deliveryTime",
                         "in": "query"
@@ -1395,11 +1400,6 @@
                         "type": "integer",
                         "description": "姣忛〉澶у皬",
                         "name": "pageSize",
-                        "in": "query"
-                    },
-                    {
-                        "type": "string",
-                        "name": "productType",
                         "in": "query"
                     },
                     {
@@ -3798,6 +3798,9 @@
         "request.Product": {
             "type": "object",
             "properties": {
+                "categoryName": {
+                    "type": "string"
+                },
                 "deliveryTime": {
                     "type": "integer"
                 },
@@ -3808,9 +3811,6 @@
                     "type": "string"
                 },
                 "number": {
-                    "type": "string"
-                },
-                "productType": {
                     "type": "string"
                 },
                 "purchasePrice": {
@@ -4102,6 +4102,10 @@
         "test.SupplierMaterial": {
             "type": "object",
             "properties": {
+                "categoryName": {
+                    "description": "浜у搧绫诲埆鍚嶇О",
+                    "type": "string"
+                },
                 "created_at": {
                     "type": "string"
                 },
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index daac693..f2579ec 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -658,6 +658,8 @@
     type: object
   request.Product:
     properties:
+      categoryName:
+        type: string
       deliveryTime:
         type: integer
       modelNumber:
@@ -665,8 +667,6 @@
       name:
         type: string
       number:
-        type: string
-      productType:
         type: string
       purchasePrice:
         type: number
@@ -860,6 +860,9 @@
     type: object
   test.SupplierMaterial:
     properties:
+      categoryName:
+        description: 浜у搧绫诲埆鍚嶇О
+        type: string
       created_at:
         type: string
       deliveryTime:
@@ -1660,6 +1663,9 @@
       - application/json
       parameters:
       - in: query
+        name: categoryName
+        type: string
+      - in: query
         name: deliveryTime
         type: integer
       - description: 鍏抽敭瀛�
@@ -1683,9 +1689,6 @@
         in: query
         name: pageSize
         type: integer
-      - in: query
-        name: productType
-        type: string
       - in: query
         name: purchasePrice
         type: number
@@ -1728,6 +1731,9 @@
       - application/json
       parameters:
       - in: query
+        name: categoryName
+        type: string
+      - in: query
         name: deliveryTime
         type: integer
       - description: 鍏抽敭瀛�
@@ -1751,9 +1757,6 @@
         in: query
         name: pageSize
         type: integer
-      - in: query
-        name: productType
-        type: string
       - in: query
         name: purchasePrice
         type: number
diff --git a/model/test/attachment.go b/model/test/attachment.go
deleted file mode 100644
index fd58dc0..0000000
--- a/model/test/attachment.go
+++ /dev/null
@@ -1,23 +0,0 @@
-package test
-
-// Attachment 缁撴瀯浣�
-type Attachment struct {
-	ID       uint     `gorm:"primarykey"` // 涓婚敭ID
-	FileName string   `json:"fileName" gorm:"type:varchar(127);comment:鏂囦欢鍚�"`
-	FileUrl  string   `json:"FileUrl" gorm:"type:varchar(255);comment:鏂囦欢鍦板潃"`
-	Ext      string   `json:"ext" gorm:"type:varchar(15);comment:鏂囦欢鍚庣紑鍚�"`
-	FileType FileType `json:"fileType" gorm:"type:varchar(31);comment:鏂囦欢绫诲瀷 pic:鍥剧墖;thumbnail:缂╃暐鍥�;file:鏂囦欢"`
-}
-
-// TableName MaterialAttachment 琛ㄥ悕
-func (Attachment) TableName() string {
-	return "attachment"
-}
-
-type FileType string
-
-const (
-	FileType_File      FileType = "file"      //鏂囦欢
-	FileType_Picture   FileType = "picture"   //鍥剧墖
-	FileType_Thumbnail FileType = "thumbnail" //缂╃暐鍥�
-)
diff --git a/model/test/material.go b/model/test/material.go
index 31d322d..25053cb 100644
--- a/model/test/material.go
+++ b/model/test/material.go
@@ -10,8 +10,6 @@
 	Name              string          `gorm:"type:varchar(191);not null;comment:鐗╂枡鍚嶇О" json:"name"`
 	MaterialType      MaterialType    `gorm:"index;type:int(11);comment:鐗╂枡绫诲瀷(鏁板瓧)" json:"materialType"`
 	Model             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"`
@@ -19,9 +17,7 @@
 	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            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"`
@@ -29,10 +25,8 @@
 	ProduceAheadDay   int             `gorm:"type:int(11);comment:鍒堕�犳彁鍓嶆湡(澶�)" json:"produceAheadDay"`
 	MinPurchaseAmount decimal.Decimal `gorm:"type:decimal(35,18);comment:鏈�灏忛噰璐噺" json:"minPurchaseAmount"`
 	PurchaseType      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:"autoIncr"`
-	AttachmentList    []*Attachment   `json:"attachmentList" gorm:"many2many:material_attachment"`
+	CategoryName      string          `gorm:"type:varchar(255);comment:浜у搧绫诲埆鍚嶇О" json:"categoryName"` //浜у搧绫诲埆鍚嶇О
 }
 
 // PurchaseType 閲囪喘绫诲瀷
diff --git a/model/test/product.go b/model/test/product.go
index 258f6c0..9eeb50e 100644
--- a/model/test/product.go
+++ b/model/test/product.go
@@ -19,6 +19,7 @@
 	ModelNumber      string   `json:"modelNumber" form:"modelNumber" gorm:"column:model_number;comment:鍨嬪彿;size:255;"`
 	MinimumStock     int64    `json:"minimumStock" form:"minimumStock" gorm:"column:minimum_stock;comment:鏈�浣庡簱瀛�;"`
 	MaximumStock     int64    `json:"maximumStock" form:"maximumStock" gorm:"column:maximum_stock;comment:鏈�楂樺簱瀛�;"`
+	CategoryName     string   `gorm:"type:varchar(255);comment:浜у搧绫诲埆鍚嶇О" json:"categoryName"` //浜у搧绫诲埆鍚嶇О
 }
 
 // TableName Product 琛ㄥ悕
diff --git a/model/test/request/product.go b/model/test/request/product.go
index 1268b07..4949214 100644
--- a/model/test/request/product.go
+++ b/model/test/request/product.go
@@ -24,7 +24,7 @@
 	ShippingDuration int     `json:"shippingDuration" form:"shippingDuration" gorm:"column:shipping_duration;comment:鐗╂祦鏃堕暱;size:11;"`
 	Specifications   string  `json:"specifications" form:"specifications" gorm:"column:specifications;comment:瑙勬牸;size:255;"`
 	ModelNumber      string  `json:"modelNumber" form:"modelNumber" gorm:"column:model_number;comment:鍨嬪彿;size:255;"`
-	ProductType      string  `json:"productType" form:"productType" gorm:"column:product_type;comment:浜у搧绫诲埆;size:255;"`
+	CategoryName     string  `json:"categoryName" form:"categoryName" gorm:"column:category_name;comment:浜у搧绫诲埆;size:255;"`
 	SupplierName     string  `json:"supplierName" gorm:"-"`
 	SupplierNumber   string  `json:"supplierNumber" form:"supplierNumber"`
 }
diff --git a/model/test/response/product.go b/model/test/response/product.go
index 853d096..928f4a7 100644
--- a/model/test/response/product.go
+++ b/model/test/response/product.go
@@ -15,4 +15,17 @@
 	MaximumStock     int64   `json:"maximumStock" form:"maximumStock" gorm:"column:maximum_stock;comment:鏈�楂樺簱瀛�;"`
 	Remark           string  `json:"remark" form:"remark" gorm:"column:remark;comment:澶囨敞;size:255;"`
 	SupplierName     string  `json:"supplierName" gorm:"-"`
+	CategoryName     string  `gorm:"type:varchar(255);comment:浜у搧绫诲埆鍚嶇О" json:"categoryName"` //浜у搧绫诲埆鍚嶇О
+}
+
+type Material struct {
+	Name           string `json:"name" form:"name" gorm:"column:name;comment:鍚嶇О;size:255;"`
+	Number         string `json:"number" form:"number" gorm:"column:number;comment:缂栫爜;size:255;"`
+	Unit           string `json:"unit" form:"unit" gorm:"column:unit;comment:璁¢噺鍗曚綅;size:255;"`
+	Specifications string `json:"specifications" form:"specifications" gorm:"column:specifications;comment:瑙勬牸;size:255;"`
+	ModelNumber    string `json:"modelNumber" form:"modelNumber" gorm:"column:model_number;comment:鍨嬪彿;size:255;"`
+	MinimumStock   int64  `json:"minimumStock" form:"minimumStock" gorm:"column:minimum_stock;comment:鏈�浣庡簱瀛�;"`
+	MaximumStock   int64  `json:"maximumStock" form:"maximumStock" gorm:"column:maximum_stock;comment:鏈�楂樺簱瀛�;"`
+	Remark         string `json:"remark" form:"remark" gorm:"column:remark;comment:澶囨敞;size:255;"`
+	CategoryName   string `gorm:"type:varchar(255);comment:浜у搧绫诲埆鍚嶇О" json:"categoryName"` //浜у搧绫诲埆鍚嶇О
 }
diff --git a/service/test/product.go b/service/test/product.go
index 7449f97..8ad82b5 100644
--- a/service/test/product.go
+++ b/service/test/product.go
@@ -26,6 +26,7 @@
 			DeliveryTime:     p.DeliveryTime,
 			ShippingDuration: p.ShippingDuration,
 			Specifications:   p.Specifications,
+			CategoryName:     p.CategoryName,
 		})
 	}
 
@@ -105,3 +106,25 @@
 	}
 	return
 }
+
+// GetMaterials 鑾峰彇鐗╂枡
+func (pService *ProductService) GetMaterials(info testReq.ProductSearch) (list []test.Material, total int64, err error) {
+	limit := info.PageSize
+	offset := info.PageSize * (info.Page - 1)
+	// 鍒涘缓db
+	db := global.GVA_DB.Model(&test.Material{})
+	var ps []test.Material
+	if info.Keyword != "" {
+		db = db.Where("name LIKE ? or number LIKE ?", "%"+info.Name+"%", "%"+info.Number+"%")
+	}
+
+	db = db.Where("purchase_type = ?", test.PurchaseTypeOutSource)
+
+	err = db.Count(&total).Error
+	if err != nil {
+		return
+	}
+
+	err = db.Limit(limit).Offset(offset).Find(&ps).Error
+	return ps, total, err
+}

--
Gitblit v1.8.0