4、ginBlog 分类接口编写

增加分类的错误码

╰─➤  utils/errmsg/errmsg.go 

ERROR_CATANAME_USED  = 2001
ERROR_CATANAME_USED:   "该分类已经存在",

编写分类的model 逻辑,包涵增删改查

╰─➤  cat model/Category.go
package model

import (
        "ginBlog/utils/errmsg"
        "github.com/jinzhu/gorm"
)

type Category struct {
        ID   uint   `gorm:"primary_key;auto_increment" json:"id"`
        Name string `gorm:"type:varchar(20);not null" json:"name"`
}

// 查询分类是否存在
func CheckCate(name string) int {
        var cate Category
        db.Select("id").Where("name = ?", name).First(&cate)
        if cate.ID > 0 {
                return errmsg.ERROR_CATANAME_USED
        }
        return errmsg.SUCCESS
}

// 添加分类
func CreateCate(data *Category) int  {
        err := db.Create(&data).Error
        if err != nil {
                return errmsg.ERROR
        }
        return errmsg.SUCCESS
}

// 查询分类列表
func GetCates(pageSize int, pageNum int) []Category  {
        var cates []Category
        err = db.Limit(pageSize).Offset((pageNum - 1) * pageSize).Find(&cates).Error
        if err != nil && err != gorm.ErrRecordNotFound {
                return nil
        }
        return cates
}


// 编辑分类信息
func EditCate(id int, data *Category) int  {
        var cate Category
        var maps = make(map[string]interface{})
        maps["name"] = data.Name

        err = db.Model(&cate).Where("id = ?", id).Update(maps).Error
        if err != nil{
                return errmsg.ERROR
        }
        return errmsg.SUCCESS
}


// 删除分类
func DeleteCate(id int) int {
        var cate Category
        err = db.Where("id = ?", id).Delete(&cate).Error
        if err != nil {
                return errmsg.ERROR
        }
        return errmsg.SUCCESS
}

增加分类路由操作

╰─➤  cat api/v1/category.go 
package v1

import (
        "ginBlog/model"
        "ginBlog/utils/errmsg"
        "github.com/gin-gonic/gin"
        "net/http"
        "strconv"
)

// 添加分类
func AddCate(c *gin.Context)  {
        var data model.Category
        _ = c.ShouldBindJSON(&data)
        code := model.CheckCate(data.Name)
        if code == errmsg.SUCCESS {
                model.CreateCate(&data)
        }
        if code == errmsg.ERROR_CATANAME_USED {
                code = errmsg.ERROR_CATANAME_USED
        }

        c.JSON(http.StatusOK, gin.H{
                "status": code,
                "data":    data,
                "message": errmsg.GetErrMsg(code),
        })
}


// 查询分类列表
func GetCates(c *gin.Context)  {
        pageSize,_ := strconv.Atoi(c.Query("pageSize"))
        pageNum,_ := strconv.Atoi(c.Query("pageNum"))
        if pageSize == 0 {
                pageSize = -1
        }
        if pageNum == 0 {
                pageNum = -1
        }

        data := model.GetCates(pageSize, pageNum)
        code := errmsg.SUCCESS

        c.JSON(http.StatusOK, gin.H{
                "status": code,
                "data": data,
                "message": errmsg.GetErrMsg(code),
        })

}

// 编辑分类
func EditCate(c *gin.Context)  {
        var data model.Category
        id,_ := strconv.Atoi(c.Param("id"))
        c.ShouldBindJSON(&data)
        code := model.CheckCate(data.Name)
        if code == errmsg.SUCCESS{
                model.EditCate(id, &data)
        }
        if code == errmsg.ERROR_CATANAME_USED {
                c.Abort()
        }

        c.JSON(http.StatusOK, gin.H{
                "status": code,
                "data": data,
                "message": errmsg.GetErrMsg(code),
        })

}


// 删除分类
func DeleteCate(c *gin.Context)  {
        id,_ := strconv.Atoi(c.Param("id"))
        code := model.DeleteCate(id)

        c.JSON(http.StatusOK, gin.H{
                "ststus":  code,
                "message": errmsg.GetErrMsg(code),
        })
}


注册路由

╰─➤  cat routers/router.go 

                 // 分类 的路由接口
                routerV1.POST("cate/add", v1.AddCate)
                routerV1.GET("cates", v1.GetCates)
                routerV1.PUT("cate/:id", v1.EditCate)
                routerV1.DELETE("cate/:id", v1.DeleteCate)

运行并验证

go run main.go

添加分类

image

查看分类列表

image

编辑分类

image

