栏目完善

This commit is contained in:
yxh
2020-03-04 18:16:40 +08:00
parent d3d2326d8a
commit 1e6ade0a0f
5 changed files with 177 additions and 5 deletions
+90 -2
View File
@@ -4,9 +4,12 @@ import (
"gfast/app/model/admin/cms_category"
"gfast/app/service/admin/cms_service"
"gfast/app/service/admin/dict_service"
"gfast/app/service/cache_service"
"gfast/library/response"
"gfast/library/utils"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/net/ghttp"
"github.com/gogf/gf/util/gconv"
"github.com/gogf/gf/util/gvalid"
)
@@ -14,7 +17,31 @@ import (
type CmsMenu struct{}
func (c *CmsMenu) MenuList(r *ghttp.Request) {
response.SusJson(true, r, "栏目列表")
var req *cms_category.ReqSearchList
//获取参数
if err := r.Parse(&req); err != nil {
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
}
var menus []*cms_category.Entity
var err error
var list g.List
if req != nil && req.Name != "" {
//按栏目名搜索
menus, err = cms_service.GetMenuListSearch(req)
list = gconv.Maps(menus)
} else {
//获取所有栏目
menus, err = cms_service.GetMenuList()
if err != nil {
response.FailJson(true, r, err.Error())
}
list = gconv.Maps(menus)
list = utils.PushSonToParent(list, 0, "parent_id")
}
res := g.Map{
"list": list,
}
response.SusJson(true, r, "ok", res)
}
//添加栏目分类
@@ -29,6 +56,7 @@ func (c *CmsMenu) MenuAdd(r *ghttp.Request) {
if err != nil {
response.FailJson(true, r, err.Error())
}
cache_service.New().RemoveByTag(cache_service.AdminCmsTag)
response.SusJson(true, r, "栏目添加成功")
}
//获取上级分类(频道)
@@ -36,13 +64,73 @@ func (c *CmsMenu) MenuAdd(r *ghttp.Request) {
if err != nil {
response.FailJson(true, r, err.Error())
}
list := gconv.Maps(menus)
list = utils.PushSonToParent(list, 0, "parent_id")
typeChecker, err := dict_service.GetDictWithDataByType("cms_category_type")
if err != nil {
response.FailJson(true, r, err.Error())
}
res := g.Map{
"menus": menus,
"menus": list,
"typeChecker": typeChecker,
}
response.SusJson(true, r, "添加栏目", res)
}
//修改栏目
func (c *CmsMenu) MenuEdit(r *ghttp.Request) {
if r.Method == "POST" {
var req *cms_category.ReqEdit
//获取参数
if err := r.Parse(&req); err != nil {
response.FailJson(true, r, err.(*gvalid.Error).FirstString())
}
_, err := cms_service.EditSave(req)
if err != nil {
response.FailJson(true, r, err.Error())
}
cache_service.New().RemoveByTag(cache_service.AdminCmsTag)
response.SusJson(true, r, "栏目修改成功")
}
//获取栏目数据
id := r.GetInt("id")
menuInfo, err := cms_service.GetMenuInfoById(id)
if err != nil {
response.FailJson(true, r, err.Error())
}
if menuInfo == nil {
response.FailJson(true, r, "参数错误")
}
//获取上级分类(频道)
menus, err := cms_service.GetMenuListChannel()
if err != nil {
response.FailJson(true, r, err.Error())
}
list := gconv.Maps(menus)
list = utils.PushSonToParent(list, 0, "parent_id")
typeChecker, err := dict_service.GetDictWithDataByType("cms_category_type")
if err != nil {
response.FailJson(true, r, err.Error())
}
res := g.Map{
"menuInfo": menuInfo,
"menus": list,
"typeChecker": typeChecker,
}
response.SusJson(true, r, "修改栏目", res)
}
//栏目排序
func (c *CmsMenu) MenuSort(r *ghttp.Request) {
sorts := r.Get("sorts")
s := gconv.Map(sorts)
if s == nil {
response.FailJson(true, r, "排序失败")
}
for k, v := range s {
cms_category.Model.Where("id=?", k).Data("list_order", v).Update()
}
cache_service.New().RemoveByTag(cache_service.AdminCmsTag)
response.SusJson(true, r, "排序成功")
}
@@ -8,6 +8,11 @@ const (
SingleCateType = 4 //单页栏目
)
//列表搜索参数
type ReqSearchList struct {
Name string `p:"name"`
}
//添加请求参数
type ReqAdd struct {
ParentId uint64 `p:"parent_id" v:"integer|min:0#父级ID不能为空|父级ID必须为大于等于0的整数"`
@@ -23,3 +28,9 @@ type ReqAdd struct {
CateAddress string `p:"cate_address"`
CateContent string `p:"content"`
}
//修改请求参数
type ReqEdit struct {
Id int `p:"id" v:"required|min:1#栏目id不能为空|栏目id参数错误"`
ReqAdd
}
+71 -1
View File
@@ -5,6 +5,8 @@ import (
"gfast/app/service/cache_service"
"github.com/gogf/gf/errors/gerror"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/text/gstr"
"github.com/gogf/gf/util/gconv"
)
//获取频道列表
@@ -22,7 +24,7 @@ func GetMenuListChannel() (list []*cms_category.Entity, err error) {
return
}
//获取菜单列表
//获取所有菜单列表
func GetMenuList() (list []*cms_category.Entity, err error) {
cache := cache_service.New()
//从缓存获取数据
@@ -68,3 +70,71 @@ func AddSave(req *cms_category.ReqAdd) (id int64, err error) {
}
return
}
//修改栏目操作
func EditSave(req *cms_category.ReqEdit) (id int64, err error) {
entity, err := GetMenuInfoById(req.Id)
if err != nil {
return
}
if entity == nil {
err = gerror.New("栏目信息不存在")
return
}
entity.Id = gconv.Uint64(req.Id)
entity.ParentId = req.ParentId
entity.CateType = req.CateType
entity.Status = req.Status
entity.Name = req.Name
entity.Description = req.Description
entity.SeoTitle = req.InputSeoTitle
entity.SeoKeywords = req.InputSeoKeywords
entity.SeoDescription = req.InputSeoDescription
entity.CateAddress = req.CateAddress
entity.CateContent = req.CateContent
res, err := entity.Update()
if err != nil {
g.Log().Error(err)
err = gerror.New("修改保存失败")
return
}
id, err = res.RowsAffected()
if err != nil {
g.Log().Error(err)
err = gerror.New("修改保存失败")
return
}
return
}
//获取搜索栏目结果
func GetMenuListSearch(req *cms_category.ReqSearchList) (menus []*cms_category.Entity, err error) {
menus, err = GetMenuList()
if req != nil {
searchMenus := make([]*cms_category.Entity, 0, len(menus))
if req.Name != "" {
for _, entity := range menus {
if gstr.Contains(entity.Name, req.Name) {
searchMenus = append(searchMenus, entity)
}
}
}
menus = searchMenus
}
return
}
//根据栏目ID获取栏目信息
func GetMenuInfoById(id int) (menu *cms_category.Entity, err error) {
menus, err := GetMenuList()
if err != nil {
return
}
for _, entity := range menus {
if entity.Id == gconv.Uint64(id) {
menu = entity
break
}
}
return
}
+5 -1
View File
@@ -81,10 +81,14 @@ func EditSave(req *sys_dict_type.EditReq, userId int) (int64, error) {
func SelectListByPage(req *sys_dict_type.SelectPageReq) (total, page int, list []*sys_dict_type.Entity, err error) {
model := sys_dict_type.Model
if req != nil {
if req.DictType != "" {
if req.DictName != "" {
model = model.Where("dict_name like ?", "%"+req.DictName+"%")
}
if req.DictType != "" {
model = model.Where("dict_type like ?", "%"+req.DictType+"%")
}
if req.Status != "" {
model = model.Where("status = ", gconv.Int(req.Status))
}
-1
View File
@@ -4,7 +4,6 @@ require (
github.com/casbin/casbin/v2 v2.1.2
github.com/goflyfox/gtoken v1.3.9
github.com/gogf/gf v1.11.4
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0
github.com/mojocn/base64Captcha v1.3.0
)