diff --git a/api/v1/system/sys_user.go b/api/v1/system/sys_user.go index 3fee522..e26ba39 100644 --- a/api/v1/system/sys_user.go +++ b/api/v1/system/sys_user.go @@ -155,6 +155,11 @@ type IsSuperAdminReq struct { commonApi.Author } +type IsAdminReq struct { + g.Meta `path:"/user/checkIsAdmin" tags:"用户管理" method:"get" summary:"是否是管理员"` + commonApi.Author +} + type IsSuperAdminRes struct { g.Meta `mime:"application/json"` IsSuperAdmin bool `json:"isSuperAdmin"` diff --git a/internal/app/system/consts/role.go b/internal/app/system/consts/role.go index 029d7b9..5c6b81c 100644 --- a/internal/app/system/consts/role.go +++ b/internal/app/system/consts/role.go @@ -2,6 +2,6 @@ package consts const ( SuperAdminId = 1 // 超级管理员 - SalesAgentId = 9 // 销售代理 - SiteAdminId = 10 // 站点管理员 + SalesAgentId = 9 // 租户代理管理员 + SiteAdminId = 10 // 租户普通管理员 ) diff --git a/internal/app/system/controller/sys_user.go b/internal/app/system/controller/sys_user.go index e90caac..043ab9b 100644 --- a/internal/app/system/controller/sys_user.go +++ b/internal/app/system/controller/sys_user.go @@ -135,3 +135,9 @@ func (c *userController) IsSuperAdmin(ctx context.Context, req *system.IsSuperAd IsSuperAdminRes.IsSuperAdmin, err = service.SysUser().IsSuperAdmin(ctx, req) return } + +func (c *userController) IsAdmin(ctx context.Context, req *system.IsAdminReq) (IsSuperAdminRes *system.IsSuperAdminRes, err error) { + IsSuperAdminRes = new(system.IsSuperAdminRes) + IsSuperAdminRes.IsSuperAdmin, err = service.SysUser().IsAdmin(ctx, req) + return +} diff --git a/internal/app/system/logic/sysUser/sys_user.go b/internal/app/system/logic/sysUser/sys_user.go index 5e843df..29c2a43 100644 --- a/internal/app/system/logic/sysUser/sys_user.go +++ b/internal/app/system/logic/sysUser/sys_user.go @@ -10,6 +10,7 @@ package sysUser import ( "context" "fmt" + "gitea.com/red-future/common/beans" "gitea.com/red-future/common/utils" "github.com/gogf/gf/v2/container/gset" @@ -782,3 +783,28 @@ func (s *sSysUser) IsSuperAdmin(ctx context.Context, req *system.IsSuperAdminReq } return } + +func (s *sSysUser) IsAdmin(ctx context.Context, req *system.IsAdminReq) (isSuperAdmin bool, err error) { + _ = req + isSuperAdmin = false + // 获取用户id + getUserInfo, err := utils.GetUserInfo(ctx) + if err != nil { + return + } + userId := getUserInfo.Id + if !g.IsEmpty(userId) { + var roleIds []uint + roleIds, err = service.SysUser().GetAdminRoleIds(ctx, gconv.Uint64(userId)) + liberr.ErrIsNil(ctx, err, "获取用户角色失败") + for _, v := range roleIds { + if v == consts.SuperAdminId || v == consts.SiteAdminId { + isSuperAdmin = true + return + } else { + isSuperAdmin = false + } + } + } + return +} diff --git a/internal/app/system/service/sys_user.go b/internal/app/system/service/sys_user.go index cbd0872..dde3c2e 100644 --- a/internal/app/system/service/sys_user.go +++ b/internal/app/system/service/sys_user.go @@ -49,6 +49,7 @@ type ( Delete(ctx context.Context, ids []int) (err error) GetUsers(ctx context.Context, ids []int) (users []*model.SysUserSimpleRes, err error) IsSuperAdmin(ctx context.Context, req *system.IsSuperAdminReq) (isSuperAdmin bool, err error) + IsAdmin(ctx context.Context, req *system.IsAdminReq) (isSuperAdmin bool, err error) } )