gameshield.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  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, uid int) (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. GetGameShieldNameByDunName(ctx context.Context, appName string) (string, error)
  16. GetGameShieldIdByDunName(ctx context.Context, id int64) (string, error)
  17. GetGameShieldRuleIdByAppName(ctx context.Context, appName string) (int, error)
  18. UpdateGameShieldByHostId(ctx context.Context, gameShield *model.GameShield) error
  19. GetGameShieldByHostId(ctx context.Context, hostId int) (*model.GameShield, error)
  20. GetHostById(ctx context.Context, id int) (string, error)
  21. }
  22. func NewGameShieldRepository(
  23. repository *Repository,
  24. ) GameShieldRepository {
  25. return &gameShieldRepository{
  26. Repository: repository,
  27. }
  28. }
  29. type gameShieldRepository struct {
  30. *Repository
  31. }
  32. func (r *gameShieldRepository) GetGameShieldById(ctx context.Context, id int64) (*model.GameShield, error) {
  33. var res model.GameShield
  34. if err := r.DB(ctx).Where("id = ?", id).First(&res).Error; err != nil {
  35. return nil, err
  36. }
  37. return &res, nil
  38. }
  39. func (r *gameShieldRepository) GetGameShieldDuplicateName(ctx context.Context, appName string, uid int) (int64, error) {
  40. var count int64
  41. if err := r.DB(ctx).Model(&model.GameShield{}).Where("app_name = ?", appName).Where("uid = ?", uid).Count(&count).Error; err != nil {
  42. return 0, err
  43. }
  44. return count, nil
  45. }
  46. func (r *gameShieldRepository) AddGameShield(ctx context.Context, gameShield *model.GameShield) error {
  47. if err := r.DB(ctx).Create(gameShield).Error; err != nil {
  48. return err
  49. }
  50. return nil
  51. }
  52. func (r *gameShieldRepository) UpdateGameShield(ctx context.Context, gameShield *model.GameShield) error {
  53. if err := r.DB(ctx).Where("rule_id", gameShield.RuleId).Updates(gameShield).Error; err != nil {
  54. return err
  55. }
  56. return nil
  57. }
  58. func (r *gameShieldRepository) DeleteGameShield(ctx context.Context, ruleId int) error {
  59. if err := r.DB(ctx).Where("rule_id = ?", ruleId).Delete(&model.GameShield{}).Error; err != nil {
  60. return err
  61. }
  62. return nil
  63. }
  64. func (r *gameShieldRepository) GetGameShieldIsBuy(ctx context.Context, uid int64) (int64, error) {
  65. var count int64
  66. if err := r.DB(ctx).Table("shd_host").
  67. Where("domainstatus = ?", "Active").
  68. Where("productid = ?", 67).
  69. Where("uid = ?", uid).
  70. Count(&count).Error; err != nil {
  71. return 0, err
  72. }
  73. return count, nil
  74. }
  75. func (r *gameShieldRepository) GetGameShieldNextduedate(ctx context.Context, uid int64, productID string) (string, error) {
  76. var nextDueDate string
  77. err := r.DB(ctx).Table("shd_host").
  78. Select("nextduedate").
  79. Where("id = ?", productID).
  80. Where("uid = ?", uid).
  81. Scan(&nextDueDate).Error
  82. if err != nil {
  83. return "", err
  84. }
  85. return nextDueDate, nil
  86. }
  87. func (r *gameShieldRepository) GetGameShieldExistingIps(ctx context.Context, ip string) ([]string, error) {
  88. var res []string
  89. if err := r.DB(ctx).Model(&model.GameShield{}).
  90. Where("app_ip LIKE ?", ip+"%").
  91. Pluck("app_ip", &res).Error; err != nil {
  92. return nil, err
  93. }
  94. return res, nil
  95. }
  96. func (r *gameShieldRepository) GetGameShieldNameByDunName(ctx context.Context, appName string) (string, error) {
  97. var res string
  98. if err := r.DB(ctx).Model(&model.GameShield{}).
  99. Where("app_name = ?", appName).
  100. Pluck("dun_name", &res).Error; err != nil {
  101. return "", err
  102. }
  103. return res, nil
  104. }
  105. func (r *gameShieldRepository) GetGameShieldIdByDunName(ctx context.Context, id int64) (string, error) {
  106. var res string
  107. if err := r.DB(ctx).Model(&model.GameShield{}).
  108. Where("id = ?", id).
  109. Pluck("dun_name", &res).Error; err != nil {
  110. return "", err
  111. }
  112. return res, nil
  113. }
  114. func (r *gameShieldRepository) GetGameShieldRuleIdByAppName(ctx context.Context, appName string) (int, error) {
  115. var res int
  116. if err := r.DB(ctx).Model(&model.GameShield{}).
  117. Where("app_name = ?", appName).
  118. Pluck("rule_id", &res).Error; err != nil {
  119. return 0, err
  120. }
  121. return res, nil
  122. }
  123. func (r *gameShieldRepository) UpdateGameShieldByHostId(ctx context.Context, req *model.GameShield) error {
  124. if err := r.DB(ctx).Where("host_id = ?", req.Id).Updates(&model.GameShield{}).Error; err != nil {
  125. return err
  126. }
  127. return nil
  128. }
  129. func (r *gameShieldRepository) GetGameShieldByHostId(ctx context.Context, hostId int) (*model.GameShield, error) {
  130. var res model.GameShield
  131. if err := r.DB(ctx).Where("host_id = ?", hostId).First(&res).Error; err != nil {
  132. return nil, err
  133. }
  134. return &res, nil
  135. }
  136. func (r *gameShieldRepository) GetHostById(ctx context.Context, id int) (string, error) {
  137. var res string
  138. if err := r.DB(ctx).Table("shd_host").
  139. Where("id = ?", id).
  140. Pluck("domain", &res).Error; err != nil {
  141. return "", err
  142. }
  143. return res, nil
  144. }