From 0ddbf564f6e2a33c4f73141423ad0905da4278d0 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期五, 19 四月 2024 16:36:33 +0800
Subject: [PATCH] 增加查询字段接口,保存字典接口
---
service/test/product.go | 98 +++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 82 insertions(+), 16 deletions(-)
diff --git a/service/test/product.go b/service/test/product.go
index 65a2f7e..f33fa33 100644
--- a/service/test/product.go
+++ b/service/test/product.go
@@ -12,50 +12,74 @@
// CreateProduct 鍒涘缓Product璁板綍
// Author [piexlmax](https://github.com/piexlmax)
-func (pService *ProductService) CreateProduct(p *test.Product) (err error) {
- err = global.GVA_DB.Create(p).Error
+func (pService *ProductService) CreateProduct(pList []*testReq.Product) (err error) {
+
+ products := make([]*test.SupplierMaterial, 0, len(pList))
+
+ for _, p := range pList {
+ products = append(products, &test.SupplierMaterial{
+ Name: p.Name,
+ Number: p.Number,
+ SupplierId: p.SupplierId,
+ Unit: p.Unit,
+ PurchasePrice: p.PurchasePrice,
+ DeliveryTime: p.DeliveryTime,
+ ShippingDuration: p.ShippingDuration,
+ Specifications: p.Specifications,
+ CategoryName: p.CategoryName,
+ ModelNumber: p.ModelNumber,
+ })
+ }
+
+ err = global.GVA_DB.Create(products).Error
return err
}
// DeleteProduct 鍒犻櫎Product璁板綍
// Author [piexlmax](https://github.com/piexlmax)
-func (pService *ProductService) DeleteProduct(p test.Product) (err error) {
- err = global.GVA_DB.Delete(&p).Error
+func (pService *ProductService) DeleteProduct(id int) (err error) {
+ err = global.GVA_DB.Delete(&test.SupplierMaterial{}, "id = ?", id).Error
return err
}
// DeleteProductByIds 鎵归噺鍒犻櫎Product璁板綍
// Author [piexlmax](https://github.com/piexlmax)
func (pService *ProductService) DeleteProductByIds(ids request.IdsReq) (err error) {
- err = global.GVA_DB.Delete(&[]test.Product{}, "id in ?", ids.Ids).Error
+ err = global.GVA_DB.Delete(&[]test.SupplierMaterial{}, "id in ?", ids.Ids).Error
return err
}
// UpdateProduct 鏇存柊Product璁板綍
// Author [piexlmax](https://github.com/piexlmax)
-func (pService *ProductService) UpdateProduct(p test.Product) (err error) {
- err = global.GVA_DB.Save(&p).Error
+func (pService *ProductService) UpdateProduct(p test.SupplierMaterial) (err error) {
+ err = global.GVA_DB.Updates(&p).Error
return err
}
// GetProduct 鏍规嵁id鑾峰彇Product璁板綍
// Author [piexlmax](https://github.com/piexlmax)
-func (pService *ProductService) GetProduct(id uint) (p test.Product, err error) {
+func (pService *ProductService) GetProduct(id int) (p test.SupplierMaterial, err error) {
err = global.GVA_DB.Where("id = ?", id).First(&p).Error
return
}
// GetProductInfoList 鍒嗛〉鑾峰彇Product璁板綍
// Author [piexlmax](https://github.com/piexlmax)
-func (pService *ProductService) GetProductInfoList(info testReq.ProductSearch) (list []test.Product, total int64, err error) {
+func (pService *ProductService) GetProductInfoList(info testReq.ProductSearch) (list []test.SupplierMaterial, total int64, err error) {
limit := info.PageSize
offset := info.PageSize * (info.Page - 1)
// 鍒涘缓db
- db := global.GVA_DB.Model(&test.Product{})
- var ps []test.Product
- // 濡傛灉鏈夋潯浠舵悳绱� 涓嬫柟浼氳嚜鍔ㄥ垱寤烘悳绱㈣鍙�
- if info.StartCreatedAt != nil && info.EndCreatedAt != nil {
- db = db.Where("created_at BETWEEN ? AND ?", info.StartCreatedAt, info.EndCreatedAt)
+ db := global.GVA_DB.Model(&test.SupplierMaterial{})
+ var ps []test.SupplierMaterial
+ //鎼滅储妗嗗悎涓�娣诲姞鏌ヨ鏉′欢
+ if info.Keyword != "" {
+ kw := "%" + info.Keyword + "%"
+ if info.SupplierId == 0 {
+ db = db.Where("`srm_supplier_material`.name LIKE ?", kw).Joins("Supplier").Or("Supplier.name LIKE ?", kw)
+ } else {
+ db = db.Where("name LIKE ? OR number LIKE ? OR specifications LIKE ?", kw, kw, kw)
+ }
+
}
if info.Name != "" {
db = db.Where("name LIKE ?", "%"+info.Name+"%")
@@ -63,9 +87,51 @@
if info.Number != "" {
db = db.Where("number LIKE ?", "%"+info.Number+"%")
}
- if info.Unit != "" {
- db = db.Where("unit LIKE ?", "%"+info.Unit+"%")
+
+ supplierIds := []uint{0}
+ if info.SupplierId != 0 {
+ supplierIds = append(supplierIds, info.SupplierId)
}
+ db = db.Where("supplier_id in (?)", supplierIds)
+
+ err = db.Count(&total).Error
+ if err != nil {
+ return
+ }
+
+ err = db.Limit(limit).Offset(offset).Order("id desc").Preload("Supplier").Find(&ps).Error
+ return ps, total, err
+}
+
+// GetProducts 鏍规嵁ids鑾峰彇Product璁板綍
+func (pService *ProductService) GetProducts(ids []uint) (p []*test.SupplierMaterial, m map[uint]*test.SupplierMaterial, err error) {
+ err = global.GVA_DB.Where("id in ?", ids).Find(&p).Error
+ if err != nil {
+ return
+ }
+ m = make(map[uint]*test.SupplierMaterial, len(p))
+ for _, product := range p {
+ m[product.ID] = product
+ }
+ 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 id LIKE ?", "%"+info.Keyword+"%", "%"+info.Keyword+"%")
+ }
+
+ //绫诲瀷涓洪噰璐�
+ db = db.Where("purchase_types LIKE ?", "%1%")
+
+ db = db.Where("is_storage = ?", 1)
+
err = db.Count(&total).Error
if err != nil {
return
--
Gitblit v1.8.0