فهرست منبع

邀请有礼活动管理更新

liuchengsen 1 ماه پیش
والد
کامیت
7e09b72718

+ 9 - 0
zhijiayun-activity/src/main/java/com/xuekairui/activity/service/ActivityInviteService.java

@@ -376,6 +376,15 @@ public class ActivityInviteService implements ActivityInviteGate {
         // 3. 发放会员奖励
         doGrantReward(inviterId, inviteeId, days);
 
+        // 3.1 回写 InviteRelation.rewardGranted 为 1(表示发放 1 次奖励 = 1 个月高级会员)
+        InviteRelation relation = inviteRelationMapper.selectOne(
+                new LambdaQueryWrapper<InviteRelation>()
+                        .eq(InviteRelation::getInviteeId, inviteeId));
+        if (relation != null) {
+            relation.setRewardGranted(1);
+            inviteRelationMapper.updateById(relation);
+        }
+
         // 4. 审计日志:记录邀请奖励发放
         String inviterName = getUserNickname(inviterId);
         String inviteeName = getUserNickname(inviteeId);

+ 9 - 11
zhijiayun-invite/src/main/java/com/xuekairui/invite/service/InviteService.java

@@ -619,14 +619,13 @@ public class InviteService {
         }
 
         // 5.1 奖励统一由活动模块处理(ActivityInviteGate),此处不再做上限校验
-        // 6. 创建邀请关系(直接标记为已注册)
-        int rewardMonths = config.getRewardMonths() != null ? config.getRewardMonths() : 1;
+        // 6. 创建邀请关系(rewardGranted 初始为 0,由活动模块实际发奖后回写)
         InviteRelation relation = InviteRelation.builder()
                 .inviterId(inviterId)
                 .inviteeId(inviteeId)
                 .inviteCodeId(inviteCode.getId())
                 .registered(1)
-                .rewardGranted(rewardMonths)
+                .rewardGranted(0)
                 .status(1)
                 .build();
         inviteRelationMapper.insert(relation);
@@ -740,14 +739,13 @@ public class InviteService {
 
         // 7.1 奖励统一由活动模块处理,此处不再做上限校验
 
-        // 8. 创建邀请关系
-        int rewardMonths = config.getRewardMonths() != null ? config.getRewardMonths() : 1;
+        // 8. 创建邀请关系(rewardGranted 初始为 0,由活动模块实际发奖后回写)
         InviteRelation relation = InviteRelation.builder()
                 .inviterId(inviterId)
                 .inviteeId(userId)
                 .inviteCodeId(inviteCode.getId())
                 .registered(1)
-                .rewardGranted(rewardMonths)
+                .rewardGranted(0)
                 .status(1)
                 .build();
         inviteRelationMapper.insert(relation);
@@ -829,8 +827,8 @@ public class InviteService {
                 .filter(r -> r.getRegistered() != null && r.getRegistered() == 1)
                 .count();
 
-        // 累计奖励会员月数
-        int totalReward = allRelations.stream()
+        // 累计奖励次数(由活动模块实际发奖后回写到 InviteRelation,1 次 = 1 个月高级会员)
+        int totalRewardMonths = allRelations.stream()
                 .mapToInt(InviteRelation::getRewardGranted)
                 .sum();
 
@@ -872,10 +870,10 @@ public class InviteService {
             summaryText = summaryTemplate
                     .replace("{totalInvited}", String.valueOf(totalInvited))
                     .replace("{registeredCount}", String.valueOf(registeredCount))
-                    .replace("{totalReward}", String.valueOf(totalReward));
+                    .replace("{totalReward}", String.valueOf(totalRewardMonths));
         } else {
             summaryText = String.format("已邀请%d家药店,%d家注册,累计获得%d个月高级会员",
-                    totalInvited, registeredCount, totalReward);
+                    totalInvited, registeredCount, totalRewardMonths);
         }
 
         return InviteStatsResponse.builder()
@@ -884,7 +882,7 @@ public class InviteService {
                 .clickedCount(clickedCount)
                 .totalInvited(totalInvited)
                 .registeredCount(registeredCount)
-                .totalReward(totalReward)
+                .totalReward(totalRewardMonths)
                 .summaryText(summaryText)
                 .todayInvited(todayInvited.intValue())
                 .todayRemaining(todayRemaining)