删除分类

增加分类的错误码

╰─➤  utils/errmsg/errmsg.go 

ERROR_CATANAME_USED  = 2001
ERROR_CATANAME_USED:   "该分类已经存在",

编写分类的model 逻辑,包涵增删改查

╰─➤  cat model/Category.go
package model

import (
        "ginBlog/utils/errmsg"
        "github.com/jinzhu/gorm"
)

type Category struct {
        ID   uint   `gorm:"primary_key;auto_increment" json:"id"`
        Name string `gorm:"type:varchar(20);not null" json:"name"`
}

// 查询分类是否存在
func CheckCate(name string) int {
        var cate Category
        db.Select("id").Where("name = ?", name).First(&cate)
        if cate.ID > 0 {
                return errmsg.ERROR_CATANAME_USED
        }
        return errmsg.SUCCESS
}

// 添加分类
func CreateCate(data *Category) int  {
        err := db.Create(&data).Error
        if err != nil {
                return errmsg.ERROR
        }
        return errmsg.SUCCESS
}

// 查询分类列表
func GetCates(pageSize int, pageNum int) []Category  {
        var cates []Category
        err = db.Limit(pageSize).Offset((pageNum - 1) * pageSize).Find(&cates).Error
        if err != nil && err != gorm.ErrRecordNotFound {
                return nil
        }
        return cates
}


// 编辑分类信息
func EditCate(id int, data *Category) int  {
        var cate Category
        var maps = make(map[string]interface{})
        maps["name"] = data.Name

        err = db.Model(&cate).Where("id = ?", id).Update(maps).Error
        if err != nil{
                return errmsg.ERROR
        }
        return errmsg.SUCCESS
}


// 删除分类
func DeleteCate(id int) int {
        var cate Category
        err = db.Where("id = ?", id).Delete(&cate).Error
        if err != nil {
                return errmsg.ERROR
        }
        return errmsg.SUCCESS
}

增加分类路由操作

╰─➤  cat api/v1/category.go 
package v1

import (
        "ginBlog/model"
        "ginBlog/utils/errmsg"
        "github.com/gin-gonic/gin"
        "net/http"
        "strconv"
)

// 添加分类
func AddCate(c *gin.Context)  {
        var data model.Category
        _ = c.ShouldBindJSON(&data)
        code := model.CheckCate(data.Name)
        if code == errmsg.SUCCESS {
                model.CreateCate(&data)
        }
        if code == errmsg.ERROR_CATANAME_USED {
                code = errmsg.ERROR_CATANAME_USED
        }

        c.JSON(http.StatusOK, gin.H{
                "status": code,
                "data":    data,
                "message": errmsg.GetErrMsg(code),
        })
}


// 查询分类列表
func GetCates(c *gin.Context)  {
        pageSize,_ := strconv.Atoi(c.Query("pageSize"))
        pageNum,_ := strconv.Atoi(c.Query("pageNum"))
        if pageSize == 0 {
                pageSize = -1
        }
        if pageNum == 0 {
                pageNum = -1
        }

        data := model.GetCates(pageSize, pageNum)
        code := errmsg.SUCCESS

        c.JSON(http.StatusOK, gin.H{
                "status": code,
                "data": data,
                "message": errmsg.GetErrMsg(code),
        })

}

// 编辑分类
func EditCate(c *gin.Context)  {
        var data model.Category
        id,_ := strconv.Atoi(c.Param("id"))
        c.ShouldBindJSON(&data)
        code := model.CheckCate(data.Name)
        if code == errmsg.SUCCESS{
                model.EditCate(id, &data)
        }
        if code == errmsg.ERROR_CATANAME_USED {
                c.Abort()
        }

        c.JSON(http.StatusOK, gin.H{
                "status": code,
                "data": data,
                "message": errmsg.GetErrMsg(code),
        })

}


// 删除分类
func DeleteCate(c *gin.Context)  {
        id,_ := strconv.Atoi(c.Param("id"))
        code := model.DeleteCate(id)

        c.JSON(http.StatusOK, gin.H{
                "ststus":  code,
                "message": errmsg.GetErrMsg(code),
        })
}


注册路由

╰─➤  cat routers/router.go 

                 // 分类 的路由接口
                routerV1.POST("cate/add", v1.AddCate)
                routerV1.GET("cates", v1.GetCates)
                routerV1.PUT("cate/:id", v1.EditCate)
                routerV1.DELETE("cate/:id", v1.DeleteCate)

运行并验证

go run main.go

添加分类

image

查看分类列表

image

编辑分类

image

删除分类

imageimage

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值