cc.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package service
  2. import (
  3. "context"
  4. "fmt"
  5. v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
  6. "github.com/go-nunu/nunu-layout-advanced/internal/repository"
  7. "github.com/go-nunu/nunu-layout-advanced/internal/repository/api/waf"
  8. "time"
  9. )
  10. type CcService interface {
  11. GetCcList(ctx context.Context, req v1.CCListRequest) ([]v1.CCListResponse, error)
  12. EditCcState(ctx context.Context, req v1.CCStateRequest) error
  13. }
  14. func NewCcService(
  15. service *Service,
  16. ccRepository repository.CcRepository,
  17. webForwardingRep waf.WebForwardingRepository,
  18. cdn CdnService,
  19. ) CcService {
  20. return &ccService{
  21. Service: service,
  22. ccRepository: ccRepository,
  23. webForwardingRep: webForwardingRep,
  24. cdn: cdn,
  25. }
  26. }
  27. type ccService struct {
  28. *Service
  29. ccRepository repository.CcRepository
  30. webForwardingRep waf.WebForwardingRepository
  31. cdn CdnService
  32. }
  33. func (s *ccService) GetCcList(ctx context.Context, req v1.CCListRequest) ([]v1.CCListResponse, error) {
  34. webData, err := s.webForwardingRep.GetWebForwarding(ctx, req.WebId)
  35. if err != nil {
  36. return nil, err
  37. }
  38. if webData.CdnWebId == 0 {
  39. return nil, fmt.Errorf("网站不存在")
  40. }
  41. ccList, err := s.ccRepository.GetCcList(ctx, int64(webData.CdnWebId))
  42. if err != nil {
  43. return nil, err
  44. }
  45. var res []v1.CCListResponse
  46. for _, v := range ccList {
  47. res = append(res, v1.CCListResponse{
  48. Value: v.Value,
  49. Type: v.Type,
  50. Reason: v.Reason,
  51. SourceURL: v.SourceURL,
  52. SourceUserAgent: v.SourceUserAgent,
  53. CreatedAt: time.Unix(v.CreatedAt, 0).Format("2006-01-02 15:04:05"),
  54. ExpiredAt: time.Unix(v.ExpiredAt, 0).Format("2006-01-02 15:04:05"),
  55. })
  56. }
  57. return res, nil
  58. }
  59. func (s *ccService) EditCcState(ctx context.Context, req v1.CCStateRequest) error {
  60. for _, v := range req.Ips {
  61. webData, err := s.webForwardingRep.GetWebForwarding(ctx, req.WebId)
  62. if err != nil {
  63. return err
  64. }
  65. if webData.CdnWebId == 0 {
  66. return fmt.Errorf("网站不存在")
  67. }
  68. ccId, err := s.ccRepository.GetCcId(ctx, int64(webData.CdnWebId), v)
  69. if err != nil {
  70. return err
  71. }
  72. if ccId == 0 {
  73. return fmt.Errorf("IP不存在")
  74. }
  75. err = s.cdn.DelIpItem(ctx, ccId, v, "", "", 2000000000)
  76. if err != nil {
  77. return err
  78. }
  79. }
  80. return nil
  81. }