cc.go 2.1 KB

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