roleListLogic.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package role
  2. import (
  3. "context"
  4. "perms-system-server/internal/middleware"
  5. roleModel "perms-system-server/internal/model/role"
  6. "perms-system-server/internal/response"
  7. "perms-system-server/internal/svc"
  8. "perms-system-server/internal/types"
  9. "perms-system-server/internal/util"
  10. "github.com/zeromicro/go-zero/core/logx"
  11. )
  12. type RoleListLogic struct {
  13. logx.Logger
  14. ctx context.Context
  15. svcCtx *svc.ServiceContext
  16. }
  17. func NewRoleListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RoleListLogic {
  18. return &RoleListLogic{
  19. Logger: logx.WithContext(ctx),
  20. ctx: ctx,
  21. svcCtx: svcCtx,
  22. }
  23. }
  24. // RoleList 角色列表。按产品分页查询角色信息,用于角色管理和用户角色分配的选择列表。
  25. func (l *RoleListLogic) RoleList(req *types.RoleListReq) (resp *types.PageResp, err error) {
  26. page, pageSize := util.NormalizePage(req.Page, req.PageSize)
  27. caller := middleware.GetUserDetails(l.ctx)
  28. if caller == nil {
  29. return nil, response.ErrUnauthorized("未登录")
  30. }
  31. var productCode string
  32. if caller.IsSuperAdmin {
  33. productCode = req.ProductCode
  34. } else {
  35. productCode = middleware.GetProductCode(l.ctx)
  36. if productCode == "" {
  37. return nil, response.ErrForbidden("缺少产品上下文")
  38. }
  39. }
  40. var list []*roleModel.SysRole
  41. var total int64
  42. if productCode != "" {
  43. list, total, err = l.svcCtx.SysRoleModel.FindListByProductCode(l.ctx, productCode, page, pageSize)
  44. } else {
  45. list, total, err = l.svcCtx.SysRoleModel.FindListByPage(l.ctx, page, pageSize)
  46. }
  47. if err != nil {
  48. return nil, err
  49. }
  50. items := make([]types.RoleItem, 0, len(list))
  51. for _, r := range list {
  52. items = append(items, types.RoleItem{
  53. Id: r.Id,
  54. ProductCode: r.ProductCode,
  55. Name: r.Name,
  56. Remark: r.Remark,
  57. Status: r.Status,
  58. PermsLevel: r.PermsLevel,
  59. CreateTime: r.CreateTime,
  60. })
  61. }
  62. return &types.PageResp{
  63. Total: total,
  64. List: items,
  65. }, nil
  66. }