mirror of
https://github.com/bufanyun/hotgo.git
synced 2025-08-28 05:12:32 +08:00
发布v2.11.5版本,更新内容请查看:https://github.com/bufanyun/hotgo/blob/v2.0/docs/guide-zh-CN/start-update-log.md
This commit is contained in:
@@ -15,7 +15,6 @@ import (
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gtime"
|
||||
"github.com/gogf/gf/v2/text/gstr"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"github.com/gogf/gf/v2/util/grand"
|
||||
"hotgo/internal/consts"
|
||||
"hotgo/internal/dao"
|
||||
@@ -403,28 +402,39 @@ func (s *sAdminMember) VerifyUnique(ctx context.Context, in *adminin.VerifyUniqu
|
||||
|
||||
// Delete 删除用户
|
||||
func (s *sAdminMember) Delete(ctx context.Context, in *adminin.MemberDeleteInp) (err error) {
|
||||
if s.VerifySuperId(ctx, gconv.Int64(in.Id)) {
|
||||
err = gerror.New("超管账号禁止删除!")
|
||||
return
|
||||
}
|
||||
|
||||
memberId := contexts.GetUserId(ctx)
|
||||
if memberId <= 0 {
|
||||
err = gerror.New("获取用户信息失败!")
|
||||
return
|
||||
}
|
||||
|
||||
var models *entity.AdminMember
|
||||
if err = s.FilterAuthModel(ctx, memberId).WherePri(in.Id).Scan(&models); err != nil {
|
||||
var list []*entity.AdminMember
|
||||
if err = s.FilterAuthModel(ctx, memberId).WherePri(in.Id).Scan(&list); err != nil {
|
||||
err = gerror.Wrap(err, "获取用户信息失败,请稍后重试!")
|
||||
return
|
||||
}
|
||||
|
||||
if models == nil {
|
||||
if len(list) == 0 {
|
||||
err = gerror.New("需要删除的用户不存在或已删除!")
|
||||
return
|
||||
}
|
||||
|
||||
for _, v := range list {
|
||||
if s.VerifySuperId(ctx, v.Id) {
|
||||
err = gerror.New("超管账号禁止删除!")
|
||||
return
|
||||
}
|
||||
count, err := dao.AdminMember.Ctx(ctx).Where("pid", v.Id).Count()
|
||||
if err != nil {
|
||||
err = gerror.Wrap(err, "删除用户检查失败,请稍后重试!")
|
||||
return err
|
||||
}
|
||||
if count > 0 {
|
||||
err = gerror.Newf("用户[%v]存在下级,请先删除TA的下级用户!", v.Id)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) (err error) {
|
||||
if _, err = s.FilterAuthModel(ctx, memberId).WherePri(in.Id).Delete(); err != nil {
|
||||
err = gerror.Wrap(err, "删除用户失败,请稍后重试!")
|
||||
@@ -434,6 +444,9 @@ func (s *sAdminMember) Delete(ctx context.Context, in *adminin.MemberDeleteInp)
|
||||
if _, err = dao.AdminMemberPost.Ctx(ctx).Where("member_id", in.Id).Delete(); err != nil {
|
||||
err = gerror.Wrap(err, "删除用户岗位失败,请稍后重试!")
|
||||
}
|
||||
|
||||
// 这里如果需要,可以加入更多删除用户的相关处理
|
||||
// ...
|
||||
return
|
||||
})
|
||||
}
|
||||
@@ -603,6 +616,14 @@ func (s *sAdminMember) List(ctx context.Context, in *adminin.MemberListInp) (lis
|
||||
mod = mod.Where(cols.RoleId, in.RoleId)
|
||||
}
|
||||
|
||||
if in.Id > 0 {
|
||||
mod = mod.Where(cols.Id, in.Id)
|
||||
}
|
||||
|
||||
if in.Pid > 0 {
|
||||
mod = mod.Where(cols.Pid, in.Pid)
|
||||
}
|
||||
|
||||
if len(in.CreatedAt) == 2 {
|
||||
mod = mod.WhereBetween(cols.CreatedAt, gtime.New(in.CreatedAt[0]), gtime.New(in.CreatedAt[1]))
|
||||
}
|
||||
|
@@ -7,22 +7,23 @@ package admin
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/database/gdb"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gtime"
|
||||
"github.com/gogf/gf/v2/text/gstr"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"github.com/gogf/gf/v2/util/gmode"
|
||||
"hotgo/api/admin/role"
|
||||
"hotgo/internal/consts"
|
||||
"hotgo/internal/dao"
|
||||
"hotgo/internal/library/casbin"
|
||||
"hotgo/internal/library/contexts"
|
||||
"hotgo/internal/library/hgorm"
|
||||
"hotgo/internal/model/do"
|
||||
"hotgo/internal/model/entity"
|
||||
"hotgo/internal/model/input/adminin"
|
||||
"hotgo/internal/service"
|
||||
"hotgo/utility/convert"
|
||||
"hotgo/utility/validate"
|
||||
)
|
||||
|
||||
type sAdminMenu struct{}
|
||||
@@ -91,44 +92,25 @@ func (s *sAdminMenu) Edit(ctx context.Context, in *adminin.MenuEditInp) (err err
|
||||
return
|
||||
}
|
||||
|
||||
var pd *do.AdminMenu
|
||||
|
||||
// 维护菜单等级
|
||||
if in.Pid == 0 {
|
||||
in.Level = 1
|
||||
} else {
|
||||
if err = dao.AdminMenu.Ctx(ctx).Where("id", in.Pid).Scan(&pd); err != nil {
|
||||
err = gerror.Wrap(err, consts.ErrorORM)
|
||||
return g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
|
||||
in.Pid, in.Level, in.Tree, err = hgorm.AutoUpdateTree(ctx, &dao.AdminMenu, in.Id, in.Pid)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if pd == nil {
|
||||
return gerror.New("上级菜单信息错误")
|
||||
}
|
||||
in.Level = gconv.Int(pd.Level) + 1
|
||||
}
|
||||
|
||||
// 修改
|
||||
in.UpdatedAt = gtime.Now()
|
||||
if in.Id > 0 {
|
||||
if in.Pid == in.Id {
|
||||
return gerror.New("上级菜单不能是当前菜单")
|
||||
}
|
||||
|
||||
if _, err = dao.AdminMenu.Ctx(ctx).Where("id", in.Id).Data(in).Update(); err != nil {
|
||||
err = gerror.Wrap(err, "修改菜单失败!")
|
||||
return err
|
||||
if in.Id > 0 {
|
||||
if _, err = dao.AdminMenu.Ctx(ctx).Where("id", in.Id).Data(in).Update(); err != nil {
|
||||
err = gerror.Wrap(err, "修改菜单失败!")
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
if _, err = dao.AdminMenu.Ctx(ctx).Data(in).Insert(); err != nil {
|
||||
err = gerror.Wrap(err, "新增菜单失败!")
|
||||
return err
|
||||
}
|
||||
}
|
||||
return casbin.Refresh(ctx)
|
||||
}
|
||||
|
||||
// 新增
|
||||
in.CreatedAt = gtime.Now()
|
||||
|
||||
if _, err = dao.AdminMenu.Ctx(ctx).Data(in).Insert(); err != nil {
|
||||
err = gerror.Wrap(err, "新增菜单失败!")
|
||||
return err
|
||||
}
|
||||
return casbin.Refresh(ctx)
|
||||
})
|
||||
}
|
||||
|
||||
// List 获取菜单列表
|
||||
@@ -215,6 +197,18 @@ func (s *sAdminMenu) GetMenuList(ctx context.Context, memberId int64) (res *role
|
||||
return
|
||||
}
|
||||
|
||||
// 生产环境下隐藏一些菜单
|
||||
if gmode.IsProduct() {
|
||||
newMenus := make([]*adminin.MenuRouteSummary, 0)
|
||||
devMenus := []string{"Develops", "doc"} // 如果你还有其他需要在生产环境隐藏的菜单,将菜单别名加入即可
|
||||
for _, menu := range allMenus {
|
||||
if !validate.InSlice(devMenus, menu.Name) {
|
||||
newMenus = append(newMenus, menu)
|
||||
}
|
||||
}
|
||||
allMenus = newMenus
|
||||
}
|
||||
|
||||
for _, v := range allMenus {
|
||||
treeMap[gconv.String(v.Pid)] = append(treeMap[gconv.String(v.Pid)], v)
|
||||
}
|
||||
|
Reference in New Issue
Block a user