ldap-1-backend/logic/menu_logic.go

182 lines
4.3 KiB
Go
Raw Normal View History

2022-05-18 17:57:03 +08:00
package logic
import (
"fmt"
2022-05-29 10:06:21 +08:00
"github.com/eryajf/go-ldap-admin/model"
"github.com/eryajf/go-ldap-admin/public/tools"
"github.com/eryajf/go-ldap-admin/service/isql"
"github.com/eryajf/go-ldap-admin/svc/request"
2022-05-18 17:57:03 +08:00
"github.com/gin-gonic/gin"
)
type MenuLogic struct{}
// Add 添加数据
func (l MenuLogic) Add(c *gin.Context, req interface{}) (data interface{}, rspError interface{}) {
r, ok := req.(*request.MenuAddReq)
if !ok {
return nil, ReqAssertErr
}
_ = c
if isql.Menu.Exist(tools.H{"name": r.Name}) {
return nil, tools.NewMySqlError(fmt.Errorf("菜单名称已存在"))
}
// 获取当前用户
ctxUser, err := isql.User.GetCurrentLoginUser(c)
if err != nil {
return nil, tools.NewMySqlError(fmt.Errorf("获取当前登陆用户信息失败"))
}
menu := model.Menu{
Name: r.Name,
Title: r.Title,
Icon: r.Icon,
Path: r.Path,
Redirect: r.Redirect,
Component: r.Component,
Sort: r.Sort,
Status: r.Status,
Hidden: r.Hidden,
NoCache: r.NoCache,
AlwaysShow: r.AlwaysShow,
Breadcrumb: r.Breadcrumb,
ActiveMenu: r.ActiveMenu,
ParentId: r.ParentId,
Creator: ctxUser.Username,
}
err = isql.Menu.Add(&menu)
if err != nil {
return nil, tools.NewMySqlError(fmt.Errorf("创建记录失败: %s", err.Error()))
}
return nil, nil
}
// // List 数据列表
// func (l MenuLogic) List(c *gin.Context, req interface{}) (data interface{}, rspError interface{}) {
// _, ok := req.(*request.MenuListReq)
// if !ok {
// return nil, ReqAssertErr
// }
// _ = c
// menus, err := isql.Menu.List()
// if err != nil {
// return nil, tools.NewMySqlError(fmt.Errorf("获取资源列表失败: %s", err.Error()))
// }
// rets := make([]model.Menu, 0)
// for _, menu := range menus {
// rets = append(rets, *menu)
// }
// count, err := isql.Menu.Count()
// if err != nil {
// return nil, tools.NewMySqlError(fmt.Errorf("获取资源总数失败"))
// }
// return response.MenuListRsp{
// Total: count,
// Menus: rets,
// }, nil
// }
// Update 更新数据
func (l MenuLogic) Update(c *gin.Context, req interface{}) (data interface{}, rspError interface{}) {
r, ok := req.(*request.MenuUpdateReq)
if !ok {
return nil, ReqAssertErr
}
_ = c
filter := tools.H{"id": int(r.ID)}
if !isql.Menu.Exist(filter) {
return nil, tools.NewMySqlError(fmt.Errorf("改ID对应的记录不存在"))
}
// 获取当前登陆用户
ctxUser, err := isql.User.GetCurrentLoginUser(c)
if err != nil {
return nil, tools.NewMySqlError(fmt.Errorf("获取当前登陆用户失败"))
}
oldData := new(model.Menu)
err = isql.Menu.Find(filter, oldData)
if err != nil {
return nil, tools.NewMySqlError(fmt.Errorf("获取记录失败: %s", err.Error()))
}
menu := model.Menu{
Model: oldData.Model,
Name: r.Name,
Title: r.Title,
Icon: r.Icon,
Path: r.Path,
Redirect: r.Redirect,
Component: r.Component,
Sort: r.Sort,
Status: r.Status,
Hidden: r.Hidden,
NoCache: r.NoCache,
AlwaysShow: r.AlwaysShow,
Breadcrumb: r.Breadcrumb,
ActiveMenu: r.ActiveMenu,
ParentId: r.ParentId,
Creator: ctxUser.Username,
}
err = isql.Menu.Update(&menu)
if err != nil {
return nil, tools.NewMySqlError(fmt.Errorf("更新记录失败: %s", err.Error()))
}
return nil, nil
}
// Delete 删除数据
func (l MenuLogic) Delete(c *gin.Context, req interface{}) (data interface{}, rspError interface{}) {
r, ok := req.(*request.MenuDeleteReq)
if !ok {
return nil, ReqAssertErr
}
_ = c
for _, id := range r.MenuIds {
filter := tools.H{"id": int(id)}
if !isql.Menu.Exist(filter) {
return nil, tools.NewMySqlError(fmt.Errorf("改ID对应的记录不存在"))
}
}
// 删除接口
err := isql.Menu.Delete(r.MenuIds)
if err != nil {
return nil, tools.NewMySqlError(fmt.Errorf("删除接口失败: %s", err.Error()))
}
return nil, nil
}
// GetTree 数据树
func (l MenuLogic) GetTree(c *gin.Context, req interface{}) (data interface{}, rspError interface{}) {
_, ok := req.(*request.MenuGetTreeReq)
if !ok {
return nil, ReqAssertErr
}
_ = c
var menus []*model.Menu
menus, err := isql.Menu.List()
if err != nil {
return nil, tools.NewMySqlError(fmt.Errorf("获取资源列表失败: " + err.Error()))
}
tree := isql.GenMenuTree(0, menus)
return tree, nil
}