diff --git a/rc-service/rc-inner-api/external-inner/external-inner-model/src/main/java/com/red/circle/external/inner/model/enums/message/GroupMessageTypeEnum.java b/rc-service/rc-inner-api/external-inner/external-inner-model/src/main/java/com/red/circle/external/inner/model/enums/message/GroupMessageTypeEnum.java index 263d6cbb..46450130 100644 --- a/rc-service/rc-inner-api/external-inner/external-inner-model/src/main/java/com/red/circle/external/inner/model/enums/message/GroupMessageTypeEnum.java +++ b/rc-service/rc-inner-api/external-inner/external-inner-model/src/main/java/com/red/circle/external/inner/model/enums/message/GroupMessageTypeEnum.java @@ -141,4 +141,9 @@ public enum GroupMessageTypeEnum { */ ROCKET_ENERGY_LAUNCH, + /** + * 火箭奖励用户 + */ + ROCKET_REWARD_USER, + } diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/rocket/RocketRewardClaimCmdExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/rocket/RocketRewardClaimCmdExe.java index e71b5e24..3c050fa7 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/rocket/RocketRewardClaimCmdExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/rocket/RocketRewardClaimCmdExe.java @@ -4,6 +4,9 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.red.circle.common.business.core.enums.SysOriginPlatformEnum; import com.red.circle.common.business.enums.SendPropsOrigin; +import com.red.circle.external.inner.endpoint.message.ImGroupClient; +import com.red.circle.external.inner.model.cmd.message.CustomGroupMsgBodyCmd; +import com.red.circle.external.inner.model.enums.message.GroupMessageTypeEnum; import com.red.circle.other.app.dto.clientobject.RocketRewardCO; import com.red.circle.other.app.dto.cmd.RocketRewardClaimCmd; import com.red.circle.other.app.manager.RocketImPushManager; @@ -32,7 +35,9 @@ import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Random; /** @@ -50,7 +55,7 @@ public class RocketRewardClaimCmdExe { private final RocketConfigGateway rocketConfigGateway; private final RocketRewardLogGateway rocketRewardLogGateway; private final DistributedLockUtil distributedLockUtil; - private final RocketImPushManager rocketImPushManager; + private final ImGroupClient imGroupClient; private final WalletGoldClient walletGoldClient; private final PropsBackpackClient propsBackpackClient; private final BadgeBackpackClient badgeBackpackClient; @@ -73,7 +78,7 @@ public class RocketRewardClaimCmdExe { * 无返回值,静默领取 */ @Async("rocketRewardExecutor") - public void executeAsync(Long roomId, Long userId) { + public void executeAsync(Long roomId, String roomAccount, Long userId) { try { log.debug("异步自动领取火箭奖励: roomId={}, userId={}", roomId, userId); @@ -84,8 +89,16 @@ public class RocketRewardClaimCmdExe { RocketRewardCO result = execute(cmd); if (result != null) { - log.info("异步自动领取成功: roomId={}, userId={}, reward={}", - roomId, userId, result.getRewardType()); + Map map = new HashMap<>(); + map.put("rewardType", result.getRewardType()); + map.put("cover", result.getCover()); + map.put("rocketLevel", result.getRocketLevel()); + map.put("userId", userId); + imGroupClient.sendCustomMessage(roomAccount, + CustomGroupMsgBodyCmd.builder() + .type(GroupMessageTypeEnum.ROCKET_REWARD_USER) + .data(map) + .build()); } } catch (Exception e) { // 静默失败,不影响进房 @@ -157,7 +170,9 @@ public class RocketRewardClaimCmdExe { rewardCO.setRewardType(selectedReward.getType()); rewardCO.setRewardItemId(selectedReward.getId()); rewardCO.setRewardItemName(selectedReward.getName()); + rewardCO.setCover(selectedReward.getCover()); rewardCO.setRewardAmount(getRewardAmount(selectedReward)); + rewardCO.setRocketLevel(rocketLevel); rewardCO.setMessage("恭喜您获得火箭奖励!"); log.info("火箭奖励领取成功: roomId={}, userId={}, level={}, rewardType={}, rewardId={}", diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/room/RoomEnterCmdExe.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/room/RoomEnterCmdExe.java index 1e8045bd..d8f212f2 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/room/RoomEnterCmdExe.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/command/room/RoomEnterCmdExe.java @@ -128,7 +128,7 @@ public class RoomEnterCmdExe { // 自动领取火箭奖励 try { - rocketRewardClaimCmdExe.executeAsync(cmd.getRoomId(), cmd.getReqUserId()); + rocketRewardClaimCmdExe.executeAsync(cmd.getRoomId(), manager.getRoomAccount(), cmd.getReqUserId()); } catch (Exception e) { log.error("触发自动领取火箭奖励失败: roomId={}, userId={}", cmd.getRoomId(), cmd.getReqUserId(), e); } diff --git a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/RocketRewardCO.java b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/RocketRewardCO.java index 89f5f006..d43a90ed 100644 --- a/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/RocketRewardCO.java +++ b/rc-service/rc-service-other/other-client/src/main/java/com/red/circle/other/app/dto/clientobject/RocketRewardCO.java @@ -33,6 +33,16 @@ public class RocketRewardCO { */ private Long rewardAmount; + /** + * 封面图 + */ + private String cover; + + /** + * 火箭等级 + */ + private Integer rocketLevel; + /** * 是否贡献者 */