1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package repository
- import (
- req "sghgogs.com/micro/shopping-service/domain/model/request"
- pb "sghgogs.com/micro/shopping-service/proto"
- "time"
- )
- func (u *Repository) GetProductList(query *pb.GetProductListRequest) ([]req.Product, int64, error) {
- // Select("id, name, description, price, stock_quantity, created_at, updated_at, category_id").
- products := make([]req.Product, 0)
- tx := u.db.Model(&req.Product{}).
- Preload("Category").
- Order("id desc")
- if query.Keyword != "" {
- tx.Where("name = ? ", query.Keyword)
- }
- var totalCount int64
- tx.Count(&totalCount)
- return products, totalCount, tx.Limit(int(query.PageSize)).Offset(int((query.Page - 1) * query.PageSize)).Find(&products).Error
- }
- func (u *Repository) GetProduct(productID int64) (req.Product, error) {
- var product req.Product
- return product, u.db.Model(&req.Product{}).Preload("Category").Find(&product, productID).Error
- }
- func (u *Repository) CreateMultipleProducts(products []req.Product) error {
- // 开始事务
- tx := u.db.Begin()
- // 错误处理
- defer func() {
- if r := recover(); r != nil {
- tx.Rollback()
- }
- }()
- if err := tx.Create(&products).Error; err != nil {
- tx.Rollback()
- return err
- }
- return tx.Commit().Error
- }
- func (u *Repository) UpdateProduct(product *pb.UpdateProductRequest) error {
- // 开始事务
- tx := u.db.Begin()
- // 错误处理
- defer func() {
- if r := recover(); r != nil {
- tx.Rollback()
- }
- }()
- if err := tx.Model(&req.Product{}).Where("id = ?", product.ProductId).Updates(map[string]interface{}{
- "name": product.Name,
- "description": product.Description,
- "price": product.Price,
- "stock_quantity": product.StockQuantity,
- "updated_at": time.Now(),
- }).Error; err != nil {
- tx.Rollback()
- return err
- }
- return tx.Commit().Error
- }
- func (u *Repository) DeleteProduct(ProductId int64) error {
- return u.db.Model(&req.Product{}).Delete(&req.Product{ID: ProductId}).Error
- }
|