package backstage_dao

import (
	"errors"
	_ "errors"
	"github.com/gogf/gf/frame/g"
	_ "github.com/gogf/gf/frame/g"
	"strconv"
	"youngmini_server/app/model/backstage_model"
	_ "youngmini_server/app/model/backstage_model"
)

// 商品表分为商品信息表和商品附带图片表

// CreatProduct 商品创建
func CreatProduct(brand *backstage_model.ProductReq) error {
	g.DB().SetDebug(true)
	// 返回的res是int64位
	res, err := g.DB().Model("product").
		Data(brand).InsertAndGetId()
	// 将获取到的int64转换位string
	s := strconv.FormatInt(res, 10)
	// 获取到返回的ID值，创建图片表中的图片
	var photo = brand.PhotosMain
	le := len(photo)
	for i := 0; i < le; i++ {
		photo[i].ProductId = s
	}
	err = CreatPicture(photo)
	if err != nil {
		return err
	}
	return nil
}

// DeleteProduct  商品删除
func DeleteProduct(productId string) error {
	g.DB().SetDebug(true)
	_, err := g.DB().Model("product").Where("id", productId).Delete()
	if err != nil {
		return errors.New("删除失败，请重试")
	}
	return err
}

// UpdateProduct  品牌更新
func UpdateProduct(brand *backstage_model.ProductReq) error {
	g.DB().SetDebug(true)
	_, err := g.DB().Model("product").Data(brand).Where("id", brand.Id).OmitEmpty().Update()
	if err != nil {
		return errors.New("更新失败，请重试")
	}
	return err
}

// FindByIdProduct 根据id查询品牌信息
func FindByIdProduct(brandId string) (*backstage_model.ProductReq, error) {
	g.DB().SetDebug(true)
	product := (*backstage_model.ProductReq)(nil)
	err := g.DB().Model("product").Where("id", brandId).Scan(&product)
	if err != nil || product == nil {
		return nil, errors.New("该ID在数据库中不存在，请输入正确ID值")
	}
	return product, nil
}

// FindAllProduct 分页查询
func FindAllProduct(indexPage int, pageSize int) ([]*backstage_model.ProductReq, error) {
	var products []*backstage_model.ProductReq
	err := g.DB().Model("product").Page(indexPage, pageSize).OrderDesc("updated_at").Scan(&products)
	if err != nil {
		return nil, err
	}
	return products, nil
}

// CreatPicture 批量创建商品所附加的图片。
func CreatPicture(photo []backstage_model.ProductPhotoReq) error {
	g.DB().SetDebug(true)
	_, err := g.DB().Model("product_photo").Data(photo).Batch(2).Insert()
	if err != nil {
		return err
	}
	return nil
}

// DeletePhotoByProID   根据商品ID批量删除商品所附带图片
func DeletePhotoByProID(productId string) error {
	g.DB().SetDebug(true)
	_, err := g.DB().Model("product_photo").Where("product_id", productId).Delete()
	if err != nil {
		return errors.New("删除失败，请重试")
	}
	return err
}

// DeletePhoto 删除单个图片
func DeletePhoto(photoIid string) error {
	g.DB().SetDebug(true)
	_, err := g.DB().Model("product_photo").Where("id", photoIid).Delete()
	if err != nil {
		return errors.New("删除失败，请重试")
	}
	return err
}

// FindAllPhoto  根据商品ID批量查询图片
func FindAllPhoto(productId string) ([]*backstage_model.ProductPhotoReq, error) {
	var photos []*backstage_model.ProductPhotoReq
	err := g.DB().Model("product_photo").Where("product_id", 9).Scan(&photos)
	if err != nil {
		return nil, err
	}
	return photos, nil
}
