package test
|
|
import (
|
"srm/global"
|
"srm/model/common/request"
|
"srm/model/test"
|
testReq "srm/model/test/request"
|
)
|
|
type ProductService struct {
|
}
|
|
// CreateProduct 创建Product记录
|
// Author [piexlmax](https://github.com/piexlmax)
|
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,
|
})
|
}
|
|
err = global.GVA_DB.Create(products).Error
|
return err
|
}
|
|
// DeleteProduct 删除Product记录
|
// Author [piexlmax](https://github.com/piexlmax)
|
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.SupplierMaterial{}, "id in ?", ids.Ids).Error
|
return err
|
}
|
|
// UpdateProduct 更新Product记录
|
// Author [piexlmax](https://github.com/piexlmax)
|
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 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.SupplierMaterial, total int64, err error) {
|
limit := info.PageSize
|
offset := info.PageSize * (info.Page - 1)
|
// 创建db
|
db := global.GVA_DB.Model(&test.SupplierMaterial{})
|
var ps []test.SupplierMaterial
|
//搜索框合一添加查询条件
|
if info.Keyword != "" {
|
db = db.Where("`srm_supplier_material`.name LIKE ?", "%"+info.Keyword+"%").Joins("Supplier").Or("Supplier.name LIKE ?", "%"+info.Keyword+"%")
|
}
|
if info.Name != "" {
|
db = db.Where("name LIKE ?", "%"+info.Name+"%")
|
}
|
if info.Number != "" {
|
db = db.Where("number LIKE ?", "%"+info.Number+"%")
|
}
|
|
if info.SupplierId != 0 {
|
db = db.Where("supplier_id = ?", info.SupplierId)
|
}
|
|
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_type = ?", test.PurchaseTypeOutSource)
|
|
db = db.Where("material_type != ?", test.MaterialTypeVirtual)
|
|
err = db.Count(&total).Error
|
if err != nil {
|
return
|
}
|
|
err = db.Limit(limit).Offset(offset).Find(&ps).Error
|
return ps, total, err
|
}
|