package role import ( "context" "perms-system-server/internal/middleware" "perms-system-server/internal/response" "perms-system-server/internal/svc" "perms-system-server/internal/types" "perms-system-server/internal/util" "github.com/zeromicro/go-zero/core/logx" ) type RoleListLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewRoleListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RoleListLogic { return &RoleListLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *RoleListLogic) RoleList(req *types.RoleListReq) (resp *types.PageResp, err error) { page, pageSize := util.NormalizePage(req.Page, req.PageSize) caller := middleware.GetUserDetails(l.ctx) if caller == nil { return nil, response.ErrUnauthorized("未登录") } if !caller.IsSuperAdmin && caller.ProductCode != req.ProductCode { return nil, response.ErrForbidden("无权访问该产品的数据") } list, total, err := l.svcCtx.SysRoleModel.FindListByProductCode(l.ctx, req.ProductCode, page, pageSize) if err != nil { return nil, err } items := make([]types.RoleItem, 0, len(list)) for _, r := range list { items = append(items, types.RoleItem{ Id: r.Id, ProductCode: r.ProductCode, Name: r.Name, Remark: r.Remark, Status: r.Status, PermsLevel: r.PermsLevel, CreateTime: r.CreateTime, }) } return &types.PageResp{ Total: total, List: items, }, nil }