From e517b1a99b6edfa24c8cc4e109a6a10488f23b6a Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期一, 28 八月 2023 11:51:55 +0800
Subject: [PATCH] merge

---
 service/purchase/purchase.go |  140 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 140 insertions(+), 0 deletions(-)

diff --git a/service/purchase/purchase.go b/service/purchase/purchase.go
new file mode 100644
index 0000000..6267575
--- /dev/null
+++ b/service/purchase/purchase.go
@@ -0,0 +1,140 @@
+package purchase
+
+import (
+	"github.com/spf13/cast"
+	"gorm.io/gorm"
+	"srm/global"
+	"srm/model/common/request"
+	"srm/model/purchase"
+	purchaserequest "srm/model/purchase/request"
+)
+
+type PurchaseService struct{}
+
+func NewPurchaseService() *PurchaseService {
+	return &PurchaseService{}
+}
+
+//@function: CreatePurchase
+//@description: 鍒涘缓閲囪喘鍗�
+//@param: params *purchaserequest.AddPurchase
+//@return: err error
+
+func (exa *PurchaseService) CreatePurchase(params purchaserequest.AddPurchase) (err error) {
+	err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
+		err = global.GVA_DB.Create(&params.Purchase).Error
+		if err != nil {
+			return err
+		}
+		for _, product := range params.ProductList {
+			product.PurchaseId = cast.ToInt(params.Purchase.ID)
+		}
+		return global.GVA_DB.Create(params.ProductList).Error
+	})
+
+	return err
+}
+
+//@function: DeletePurchase
+//@description: 鍒犻櫎閲囪喘鍗�
+//@param: id uint
+//@return: err error
+
+func (exa *PurchaseService) DeletePurchase(id uint) (err error) {
+	err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
+		err = global.GVA_DB.Where("id = ?", id).Delete(&purchase.Purchase{}).Error
+		if err != nil {
+			return err
+		}
+		return global.GVA_DB.Where("purchase_id = ?", id).Delete(&purchase.PurchaseProducts{}).Error
+	})
+	return err
+}
+
+//@function: UpdatePurchase
+//@description: 鏇存柊閲囪喘鍗�
+//@param: params *purchaserequest.AddPurchase
+//@return: err error
+
+func (exa *PurchaseService) UpdatePurchase(params *purchaserequest.AddPurchase) (err error) {
+	err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
+		err = global.GVA_DB.Updates(params.Purchase).Error
+		if err != nil {
+			return err
+		}
+		err = global.GVA_DB.Where("purchase_id = ?", params.Purchase.ID).Delete(&purchase.PurchaseProducts{}).Error
+		if err != nil {
+			return err
+		}
+		for _, product := range params.ProductList {
+			product.ID = 0
+			product.PurchaseId = cast.ToInt(params.Purchase.ID)
+		}
+		return global.GVA_DB.Create(params.ProductList).Error
+	})
+	return err
+}
+
+//@function: GetPurchase
+//@description: 鑾峰彇閲囪喘鍗曚俊鎭�
+//@param: id uint
+//@return: purchase model.Purchase, err error
+
+func (exa *PurchaseService) GetPurchase(id uint) (purchase purchase.Purchase, err error) {
+	err = global.GVA_DB.Where("id = ?", id).First(&purchase).Error
+	return
+}
+
+//@function: GetPurchaseList
+//@description: 鍒嗛〉鑾峰彇閲囪喘鍗曞垪琛�
+//@param: info request.PageInfo
+//@return: list interface{}, total int64, err error
+
+func (exa *PurchaseService) GetPurchaseList(info request.PageInfo) (list interface{}, total int64, err error) {
+	limit := info.PageSize
+	offset := info.PageSize * (info.Page - 1)
+	db := global.GVA_DB.Model(&purchase.Purchase{})
+	if info.Keyword != "" {
+		db.Distinct("purchases.id").Joins("left join purchase_products on purchase_products.purchase_id = purchases.id").
+			Joins("left join Product on Product.Id = purchase_products.product_id").
+			Joins("left join supplier on supplier.Id = purchases.supplier_id").
+			Where("purchases.name like ?", "%"+info.Keyword+"%").
+			Or("Product.name like ?", "%"+info.Keyword+"%").
+			Or("supplier.name like ?", "%"+info.Keyword+"%")
+	}
+	var purchaseList []purchase.Purchase
+	err = db.Count(&total).Error
+	if err != nil {
+		return purchaseList, total, err
+	}
+	err = db.Limit(limit).Offset(offset).Find(&purchaseList).Error
+	return purchaseList, total, err
+}
+
+//@function: GetPurchaseProductList
+//@description: 鍒嗛〉鑾峰彇閲囪喘鍗曚骇鍝佸垪琛�
+//@param: purchaseId int
+//@return: list interface{},  err error
+
+func (exa *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
+	return list, err
+}
+
+//@function: Submit
+//@description: 鎻愪氦閲囪喘鍗�
+//@param: id uint
+//@return: err error
+
+func (exa *PurchaseService) Submit(id uint) (err error) {
+	err = global.GVA_DB.Transaction(func(tx *gorm.DB) error {
+		err = global.GVA_DB.Where("id = ?", id).Model(&purchase.Purchase{}).Updates(map[string]interface{}{"status": 1}).Error
+		if err != nil {
+			return err
+		}
+		return global.GVA_DB.Where("purchase_id = ?", id).Delete(&purchase.PurchaseProducts{}).Error
+	})
+	return err
+}

--
Gitblit v1.8.0