Răsfoiți Sursa

refactor(Activity): 移除签到活动相关代码

- 删除了与签到活动相关的文档、数据库设计和服务接口
- 移除了签到事件和对应的监听器- 更新了活动配置表,增加了奖励组相关字段
- 删除了ActivityServiceProvider中与签到相关的事件监听器
- 更新了README和系统概述文档,移除了签到活动相关内容
Your Name 8 luni în urmă
părinte
comite
3134ddcc0e

+ 9 - 66
app/Module/Activity/Docs/事件系统.md

@@ -189,7 +189,6 @@ public string $updatedAt;
 
 **触发时机:**
 - 用户完成活动任务
-- 用户签到
 - 系统自动更新活动进度
 
 ### 2.5 ActivityCompletedEvent
@@ -280,52 +279,7 @@ public string $claimedAt;
 - 用户手动领取活动奖励
 - 系统自动发放活动奖励
 
-### 2.7 SignInRecordedEvent
 
-当用户完成签到时触发此事件。
-
-**事件属性:**
-```php
-/**
- * 用户ID
- * @var int
- */
-public int $userId;
-
-/**
- * 活动ID
- * @var int
- */
-public int $activityId;
-
-/**
- * 签到日期
- * @var string
- */
-public string $signInDate;
-
-/**
- * 是否为补签
- * @var bool
- */
-public bool $isMakeup;
-
-/**
- * 当前连续签到天数
- * @var int
- */
-public int $consecutiveDays;
-
-/**
- * 当前累计签到天数
- * @var int
- */
-public int $totalDays;
-```
-
-**触发时机:**
-- 用户完成每日签到
-- 用户进行补签
 
 ## 3. 事件监听器
 
@@ -365,14 +319,7 @@ public int $totalDays;
 - 记录奖励发放日志
 - 更新用户奖励领取状态
 
-### 3.5 SignInRecordListener
 
-监听签到记录事件,处理签到相关逻辑。
-
-**职责:**
-- 更新用户签到统计数据
-- 检查是否达成连续签到奖励条件
-- 记录签到日志
 
 ## 4. 事件注册
 
@@ -408,9 +355,7 @@ class ActivityServiceProvider extends ServiceProvider
         ActivityRewardClaimedEvent::class => [
             RewardDistributionListener::class,
         ],
