get_api_list_logic.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package api
  2. import (
  3. "context"
  4. "github.com/suyuan32/simple-admin-common/i18n"
  5. "github.com/suyuan32/simple-admin-core/api/internal/svc"
  6. "github.com/suyuan32/simple-admin-core/api/internal/types"
  7. "github.com/suyuan32/simple-admin-core/rpc/types/core"
  8. "github.com/zeromicro/go-zero/core/logx"
  9. )
  10. type GetApiListLogic struct {
  11. logx.Logger
  12. ctx context.Context
  13. svcCtx *svc.ServiceContext
  14. }
  15. func NewGetApiListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetApiListLogic {
  16. return &GetApiListLogic{
  17. Logger: logx.WithContext(ctx),
  18. ctx: ctx,
  19. svcCtx: svcCtx,
  20. }
  21. }
  22. func (l *GetApiListLogic) GetApiList(req *types.ApiListReq) (resp *types.ApiListResp, err error) {
  23. data, err := l.svcCtx.CoreRpc.GetApiList(l.ctx,
  24. &core.ApiListReq{
  25. Page: req.Page,
  26. PageSize: req.PageSize,
  27. Path: req.Path,
  28. Description: req.Description,
  29. Method: req.Method,
  30. ApiGroup: req.Group,
  31. ServiceName: req.ServiceName,
  32. })
  33. if err != nil {
  34. return nil, err
  35. }
  36. resp = &types.ApiListResp{}
  37. resp.Msg = l.svcCtx.Trans.Trans(l.ctx, i18n.Success)
  38. resp.Data.Total = data.GetTotal()
  39. // Translate api group
  40. var group = make(map[string]string)
  41. for _, v := range data.Data {
  42. // If page size is over 1000, use api group i18n translation. Mainly use in authority list.
  43. if req.PageSize > 1000 {
  44. if _, exist := group[*v.ApiGroup]; !exist {
  45. group[*v.ApiGroup] = l.svcCtx.Trans.Trans(l.ctx, "apiGroup."+*v.ApiGroup)
  46. }
  47. *v.ApiGroup = group[*v.ApiGroup]
  48. }
  49. resp.Data.Data = append(resp.Data.Data,
  50. types.ApiInfo{
  51. BaseIDInfo: types.BaseIDInfo{
  52. Id: v.Id,
  53. CreatedAt: v.CreatedAt,
  54. UpdatedAt: v.UpdatedAt,
  55. },
  56. Path: v.Path,
  57. Trans: l.svcCtx.Trans.Trans(l.ctx, *v.Description),
  58. Description: v.Description,
  59. Group: v.ApiGroup,
  60. Method: v.Method,
  61. IsRequired: v.IsRequired,
  62. ServiceName: v.ServiceName,
  63. })
  64. }
  65. return resp, nil
  66. }