gameshield.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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. GetGameShieldIdByAppName(ctx context.Context, id int64) (string, error)
  17. }
  18. func NewGameShieldRepository(
  19. repository *Repository,
  20. ) GameShieldRepository {
  21. return &gameShieldRepository{
  22. Repository: repository,
  23. }
  24. }
  25. type gameShieldRepository struct {
  26. *Repository
  27. }
  28. func (r *gameShieldRepository) GetGameShieldById(ctx context.Context, id int64) (*model.GameShield, error) {
  29. var res model.GameShield
  30. if err := r.DB(ctx).Where("id = ?", id).First(&res).Error; err != nil {
  31. return nil, err
  32. }
  33. return &res, nil
  34. }
  35. func (r *gameShieldRepository) GetGameShieldDuplicateName(ctx context.Context, appName string) (int64, error) {
  36. var count int64
  37. if err := r.DB(ctx).Model(&model.GameShield{}).Where("app_name = ?", appName).Count(&count).Error; err != nil {
  38. return 0, err
  39. }
  40. return count, nil
  41. }
  42. func (r *gameShieldRepository) AddGameShield(ctx context.Context, gameShield *model.GameShield) error {
  43. if err := r.DB(ctx).Create(gameShield).Error; err != nil {
  44. return err
  45. }
  46. return nil
  47. }
  48. func (r *gameShieldRepository) UpdateGameShield(ctx context.Context, gameShield *model.GameShield) error {
  49. if err := r.DB(ctx).Where("rule_id", gameShield.RuleId).Updates(gameShield).Error; err != nil {
  50. return err
  51. }
  52. return nil
  53. }
  54. func (r *gameShieldRepository) DeleteGameShield(ctx context.Context, ruleId int) error {
  55. if err := r.DB(ctx).Where("rule_id = ?", ruleId).Delete(&model.GameShield{}).Error; err != nil {
  56. return err
  57. }
  58. return nil
  59. }
  60. func (r *gameShieldRepository) GetGameShieldIsBuy(ctx context.Context, uid int64) (int64, error) {
  61. var count int64
  62. if err := r.DB(ctx).Table("shd_host").
  63. Where("domainstatus = ?", "Active").
  64. Where("productid = ?", 67).
  65. Where("uid = ?", uid).
  66. Count(&count).Error; err != nil {
  67. return 0, err
  68. }
  69. return count, nil
  70. }
  71. func (r *gameShieldRepository) GetGameShieldNextduedate(ctx context.Context, uid int64, productID string) (string, error) {
  72. var nextDueDate string
  73. err := r.DB(ctx).Table("shd_host").
  74. Select("nextduedate").
  75. Where("domain = ?", productID).
  76. Where("productid = ?", 67).
  77. Where("uid = ?", uid).
  78. Scan(&nextDueDate).Error
  79. if err != nil {
  80. return "", err
  81. }
  82. return nextDueDate, nil
  83. }
  84. func (r *gameShieldRepository) GetGameShieldExistingIps(ctx context.Context, ip string) ([]string, error) {
  85. var res []string
  86. if err := r.DB(ctx).Model(&model.GameShield{}).
  87. Where("app_ip LIKE ?", ip+"%").
  88. Pluck("app_ip", &res).Error; err != nil {
  89. return nil, err
  90. }
  91. return res, nil
  92. }
  93. func (r *gameShieldRepository) GetGameShieldNameByAppName(ctx context.Context, appName string) (string, error) {
  94. var res string
  95. if err := r.DB(ctx).Model(&model.GameShield{}).
  96. Where("app_name = ?", appName).
  97. Pluck("dun_name", &res).Error; err != nil {
  98. return "", err
  99. }
  100. return res, nil
  101. }
  102. func (r *gameShieldRepository) GetGameShieldIdByAppName(ctx context.Context, id int64) (string, error) {
  103. var res string
  104. if err := r.DB(ctx).Model(&model.GameShield{}).
  105. Where("id = ?", id).
  106. Pluck("dun_name", &res).Error; err != nil {
  107. return "", err
  108. }
  109. return res, nil
  110. }