wafmanage.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package admin
  2. import (
  3. "context"
  4. v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
  5. adminApi "github.com/go-nunu/nunu-layout-advanced/api/v1/admin"
  6. "github.com/go-nunu/nunu-layout-advanced/internal/repository"
  7. "github.com/go-nunu/nunu-layout-advanced/internal/repository/admin"
  8. wafRep "github.com/go-nunu/nunu-layout-advanced/internal/repository/api/waf"
  9. "github.com/go-nunu/nunu-layout-advanced/internal/service"
  10. )
  11. type WafManageService interface {
  12. GetWafManageList(ctx context.Context,req adminApi.WafManageList) (*v1.PaginatedResponse[adminApi.WafManageListRes], error)
  13. RecoverWaf(ctx context.Context,req adminApi.RecoverWafRequest) error
  14. SyncExecuteRenewalActions(ctx context.Context,req adminApi.RecoverWafRequest) error
  15. }
  16. func NewWafManageService(
  17. service *service.Service,
  18. wafManageRepository admin.WafManageRepository,
  19. globalLimitRep wafRep.GlobalLimitRepository,
  20. wafOperations WafOperationsService,
  21. hostRep repository.HostRepository,
  22. ) WafManageService {
  23. return &wafManageService{
  24. Service: service,
  25. wafManageRepository: wafManageRepository,
  26. globalLimitRep: globalLimitRep,
  27. wafOperations: wafOperations,
  28. hostRep: hostRep,
  29. }
  30. }
  31. type wafManageService struct {
  32. *service.Service
  33. wafManageRepository admin.WafManageRepository
  34. globalLimitRep wafRep.GlobalLimitRepository
  35. wafOperations WafOperationsService
  36. hostRep repository.HostRepository
  37. }
  38. func (s *wafManageService) GetWafManageList(ctx context.Context,req adminApi.WafManageList) (*v1.PaginatedResponse[adminApi.WafManageListRes], error) {
  39. return s.wafManageRepository.GetWafManageList(ctx, req)
  40. }
  41. func (s *wafManageService) RecoverWaf(ctx context.Context,req adminApi.RecoverWafRequest) error {
  42. wafModels, err := s.globalLimitRep.GetGlobalLimitsByHostIds(ctx, req.HostIds)
  43. if err != nil {
  44. return err
  45. }
  46. err = s.wafOperations.RecoverPlans(ctx, *wafModels, "closed")
  47. if err != nil {
  48. return err
  49. }
  50. return nil
  51. }
  52. func (s *wafManageService) SyncExecuteRenewalActions(ctx context.Context,req adminApi.RecoverWafRequest) error {
  53. wafData, err := s.hostRep.GetExpireTimeByHostId(ctx, req.HostIds)
  54. if err != nil {
  55. return err
  56. }
  57. var renewalRequest []RenewalRequest
  58. for i := range wafData {
  59. renewalRequest = append(renewalRequest, RenewalRequest{
  60. HostId: wafData[i].HostId,
  61. ExpiredAt: wafData[i].ExpiredAt,
  62. })
  63. }
  64. err = s.wafOperations.ExecuteRenewalActions(ctx, renewalRequest)
  65. if err != nil {
  66. return err
  67. }
  68. return nil
  69. }