进房间自动领取奖励发送通知

This commit is contained in:
tianfeng 2025-11-13 15:54:26 +08:00
parent 3e360af785
commit f5c8dbc333
4 changed files with 35 additions and 5 deletions

View File

@ -141,4 +141,9 @@ public enum GroupMessageTypeEnum {
*/
ROCKET_ENERGY_LAUNCH,
/**
* 火箭奖励用户
*/
ROCKET_REWARD_USER,
}

View File

@ -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<String, Object> 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={}",

View File

@ -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);
}

View File

@ -33,6 +33,16 @@ public class RocketRewardCO {
*/
private Long rewardAmount;
/**
* 封面图
*/
private String cover;
/**
* 火箭等级
*/
private Integer rocketLevel;
/**
* 是否贡献者
*/