You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

75 lines
1.6 KiB

// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package profile
import (
"context"
"fmt"
"github.com/youruser/base/internal/svc"
"github.com/youruser/base/internal/types"
"github.com/youruser/base/model"
"github.com/zeromicro/go-zero/core/logx"
)
type GetUserOrgsLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// 获取我的机构列表
func NewGetUserOrgsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserOrgsLogic {
return &GetUserOrgsLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *GetUserOrgsLogic) GetUserOrgs() (resp *types.UserOrgsResponse, err error) {
userId, _ := l.ctx.Value("userId").(int64)
if userId == 0 {
return nil, fmt.Errorf("未获取到用户信息")
}
userOrgs, err := model.UserOrgFindByUserId(l.ctx, l.svcCtx.DB, userId)
if err != nil {
return nil, fmt.Errorf("获取用户机构列表失败: %v", err)
}
list := make([]types.UserOrgInfo, 0, len(userOrgs))
for _, uo := range userOrgs {
// 查询机构信息
org, err := model.OrgFindOne(l.ctx, l.svcCtx.DB, uo.OrgId)
if err != nil {
continue
}
// 查询角色信息
var roleName, roleCode string
var roleId int64
if uo.RoleId > 0 {
role, err := model.RoleFindOne(l.ctx, l.svcCtx.DB, uo.RoleId)
if err == nil {
roleId = role.Id
roleName = role.Name
roleCode = role.Code
}
}
list = append(list, types.UserOrgInfo{
OrgId: org.Id,
OrgName: org.Name,
RoleId: roleId,
RoleName: roleName,
RoleCode: roleCode,
})
}
return &types.UserOrgsResponse{
List: list,
}, nil
}