feat: add private and profile
This commit is contained in:
@@ -242,7 +242,7 @@ func (s *Service) addXPTx(ctx context.Context, tx *sql.Tx, userID int64, base in
|
||||
// PurchaseRequest درخواست تأیید خرید IAP.
|
||||
type PurchaseRequest struct {
|
||||
Store string `json:"store"` // bazaar | myket
|
||||
Kind string `json:"kind"` // coin | ticket | booster
|
||||
Kind string `json:"kind"` // coin | ticket | booster | vip
|
||||
ProductID string `json:"product_id"` // شناسه بسته در کاتالوگ
|
||||
Token string `json:"token"` // purchaseToken
|
||||
}
|
||||
@@ -278,6 +278,12 @@ func (s *Service) VerifyPurchase(ctx context.Context, userID int64, req Purchase
|
||||
if booster == nil {
|
||||
return ErrNotFound
|
||||
}
|
||||
case "vip":
|
||||
p := s.findVIPPackage(req.ProductID)
|
||||
if p == nil {
|
||||
return ErrNotFound
|
||||
}
|
||||
vipDays = p.Months * 30 // هر ماه = ۳۰ روز
|
||||
default:
|
||||
return ErrNotFound
|
||||
}
|
||||
@@ -341,6 +347,29 @@ func extendVIPTx(ctx context.Context, tx *sql.Tx, userID int64, days int) error
|
||||
return err
|
||||
}
|
||||
|
||||
// GrantVIPDays بهصورت دستی (ادمین) اشتراک VIP را تمدید میکند.
|
||||
func (s *Service) GrantVIPDays(ctx context.Context, userID int64, days int) error {
|
||||
tx, err := s.db.BeginTx(ctx, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer tx.Rollback()
|
||||
if err := extendVIPTx(ctx, tx, userID, days); err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
// GrantCard بهصورت دستی (ادمین) یک اسکین کارت را برای کاربر باز میکند.
|
||||
func (s *Service) GrantCard(ctx context.Context, userID int64, cardID string) error {
|
||||
if s.findCardSkin(cardID) == nil {
|
||||
return ErrNotFound
|
||||
}
|
||||
_, err := s.db.ExecContext(ctx,
|
||||
`INSERT OR IGNORE INTO user_cards (user_id, card_id) VALUES (?, ?)`, userID, cardID)
|
||||
return err
|
||||
}
|
||||
|
||||
func laterOf(a, b time.Time) time.Time {
|
||||
if a.After(b) {
|
||||
return a
|
||||
|
||||
Reference in New Issue
Block a user