独联体-房间送礼人,系统消息

This commit is contained in:
2025-09-23 17:05:09 +08:00
parent 683d040eb8
commit d63fcbc9b1
3 changed files with 40 additions and 9 deletions

View File

@@ -319,6 +319,9 @@ public enum I18nAlertEnum {
GOLD_BEAN_NAME("Gold Bean"), GOLD_BEAN_NAME("Gold Bean"),
DIAMOND_NAME("DIAMOND"), DIAMOND_NAME("DIAMOND"),
GUILD_CREATE_TASK_MSG("你在公会的卓越表现,获得了精美奖励。快去背包看看吧!"), GUILD_CREATE_TASK_MSG("你在公会的卓越表现,获得了精美奖励。快去背包看看吧!"),
EXTRA_GUILD_MSG("你的钻石奖励已经发放,请注意查收。"),
EXTRA_GUILD_MEMBER_MSG("你的钻石奖励已经发放,请注意查收。"),
EXTRA_ROOM_MSG("你的钻石奖励已经发放,请注意查收。"),
; ;
private final String defaultStr; private final String defaultStr;

View File

@@ -52,6 +52,7 @@ public class SuperLuckyGiftDiamondIncomeListener implements ApplicationListener<
SuperLuckyGiftDiamondIncomeMessage message = (SuperLuckyGiftDiamondIncomeMessage) event.getSource(); SuperLuckyGiftDiamondIncomeMessage message = (SuperLuckyGiftDiamondIncomeMessage) event.getSource();
Long receiverUid = message.getReceiverUid(); Long receiverUid = message.getReceiverUid();
Long roomUid = message.getRoomUid(); Long roomUid = message.getRoomUid();
Long senderUid = message.getSenderUid();
Users receiver = usersService.getNotNullUsersByUid(receiverUid); Users receiver = usersService.getNotNullUsersByUid(receiverUid);
@@ -87,7 +88,7 @@ public class SuperLuckyGiftDiamondIncomeListener implements ApplicationListener<
if (Constant.ClanMode.SOVIET.equals(partitionInfo.getClanMode()) && roomUid != null && roomUid > 0L) { if (Constant.ClanMode.SOVIET.equals(partitionInfo.getClanMode()) && roomUid != null && roomUid > 0L) {
statDate = DateTimeUtil.convertWithZoneId(time, partitionInfo.getZoneId()).format(dateFormatter); statDate = DateTimeUtil.convertWithZoneId(time, partitionInfo.getZoneId()).format(dateFormatter);
extraDiamondDayService.updateRoomExtraDiamond(guildMember, roomUid, partitionInfo, statDate, extraDiamondDayService.updateRoomExtraDiamond(guildMember, senderUid, partitionInfo, statDate,
roomUid, 0D, message.getTotalDiamondNum(), time); roomUid, 0D, message.getTotalDiamondNum(), time);
} }
} }

View File

