270 lines
7.8 KiB
Go
270 lines
7.8 KiB
Go
package mallmanage
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"github.com/gin-gonic/gin"
|
|
"go-admin/app/admin/models"
|
|
orm "go-admin/common/global"
|
|
"go-admin/logger"
|
|
"go-admin/tools/app"
|
|
"net/http"
|
|
)
|
|
|
|
func GoodsCatCreate(c *gin.Context) {
|
|
goodsCat := &models.GoodsCat{}
|
|
if c.ShouldBindJSON(goodsCat) != nil {
|
|
logger.Errorf("para err")
|
|
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
|
return
|
|
}
|
|
if goodsCat.Name == "" {
|
|
logger.Errorf("para err")
|
|
app.Error(c, http.StatusBadRequest, errors.New("name para err"), "参数错误")
|
|
return
|
|
}
|
|
goodsCat.State = 2
|
|
if goodsCat.Pid == 0 {
|
|
goodsCat.Level = 1
|
|
} else {
|
|
if goodsCat.Level == 0 {
|
|
logger.Error("level err:")
|
|
app.Error(c, http.StatusInternalServerError, errors.New("goods cat level err"), "添加分类失败")
|
|
return
|
|
}
|
|
//goodsCat.Pid = goodsCat.ID
|
|
goodsCat.Level += 1
|
|
goodsCat.ID = 0
|
|
}
|
|
exist, err := models.QueryRecordExist(fmt.Sprintf("SELECT * FROM goods_cat WHERE `name` = '%s' AND pid=%d",
|
|
goodsCat.Name, goodsCat.Pid))
|
|
if err != nil {
|
|
logger.Error("exist spec err:", logger.Field("err", err))
|
|
app.Error(c, http.StatusInternalServerError, errors.New("exist cat err"), "添加分类失败")
|
|
return
|
|
}
|
|
if exist {
|
|
logger.Error("cat exist")
|
|
app.Error(c, http.StatusInternalServerError, errors.New("cat exist err"), "分类存在")
|
|
return
|
|
}
|
|
|
|
err = orm.Eloquent.Create(goodsCat).Error
|
|
if err != nil {
|
|
logger.Errorf("err:%#v", logger.Field("err", err))
|
|
msg := "添加分类失败"
|
|
app.Error(c, http.StatusInternalServerError, errors.New("goods create err"), msg)
|
|
return
|
|
}
|
|
|
|
app.OK(c, goodsCat, "添加分类成功")
|
|
return
|
|
}
|
|
|
|
func GoodsCatList(c *gin.Context) {
|
|
var goodsCats []models.GoodsCat
|
|
err := orm.Eloquent.Table("goods_cat").Where("level=?", 1).Where("state=2").
|
|
Order("sort DESC").Find(&goodsCats).Error
|
|
if err != nil {
|
|
logger.Error("goods cat list err:", logger.Field("err", err))
|
|
app.Error(c, http.StatusInternalServerError, err, "获取分类列表失败")
|
|
return
|
|
}
|
|
pids := make([]uint32, 0)
|
|
for i, _ := range goodsCats {
|
|
pids = append(pids, goodsCats[i].ID)
|
|
}
|
|
|
|
var subCat []models.GoodsCat
|
|
err = orm.Eloquent.Table("goods_cat").Where("pid in (?)", pids).Where("state=2").
|
|
Order("sort DESC").Find(&subCat).Error
|
|
if err != nil {
|
|
logger.Errorf("pCat err:%#v", logger.Field("err", err))
|
|
app.Error(c, http.StatusInternalServerError, errors.New("goods create err"), "获取分类失败")
|
|
return
|
|
}
|
|
pCatMap := make(map[uint32][]models.GoodsCat, 0)
|
|
for i, _ := range subCat {
|
|
pCatMap[subCat[i].Pid] = append(pCatMap[subCat[i].Pid], subCat[i])
|
|
}
|
|
for i, _ := range goodsCats {
|
|
v, ok := pCatMap[goodsCats[i].ID]
|
|
if ok {
|
|
goodsCats[i].SubCats = v
|
|
}
|
|
}
|
|
|
|
app.OK(c, goodsCats, "")
|
|
return
|
|
}
|
|
|
|
func GoodsCatUpdate(c *gin.Context) {
|
|
goodsCat := &models.GoodsCat{}
|
|
if c.ShouldBindJSON(goodsCat) != nil {
|
|
logger.Errorf("para err")
|
|
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
|
return
|
|
}
|
|
err := orm.Eloquent.Save(goodsCat).Error
|
|
if err != nil {
|
|
logger.Errorf("goods cat update err:%#v", logger.Field("err", err))
|
|
app.Error(c, http.StatusInternalServerError, errors.New("goods cat update err"), "分类修改失败")
|
|
return
|
|
}
|
|
|
|
app.OK(c, goodsCat, "分类修改成功")
|
|
return
|
|
}
|
|
|
|
func GoodsCatDelete(c *gin.Context) {
|
|
req := &struct {
|
|
Id uint32 `json:"id"`
|
|
}{}
|
|
if c.ShouldBindJSON(req) != nil {
|
|
logger.Errorf("para err")
|
|
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
|
return
|
|
}
|
|
err := orm.Eloquent.Table("goods_cat").Where("id=?", req.Id).Delete(&models.GoodsCat{}).Error
|
|
if err != nil {
|
|
logger.Errorf("err:%#v", logger.Field("err", err))
|
|
msg := "删除商品分类失败"
|
|
app.Error(c, http.StatusInternalServerError, errors.New("goods cat delete err"), msg)
|
|
return
|
|
}
|
|
app.OK(c, nil, "操作成功")
|
|
return
|
|
}
|
|
|
|
func GoodsSpecCreate(c *gin.Context) {
|
|
spec := &models.Spec{}
|
|
if c.ShouldBindJSON(spec) != nil {
|
|
logger.Errorf("para err")
|
|
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
|
return
|
|
}
|
|
exist, err := models.QueryRecordExist(fmt.Sprintf("SELECT * FROM spec WHERE display_name = '%s'", spec.DisplayName))
|
|
if err != nil {
|
|
logger.Error("exist spec err:", logger.Field("err", err))
|
|
app.Error(c, http.StatusInternalServerError, errors.New("exist spec err"), "添加规格失败")
|
|
return
|
|
}
|
|
if exist {
|
|
logger.Error("spec exist")
|
|
app.Error(c, http.StatusInternalServerError, errors.New("spec exist err"), "规格存在")
|
|
return
|
|
}
|
|
spec.State = 2
|
|
err = orm.Eloquent.Create(spec).Error
|
|
if err != nil {
|
|
logger.Error("create spec err:", logger.Field("err", err))
|
|
app.Error(c, http.StatusInternalServerError, errors.New("create spec err"), "添加规格失败")
|
|
return
|
|
}
|
|
|
|
app.OK(c, spec, "添加规格成功")
|
|
return
|
|
}
|
|
|
|
func GoodsSpecList(c *gin.Context) {
|
|
var specs []models.Spec
|
|
err := orm.Eloquent.Table("spec").Order("sort DESC").Find(&specs).Error
|
|
if err != nil {
|
|
logger.Error("create spec list err:", logger.Field("err", err))
|
|
app.Error(c, http.StatusInternalServerError, errors.New("create spec err"), "获取规格列表失败")
|
|
return
|
|
}
|
|
models.SpecListSetValue(specs)
|
|
app.OK(c, specs, "")
|
|
return
|
|
}
|
|
|
|
func GoodsSpecUpdate(c *gin.Context) {
|
|
spec := &models.Spec{}
|
|
if c.ShouldBindJSON(spec) != nil {
|
|
logger.Errorf("para err")
|
|
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
|
return
|
|
}
|
|
err := orm.Eloquent.Save(spec).Error
|
|
if err != nil {
|
|
logger.Errorf("goods cat update err:%#v", logger.Field("err", err))
|
|
app.Error(c, http.StatusInternalServerError, errors.New("goods cat update err"), "分类修改失败")
|
|
return
|
|
}
|
|
|
|
app.OK(c, spec, "规格修改成功")
|
|
return
|
|
}
|
|
|
|
func SpecValueCreate(c *gin.Context) {
|
|
specValue := &models.SpecValue{}
|
|
if c.ShouldBindJSON(specValue) != nil {
|
|
logger.Errorf("para err")
|
|
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
|
return
|
|
}
|
|
exist, err := models.QueryRecordExist(
|
|
fmt.Sprintf("SELECT * FROM spec_value WHERE display_value = '%s' AND spec_id=%d",
|
|
specValue.DisplayValue, specValue.SpecId))
|
|
if err != nil {
|
|
logger.Error("exist spec err:", logger.Field("err", err))
|
|
app.Error(c, http.StatusInternalServerError, errors.New("exist spec err"), "添加规格值失败")
|
|
return
|
|
}
|
|
if exist {
|
|
logger.Error("spec exist")
|
|
app.Error(c, http.StatusInternalServerError, errors.New("spec exist err"), "规格值存在")
|
|
return
|
|
}
|
|
specValue.State = 2
|
|
err = orm.Eloquent.Create(specValue).Error
|
|
if err != nil {
|
|
logger.Error("create spec err:", logger.Field("err", err))
|
|
app.Error(c, http.StatusInternalServerError, errors.New("create spec err"), "添加规格值失败")
|
|
return
|
|
}
|
|
|
|
app.OK(c, specValue, "添加规格值成功")
|
|
return
|
|
}
|
|
|
|
func SpecValueList(c *gin.Context) {
|
|
req := &struct {
|
|
SpecId uint32 `json:"spec_id"`
|
|
}{}
|
|
if c.ShouldBindJSON(req) != nil {
|
|
logger.Errorf("para err")
|
|
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
|
return
|
|
}
|
|
var specValues []models.SpecValue
|
|
err := orm.Eloquent.Table("spec_value").Where("spec_id=?", req.SpecId).Order("sort DESC").Find(&specValues).Error
|
|
if err != nil {
|
|
logger.Error("create spec list err:", logger.Field("err", err))
|
|
app.Error(c, http.StatusInternalServerError, errors.New("create spec err"), "获取规格值列表失败")
|
|
return
|
|
}
|
|
|
|
app.OK(c, specValues, "")
|
|
return
|
|
}
|
|
|
|
func SpecValueUpdate(c *gin.Context) {
|
|
specValue := &models.SpecValue{}
|
|
if c.ShouldBindJSON(specValue) != nil {
|
|
logger.Errorf("para err")
|
|
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
|
|
return
|
|
}
|
|
err := orm.Eloquent.Save(specValue).Error
|
|
if err != nil {
|
|
logger.Errorf("goods cat update err:%#v", logger.Field("err", err))
|
|
app.Error(c, http.StatusInternalServerError, errors.New("goods cat update err"), "分类修改失败")
|
|
return
|
|
}
|
|
|
|
app.OK(c, specValue, "规格修改成功")
|
|
return
|
|
}
|