| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package role
- import (
- "context"
- "perms-system-server/internal/middleware"
- "perms-system-server/internal/response"
- "perms-system-server/internal/svc"
- "perms-system-server/internal/types"
- "github.com/zeromicro/go-zero/core/logx"
- )
- type RoleDetailLogic struct {
- logx.Logger
- ctx context.Context
- svcCtx *svc.ServiceContext
- }
- func NewRoleDetailLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RoleDetailLogic {
- return &RoleDetailLogic{
- Logger: logx.WithContext(ctx),
- ctx: ctx,
- svcCtx: svcCtx,
- }
- }
- func (l *RoleDetailLogic) RoleDetail(req *types.RoleDetailReq) (resp *types.RoleItem, err error) {
- role, err := l.svcCtx.SysRoleModel.FindOne(l.ctx, req.Id)
- if err != nil {
- return nil, response.ErrNotFound("角色不存在")
- }
- caller := middleware.GetUserDetails(l.ctx)
- if caller == nil {
- return nil, response.ErrUnauthorized("未登录")
- }
- if !caller.IsSuperAdmin && caller.ProductCode != role.ProductCode {
- return nil, response.ErrForbidden("无权访问该产品的数据")
- }
- permIds, err := l.svcCtx.SysRolePermModel.FindPermIdsByRoleId(l.ctx, role.Id)
- if err != nil {
- return nil, err
- }
- return &types.RoleItem{
- Id: role.Id,
- ProductCode: role.ProductCode,
- Name: role.Name,
- Remark: role.Remark,
- Status: role.Status,
- PermsLevel: role.PermsLevel,
- PermIds: permIds,
- CreateTime: role.CreateTime,
- }, nil
- }
|