-
Notifications
You must be signed in to change notification settings - Fork 115
Open
Labels
Description
🎯 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 systemupdateAdmin(newAdmin)- Transfer admin rightssetPointsExpiry(days)- Set points expirationsetMaxRedemptionPercentage(percentage)- Set redemption limitssetPointsRatio(ratio)- Set points earning ratio
2. Points Management
registerUser(user)- Register user in loyalty programgetPointsBalance(user)- Get user's current pointsgetLifetimePoints(user)- Get user's lifetime pointsrecordPurchasePoints(user, amount, productId?, category?)- Record purchaseaddPoints(user, amount, description)- Admin manual adjustment
3. Level Management
initLevelRequirements(requirements)- Set level requirementscheckAndUpdateLevel(user)- Check and update user levelgetUserLevel(user)- Get user's current levelawardAnniversaryBonus(user)- Award anniversary bonus
4. Milestone Management
createMilestone(milestone)- Create new milestonecompleteMilestone(user, milestoneId)- Complete milestonecheckAndCompleteMilestones(user)- Auto-complete milestones
5. Rewards Management
createReward(reward)- Create new rewardredeemReward(user, rewardId, purchaseAmount?)- Redeem rewardgetAvailableRewards()- Get available rewardscalculateDiscount(rewardId, purchaseAmount)- Calculate discount