gameshield.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package repository
  2. import (
  3. "context"
  4. "github.com/go-nunu/nunu-layout-advanced/internal/model"
  5. )
  6. type GameShieldRepository interface {
  7. GetGameShieldById(ctx context.Context, id int64) (*model.GameShield, error)
  8. GetGameShieldDuplicateName(ctx context.Context, appName string) (int64, error)
  9. AddGameShield(ctx context.Context, gameShield *model.GameShield) error
  10. UpdateGameShield(ctx context.Context, gameShield *model.GameShield) error
  11. DeleteGameShield(ctx context.Context, ruleId int) error
  12. GetGameShieldIsBuy(ctx context.Context, uid int64) (int64, error)
  13. GetGameShieldNextduedate(ctx context.Context, uid int64, productID string) (string, error)
  14. GetGameShieldExistingIps(ctx context.Context, ip string) ([]string, error)
  15. GetGameShieldNameByAppName(ctx context.Context, appName string) (string, error)
  16. }
  17. func NewGameShieldRepository(
  18. repository *Repository,
  19. ) GameShieldRepository {
  20. return &gameShieldRepository{
  21. Repository: repository,
  22. }
  23. }
  24. type gameShieldRepository struct {
  25. *Repository
  26. }
  27. func (r *gameShieldRepository) GetGameShieldById(ctx context.Context, id int64) (*model.GameShield, error) {
  28. var res model.GameShield
  29. if err := r.DB(ctx).Where("id = ?", id).First(&res).Error; err != nil {
  30. return nil, err
  31. }
  32. return &res, nil
  33. }
  34. func (r *gameShieldRepository) GetGameShieldDuplicateName(ctx context.Context, appName string) (int64, error) {
  35. var count int64
  36. if err := r.DB(ctx).Model(&model.GameShield{}).Where("app_name = ?", appName).Count(&count).Error; err != nil {
  37. return 0, err
  38. }
  39. return count, nil
  40. }
  41. func (r *gameShieldRepository) AddGameShield(ctx context.Context, gameShield *model.GameShield) error {
  42. if err := r.DB(ctx).Create(gameShield).Error; err != nil {
  43. return err
  44. }
  45. return nil
  46. }
  47. func (r *gameShieldRepository) UpdateGameShield(ctx context.Context, gameShield *model.GameShield) error {
  48. if err := r.DB(ctx).Where("rule_id", gameShield.RuleId).Updates(gameShield).Error; err != nil {
  49. return err
  50. }
  51. return nil
  52. }
  53. func (r *gameShieldRepository) DeleteGameShield(ctx context.Context, ruleId int) error {
  54. if err := r.DB(ctx).Where("rule_id = ?", ruleId).Delete(&model.GameShield{}).Error; err != nil {
  55. return err
  56. }
  57. return nil
  58. }
  59. func (r *gameShieldRepository) GetGameShieldIsBuy(ctx context.Context, uid int64) (int64, error) {
  60. var count int64
  61. if err := r.DB(ctx).Table("shd_host").
  62. Where("domainstatus = ?", "Active").
  63. Where("productid = ?", 67).
  64. Where("uid = ?", uid).
  65. Count(&count).Error; err != nil {
  66. return 0, err
  67. }
  68. return count, nil
  69. }
  70. func (r *gameShieldRepository) GetGameShieldNextduedate(ctx context.Context, uid int64, productID string) (string, error) {
  71. var nextDueDate string
  72. err := r.DB(ctx).Table("shd_host").
  73. Select("nextduedate").
  74. Where("domain = ?", productID).
  75. Where("productid = ?", 67).
  76. Where("uid = ?", uid).
  77. Scan(&nextDueDate).Error
  78. if err != nil {
  79. return "", err
  80. }
  81. return nextDueDate, nil
  82. }
  83. func (r *gameShieldRepository) GetGameShieldExistingIps(ctx context.Context, ip string) ([]string, error) {
  84. var res []string
  85. if err := r.DB(ctx).Model(&model.GameShield{}).
  86. Where("app_ip LIKE ?", ip+"%").
  87. Pluck("app_ip", &res).Error; err != nil {
  88. return nil, err
  89. }
  90. return res, nil
  91. }
  92. func (r *gameShieldRepository) GetGameShieldNameByAppName(ctx context.Context, appName string) (string, error) {
  93. var res string
  94. if err := r.DB(ctx).Model(&model.GameShield{}).
  95. Where("app_name = ?", appName).
  96. Pluck("dun_name", &res).Error; err != nil {
  97. return "", err
  98. }
  99. return res, nil
  100. }