Skip to content

[Service] Loyalty Rewards Contract Service for StarShop Frontend #283

@aguilar1x

Description

@aguilar1x

🎯 Objective

Develop a comprehensive TypeScript service layer for the Loyalty Rewards Contract that manages customer loyalty programs, points systems, levels, milestones, and reward redemptions within the StarShop ecosystem.


🏗 Service Structure

src/shared/services/loyalty_rewards/
  loyalty.service.ts               // Main service class
  types/
    loyalty.types.ts              // TypeScript interfaces
    points.types.ts               // Points-related types
    rewards.types.ts              // Reward-related types
  utils/
    loyalty.utils.ts              // Helper functions
  constants/
    loyalty.constants.ts          // Contract addresses, error codes

🗂 Requirements

1. Admin Management

  • initializeLoyaltyContract(admin) - Initialize loyalty system
  • updateAdmin(newAdmin) - Transfer admin rights
  • setPointsExpiry(days) - Set points expiration
  • setMaxRedemptionPercentage(percentage) - Set redemption limits
  • setPointsRatio(ratio) - Set points earning ratio

2. Points Management

  • registerUser(user) - Register user in loyalty program
  • getPointsBalance(user) - Get user's current points
  • getLifetimePoints(user) - Get user's lifetime points
  • recordPurchasePoints(user, amount, productId?, category?) - Record purchase
  • addPoints(user, amount, description) - Admin manual adjustment

3. Level Management

  • initLevelRequirements(requirements) - Set level requirements
  • checkAndUpdateLevel(user) - Check and update user level
  • getUserLevel(user) - Get user's current level
  • awardAnniversaryBonus(user) - Award anniversary bonus

4. Milestone Management

  • createMilestone(milestone) - Create new milestone
  • completeMilestone(user, milestoneId) - Complete milestone
  • checkAndCompleteMilestones(user) - Auto-complete milestones

5. Rewards Management

  • createReward(reward) - Create new reward
  • redeemReward(user, rewardId, purchaseAmount?) - Redeem reward
  • getAvailableRewards() - Get available rewards
  • calculateDiscount(rewardId, purchaseAmount) - Calculate discount

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions