gameshield.go 3.1 KB

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