[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作

一.商品分类的增、删、改、查,以及商品分类的自关联

1.界面展示以及操作说明

列表

商品分类列表展示说明:
(1).增加商品分类按钮
(2).商品分类,以及子分类相关数据列表展示
(3).排序,状态,修改,删除操作处理
[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第1张图片

新增

[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第2张图片

编辑

[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第3张图片

删除

[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第4张图片

修改状态,排序

[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第5张图片

2.创建商品分类模型

在controllers/admin下创建GoodsCate.go商品分类控制器
package models

//商品分类

type GoodsCate struct {
    Id             int
    Title          string  // 标题
    CateImg        string  // 分类图片
    Link           string  // 跳转地址
    Template       string  // 加载的模板: 为空的话加载默认模板, 不为空的话加载自定义模板
    Pid            int        // 上级id: 为0的话则是顶级分类
    SubTitle       string    // SEO标题
    Keywords       string    // SEO关键字
    Description    string    // SEO描述
    Sort           int    // 排序
    Status         int    // 状态: 1 显示, 0 隐藏
    AddTime        int    // 添加时间
    GoodsCateItems []GoodsCate `gorm:"foreignKey:pid;references:Id"` // 关联自身,下级分类
}

func (GoodsCate) TableName() string {
    return "goods_cate"
}

3.创建商品分类色控制器

在controllers/admin下创建GoodsCateController.go商品分类控制器
上传图片操作代码见: [golang gin框架] 15.Gin 商城项目-封装上传图片方法,轮播图的增删改查以及异步修改状态,数量
package admin

//商品分类

import (
    "github.com/gin-gonic/gin"
    "goshop/models"
    "net/http"
    "strings"
)

type GoodsCateController struct {
    BaseController
}

func (con GoodsCateController) Index(c *gin.Context) {
    //定义一个切片
    goodsCateList := []models.GoodsCate{}
    //获取分类列表以及下级分类
    models.DB.Where("pid = ?", 0).Preload("GoodsCateItems").Find(&goodsCateList)
    c.HTML(http.StatusOK, "admin/goodsCate/index.html", gin.H{
        "goodsCateList": goodsCateList,
    })
}

//新增
func (con GoodsCateController) Add(c *gin.Context) {
    //获取商品分类顶级分类
    goodsCateList := []models.GoodsCate{}
    models.DB.Where("pid = ?", 0).Find(&goodsCateList)

    c.HTML(http.StatusOK, "admin/goodsCate/add.html", gin.H{
        "goodsCateList": goodsCateList,
    })
}

//新增:提交
func (con GoodsCateController) DoAdd(c *gin.Context) {
    //获取请求的表单数据
    title := strings.Trim(c.PostForm("title"), " ")
    link := strings.Trim(c.PostForm("link"), " ")
    template := strings.Trim(c.PostForm("template"), " ")
    pid, err1 := models.Int(c.PostForm("pid"))
    subTitle := strings.Trim(c.PostForm("subTitle"), " ")
    keywords := strings.Trim(c.PostForm("keywords"), " ")
    description := strings.Trim(c.PostForm("description"), " ")
    sort, err2 := models.Int(c.PostForm("sort"))
    status, err3 := models.Int(c.PostForm("status"))

    if err1 != nil || err3 != nil {
        con.Error(c, "非法请求", "/admin/goodsCate/add")
        return
    }
    if err2 != nil {
        con.Error(c, "请输入正确的排序值", "/admin/goodsCate/add")
        return
    }

    //文件上传操作
    imgSrc, err := models.UploadImg(c, "cate_img")
    if err != nil {
        con.Error(c, "图片上传失败", "/admin/goodsCate/add")
        return
    }
    //实例化GoodsCate模型
    goodsCate := models.GoodsCate{
        Title:       title,
        Link:        link,
        Sort:        sort,
        Status:      status,
        CateImg:     imgSrc,
        Template:    template,
        Pid:         pid,
        SubTitle:    subTitle,
        Keywords:    keywords,
        Description: description,
        AddTime:     int(models.GetUnix()),
    }
    err = models.DB.Create(&goodsCate).Error
    if err != nil {
        con.Error(c, "增加商品失败", "/admin/goodsCate/add")
        return
    }
    con.Success(c, "增加商品成功", "/admin/goodsCate")
}

//编辑
func (con GoodsCateController) Edit(c *gin.Context) {
    //获取角色id
    id, err := models.Int(c.Query("id"))
    if err != nil {
        con.Error(c, "传入数据错误", "/admin/goodsCate")
        return
    }
    //获取商品分类顶级分类
    goodsCateList := []models.GoodsCate{}
    models.DB.Where("pid = ?", 0).Find(&goodsCateList)

    //获取商品
    goodsCate := models.GoodsCate{Id: id}
    models.DB.Find(&goodsCate)
    c.HTML(http.StatusOK, "admin/goodsCate/edit.html", gin.H{
        "goodsCate":     goodsCate,
        "goodsCateList": goodsCateList,
    })
}

//编辑:提交
func (con GoodsCateController) DoEdit(c *gin.Context) {
    //获取提交的表单数据
    id, err := models.Int(c.PostForm("id"))
    if err != nil {
        con.Error(c, "传入数据错误", "/admin/goodsCate")
        return
    }
    //获取请求的表单数据
    title := strings.Trim(c.PostForm("title"), " ")
    link := strings.Trim(c.PostForm("link"), " ")
    template := strings.Trim(c.PostForm("template"), " ")
    pid, err1 := models.Int(c.PostForm("pid"))
    subTitle := strings.Trim(c.PostForm("subTitle"), " ")
    keywords := strings.Trim(c.PostForm("keywords"), " ")
    description := strings.Trim(c.PostForm("description"), " ")
    sort, err2 := models.Int(c.PostForm("sort"))
    status, err3 := models.Int(c.PostForm("status"))

    if err1 != nil || err3 != nil {
        con.Error(c, "非法请求", "/admin/goodsCate/add")
        return
    }
    if err2 != nil {
        con.Error(c, "请输入正确的排序值", "/admin/goodsCate/add")
        return
    }

    //文件上传操作
    imgSrc, err := models.UploadImg(c, "cate_img")
    if err != nil {
        con.Error(c, "图片上传失败", "/admin/goodsCate/add")
        return
    }
    //查询分类是否存在
    goodsCate := models.GoodsCate{Id: id}
    models.DB.Find(&goodsCate)

    if imgSrc != "" {
        goodsCate.CateImg = imgSrc
    }
    goodsCate.Title = title
    goodsCate.Link = link
    goodsCate.Sort = sort
    goodsCate.Status = status
    goodsCate.Template = template
    goodsCate.Pid = pid
    goodsCate.SubTitle = subTitle
    goodsCate.Keywords = keywords
    goodsCate.Description = description
    err = models.DB.Save(&goodsCate).Error

    if err != nil {
        con.Error(c, "修改数据失败", "/admin/goodsCate/edit?id="+models.String(id))
        return
    }
    con.Success(c, "修改数据成功", "/admin/goodsCate")
}

//删除
func (con GoodsCateController) Delete(c *gin.Context) {
    //获取提交的表单数据
    id, err := models.Int(c.Query("id"))
    if err != nil {
        con.Error(c, "传入数据错误", "/admin/goodsCate")
        return
    }

    //查询数据是否存在
    goodsCate := models.GoodsCate{Id: id}
    if goodsCate.Pid == 0 { // 顶级分类
        goodsCateList := []models.GoodsCate{}
        models.DB.Where("pid = ? ", goodsCate.Id).Find(&goodsCateList)
        if len(goodsCateList) > 0 {
            con.Error(c, "当前分类下存在子分类,请先删除子分类后再来删除这个数据", "/admin/goodsCate")
            return
        }
    }

    err = models.DB.Delete(&goodsCate).Error
    if err != nil {
        con.Error(c, "删除数据失败", "/admin/goodsCate")
        return
    }
    con.Success(c, "删除数据成功", "/admin/goodsCate")
}

4.创建商品分类html以及js

在templates/admin/goodsCate下创建商品分类相关html
修改状态以及排序操作代码见: [golang gin框架] 15.Gin 商城项目-封装上传图片方法,轮播图的增删改查以及异步修改状态,数量

index.html

{{ define "admin/goodsCate/index.html" }}
{{ template "admin/public/page_header.html" .}}

{{range $key,$value := .goodsCateList}} {{range $k,$v := $value.GoodsCateItems}} {{end}} {{end}}
分类名称 分类图片 排序 状态 操作
{{$value.Title}} {{$value.Sort}} {{if eq $value.Status 1}} {{else}} {{end}}   修改   删除
  ----{{$v.Title}} {{$v.Sort}} {{if eq $v.Status 1}} {{else}} {{end}}   修改   删除
{{end}}

add.html

{{ define "admin/goodsCate/add.html" }}
{{ template "admin/public/page_header.html" .}}
增加分类
  • 分类名称:
  • 上级分类:
  • 分类图片:
  • 跳转地址:
  • 分类模板: 空表示默认模板
  • Seo标题:
  • Seo关键词:
  • Seo描述:
  • 排  序:
  • 状  态:  

{{end}}

edit.html

{{ define "admin/goodsCate/edit.html" }}
{{ template "admin/public/page_header.html" .}}
修改分类
  • 分类名称:
  • 上级分类: {{$pid := .goodsCate.Pid}}
  • 分类图片:
  • {{if ne .goodsCate.CateImg ""}} {{end}}
  • 跳转地址:
  • 分类模板: 空表示默认模板
  • Seo标题:
  • Seo关键词:
  • Seo描述:
  • 排  序:
  • 状  态:  

{{end}}

5.配置路由

在routes/adminRouters.go下增加商品分类路由
//商品分类路由
adminRouters.GET("/goodsCate", admin.GoodsCateController{}.Index)
adminRouters.GET("/goodsCate/add", admin.GoodsCateController{}.Add)
adminRouters.POST("/goodsCate/doAdd", admin.GoodsCateController{}.DoAdd)
adminRouters.GET("/goodsCate/edit", admin.GoodsCateController{}.Edit)
adminRouters.POST("/goodsCate/doEdit", admin.GoodsCateController{}.DoEdit)
adminRouters.GET("/goodsCate/delete", admin.GoodsCateController{}.Delete)

二.商品类型的增、删、改、查

1.界面展示以及操作说明

列表

商品类型列表展示说明:
(1).增加商品类型按钮
(2).商品类型,相关数据列表展示
(3).状态,修改,删除,类型属性操作处理
[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第6张图片

新增

[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第7张图片

编辑

[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第8张图片

删除

[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第9张图片

修改状态

[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第10张图片

2.创建商品类型模型

在controllers/admin下创建GoodsType.go商品类型控制器
package models

//商品类型

type GoodsType struct {
    Id          int
    Title       string  // 类型名称
    Description string  // 介绍
    Status      int  // 状态
    AddTime     int  // 添加时间
}

func (GoodsType) TableName() string {
    return "goods_type"
}

3.创建商品类型控制器

在controllers/admin下创建GoodsTypeController.go商品类型控制器
package admin

import (
    "goshop/models"
    "net/http"
    "strings"

    "github.com/gin-gonic/gin"
)

type GoodsTypeController struct {
    BaseController
}

func (con GoodsTypeController) Index(c *gin.Context) {
    goodsTypeList := []models.GoodsType{}
    models.DB.Find(&goodsTypeList)
    c.HTML(http.StatusOK, "admin/goodsType/index.html", gin.H{
        "goodsTypeList": goodsTypeList,
    })

}
func (con GoodsTypeController) Add(c *gin.Context) {
    c.HTML(http.StatusOK, "admin/goodsType/add.html", gin.H{})
}

func (con GoodsTypeController) DoAdd(c *gin.Context) {

    title := strings.Trim(c.PostForm("title"), " ")
    description := strings.Trim(c.PostForm("description"), " ")
    status, err1 := models.Int(c.PostForm("status"))

    if err1 != nil {
        con.Error(c, "传入的参数不正确", "/admin/goodsType/add")
        return
    }

    if title == "" {
        con.Error(c, "标题不能为空", "/admin/goodsType/add")
        return
    }
    goodsType := models.GoodsType{
        Title:       title,
        Description: description,
        Status:      status,
        AddTime:     int(models.GetUnix()),
    }

    err := models.DB.Create(&goodsType).Error
    if err != nil {
        con.Error(c, "增加商品类型失败 请重试", "/admin/goodsType/add")
    } else {
        con.Success(c, "增加商品类型成功", "/admin/goodsType")
    }

}
func (con GoodsTypeController) Edit(c *gin.Context) {

    id, err := models.Int(c.Query("id"))
    if err != nil {
        con.Error(c, "传入数据错误", "/admin/goodsType")
    } else {
        goodsType := models.GoodsType{Id: id}
        models.DB.Find(&goodsType)
        c.HTML(http.StatusOK, "admin/goodsType/edit.html", gin.H{
            "goodsType": goodsType,
        })
    }

}
func (con GoodsTypeController) DoEdit(c *gin.Context) {

    id, err1 := models.Int(c.PostForm("id"))
    title := strings.Trim(c.PostForm("title"), " ")
    description := strings.Trim(c.PostForm("description"), " ")
    status, err2 := models.Int(c.PostForm("status"))
    if err1 != nil || err2 != nil {
        con.Error(c, "传入数据错误", "/admin/goodsType")
        return
    }

    if title == "" {
        con.Error(c, "商品类型的标题不能为空", "/admin/goodsType/edit?id="+models.String(id))
    }
    goodsType := models.GoodsType{Id: id}
    models.DB.Find(&goodsType)
    goodsType.Title = title
    goodsType.Description = description
    goodsType.Status = status

    err3 := models.DB.Save(&goodsType).Error
    if err3 != nil {
        con.Error(c, "修改数据失败", "/admin/goodsType/edit?id="+models.String(id))
    } else {
        con.Success(c, "修改数据成功", "/admin/goodsType")
    }
}
func (con GoodsTypeController) Delete(c *gin.Context) {
    id, err := models.Int(c.Query("id"))
    if err != nil {
        con.Error(c, "传入数据错误", "/admin/goodsType")
    } else {
        goodsType := models.GoodsType{Id: id}
        models.DB.Delete(&goodsType)
        con.Success(c, "删除数据成功", "/admin/goodsType")
    }
}

4.创建商品类型html以及js

在templates/admin/goodsType下创建商品类型相关html
修改状态操作代码见: [golang gin框架] 15.Gin 商城项目-封装上传图片方法,轮播图的增删改查以及异步修改状态,数量

index.html

{{ define "admin/goodsType/index.html" }}
{{ template "admin/public/page_header.html" .}}
{{range $key,$value := .goodsTypeList}} {{end}}
商品类型名称 商品类型描述 状态 操作
{{$value.Title}} {{$value.Description}} {{if eq $value.Status 1}} {{else}} {{end}} 类型属性 修改   删除
{{end}}

add.html

{{ define "admin/goodsType/add.html" }}
{{ template "admin/public/page_header.html" .}}
增加商品类型
  • 类型名称:
  • 类型描述:
  • 状  态:  

{{end}}

edit.html

{{ define "admin/goodsType/edit.html" }}
{{ template "admin/public/page_header.html" .}}
修改商品类型
  • 类型名称:
  • 类型描述:
  • 状  态:  

{{end}}

5.配置路由

在routes/adminRouters.go下配置商品类型路由
//商品类型路由
adminRouters.GET("/goodsType", admin.GoodsTypeController{}.Index)
adminRouters.GET("/goodsType/add", admin.GoodsTypeController{}.Add)
adminRouters.POST("/goodsType/doAdd", admin.GoodsTypeController{}.DoAdd)
adminRouters.GET("/goodsType/edit", admin.GoodsTypeController{}.Edit)
adminRouters.POST("/goodsType/doEdit", admin.GoodsTypeController{}.DoEdit)
adminRouters.GET("/goodsType/delete", admin.GoodsTypeController{}.Delete)

三.商品类型属性的增、删、改、查

1.界面展示以及操作说明

列表

点击商品类型列表中,对应商品类型的类型属性,跳转到商品类型属性列表页面,以电脑类型为例,展示说明:
(1).增加商品类型属性按钮
(2).商品类型属性,相关数据列表展示
(3).排序,状态,修改,删除,操作处理
[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第11张图片

新增

选择商品类型,以及 录入方式 (可以自行增加很多录入方式,具体根据具体业务分析),进行添加
[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第12张图片

编辑

[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第13张图片
[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第14张图片

删除

[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第15张图片

修改状态

[golang gin框架] 17.Gin 商城项目-商品分类模块, 商品类型模块,商品类型属性模块功能操作_第16张图片

2.创建商品类型属性模型

在controllers/admin下创建GoodsTypeAttribute.go商品类型属性控制器
package models

// 商品类型属性设置

type GoodsTypeAttribute struct {
    Id        int `json:"id"`  // HTML页面使用名称
    CateId    int `json:"cate_id"`   //商品类型id:商品类型表goods_type.id
    Title     string `json:"title"`   // 属性名称
    AttrType  int `json:"attr_type"`   //属性录入方式: 1 单行文本框, 2 多行文本框, 3 从下面列表中选择(一行代表一个可选值)
    AttrValue string `json:"attr_value"`   //可选值列表
    Status    int `json:"status"`   // 状态
    Sort      int `json:"sort"`   //排序
    AddTime   int `json:"add_time"`   //增加时间
}

func (GoodsTypeAttribute) TableName() string {
    return "goods_type_attribute"
}

3.创建商品类型属性控制器

在controllers/admin下创建GoodsTypeAttributeController.go商品类型属性控制器
package admin

import (
    "goshop/models"
    "net/http"
    "strings"
    "github.com/gin-gonic/gin"
)

type GoodsTypeAttributeController struct {
    BaseController
}

func (con GoodsTypeAttributeController) Index(c *gin.Context) {
    cateId, err := models.Int(c.Query("id"))
    if err != nil {
        con.Error(c, "传入的参数不正确", "/admin/goodsType")
        return
    }
    //获取商品类型属性
    goodsTypeAttributeList := []models.GoodsTypeAttribute{}
    models.DB.Where("cate_id=?", cateId).Find(&goodsTypeAttributeList)

    //获取商品类型属性对应的类型
    goodsType := models.GoodsType{}
    models.DB.Where("id=?", cateId).Find(&goodsType)

    c.HTML(http.StatusOK, "admin/goodsTypeAttribute/index.html", gin.H{
        "cateId":                 cateId,
        "goodsTypeAttributeList": goodsTypeAttributeList,
        "goodsType":              goodsType,
    })

}
func (con GoodsTypeAttributeController) Add(c *gin.Context) {
    //获取当前商品类型属性对应的类型id
    cateId, err := models.Int(c.Query("cate_id"))
    if err != nil {
        con.Error(c, "传入的参数不正确", "/admin/goodsType")
        return
    }

    //获取所有的商品类型
    goodsTypeList := []models.GoodsType{}
    models.DB.Find(&goodsTypeList)
    c.HTML(http.StatusOK, "admin/goodsTypeAttribute/add.html", gin.H{
        "goodsTypeList": goodsTypeList,
        "cateId":        cateId,
    })
}

func (con GoodsTypeAttributeController) DoAdd(c *gin.Context) {
    title := strings.Trim(c.PostForm("title"), " ")
    cateId, err1 := models.Int(c.PostForm("cate_id"))
    attrType, err2 := models.Int(c.PostForm("attr_type"))
    attrValue := c.PostForm("attr_value")
    sort, err3 := models.Int(c.PostForm("sort"))

    if err1 != nil || err2 != nil {
        con.Error(c, "非法请求", "/admin/goodsType")
        return
    }
    if title == "" {
        con.Error(c, "商品类型属性名称不能为空", "/admin/goodsTypeAttribute/add?cate_id="+models.String(cateId))
        return
    }

    if err3 != nil {
        con.Error(c, "排序值不对", "/admin/goodsTypeAttribute/add?cate_id="+models.String(cateId))
        return
    }

    goodsTypeAttr := models.GoodsTypeAttribute{
        Title:     title,
        CateId:    cateId,
        AttrType:  attrType,
        AttrValue: attrValue,
        Status:    1,
        Sort:      sort,
        AddTime:   int(models.GetUnix()),
    }
    err := models.DB.Create(&goodsTypeAttr).Error
    if err != nil {
        con.Error(c, "增加商品类型属性失败 请重试", "/admin/goodsTypeAttribute/add?cate_id="+models.String(cateId))
        return
    }
    con.Success(c, "增加商品类型属性成功", "/admin/goodsTypeAttribute?id="+models.String(cateId))
}

func (con GoodsTypeAttributeController) Edit(c *gin.Context) {
    //获取当前要修改数据的id
    id, err := models.Int(c.Query("id"))
    if err != nil {
        con.Error(c, "传入的参数不正确", "/admin/goodsType")
        return
    }
    //获取当前id对应的商品类型属性
    goodsTypeAttribute := models.GoodsTypeAttribute{Id: id}
    models.DB.Find(&goodsTypeAttribute)

    //获取所有的商品类型
    goodsTypeList := []models.GoodsType{}
    models.DB.Find(&goodsTypeList)

    c.HTML(http.StatusOK, "admin/goodsTypeAttribute/edit.html", gin.H{
        "goodsTypeAttribute": goodsTypeAttribute,
        "goodsTypeList":      goodsTypeList,
    })
}

func (con GoodsTypeAttributeController) DoEdit(c *gin.Context) {
    id, err1 := models.Int(c.PostForm("id"))
    title := strings.Trim(c.PostForm("title"), " ")
    cateId, err2 := models.Int(c.PostForm("cate_id"))
    attrType, err3 := models.Int(c.PostForm("attr_type"))
    attrValue := c.PostForm("attr_value")
    sort, err4 := models.Int(c.PostForm("sort"))

    if err1 != nil || err2 != nil || err3 != nil {
        con.Error(c, "非法请求", "/admin/goodsType")
        return
    }
    if title == "" {
        con.Error(c, "商品类型属性名称不能为空", "/admin/goodsTypeAttribute/edit?id="+models.String(id))
        return
    }
    if err4 != nil {
        con.Error(c, "排序值不对", "/admin/goodsTypeAttribute/edit?id="+models.String(id))
        return
    }

    goodsTypeAttr := models.GoodsTypeAttribute{Id: id}
    models.DB.Find(&goodsTypeAttr)
    goodsTypeAttr.Title = title
    goodsTypeAttr.CateId = cateId
    goodsTypeAttr.AttrType = attrType
    goodsTypeAttr.AttrValue = attrValue
    goodsTypeAttr.Sort = sort
    err := models.DB.Save(&goodsTypeAttr).Error
    if err != nil {
        con.Error(c, "修改数据失败", "/admin/goodsTypeAttribute/edit?id="+models.String(id))
        return
    }
    con.Success(c, "需改数据成功", "/admin/goodsTypeAttribute?id="+models.String(cateId))
}

func (con GoodsTypeAttributeController) Delete(c *gin.Context) {
    id, err1 := models.Int(c.Query("id"))
    cateId, err2 := models.Int(c.Query("cate_id"))
    if err1 != nil || err2 != nil {
        con.Error(c, "传入参数错误", "/admin/goodsType")
        return
    }
    goodsTypeAttr := models.GoodsTypeAttribute{Id: id}
    models.DB.Delete(&goodsTypeAttr)
    con.Success(c, "删除数据成功", "/admin/goodsTypeAttribute?id="+models.String(cateId))
}

4.创建商品类型属性html以及js

在templates/admin/goodsTypeAttribute下创建商品类型属性相关html
修改状态以及排序操作代码见: [golang gin框架] 15.Gin 商城项目-封装上传图片方法,轮播图的增删改查以及异步修改状态,数量

index.html

{{ define "admin/goodsTypeAttribute/index.html" }}
{{ template "admin/public/page_header.html" .}}

{{.goodsType.Title}} 增加类型属性
{{$cateTitle := .goodsType.Title}} {{range $key,$value := .goodsTypeAttributeList}} {{end}}
属性名称 商品类型 属性值的录入方式 可选值列表 增加时间 排序 状态 操作
{{$value.Title}} {{$cateTitle}} {{if eq $value.AttrType 1}} 单行文本框 {{else if eq $value.AttrType 2}} 多行文本框 {{else if eq $value.AttrType 3}} select下拉框 {{end}} {{$value.AttrValue}} {{UnixToTime $value.AddTime}} {{$value.Sort}} {{if eq $value.Status 1}} {{else}} {{end}} 修改   删除
{{end}}

add.html

{{ define "admin/goodsTypeAttribute/add.html" }}
{{ template "admin/public/page_header.html" .}}

增加商品类型属性
  •  属性名称:
  •  所属类型: {{$cateId := .cateId}}
  •  录入方式:      
  • 可选值列表:
  • 排  序:

{{end}}

edit.html

{{ define "admin/goodsTypeAttribute/edit.html" }}
{{ template "admin/public/page_header.html" .}}

修改商品类型属性
  •  属性名称:
  •  所属类型: {{$cateId := .goodsTypeAttribute.CateId}}
  •  录入方式:      
  • 可选值列表:
  • 排  序:

{{end}}

5.配置路由

在routes/adminRouters.go下配置商品类型路由
//商品类型属性路由
        adminRouters.GET("/goodsTypeAttribute", admin.GoodsTypeAttributeController{}.Index)
        adminRouters.GET("/goodsTypeAttribute/add", admin.GoodsTypeAttributeController{}.Add)
        adminRouters.POST("/goodsTypeAttribute/doAdd", admin.GoodsTypeAttributeController{}.DoAdd)
        adminRouters.GET("/goodsTypeAttribute/edit", admin.GoodsTypeAttributeController{}.Edit)
        adminRouters.POST("/goodsTypeAttribute/doEdit", admin.GoodsTypeAttributeController{}.DoEdit)
        adminRouters.GET("/goodsTypeAttribute/delete", admin.GoodsTypeAttributeController{}.Delete)

[上一节][golang gin框架] 16.Gin 商城项目-商品模块数据表ER图关系分析

[下一节][golang gin框架] 18.GoLang 图像处理,剪切图片,生成图片二维码

你可能感兴趣的:(golang,#,gin框架开发,商品分类模块,商品类型模块,商品类型属性模块)