diff --git a/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/I18nAlertEnum.java b/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/I18nAlertEnum.java index 4e10ce491..65ecec6a2 100644 --- a/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/I18nAlertEnum.java +++ b/accompany-base/accompany-core/src/main/java/com/accompany/core/enumeration/I18nAlertEnum.java @@ -319,6 +319,9 @@ public enum I18nAlertEnum { GOLD_BEAN_NAME("Gold Bean"), DIAMOND_NAME("DIAMOND"), GUILD_CREATE_TASK_MSG("你在公会的卓越表现,获得了精美奖励。快去背包看看吧!"), + EXTRA_GUILD_MSG("你的钻石奖励已经发放,请注意查收。"), + EXTRA_GUILD_MEMBER_MSG("你的钻石奖励已经发放,请注意查收。"), + EXTRA_ROOM_MSG("你的钻石奖励已经发放,请注意查收。"), ; private final String defaultStr; diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/event/listener/SuperLuckyGiftDiamondIncomeListener.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/event/listener/SuperLuckyGiftDiamondIncomeListener.java index eeaafb8ea..ca5838bec 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/event/listener/SuperLuckyGiftDiamondIncomeListener.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/event/listener/SuperLuckyGiftDiamondIncomeListener.java @@ -52,6 +52,7 @@ public class SuperLuckyGiftDiamondIncomeListener implements ApplicationListener< SuperLuckyGiftDiamondIncomeMessage message = (SuperLuckyGiftDiamondIncomeMessage) event.getSource(); Long receiverUid = message.getReceiverUid(); Long roomUid = message.getRoomUid(); + Long senderUid = message.getSenderUid(); 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) { 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); } } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildsoviet/ExtraDiamondDayService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildsoviet/ExtraDiamondDayService.java index e9d79bda9..1c69ff1a3 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildsoviet/ExtraDiamondDayService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guildsoviet/ExtraDiamondDayService.java @@ -5,14 +5,17 @@ import com.accompany.business.model.guild.Guild; import com.accompany.business.model.guild.GuildMember; import com.accompany.business.model.guildsoviet.GuildExtraDiamondDay; 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.GuildService; import com.accompany.business.service.purse.UserPurseService; import com.accompany.common.status.BusiStatus; import com.accompany.common.utils.DateTimeUtil; +import com.accompany.core.enumeration.I18nAlertEnum; import com.accompany.core.exception.ServiceException; import com.accompany.core.model.PartitionInfo; import com.accompany.core.service.SysConfService; +import com.accompany.core.util.I18NMessageSourceUtil; import com.accompany.core.util.StringUtils; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; @@ -20,6 +23,7 @@ import org.apache.commons.collections.CollectionUtils; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -48,6 +52,8 @@ public class ExtraDiamondDayService { private RedissonClient redissonClient; @Autowired private GuildMemberService guildMemberService; + @Autowired + private BaseSendService baseSendService; public void updateGuildExtraDiamond(GuildMember guildMember, String cycleDate, String statDate, Double normalDiamondNum, Double luckyDiamondNum, Date time) { @@ -130,16 +136,21 @@ public class ExtraDiamondDayService { return; } boolean updateBatchById = guildExtraDiamondDayService.updateBatchById(guildExtraDiamondDays); - if (updateBatchById) { - for (GuildExtraDiamondDay extraDiamondDay : guildExtraDiamondDays) { - if (extraDiamondDay.getAnchorExtraNum().compareTo(BigDecimal.ZERO) > 0) { - userPurseService.addGold(extraDiamondDay.getUid(), extraDiamondDay.getAnchorExtraNum().doubleValue(), ANCHOR_EXTRA_GOLD); - } - if (extraDiamondDay.getAnchorExtraLuckyNum().compareTo(BigDecimal.ZERO) > 0) { - userPurseService.addGold(extraDiamondDay.getUid(), extraDiamondDay.getAnchorExtraLuckyNum().doubleValue(), ANCHOR_EXTRA_LUCKY_GOLD); - } + if (!updateBatchById) { + } + HashSet uids = new HashSet<>(); + for (GuildExtraDiamondDay extraDiamondDay : guildExtraDiamondDays) { + if (extraDiamondDay.getAnchorExtraNum().compareTo(BigDecimal.ZERO) > 0) { + userPurseService.addGold(extraDiamondDay.getUid(), extraDiamondDay.getAnchorExtraNum().doubleValue(), ANCHOR_EXTRA_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) { log.error("sendGuildMemberExtraDiamondTask anchor error" , e); @@ -193,11 +204,15 @@ public class ExtraDiamondDayService { ownerExtra = ownerExtra == null ? add : ownerExtra.add(add); ownerExtraMap.put(ownerUid, ownerExtra); } + HashSet uids = new HashSet<>(); for (Map.Entry decimalEntry : ownerExtraMap.entrySet()) { if (decimalEntry.getValue().compareTo(BigDecimal.ZERO) > 0) { 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) { log.error("sendGuildExtraDiamondTask anchor error" , e); @@ -243,13 +258,18 @@ public class ExtraDiamondDayService { }, BigDecimal::add )); + HashSet uids = new HashSet<>(); extraDiamondMap.entrySet().stream() .filter(entry -> entry.getValue().compareTo(BigDecimal.ZERO) > 0) .forEach(entry -> { Long roomUid = entry.getKey(); BigDecimal extraDiamond = entry.getValue(); 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) { log.error("sendLastDayDiamondtask room error" , e); } finally { @@ -258,4 +278,11 @@ public class ExtraDiamondDayService { } } } + + @Async + public void sendMessage(String msg, Set uids) { + uids.forEach(uid -> { + baseSendService.sendSystemMsg(uid.toString(), msg); + }); + } }