From 0d86d93cff554f54f83927d4f8bf03ed8c847883 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 29 八月 2023 17:14:54 +0800
Subject: [PATCH] fix&字段完善
---
api/v1/purchase/purchase.go | 27 +++
model/purchase/purchase.go | 2
model/purchase/purchase_products.go | 10 +
config.yaml | 2
model/purchase/response/purchase.go | 26 +++
docs/swagger.yaml | 60 +++++++++
docs/docs.go | 83 +++++++++++++
service/purchase/purchase.go | 31 ++++
docs/swagger.json | 83 +++++++++++++
9 files changed, 301 insertions(+), 23 deletions(-)
diff --git a/api/v1/purchase/purchase.go b/api/v1/purchase/purchase.go
index c82be66..73eafdd 100644
--- a/api/v1/purchase/purchase.go
+++ b/api/v1/purchase/purchase.go
@@ -29,7 +29,7 @@
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
-// @Param data body purchaserequest.AddPurchase true "閲囪喘鍗曠敤鎴峰悕, 閲囪喘鍗曟墜鏈哄彿鐮�"
+// @Param data body purchaserequest.AddPurchase true "閲囪喘鍗�,閲囪喘鍗曚骇鍝�"
// @Success 200 {object} response.Response{msg=string} "鍒涘缓閲囪喘鍗�"
// @Router /purchase/purchase [post]
func (e *PurchaseApi) CreatePurchase(c *gin.Context) {
@@ -149,7 +149,26 @@
response.FailWithMessage("鑾峰彇澶辫触", c)
return
}
- response.OkWithDetailed(purchaseRes.PurchaseResponse{Purchase: data, ProductList: productList}, "鑾峰彇鎴愬姛", c)
+ respProductList := make([]*purchaseRes.PurchaseProducts, len(productList))
+ err = mapstructure.Decode(productList, &respProductList)
+ if err != nil {
+ global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+ response.FailWithMessage("鑾峰彇澶辫触", c)
+ return
+ }
+ for k, item := range productList {
+ respProductList[k].Amount = item.Amount
+ respProductList[k].Price = item.Price
+ respProductList[k].Total = item.Total
+ err = mapstructure.Decode(item.Product, &respProductList[k])
+ if err != nil {
+ global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+ response.FailWithMessage("鑾峰彇澶辫触", c)
+ return
+ }
+ }
+
+ response.OkWithDetailed(purchaseRes.PurchaseResponse{Purchase: data, ProductList: respProductList}, "鑾峰彇鎴愬姛", c)
}
// GetPurchaseList
@@ -173,14 +192,14 @@
response.FailWithMessage(err.Error(), c)
return
}
- PurchaseList, total, err := service.NewPurchaseService().GetPurchaseList(pageInfo)
+ purchaseList, total, err := service.NewPurchaseService().GetPurchaseList(pageInfo)
if err != nil {
global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
response.FailWithMessage("鑾峰彇澶辫触"+err.Error(), c)
return
}
response.OkWithDetailed(response.PageResult{
- List: PurchaseList,
+ List: purchaseList,
Total: total,
Page: pageInfo.Page,
PageSize: pageInfo.PageSize,
diff --git a/config.yaml b/config.yaml
index a172756..0cfd477 100644
--- a/config.yaml
+++ b/config.yaml
@@ -182,7 +182,7 @@
iplimit-time: 3600
use-multipoint: false
use-redis: false
- grpc-url: 192.168.20.118:9091
+ grpc-url: 192.168.20.119:9091
grpc-admin-url: 192.168.20.119:50051
tencent-cos:
bucket: xxxxx-10005608
diff --git a/docs/docs.go b/docs/docs.go
index 92af44b..fb4982c 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -4629,7 +4629,7 @@
"summary": "鍒涘缓閲囪喘鍗�",
"parameters": [
{
- "description": "閲囪喘鍗曠敤鎴峰悕, 閲囪喘鍗曟墜鏈哄彿鐮�",
+ "description": "閲囪喘鍗�,閲囪喘鍗曚骇鍝�",
"name": "data",
"in": "body",
"required": true,
@@ -8425,8 +8425,16 @@
"description": "鍒涘缓鏃堕棿",
"type": "string"
},
+ "creator": {
+ "description": "鍒跺崟浜�",
+ "type": "string"
+ },
"deliveryDate": {
"description": "浜や粯鏃ユ湡",
+ "type": "string"
+ },
+ "handledBy": {
+ "description": "缁忓姙浜�",
"type": "string"
},
"id": {
@@ -8441,6 +8449,10 @@
"description": "閲囪喘缂栧彿",
"type": "string"
},
+ "orderType": {
+ "description": "鍗曟嵁绫诲瀷",
+ "type": "string"
+ },
"phone": {
"description": "鑱旂郴浜虹數璇�",
"type": "string"
@@ -8451,6 +8463,10 @@
"purchaseTypeId": {
"description": "閲囪喘绫诲瀷id",
"type": "integer"
+ },
+ "quantity": {
+ "description": "閲囪喘鏁伴噺",
+ "type": "number"
},
"remark": {
"description": "澶囨敞",
@@ -8474,6 +8490,10 @@
"supplierId": {
"description": "渚涘簲鍟唅d",
"type": "integer"
+ },
+ "warehouse": {
+ "description": "鏀惰揣浠撳簱",
+ "type": "string"
}
}
},
@@ -8496,6 +8516,9 @@
"description": "閲囪喘鍗曚环",
"type": "number"
},
+ "product": {
+ "$ref": "#/definitions/test.Product"
+ },
"productId": {
"description": "浜у搧id",
"type": "integer"
@@ -8517,6 +8540,10 @@
"purchase.PurchaseType": {
"type": "object",
"properties": {
+ "created_at": {
+ "description": "鍒涘缓鏃堕棿",
+ "type": "string"
+ },
"id": {
"description": "涓婚敭ID",
"type": "integer"
@@ -9093,13 +9120,65 @@
}
}
},
+ "response.PurchaseProducts": {
+ "type": "object",
+ "properties": {
+ "amount": {
+ "description": "閲囪喘鏁伴噺",
+ "type": "number"
+ },
+ "deliveryTime": {
+ "type": "integer"
+ },
+ "modelNumber": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "number": {
+ "type": "string"
+ },
+ "price": {
+ "description": "閲囪喘鍗曚环",
+ "type": "number"
+ },
+ "productId": {
+ "description": "浜у搧id",
+ "type": "integer"
+ },
+ "productType": {
+ "type": "string"
+ },
+ "purchaseId": {
+ "description": "閲囪喘id",
+ "type": "integer"
+ },
+ "purchasePrice": {
+ "type": "number"
+ },
+ "shippingDuration": {
+ "type": "integer"
+ },
+ "specifications": {
+ "type": "string"
+ },
+ "total": {
+ "description": "閲囪喘鎬讳环",
+ "type": "number"
+ },
+ "unit": {
+ "type": "string"
+ }
+ }
+ },
"response.PurchaseResponse": {
"type": "object",
"properties": {
"productList": {
"type": "array",
"items": {
- "$ref": "#/definitions/purchase.PurchaseProducts"
+ "$ref": "#/definitions/response.PurchaseProducts"
}
},
"purchase": {
diff --git a/docs/swagger.json b/docs/swagger.json
index 864a908..6e56b99 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -4620,7 +4620,7 @@
"summary": "鍒涘缓閲囪喘鍗�",
"parameters": [
{
- "description": "閲囪喘鍗曠敤鎴峰悕, 閲囪喘鍗曟墜鏈哄彿鐮�",
+ "description": "閲囪喘鍗�,閲囪喘鍗曚骇鍝�",
"name": "data",
"in": "body",
"required": true,
@@ -8416,8 +8416,16 @@
"description": "鍒涘缓鏃堕棿",
"type": "string"
},
+ "creator": {
+ "description": "鍒跺崟浜�",
+ "type": "string"
+ },
"deliveryDate": {
"description": "浜や粯鏃ユ湡",
+ "type": "string"
+ },
+ "handledBy": {
+ "description": "缁忓姙浜�",
"type": "string"
},
"id": {
@@ -8432,6 +8440,10 @@
"description": "閲囪喘缂栧彿",
"type": "string"
},
+ "orderType": {
+ "description": "鍗曟嵁绫诲瀷",
+ "type": "string"
+ },
"phone": {
"description": "鑱旂郴浜虹數璇�",
"type": "string"
@@ -8442,6 +8454,10 @@
"purchaseTypeId": {
"description": "閲囪喘绫诲瀷id",
"type": "integer"
+ },
+ "quantity": {
+ "description": "閲囪喘鏁伴噺",
+ "type": "number"
},
"remark": {
"description": "澶囨敞",
@@ -8465,6 +8481,10 @@
"supplierId": {
"description": "渚涘簲鍟唅d",
"type": "integer"
+ },
+ "warehouse": {
+ "description": "鏀惰揣浠撳簱",
+ "type": "string"
}
}
},
@@ -8487,6 +8507,9 @@
"description": "閲囪喘鍗曚环",
"type": "number"
},
+ "product": {
+ "$ref": "#/definitions/test.Product"
+ },
"productId": {
"description": "浜у搧id",
"type": "integer"
@@ -8508,6 +8531,10 @@
"purchase.PurchaseType": {
"type": "object",
"properties": {
+ "created_at": {
+ "description": "鍒涘缓鏃堕棿",
+ "type": "string"
+ },
"id": {
"description": "涓婚敭ID",
"type": "integer"
@@ -9084,13 +9111,65 @@
}
}
},
+ "response.PurchaseProducts": {
+ "type": "object",
+ "properties": {
+ "amount": {
+ "description": "閲囪喘鏁伴噺",
+ "type": "number"
+ },
+ "deliveryTime": {
+ "type": "integer"
+ },
+ "modelNumber": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "number": {
+ "type": "string"
+ },
+ "price": {
+ "description": "閲囪喘鍗曚环",
+ "type": "number"
+ },
+ "productId": {
+ "description": "浜у搧id",
+ "type": "integer"
+ },
+ "productType": {
+ "type": "string"
+ },
+ "purchaseId": {
+ "description": "閲囪喘id",
+ "type": "integer"
+ },
+ "purchasePrice": {
+ "type": "number"
+ },
+ "shippingDuration": {
+ "type": "integer"
+ },
+ "specifications": {
+ "type": "string"
+ },
+ "total": {
+ "description": "閲囪喘鎬讳环",
+ "type": "number"
+ },
+ "unit": {
+ "type": "string"
+ }
+ }
+ },
"response.PurchaseResponse": {
"type": "object",
"properties": {
"productList": {
"type": "array",
"items": {
- "$ref": "#/definitions/purchase.PurchaseProducts"
+ "$ref": "#/definitions/response.PurchaseProducts"
}
},
"purchase": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 6547ff2..d593c53 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -702,8 +702,14 @@
created_at:
description: 鍒涘缓鏃堕棿
type: string
+ creator:
+ description: 鍒跺崟浜�
+ type: string
deliveryDate:
description: 浜や粯鏃ユ湡
+ type: string
+ handledBy:
+ description: 缁忓姙浜�
type: string
id:
description: 涓婚敭ID
@@ -714,6 +720,9 @@
number:
description: 閲囪喘缂栧彿
type: string
+ orderType:
+ description: 鍗曟嵁绫诲瀷
+ type: string
phone:
description: 鑱旂郴浜虹數璇�
type: string
@@ -722,6 +731,9 @@
purchaseTypeId:
description: 閲囪喘绫诲瀷id
type: integer
+ quantity:
+ description: 閲囪喘鏁伴噺
+ type: number
remark:
description: 澶囨敞
type: string
@@ -737,6 +749,9 @@
supplierId:
description: 渚涘簲鍟唅d
type: integer
+ warehouse:
+ description: 鏀惰揣浠撳簱
+ type: string
type: object
purchase.PurchaseProducts:
properties:
@@ -752,6 +767,8 @@
price:
description: 閲囪喘鍗曚环
type: number
+ product:
+ $ref: '#/definitions/test.Product'
productId:
description: 浜у搧id
type: integer
@@ -767,6 +784,9 @@
type: object
purchase.PurchaseType:
properties:
+ created_at:
+ description: 鍒涘缓鏃堕棿
+ type: string
id:
description: 涓婚敭ID
type: integer
@@ -1162,11 +1182,47 @@
$ref: '#/definitions/request.CasbinInfo'
type: array
type: object
+ response.PurchaseProducts:
+ properties:
+ amount:
+ description: 閲囪喘鏁伴噺
+ type: number
+ deliveryTime:
+ type: integer
+ modelNumber:
+ type: string
+ name:
+ type: string
+ number:
+ type: string
+ price:
+ description: 閲囪喘鍗曚环
+ type: number
+ productId:
+ description: 浜у搧id
+ type: integer
+ productType:
+ type: string
+ purchaseId:
+ description: 閲囪喘id
+ type: integer
+ purchasePrice:
+ type: number
+ shippingDuration:
+ type: integer
+ specifications:
+ type: string
+ total:
+ description: 閲囪喘鎬讳环
+ type: number
+ unit:
+ type: string
+ type: object
response.PurchaseResponse:
properties:
productList:
items:
- $ref: '#/definitions/purchase.PurchaseProducts'
+ $ref: '#/definitions/response.PurchaseProducts'
type: array
purchase:
$ref: '#/definitions/purchase.Purchase'
@@ -4508,7 +4564,7 @@
consumes:
- application/json
parameters:
- - description: 閲囪喘鍗曠敤鎴峰悕, 閲囪喘鍗曟墜鏈哄彿鐮�
+ - description: 閲囪喘鍗�,閲囪喘鍗曚骇鍝�
in: body
name: data
required: true
diff --git a/model/purchase/purchase.go b/model/purchase/purchase.go
index 4627f87..198fe97 100644
--- a/model/purchase/purchase.go
+++ b/model/purchase/purchase.go
@@ -23,6 +23,8 @@
Status OrderStatus `json:"status" form:"status" gorm:"type:tinyint(1);not null;default 0;comment:鐘舵��"` //鐘舵��
HandledBy string `json:"handledBy" form:"handledBy" gorm:"type:varchar(255);not null;default '';comment:缁忓姙浜�"` //缁忓姙浜�
Creator string `json:"creator" form:"creator" gorm:"type:varchar(255);not null;default '';comment:鍒跺崟浜�"` //鍒跺崟浜�
+ OrderType string `json:"orderType" form:"orderType" gorm:"type:varchar(255);not null;default '';comment:鍗曟嵁绫诲瀷"` //鍗曟嵁绫诲瀷
+ Warehouse string `json:"warehouse" form:"warehouse" gorm:"type:varchar(255);not null;default '';comment:鏀惰揣浠撳簱"` //鏀惰揣浠撳簱
}
type OrderStatus int
diff --git a/model/purchase/purchase_products.go b/model/purchase/purchase_products.go
index 53aa43d..20373de 100644
--- a/model/purchase/purchase_products.go
+++ b/model/purchase/purchase_products.go
@@ -3,14 +3,16 @@
import (
"github.com/shopspring/decimal"
"srm/global"
+ "srm/model/test"
)
type PurchaseProducts struct {
global.GVA_MODEL
PurchaseId int `json:"purchaseId" form:"purchaseType" gorm:"type:int(11);not null;default 0;comment:閲囪喘绫诲瀷id"` // 閲囪喘id
ProductId int `json:"productId" form:"supplierId" gorm:"type:int(11);not null;default 0;comment:渚涘簲鍟唅d"` // 浜у搧id
- Amount decimal.Decimal `json:"amount" form:"amount" gorm:"type:decimal(12,2);not null;default 0;comment:閲囪喘鏁伴噺"` // 閲囪喘鏁伴噺
- Price decimal.Decimal `json:"price" form:"price" gorm:"type:decimal(12,2);not null;default 0.00;comment:閲囪喘鍗曚环"` // 閲囪喘鍗曚环
- Total decimal.Decimal `json:"total" form:"total" gorm:"type:decimal(12,2);not null;default 0.00;comment:閲囪喘鎬讳环"` // 閲囪喘鎬讳环
- Remark string `json:"remark" form:"remark" gorm:"type:varchar(1000);not null; default '';comment:鎻忚堪"` //鎻忚堪
+ Product test.Product `json:"product" gorm:"foreignKey:ProductId"`
+ Amount decimal.Decimal `json:"amount" form:"amount" gorm:"type:decimal(12,2);not null;default 0;comment:閲囪喘鏁伴噺"` // 閲囪喘鏁伴噺
+ Price decimal.Decimal `json:"price" form:"price" gorm:"type:decimal(12,2);not null;default 0.00;comment:閲囪喘鍗曚环"` // 閲囪喘鍗曚环
+ Total decimal.Decimal `json:"total" form:"total" gorm:"type:decimal(12,2);not null;default 0.00;comment:閲囪喘鎬讳环"` // 閲囪喘鎬讳环
+ Remark string `json:"remark" form:"remark" gorm:"type:varchar(1000);not null; default '';comment:鎻忚堪"` //鎻忚堪
}
diff --git a/model/purchase/response/purchase.go b/model/purchase/response/purchase.go
index dad6b28..2588e67 100644
--- a/model/purchase/response/purchase.go
+++ b/model/purchase/response/purchase.go
@@ -1,8 +1,28 @@
package response
-import "srm/model/purchase"
+import (
+ "github.com/shopspring/decimal"
+ "srm/model/purchase"
+)
type PurchaseResponse struct {
- Purchase purchase.Purchase `json:"purchase"`
- ProductList []*purchase.PurchaseProducts `json:"productList"`
+ Purchase purchase.Purchase `json:"purchase"`
+ ProductList []*PurchaseProducts `json:"productList"`
+}
+
+type PurchaseProducts struct {
+ PurchaseId int `json:"purchaseId" form:"purchaseType" gorm:"type:int(11);not null;default 0;comment:閲囪喘绫诲瀷id"` // 閲囪喘id
+ ProductId int `json:"productId" form:"supplierId" gorm:"type:int(11);not null;default 0;comment:渚涘簲鍟唅d"` // 浜у搧id
+ Amount decimal.Decimal `json:"amount" form:"amount" gorm:"type:decimal(12,2);not null;default 0;comment:閲囪喘鏁伴噺"` // 閲囪喘鏁伴噺
+ Price decimal.Decimal `json:"price" form:"price" gorm:"type:decimal(12,2);not null;default 0.00;comment:閲囪喘鍗曚环"` // 閲囪喘鍗曚环
+ Total decimal.Decimal `json:"total" form:"total" gorm:"type:decimal(12,2);not null;default 0.00;comment:閲囪喘鎬讳环"` // 閲囪喘鎬讳环
+ 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;"`
+ PurchasePrice *float64 `json:"purchasePrice" form:"purchasePrice" gorm:"column:purchase_price;comment:閲囪喘浠锋牸;"`
+ DeliveryTime *int `json:"deliveryTime" form:"deliveryTime" gorm:"column:delivery_time;comment:;size:11;"`
+ 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;"`
}
diff --git a/service/purchase/purchase.go b/service/purchase/purchase.go
index bbef0f1..352395d 100644
--- a/service/purchase/purchase.go
+++ b/service/purchase/purchase.go
@@ -132,7 +132,7 @@
func (slf *PurchaseService) GetPurchaseProductList(purchaseId uint) (list []*purchase.PurchaseProducts, err error) {
db := global.GVA_DB.Model(&purchase.PurchaseProducts{})
list = make([]*purchase.PurchaseProducts, 0)
- err = db.Where("purchase_id = ?", purchaseId).Find(&list).Error
+ err = db.Where("purchase_id = ?", purchaseId).Preload("Product").Find(&list).Error
return list, err
}
@@ -214,15 +214,36 @@
}
func (slf *PurchaseService) SavePurchaseType(list []*purchase.PurchaseType) (err error) {
+ ids := make([]uint, 0)
+ newRecords := make([]*purchase.PurchaseType, 0)
+ for _, item := range list {
+ if item.ID != 0 {
+ ids = append(ids, item.ID)
+ } else {
+ newRecords = append(newRecords, item)
+ }
+ }
err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
- err = tx.Where("1 = ?", 1).Delete(&purchase.PurchaseType{}).Error
+ err = tx.Where("id not in ?", ids).Delete(&purchase.PurchaseType{}).Error
if err != nil {
return err
}
- for _, item := range list {
- item.ID = 0
+ if len(newRecords) > 0 {
+ err = tx.Create(newRecords).Error
+ if err != nil {
+ return err
+ }
}
- return tx.Create(list).Error
+
+ for _, item := range list {
+ if item.ID != 0 {
+ err = tx.Save(item).Error
+ if err != nil {
+ return err
+ }
+ }
+ }
+ return nil
})
return err
}
--
Gitblit v1.8.0