Skip to content

Commit

Permalink
[U] 分类
Browse files Browse the repository at this point in the history
  • Loading branch information
zxysilent committed Jul 24, 2021
1 parent ba8becd commit 872e5c8
Show file tree
Hide file tree
Showing 20 changed files with 207 additions and 1,065 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ static/dist/*
dist/*
logs/*
docs/*
gens/*
blog
blog.*
publish*
99 changes: 65 additions & 34 deletions control/appctl/cate.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,50 @@ import (

// CateAll doc
// @Tags cate-分类
// @Summary 所有分类
// @Param token query string true "凭证jwt" default(jwt)
// @Success 200 {object} model.Reply "返回数据"
// @Summary 获取所有分类
// @Success 200 {object} model.Reply{data=[]model.Cate} "返回数据"
// @Router /api/cate/all [get]
func CateAll(ctx echo.Context) error {
mods, err := model.CateAll()
if err != nil {
return ctx.JSON(utils.ErrOpt(`未查询到分类信息`, err.Error()))
return ctx.JSON(utils.ErrOpt("未查询到分类", err.Error()))
}
return ctx.JSON(utils.Succ("succ", mods))
}

// CatePage doc
// @Tags cate-分类
// @Summary 获取分类分页
// @Param cid path int true "分类id" default(1)
// @Param pi query int true "分页数" default(1)
// @Param ps query int true "每页条数[5,30]" default(5)
// @Success 200 {object} model.Reply{data=[]model.Cate} "返回数据"
// @Router /api/cate/page [get]
func CatePage(ctx echo.Context) error {
ipt := &model.Page{}
err := ctx.Bind(ipt)
if err != nil {
return ctx.JSON(utils.ErrIpt("输入有误", err.Error()))
}
if ipt.Ps > 30 || ipt.Ps < 1 {
return ctx.JSON(utils.ErrIpt("分页大小输入错误", ipt.Ps))
}
count := model.CateCount()
if count < 1 {
return ctx.JSON(utils.ErrOpt("未查询到数据", " count < 1"))
}
mods, err := model.CatePage(ipt.Pi, ipt.Ps)
if err != nil {
return ctx.JSON(utils.ErrOpt("查询数据错误", err.Error()))
}
if len(mods) < 1 {
return ctx.JSON(utils.ErrOpt(`未查询到分类信息`, "len"))
return ctx.JSON(utils.ErrOpt("未查询到数据", "len(mods) < 1"))
}
return ctx.JSON(utils.Succ(`分类信息`, mods))
return ctx.JSON(utils.Page("succ", mods, int(count)))
}

// CatePost doc
// @Tags cate-分类
// @Tags cate-分类-分类
// @Summary 分类文章列表
// @Param cid path int true "分类id" default(1)
// @Param pi query int true "分页页数pi" default(1)
Expand Down Expand Up @@ -56,57 +83,61 @@ func CatePost(ctx echo.Context) error {
}

// CateAdd doc
// @Tags cate-分类
// @Tags cate-分类-分类
// @Summary 添加分类
// @Param body body model.Cate true "分类 struct"
// @Param token query string true "凭证jwt" default(jwt)
// @Success 200 {object} model.Reply "返回数据"
// @Router /api/cate/add [post]
// @Param token query string true "token"
// @Param body body model.Cate true "请求数据"
// @Success 200 {object} model.Reply{data=string} "返回数据"
// @Router /adm/cate/add [post]
func CateAdd(ctx echo.Context) error {
ipt := &model.Cate{}
err := ctx.Bind(ipt)
if err != nil {
return ctx.JSON(utils.ErrIpt(`数据输入错误,请重试`, err.Error()))
return ctx.JSON(utils.ErrIpt("输入有误", err.Error()))
}
if !model.CateAdd(ipt) {
return ctx.JSON(utils.Fail(`添加分类失败,请重试`))
err = model.CateAdd(ipt)
if err != nil {
return ctx.JSON(utils.Fail("添加失败", err.Error()))
}
return ctx.JSON(utils.Succ(`添加分类成功`))
return ctx.JSON(utils.Succ("succ"))
}

// CateEdit doc
// @Tags cate-分类
// @Summary 修改分类
// @Param body body model.Cate true "分类 struct"
// @Param token query string true "凭证jwt" default(jwt)
// @Success 200 {object} model.Reply "返回数据"
// @Router /api/cate/edit [post]
// @Param token query string true "token"
// @Param body body model.Cate true "请求数据"
// @Success 200 {object} model.Reply{data=string} "返回数据"
// @Router /adm/cate/edit [post]
func CateEdit(ctx echo.Context) error {
ipt := &model.Cate{}
err := ctx.Bind(ipt)
if err != nil {
return ctx.JSON(utils.ErrIpt(`数据输入错误,请重试`, err.Error()))
return ctx.JSON(utils.ErrIpt("输入有误", err.Error()))
}
if !model.CateEdit(ipt) {
return ctx.JSON(utils.Fail(`分类修改失败`))
err = model.CateEdit(ipt)
if err != nil {
return ctx.JSON(utils.Fail("修改失败", err.Error()))
}
return ctx.JSON(utils.Succ(`分类修改成功`))
return ctx.JSON(utils.Succ("succ"))
}

// CateDrop doc
// @Tags cate-分类
// @Summary 删除分类
// @Param id path int true "id-分类" default(0)
// @Param token query string true "凭证jwt" default(jwt)
// @Success 200 {object} model.Reply "返回数据"
// @Router /api/cate/drop/{id} [get]
// @Summary 通过id删除单条分类
// @Param id query int true "id"
// @Param token query string true "token"
// @Success 200 {object} model.Reply{data=string} "返回数据"
// @Router /adm/cate/drop [post]
func CateDrop(ctx echo.Context) error {
id, err := strconv.Atoi(ctx.Param("id"))
ipt := &model.IptId{}
err := ctx.Bind(ipt)
if err != nil {
return ctx.JSON(utils.ErrIpt(`数据输入错误,请重试`, err.Error()))
return ctx.JSON(utils.ErrIpt("输入有误", err.Error()))
}
if !model.CateDrop(id) {
return ctx.JSON(utils.Fail(`分类删除失败,请重试`))
err = model.CateDrop(ipt.Id)
if err != nil {
return ctx.JSON(utils.ErrOpt("删除失败", err.Error()))
}
return ctx.JSON(utils.Succ(`分类删除成功`))
return ctx.JSON(utils.Succ("succ"))
}
2 changes: 1 addition & 1 deletion control/appctl/views.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func CatePostView(ctx echo.Context) error {
if cate == "" {
return ctx.Redirect(302, "/")
}
mod, has := model.CateName(cate)
mod, has := model.CateGet(cate)
if !has {
return ctx.Redirect(302, "/")
}
Expand Down
130 changes: 78 additions & 52 deletions model/app_cate.go
Original file line number Diff line number Diff line change
@@ -1,97 +1,123 @@
package model

import "strconv"
import (
"strconv"
)

// Cate 分类
type Cate struct {
Id int `xorm:"pk autoincr INT(11)" json:"id"`
Name string `xorm:"unique VARCHAR(255)" json:"name"`
Pid int `xorm:"default 0 INT(11)" json:"pid"`
Intro string `xorm:"VARCHAR(255)" json:"intro"`
Id int `xorm:"INT(11) PK AUTOINCR comment('主键')" json:"id"` //主键
Name string `xorm:"UNIQUE VARCHAR(255) comment('分类名')" json:"name"` //分类名
Intro string `xorm:"VARCHAR(255) comment('描述')" json:"intro"` //描述
}

// CateIds 通过id返回新闻类别信息集合
func cateIds(ids []int) map[int]*Cate {
mods := make([]Cate, 0, 6)
Db.In("id", ids).Find(&mods)
if len(mods) > 0 {
mapSet := make(map[int]*Cate, len(mods))
for idx := range mods {
mods[idx].Intro = ""
mapSet[mods[idx].Id] = &mods[idx]
}
return mapSet
}
return nil
}

//CateGet 一个分类
func CateGet(id int) (*Cate, bool) {
mod := &Cate{
Id: id,
// CateGet 单条分类
// int ==> id
// str ==> name
func CateGet(id interface{}) (*Cate, bool) {
mod := &Cate{}
switch val := id.(type) {
case int:
has, _ := Db.ID(val).Get(mod)
return mod, has
case string:
has, _ := Db.Where("Name = ?", val).Get(mod)
return mod, has
default:
return mod, false
}
has, _ := Db.Get(mod)
return mod, has
}

// CateName 通过name 查询分类
func CateName(nam string) (*Cate, bool) {
// CateGetName 通过name 查询分类
func CateGetName(name string) (*Cate, bool) {
mod := &Cate{
Name: nam,
Name: name,
}
has, _ := Db.Get(mod)
return mod, has
}

// CateAll 所有分类
func CateAll() ([]Cate, error) {
mods := make([]Cate, 0, 4)
err := Db.Asc("id").Find(&mods)
mods := make([]Cate, 0, 8)
err := Db.Find(&mods)
return mods, err
}

// CatePage 分类分页
func CatePage(pi int, ps int, cols ...string) ([]Cate, error) {
mods := make([]Cate, 0, ps)
sess := Db.NewSession()
defer sess.Close()
if len(cols) > 0 {
sess.Cols(cols...)
}
err := sess.Desc("Id").Limit(ps, (pi-1)*ps).Find(&mods)
return mods, err
}

// CateCount 分类分页总数
func CateCount() int {
mod := &Cate{}
sess := Db.NewSession()
defer sess.Close()
count, _ := sess.Count(mod)
return int(count)
}

// CateIds 通过id集合返回分类
func CateIds(ids []int) map[int]*Cate {
mods := make([]Cate, 0, len(ids))
Db.In("id", ids).Find(&mods)
mapSet := make(map[int]*Cate, len(mods))
for idx := range mods {
mapSet[mods[idx].Id] = &mods[idx]
}
return mapSet
}

// CateAdd 添加分类
func CateAdd(mod *Cate) bool {
func CateAdd(mod *Cate) error {
sess := Db.NewSession()
defer sess.Close()
sess.Begin()
affect, _ := sess.InsertOne(mod)
if affect != 1 {
if _, err := sess.InsertOne(mod); err != nil {
sess.Rollback()
return false
return err
}
sess.Commit()
return true
return nil
}

// CateEdit 修改分类
func CateEdit(mod *Cate) bool {
// CateEdit 编辑分类
func CateEdit(mod *Cate, cols ...string) error {
sess := Db.NewSession()
defer sess.Close()
sess.Begin()
affect, err := sess.ID(mod.Id).Cols("Name", "Intro").Update(mod)
if affect >= 0 && err == nil {
sess.Commit()
return true
if _, err := sess.ID(mod.Id).Cols(cols...).Update(mod); err != nil {
sess.Rollback()
return err
}
sess.Rollback()
return false
sess.Commit()
return nil
}

// CateDrop 删除分类
func CateDrop(id int) bool {
// CateDrop 删除单条分类
func CateDrop(id int) error {
sess := Db.NewSession()
defer sess.Close()
sess.Begin()
if affect, err := sess.ID(id).Delete(&Cate{}); affect > 0 && err == nil {
sess.Commit()
Db.ClearCacheBean(&Cate{}, strconv.Itoa(id))
return true
if _, err := sess.ID(id).Delete(&Cate{}); err != nil {
sess.Rollback()
return err
}
sess.Rollback()
return false
sess.Commit()
Db.ClearCacheBean(&Cate{}, strconv.Itoa(id))
return nil
}

// ------------------------------------------------------ 前台使用 ------------------------------------------------------

// CatePostCount 通过标签查询文章分页总数
// lmt 是否前台限制
func CatePostCount(cid int, lmt bool) int {
Expand Down
6 changes: 3 additions & 3 deletions model/app_tag.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ import "strconv"

// Tag 标签
type Tag struct {
Id int `xorm:"pk autoincr INT(11)" json:"id"`
Name string `xorm:" unique VARCHAR(255)" json:"name"`
Intro string `xorm:" VARCHAR(255)" json:"intro"`
Id int `xorm:"INT(11) PK AUTOINCR comment('主键')" json:"id"` //主键
Name string `xorm:"UNIQUE VARCHAR(255) comment('标签名')" json:"name"` //标签名
Intro string `xorm:"VARCHAR(255) comment('描述')" json:"intro"` //描述
}

// TagState 统计
Expand Down
2 changes: 1 addition & 1 deletion router/router_adm.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func admRouter(adm *echo.Group) {
adm.POST("/upload/file", sysctl.UploadFile) // 文件上传
adm.POST("/upload/image", sysctl.UploadImage) // 图片上传
adm.POST("/global/edit", sysctl.GlobalEdit) // 配置修改
adm.GET("/cate/drop/:id", appctl.CateDrop) // 删除分类
adm.GET("/cate/drop", appctl.CateDrop) // 删除分类
adm.POST("/cate/add", appctl.CateAdd) // 添加分类
adm.POST("/cate/edit", appctl.CateEdit) // 编辑分类
adm.POST("/post/opts", appctl.PostOpts) // 文章/页面-编辑/添加
Expand Down
3 changes: 2 additions & 1 deletion router/router_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ func apiRouter(api *echo.Group) {
api.GET("/global/get", sysctl.GlobalGet) // 全局配置
api.POST("/auth/login", sysctl.AuthLogin) // 登陆
api.POST("/auth/logout", sysctl.UserLogout) // 注销
api.GET("/cate/all", appctl.CateAll) // 分类列表
api.GET("/cate/all", appctl.CateAll) // 所有分类
api.GET("/cate/page", appctl.CatePage) // 分类分页
api.GET("/post/tag/get/:id", appctl.PostTagGet) // 通过分类查询文章
api.GET("/post/get/:id", appctl.PostGet) // 文章
api.GET("/cate/post/:cid", appctl.CatePost) // 通过分类查询文章
Expand Down
Loading

0 comments on commit 872e5c8

Please sign in to comment.