yxh 6 лет назад
Родитель
Сommit
1e6ade0a0f

+ 90 - 2
app/controller/admin/cms_menu.go

@@ -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, "排序成功")
+}

+ 11 - 0
app/model/admin/cms_category/cms_category.go

@@ -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
app/service/admin/cms_service/menu.go

@@ -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
app/service/admin/dict_service/dict_type.go

@@ -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))
 		}

+ 0 - 1
go.mod

@@ -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
 )