-        SignInRecordedEvent::class => [
-            SignInRecordListener::class,
-        ],
+
     ];
 
     /**
@@ -448,7 +393,7 @@ public function createActivity(array $data)
         'end_time' => $data['end_time'],
         // 其他字段...
     ]);
-    
+
     // 触发活动创建事件
     event(new ActivityCreatedEvent(
         $activity->id,
@@ -458,7 +403,7 @@ public function createActivity(array $data)
         $activity->end_time,
         auth()->id()
     ));
-    
+
     return $activity;
 }
 ```
@@ -470,7 +415,7 @@ public function createActivity(array $data)
 public function participateActivity(int $userId, int $activityId)
 {
     // 检查参与条件...
-    
+
     // 记录参与情况
     $participation = ActivityParticipation::create([
         'user_id' => $userId,
@@ -478,17 +423,17 @@ public function participateActivity(int $userId, int $activityId)
         'participate_time' => now(),
         'reward_status' => 0,
     ]);
-    
+
     // 初始化用户活动数据
     UserActivityData::create([
         'user_id' => $userId,
         'activity_id' => $activityId,
         'progress' => 0,
     ]);
-    
+
     // 获取活动信息
     $activity = ActivityConfig::find($activityId);
-    
+
     // 触发用户参与活动事件
     event(new UserParticipatedEvent(
         $userId,
@@ -497,7 +442,7 @@ public function participateActivity(int $userId, int $activityId)
         now()->toDateTimeString(),
         'app'
     ));
-    
+
     return $participation;
 }
 ```
@@ -538,9 +483,7 @@ protected $listen = [
     ActivityCompletedEvent::class => [
         UpdateActivityCompletionTaskListener::class,
     ],
-    SignInRecordedEvent::class => [
-        UpdateSignInTaskListener::class,
-    ],
+
 ];
 ```
 

+ 16 - 46
app/Module/Activity/Docs/数据库设计.md

@@ -4,8 +4,7 @@
 
 | 表名 | 说明 |
 |------|------|
-| activity_config | 活动基础配置表,存储活动的基本信息 |
-| activity_reward | 活动奖励配置表,定义活动的奖励内容 |
+| activity_config | 活动基础配置表,存储活动的基本信息和奖励 |
 | activity_participation | 活动参与记录表,记录用户参与活动的情况 |
 | user_activity_data | 用户活动数据表,存储用户在活动中的进度 |
 | activity_condition | 活动条件表,定义活动的参与和完成条件 |
@@ -26,26 +25,13 @@
 | display_order | int | 显示顺序,数值越大越靠前 |
 | icon | varchar(255) | 活动图标URL |
 | banner | varchar(255) | 活动横幅URL |
+| reward_group_id | int | 奖励组ID(关联game_reward_groups表) |
+| reward_group_code | varchar(50) | 奖励组编码(关联game_reward_groups表的code字段) |
 | config_params | json | 活动特定配置参数,JSON格式 |
 | created_at | timestamp | 创建时间 |
 | updated_at | timestamp | 更新时间 |
 
-### 2.2 activity_reward (活动奖励配置表)
-
-| 字段 | 类型 | 说明 |
-|------|------|------|
-| id | bigint | 主键 |
-| activity_id | bigint | 关联活动ID |
-| reward_type | tinyint | 奖励类型(1:物品, 2:货币, 3:经验) |
-| item_id | int | 道具ID |
-| item_count | int | 道具数量 |
-| probability | decimal(5,2) | 获得概率(随机发放时使用) |
-| reward_group | varchar(50) | 奖励组标识(用于分组奖励) |
-| display_order | int | 显示顺序 |
-| created_at | timestamp | 创建时间 |
-| updated_at | timestamp | 更新时间 |
-
-### 2.3 activity_participation (活动参与记录表)
+### 2.2 activity_participation (活动参与记录表)
 
 | 字段 | 类型 | 说明 |
 |------|------|------|
@@ -59,7 +45,7 @@
 | created_at | timestamp | 创建时间 |
 | updated_at | timestamp | 更新时间 |
 
-### 2.4 user_activity_data (用户活动数据表)
+### 2.3 user_activity_data (用户活动数据表)
 
 | 字段 | 类型 | 说明 |
 |------|------|------|
@@ -72,7 +58,7 @@
 | created_at | timestamp | 创建时间 |
 | updated_at | timestamp | 更新时间 |
 
-### 2.5 activity_condition (活动条件表)
+### 2.4 activity_condition (活动条件表)
 
 | 字段 | 类型 | 说明 |
 |------|------|------|
@@ -92,7 +78,6 @@
 
 ```mermaid
 erDiagram
-    activity_config ||--o{ activity_reward : "1:N"
     activity_config ||--o{ activity_participation : "1:N"
     activity_config ||--o{ user_activity_data : "1:N"
     activity_config ||--o{ activity_condition : "1:N"
@@ -105,25 +90,22 @@ erDiagram
 
 ### 4.1 activity_config 表索引
 - 主键索引:`id`
-- 普通索引:`type`, `status`
+- 普通索引:`type`, `status`, `reward_group_id`, `reward_group_code`
 - 复合索引:`(start_time, end_time)`, `(status, display_order)`
 
-### 4.2 activity_reward 表索引
-- 主键索引:`id`
-- 外键索引:`activity_id`
-- 复合索引:`(activity_id, reward_group)`, `(activity_id, display_order)`
 
-### 4.3 activity_participation 表索引
+
+### 4.2 activity_participation 表索引
 - 主键索引:`id`
 - 外键索引:`activity_id`, `user_id`
 - 复合索引:`(user_id, activity_id)`, `(activity_id, reward_status)`
 
-### 4.4 user_activity_data 表索引
+### 4.3 user_activity_data 表索引
 - 主键索引:`id`
 - 外键索引:`activity_id`, `user_id`
 - 复合索引:`(user_id, activity_id)`, `(activity_id, progress)`
 
-### 4.5 activity_condition 表索引
+### 4.4 activity_condition 表索引
 - 主键索引:`id`
 - 外键索引:`activity_id`
 - 复合索引:`(activity_id, condition_type)`, `(activity_id, is_participation_condition)`
@@ -145,33 +127,21 @@ CREATE TABLE `activity_config` (
   `display_order` int DEFAULT '0' COMMENT '显示顺序',
   `icon` varchar(255) DEFAULT NULL COMMENT '活动图标URL',
   `banner` varchar(255) DEFAULT NULL COMMENT '活动横幅URL',
+  `reward_group_id` int DEFAULT NULL COMMENT '奖励组ID(关联game_reward_groups表)',
+  `reward_group_code` varchar(50) DEFAULT NULL COMMENT '奖励组编码(关联game_reward_groups表的code字段)',
   `config_params` json DEFAULT NULL COMMENT '活动特定配置参数',
   `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
   `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
   PRIMARY KEY (`id`),
   KEY `idx_type` (`type`),
   KEY `idx_status` (`status`),
+  KEY `idx_reward_group_id` (`reward_group_id`),
+  KEY `idx_reward_group_code` (`reward_group_code`),
   KEY `idx_time` (`start_time`, `end_time`),
   KEY `idx_status_order` (`status`, `display_order`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='活动基础配置表';
 
--- 创建活动奖励配置表
-CREATE TABLE `activity_reward` (
-  `id` bigint NOT NULL AUTO_INCREMENT,
-  `activity_id` bigint NOT NULL COMMENT '关联活动ID',
-  `reward_type` tinyint NOT NULL COMMENT '奖励类型',
-  `item_id` int NOT NULL COMMENT '道具ID',
-  `item_count` int NOT NULL COMMENT '道具数量',
-  `probability` decimal(5,2) DEFAULT '100.00' COMMENT '获得概率',
-  `reward_group` varchar(50) DEFAULT NULL COMMENT '奖励组标识',
-  `display_order` int DEFAULT '0' COMMENT '显示顺序',
-  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
-  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-  PRIMARY KEY (`id`),
-  KEY `idx_activity_id` (`activity_id`),
-  KEY `idx_activity_group` (`activity_id`, `reward_group`),
-  KEY `idx_activity_order` (`activity_id`, `display_order`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='活动奖励配置表';
+
 
 -- 创建活动参与记录表
 CREATE TABLE `activity_participation` (

+ 23 - 120
app/Module/Activity/Docs/服务接口.md

@@ -150,72 +150,11 @@ public function claimRewards(int $userId, int $activityId, array $rewardIds = []
 public function checkRewardStatus(int $userId, int $activityId): int;
 ```
 
-### 2.3 SignInService
-
-签到服务负责处理签到活动相关功能。
-
-#### 2.3.1 执行签到
-
-```php
-/**
- * 执行签到
- *
- * @param int $userId 用户ID
- * @param int $activityId 签到活动ID
- * @return array 签到结果
- * @throws SignInException 签到失败时抛出异常
- */
-public function signIn(int $userId, int $activityId): array;
-```
-
-#### 2.3.2 执行补签
-
-```php
-/**
- * 执行补签
- *
- * @param int $userId 用户ID
- * @param int $activityId 签到活动ID
- * @param string $date 补签日期,格式:Y-m-d
- * @return array 补签结果
- * @throws SignInException 补签失败时抛出异常
- */
-public function makeupSignIn(int $userId, int $activityId, string $date): array;
-```
-
-#### 2.3.3 获取签到记录
-
-```php
-/**
- * 获取签到记录
- *
- * @param int $userId 用户ID
- * @param int $activityId 签到活动ID
- * @param string $startDate 开始日期,格式:Y-m-d
- * @param string $endDate 结束日期,格式:Y-m-d
- * @return array 签到记录列表
- */
-public function getSignInRecords(int $userId, int $activityId, string $startDate, string $endDate): array;
-```
-
-#### 2.3.4 获取签到统计
-
-```php
-/**
- * 获取签到统计
- *
- * @param int $userId 用户ID
- * @param int $activityId 签到活动ID
- * @return array 签到统计信息
- */
-public function getSignInStats(int $userId, int $activityId): array;
-```
-
-### 2.4 ActivityManagementService
+### 2.3 ActivityManagementService
 
 活动管理服务提供活动的创建、更新、发布等管理功能,主要供后台使用。
 
-#### 2.4.1 创建活动
+#### 2.3.1 创建活动
 
 ```php
 /**
@@ -228,7 +167,7 @@ public function getSignInStats(int $userId, int $activityId): array;
 public function createActivity(array $data): array;
 ```
 
-#### 2.4.2 更新活动
+#### 2.3.2 更新活动
 
 ```php
 /**
@@ -242,7 +181,7 @@ public function createActivity(array $data): array;
 public function updateActivity(int $activityId, array $data): array;
 ```
 
-#### 2.4.3 发布活动
+#### 2.3.3 发布活动
 
 ```php
 /**
@@ -255,7 +194,7 @@ public function updateActivity(int $activityId, array $data): array;
 public function publishActivity(int $activityId): array;
 ```
 
-#### 2.4.4 关闭活动
+#### 2.3.4 关闭活动
 
 ```php
 /**
@@ -269,21 +208,30 @@ public function publishActivity(int $activityId): array;
 public function closeActivity(int $activityId, string $reason): array;
 ```
 
-#### 2.4.5 配置活动奖励
+#### 2.3.5 配置活动奖励
 
 ```php
 /**
  * 配置活动奖励
  *
  * @param int $activityId 活动ID
- * @param array $rewards 奖励配置
+ * @param array $rewards 奖励配置,格式如:[
+ *     [
+ *         'reward_type' => 1, // 1:物品, 2:物品组, 3:货币, 4:经验
+ *         'item_id' => 1001, // 当reward_type=1时使用
+ *         'item_group_id' => 101, // 当reward_type=2时使用
+ *         'item_count' => 10,
+ *         'probability' => 100.00,
+ *         'reward_group' => 'daily_reward'
+ *     ]
+ * ]
  * @return array 配置结果
  * @throws ActivityManagementException 配置失败时抛出异常
  */
 public function configureRewards(int $activityId, array $rewards): array;
 ```
 
-#### 2.4.6 配置活动条件
+#### 2.3.6 配置活动条件
 
 ```php
 /**
@@ -646,7 +594,7 @@ $activityService = app(ActivityService::class);
 try {
     // 用户参与活动
     $result = $activityService->participateActivity($userId, $activityId);
-    
+
     // 处理参与结果
     if ($result['success']) {
         // 参与成功,可以进行后续操作
@@ -658,7 +606,7 @@ try {
         'activity_id' => $activityId,
         'error' => $e->getMessage()
     ]);
-    
+
     // 向用户返回错误信息
     return response()->json([
         'success' => false,
@@ -676,7 +624,7 @@ $rewardService = app(RewardService::class);
 try {
     // 领取活动奖励
     $result = $rewardService->claimRewards($userId, $activityId);
-    
+
     // 处理领取结果
     if ($result['success']) {
         // 领取成功,可以向用户展示获得的奖励
@@ -693,7 +641,7 @@ try {
         'activity_id' => $activityId,
         'error' => $e->getMessage()
     ]);
-    
+
     // 向用户返回错误信息
     return response()->json([
         'success' => false,
@@ -702,42 +650,7 @@ try {
 }
 ```
 
-### 4.4 执行签到
 
-```php
-// 在其他模块中调用签到服务
-$signInService = app(SignInService::class);
-
-try {
-    // 执行签到
-    $result = $signInService->signIn($userId, $activityId);
-    
-    // 处理签到结果
-    if ($result['success']) {
-        // 签到成功,可以向用户展示签到信息
-        return response()->json([
-            'success' => true,
-            'message' => '签到成功',
-            'consecutive_days' => $result['consecutive_days'],
-            'total_days' => $result['total_days'],
-            'rewards' => $result['rewards'] ?? []
-        ]);
-    }
-} catch (SignInException $e) {
-    // 处理签到失败的情况
-    Log::warning('用户签到失败', [
-        'user_id' => $userId,
-        'activity_id' => $activityId,
-        'error' => $e->getMessage()
-    ]);
-    
-    // 向用户返回错误信息
-    return response()->json([
-        'success' => false,
-        'message' => $e->getMessage()
-    ]);
-}
-```
 
 ## 5. 错误处理
 
@@ -751,11 +664,7 @@ try {
 
 奖励相关的异常类,用于处理奖励配置、领取等操作中的错误。
 
-### 5.3 SignInException
-
-签到相关的异常类,用于处理签到、补签等操作中的错误。
-
-### 5.4 ActivityManagementException
+### 5.3 ActivityManagementException
 
 活动管理相关的异常类,用于处理活动创建、更新、发布等管理操作中的错误。
 
@@ -791,13 +700,7 @@ class ActivityServiceProvider extends ServiceProvider
             );
         });
 
-        // 注册签到服务
-        $this->app->singleton(SignInService::class, function ($app) {
-            return new SignInService(
-                $app->make(ActivityLogic::class),
-                $app->make(SignInLogic::class)
-            );
-        });
+
 
         // 注册活动管理服务
         $this->app->singleton(ActivityManagementService::class, function ($app) {

+ 4 - 9
app/Module/Activity/Docs/系统概述.md

@@ -2,21 +2,16 @@
 
 ## 1. 模块简介
 
-活动模块是开心农场系统中的核心功能模块之一,负责管理和执行各类游戏活动,包括礼包活动、签到活动、限时活动等。该模块提供了活动配置、奖励管理、参与记录和进度追踪等功能,为游戏提供丰富多样的活动体验。
+活动模块是开心农场系统中的核心功能模块之一,负责管理和执行各类游戏活动,包括礼包活动、限时活动等。该模块提供了活动配置、奖励管理、参与记录和进度追踪等功能,为游戏提供丰富多样的活动体验。
 
 ## 2. 功能概述
 
 ### 2.1 礼包活动系统
-- **礼包类型**:支持推荐礼包、补偿礼包、新人礼包、认证礼包、签到礼包等多种类型
-- **奖励配置**:可自定义奖励池内容,支持增删修改奖励道具
+- **礼包类型**:支持推荐礼包、补偿礼包、新人礼包、认证礼包等多种类型
+- **奖励配置**:可自定义奖励池内容,支持单个道具或物品组奖励
 - **发放机制**:支持全部发放或随机发放,补偿礼包支持多批次开启
 
-### 2.2 签到活动系统
-- **签到周期**:支持每日签到、连续签到、累计签到等多种签到模式
-- **奖励递增**:支持签到天数增加时奖励递增的配置
-- **补签功能**:可配置是否允许补签及补签消耗
-
-### 2.3 限时活动系统
+### 2.2 限时活动系统
 - **活动时间**:支持设置活动开始和结束时间,自动开启和关闭
 - **参与条件**:可配置活动参与的等级、道具等前置条件
 - **进度追踪**:记录用户在活动中的进度和参与情况

+ 0 - 71
app/Module/Activity/Providers/ActivityServiceProvider.php

@@ -1,71 +0,0 @@
-<?php
-
-namespace App\Module\Activity\Providers;
-
-use Illuminate\Support\ServiceProvider;
-use Illuminate\Support\Facades\Event;
-
-/**
- * 活动模块服务提供者
- */
-class ActivityServiceProvider extends ServiceProvider
-{
-    /**
-     * 事件到监听器的映射
-     *
-     * @var array
-     */
-    protected $listen = [
-        // 活动创建事件
-        'App\Module\Activity\Events\ActivityCreatedEvent' => [
-            'App\Module\Activity\Listeners\ActivityCreatedListener',
-        ],
-        // 活动状态变更事件
-        'App\Module\Activity\Events\ActivityStatusChangedEvent' => [
-            'App\Module\Activity\Listeners\ActivityStatusChangeListener',
-        ],
-        // 用户参与活动事件
-        'App\Module\Activity\Events\UserParticipatedEvent' => [
-            'App\Module\Activity\Listeners\UserParticipationListener',
-        ],
-        // 活动进度更新事件
-        'App\Module\Activity\Events\ActivityProgressUpdatedEvent' => [
-            'App\Module\Activity\Listeners\ActivityProgressListener',
-        ],
-        // 活动完成事件
-        'App\Module\Activity\Events\ActivityCompletedEvent' => [
-            'App\Module\Activity\Listeners\ActivityCompletedListener',
-        ],
-        // 活动奖励领取事件
-        'App\Module\Activity\Events\ActivityRewardClaimedEvent' => [
-            'App\Module\Activity\Listeners\RewardDistributionListener',
-        ],
-        // 签到记录事件
-        'App\Module\Activity\Events\SignInRecordedEvent' => [
-            'App\Module\Activity\Listeners\SignInRecordListener',
-        ],
-    ];
-
-    /**
-     * 注册服务
-     */
-    public function register()
-    {
-
-    }
-
-    /**
-     * 启动服务
-     */
-    public function boot()
-    {
-        // 注册事件监听器
-        foreach ($this->listen as $event => $listeners) {
-            foreach ($listeners as $listener) {
-                Event::listen($event, $listener);
-            }
-        }
-
-
-    }
-}