@@ -5,14 +5,17 @@ import com.accompany.business.model.guild.Guild;
import com.accompany.business.model.guild.GuildMember; import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.model.guildsoviet.GuildExtraDiamondDay; import com.accompany.business.model.guildsoviet.GuildExtraDiamondDay;
import com.accompany.business.model.guildsoviet.RoomExtraDiamondDay; import com.accompany.business.model.guildsoviet.RoomExtraDiamondDay;
import com.accompany.business.service.BaseSendService;
import com.accompany.business.service.guild.GuildMemberService; import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.guild.GuildService; import com.accompany.business.service.guild.GuildService;
import com.accompany.business.service.purse.UserPurseService; import com.accompany.business.service.purse.UserPurseService;
import com.accompany.common.status.BusiStatus; import com.accompany.common.status.BusiStatus;
import com.accompany.common.utils.DateTimeUtil; import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.enumeration.I18nAlertEnum;
import com.accompany.core.exception.ServiceException; import com.accompany.core.exception.ServiceException;
import com.accompany.core.model.PartitionInfo; import com.accompany.core.model.PartitionInfo;
import com.accompany.core.service.SysConfService; import com.accompany.core.service.SysConfService;
import com.accompany.core.util.I18NMessageSourceUtil;
import com.accompany.core.util.StringUtils; import com.accompany.core.util.StringUtils;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -20,6 +23,7 @@ import org.apache.commons.collections.CollectionUtils;
import org.redisson.api.RLock; import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -48,6 +52,8 @@ public class ExtraDiamondDayService {
private RedissonClient redissonClient; private RedissonClient redissonClient;
@Autowired @Autowired
private GuildMemberService guildMemberService; private GuildMemberService guildMemberService;
@Autowired
private BaseSendService baseSendService;
public void updateGuildExtraDiamond(GuildMember guildMember, String cycleDate, String statDate, public void updateGuildExtraDiamond(GuildMember guildMember, String cycleDate, String statDate,
Double normalDiamondNum, Double luckyDiamondNum, Date time) { Double normalDiamondNum, Double luckyDiamondNum, Date time) {
@@ -130,16 +136,21 @@ public class ExtraDiamondDayService {
return; return;
} }
boolean updateBatchById = guildExtraDiamondDayService.updateBatchById(guildExtraDiamondDays); boolean updateBatchById = guildExtraDiamondDayService.updateBatchById(guildExtraDiamondDays);
if (updateBatchById) { if (!updateBatchById) {
for (GuildExtraDiamondDay extraDiamondDay : guildExtraDiamondDays) { }
if (extraDiamondDay.getAnchorExtraNum().compareTo(BigDecimal.ZERO) > 0) { HashSet<Long> uids = new HashSet<>();
userPurseService.addGold(extraDiamondDay.getUid(), extraDiamondDay.getAnchorExtraNum().doubleValue(), ANCHOR_EXTRA_GOLD); for (GuildExtraDiamondDay extraDiamondDay : guildExtraDiamondDays) {
} if (extraDiamondDay.getAnchorExtraNum().compareTo(BigDecimal.ZERO) > 0) {
if (extraDiamondDay.getAnchorExtraLuckyNum().compareTo(BigDecimal.ZERO) > 0) { userPurseService.addGold(extraDiamondDay.getUid(), extraDiamondDay.getAnchorExtraNum().doubleValue(), ANCHOR_EXTRA_GOLD);
userPurseService.addGold(extraDiamondDay.getUid(), extraDiamondDay.getAnchorExtraLuckyNum().doubleValue(), ANCHOR_EXTRA_LUCKY_GOLD); uids.add(extraDiamondDay.getUid());
} }
if (extraDiamondDay.getAnchorExtraLuckyNum().compareTo(BigDecimal.ZERO) > 0) {
userPurseService.addGold(extraDiamondDay.getUid(), extraDiamondDay.getAnchorExtraLuckyNum().doubleValue(), ANCHOR_EXTRA_LUCKY_GOLD);
uids.add(extraDiamondDay.getUid());
} }
} }
String message = I18NMessageSourceUtil.getMessage(I18nAlertEnum.EXTRA_GUILD_MEMBER_MSG, partitionId);
this.sendMessage(message, uids);
} }
} catch (Exception e) { } catch (Exception e) {
log.error("sendGuildMemberExtraDiamondTask anchor error" , e); log.error("sendGuildMemberExtraDiamondTask anchor error" , e);
@@ -193,11 +204,15 @@ public class ExtraDiamondDayService {
ownerExtra = ownerExtra == null ? add : ownerExtra.add(add); ownerExtra = ownerExtra == null ? add : ownerExtra.add(add);
ownerExtraMap.put(ownerUid, ownerExtra); ownerExtraMap.put(ownerUid, ownerExtra);
} }
HashSet<Long> uids = new HashSet<>();
for (Map.Entry<Long, BigDecimal> decimalEntry : ownerExtraMap.entrySet()) { for (Map.Entry<Long, BigDecimal> decimalEntry : ownerExtraMap.entrySet()) {
if (decimalEntry.getValue().compareTo(BigDecimal.ZERO) > 0) { if (decimalEntry.getValue().compareTo(BigDecimal.ZERO) > 0) {
userPurseService.addGold(decimalEntry.getKey(), decimalEntry.getValue().doubleValue(), OWNER_EXTRA_GOLD); userPurseService.addGold(decimalEntry.getKey(), decimalEntry.getValue().doubleValue(), OWNER_EXTRA_GOLD);
uids.add(decimalEntry.getKey());
} }
} }
String message = I18NMessageSourceUtil.getMessage(I18nAlertEnum.EXTRA_GUILD_MSG, partitionId);
this.sendMessage(message, uids);
} }
} catch (Exception e) { } catch (Exception e) {
log.error("sendGuildExtraDiamondTask anchor error" , e); log.error("sendGuildExtraDiamondTask anchor error" , e);
@@ -243,13 +258,18 @@ public class ExtraDiamondDayService {
}, },
BigDecimal::add BigDecimal::add
)); ));
HashSet<Long> uids = new HashSet<>();
extraDiamondMap.entrySet().stream() extraDiamondMap.entrySet().stream()
.filter(entry -> entry.getValue().compareTo(BigDecimal.ZERO) > 0) .filter(entry -> entry.getValue().compareTo(BigDecimal.ZERO) > 0)
.forEach(entry -> { .forEach(entry -> {
Long roomUid = entry.getKey(); Long roomUid = entry.getKey();
BigDecimal extraDiamond = entry.getValue(); BigDecimal extraDiamond = entry.getValue();
userPurseService.addGold(roomUid, extraDiamond.doubleValue(), ROOM_EXTRA_GOLD); userPurseService.addGold(roomUid, extraDiamond.doubleValue(), ROOM_EXTRA_GOLD);
uids.add(roomUid);
}); });
String message = I18NMessageSourceUtil.getMessage(I18nAlertEnum.EXTRA_GUILD_MEMBER_MSG, partitionId);
this.sendMessage(message, uids);
} catch (Exception e) { } catch (Exception e) {
log.error("sendLastDayDiamondtask room error" , e); log.error("sendLastDayDiamondtask room error" , e);
} finally { } finally {
@@ -258,4 +278,11 @@ public class ExtraDiamondDayService {
} }
} }
} }
@Async
public void sendMessage(String msg, Set<Long> uids) {
uids.forEach(uid -> {
baseSendService.sendSystemMsg(uid.toString(), msg);
});
}
} }