You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
2.2 KiB
125 lines
2.2 KiB
package goods
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"recook/internal/back"
|
|
"recook/internal/dbc"
|
|
"recook/internal/model/goods"
|
|
"recook/tools"
|
|
)
|
|
|
|
type savePhotoParam struct {
|
|
GoodsId uint `json:"goodsId" validate:"required"`
|
|
Photos []photo `json:"photos" validate:"required"`
|
|
}
|
|
|
|
type photo struct {
|
|
Path string `json:"path" validate:"required"`
|
|
Width uint `json:"width" validate:"required"`
|
|
Height uint `json:"height" validate:"required"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
/*
|
|
保存主图
|
|
*/
|
|
func SaveGoodsMainPhoto(c *gin.Context) {
|
|
var p savePhotoParam
|
|
if err := tools.Params(&p, c); err != nil {
|
|
back.Fail(c, err.Error())
|
|
return
|
|
}
|
|
|
|
if len(p.Photos) == 0 {
|
|
back.Fail(c, "商品至少有一张主图")
|
|
return
|
|
}
|
|
|
|
var photos []goods.MainPhoto
|
|
dbc.DB.Find(&photos, "goods_id = ?", p.GoodsId)
|
|
|
|
tx := dbc.DB.Begin()
|
|
{
|
|
for _, v := range photos {
|
|
if err := tx.Delete(&v).Error; err != nil {
|
|
tx.Rollback()
|
|
back.Err(c, err.Error())
|
|
return
|
|
}
|
|
}
|
|
|
|
for i, v := range p.Photos {
|
|
isMaster := 0
|
|
if i == 0 {
|
|
isMaster = 1
|
|
}
|
|
|
|
one := goods.MainPhoto{
|
|
GoodsID: p.GoodsId,
|
|
URL: v.Path,
|
|
IsMaster: uint(isMaster),
|
|
OrderNo: uint(i),
|
|
Width: v.Width,
|
|
Height: v.Height,
|
|
Name: v.Name,
|
|
}
|
|
|
|
if err := tx.Create(&one).Error; err != nil {
|
|
tx.Rollback()
|
|
back.Err(c, err.Error())
|
|
return
|
|
}
|
|
}
|
|
}
|
|
tx.Commit()
|
|
|
|
back.Suc(c, "", nil)
|
|
}
|
|
|
|
func SaveGoodsDetailPhotos(c *gin.Context) {
|
|
var p savePhotoParam
|
|
if err := tools.Params(&p, c); err != nil {
|
|
back.Fail(c, err.Error())
|
|
return
|
|
}
|
|
|
|
if len(p.Photos) == 0 {
|
|
back.Fail(c, "商品至少有一张详情图片")
|
|
return
|
|
}
|
|
|
|
var photos []goods.DetailPhoto
|
|
dbc.DB.Find(&photos, "goods_id = ?", p.GoodsId)
|
|
|
|
tx := dbc.DB.Begin()
|
|
{
|
|
for _, v := range photos {
|
|
if err := tx.Delete(&v).Error; err != nil {
|
|
tx.Rollback()
|
|
back.Err(c, err.Error())
|
|
return
|
|
}
|
|
}
|
|
|
|
for i, v := range p.Photos {
|
|
one := goods.DetailPhoto{
|
|
GoodsID: p.GoodsId,
|
|
URL: v.Path,
|
|
OrderNo: uint(i),
|
|
Width: v.Width,
|
|
Height: v.Height,
|
|
Name: v.Name,
|
|
}
|
|
|
|
if err := tx.Create(&one).Error; err != nil {
|
|
tx.Rollback()
|
|
back.Err(c, err.Error())
|
|
return
|
|
}
|
|
}
|
|
}
|
|
tx.Commit()
|
|
|
|
back.Suc(c, "", nil)
|
|
}
|