+ 3 - 4
app/Module/Activity/README.md

@@ -2,12 +2,11 @@
 
 ## 1. 模块简介
 
-活动模块是开心农场系统中的核心功能模块之一,负责管理和执行各类游戏活动,包括礼包活动、签到活动、限时活动等。该模块提供了活动配置、奖励管理、参与记录和进度追踪等功能,为游戏提供丰富多样的活动体验。
+活动模块是开心农场系统中的核心功能模块之一,负责管理和执行各类游戏活动,包括礼包活动、限时活动等。该模块提供了活动配置、奖励管理、参与记录和进度追踪等功能,为游戏提供丰富多样的活动体验。
 
 ## 2. 功能概述
 
-- **礼包活动系统**:支持推荐礼包、补偿礼包、新人礼包、认证礼包、签到礼包等多种类型
-- **签到活动系统**:支持每日签到、连续签到、累计签到等多种签到模式
+- **礼包活动系统**:支持推荐礼包、补偿礼包、新人礼包、认证礼包等多种类型,支持单个道具或物品组奖励
 - **限时活动系统**:支持设置活动开始和结束时间,自动开启和关闭
 - **活动管理功能**:支持活动的创建、发布、暂停、结束等状态管理
 
@@ -40,7 +39,7 @@ app/Module/Activity/
 - **模型层**:ActivityConfig, ActivityReward, ActivityParticipation, UserActivityData等
 - **仓库层**:ActivityConfigRepository, ActivityRewardRepository等
 - **逻辑层**:ActivityLogic, RewardLogic, ParticipationLogic, ProgressLogic等
