68 lines
1.9 KiB
Go
68 lines
1.9 KiB
Go
|
package admin_user
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"tyc-server/app/main/api/internal/svc"
|
||
|
"tyc-server/app/main/api/internal/types"
|
||
|
"tyc-server/common/ctxdata"
|
||
|
"tyc-server/common/xerr"
|
||
|
|
||
|
"github.com/Masterminds/squirrel"
|
||
|
"github.com/pkg/errors"
|
||
|
"github.com/zeromicro/go-zero/core/logx"
|
||
|
)
|
||
|
|
||
|
type AdminUserInfoLogic struct {
|
||
|
logx.Logger
|
||
|
ctx context.Context
|
||
|
svcCtx *svc.ServiceContext
|
||
|
}
|
||
|
|
||
|
func NewAdminUserInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AdminUserInfoLogic {
|
||
|
return &AdminUserInfoLogic{
|
||
|
Logger: logx.WithContext(ctx),
|
||
|
ctx: ctx,
|
||
|
svcCtx: svcCtx,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (l *AdminUserInfoLogic) AdminUserInfo(req *types.AdminUserInfoReq) (resp *types.AdminUserInfoResp, err error) {
|
||
|
userId, err := ctxdata.GetUidFromCtx(l.ctx)
|
||
|
if err != nil {
|
||
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "获取用户ID失败, %+v", err)
|
||
|
}
|
||
|
|
||
|
user, err := l.svcCtx.AdminUserModel.FindOne(l.ctx, userId)
|
||
|
if err != nil {
|
||
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "获取用户ID信息失败, %+v", err)
|
||
|
}
|
||
|
// 获取权限
|
||
|
adminUserRoleBuilder := l.svcCtx.AdminUserRoleModel.SelectBuilder().Where(squirrel.Eq{"user_id": user.Id})
|
||
|
permissions, err := l.svcCtx.AdminUserRoleModel.FindAll(l.ctx, adminUserRoleBuilder, "role_id DESC")
|
||
|
if err != nil {
|
||
|
return nil, errors.Wrapf(xerr.NewErrMsg("获取权限失败"), "用户登录, 获取权限失败, 用户名: %s", user.Username)
|
||
|
}
|
||
|
|
||
|
// 获取角色ID数组
|
||
|
roleIds := make([]int64, 0)
|
||
|
for _, permission := range permissions {
|
||
|
roleIds = append(roleIds, permission.RoleId)
|
||
|
}
|
||
|
|
||
|
// 获取角色名称
|
||
|
roles := make([]string, 0)
|
||
|
for _, roleId := range roleIds {
|
||
|
role, err := l.svcCtx.AdminRoleModel.FindOne(l.ctx, roleId)
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
roles = append(roles, role.RoleCode)
|
||
|
}
|
||
|
return &types.AdminUserInfoResp{
|
||
|
Username: user.Username,
|
||
|
RealName: user.RealName,
|
||
|
Roles: roles,
|
||
|
}, nil
|
||
|
}
|