-- **服务层**:ActivityService, RewardService, SignInService, ActivityManagementService等
+- **服务层**:ActivityService, RewardService, ActivityManagementService等
 - **事件系统**:ActivityCreatedEvent, UserParticipatedEvent, ActivityCompletedEvent等
 
 ## 5. 文档索引

+ 18 - 0
app/Module/Game/Providers/GameServiceProvider.php

@@ -2,8 +2,13 @@
 
 namespace App\Module\Game\Providers;
 
+use App\Module\Game\Commands\CleanExpiredRewardLogsCommand;
+use App\Module\Game\Commands\ImportRewardGroupsCommand;
 use App\Module\Game\Commands\TestItemTempCommand;
+use App\Module\Game\Events\RewardGrantedEvent;
 use App\Module\Game\Listeners\ItemQuantityChangedListener;
+use App\Module\Game\Listeners\LogRewardGrantedListener;
+use App\Module\Game\Listeners\NotifyRewardGrantedListener;
 use App\Module\Game\Listeners\PetCreatedListener;
 use App\Module\Game\Listeners\PetStatusChangedListener;
 use App\Module\Game\Listeners\PetUpdateListener;
@@ -28,6 +33,8 @@ class GameServiceProvider extends ServiceProvider
      */
     protected $commands = [
         TestItemTempCommand::class,
+        ImportRewardGroupsCommand::class,
+        CleanExpiredRewardLogsCommand::class,
     ];
 
     /**
@@ -65,5 +72,16 @@ class GameServiceProvider extends ServiceProvider
             PetUpdateEvent::class,
             PetUpdateListener::class
         );
+
+        // 注册奖励组系统事件监听器
+        Event::listen(
+            RewardGrantedEvent::class,
+            LogRewardGrantedListener::class
+        );
+
+        Event::listen(
+            RewardGrantedEvent::class,
+            NotifyRewardGrantedListener::class
+        );
     }
 }