From 0ba6505d2c4ba0e19ec410b201f51a0cee3b5a97 Mon Sep 17 00:00:00 2001 From: khalil Date: Fri, 9 May 2025 17:27:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B9=B8=E8=BF=90=E6=95=B0=E5=AD=97-=E7=BB=93?= =?UTF-8?q?=E7=AE=97-=E5=B0=8F=E7=A7=98=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/enumeration/I18nAlertEnum.java | 3 ++ .../activity/LuckyNumberActService.java | 30 +++++++++++++++++++ .../task/activity/LuckyNumberActTask.java | 18 +++++++++++ 3 files changed, 51 insertions(+) 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 20ef77696..1ced8d84b 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 @@ -296,6 +296,9 @@ public enum I18nAlertEnum { GUILD_SETTLEMENT_REWARD_TIP("本周期的公会长钻石薪资 {0} 已经发放到你的钱包,请注意查收~"), + LUCKY_NUMBER_HAS_JACKPOT_TIP("你在幸运数字活动中中奖啦!快去领取你的金币!"), + LUCKY_NUMBER_GET_JACKPOT_TIP("恭喜你在幸运数字活动中获得了{0}金币。"), + ; private final String defaultStr; diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/activity/LuckyNumberActService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/activity/LuckyNumberActService.java index 00c650be3..4f87ee08f 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/activity/LuckyNumberActService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/activity/LuckyNumberActService.java @@ -4,6 +4,7 @@ package com.accompany.business.service.activity; import com.accompany.business.dto.activity.LuckyNumberActConfig; import com.accompany.business.model.activity.LuckyNumberActInputRecord; import com.accompany.business.model.activity.LuckyNumberActRound; +import com.accompany.business.service.SendSysMsgService; import com.accompany.business.service.purse.UserPurseService; import com.accompany.business.service.record.BillRecordService; import com.accompany.business.service.user.UsersService; @@ -16,10 +17,12 @@ import com.accompany.common.status.BusiStatus; import com.accompany.common.utils.DateTimeUtil; import com.accompany.common.utils.RandomUtil; import com.accompany.core.enumeration.BillObjTypeEnum; +import com.accompany.core.enumeration.I18nAlertEnum; import com.accompany.core.enumeration.PartitionEnum; import com.accompany.core.exception.ServiceException; import com.accompany.core.model.Users; import com.accompany.core.service.SysConfService; +import com.accompany.core.util.I18NMessageSourceUtil; import com.accompany.core.vo.UserVo; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -27,6 +30,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -55,6 +59,8 @@ public class LuckyNumberActService { private LuckyNumberActRoundService roundService; @Autowired private LuckyNumberActPlayerRecordService playerRecordService; + @Autowired + private SendSysMsgService sendSysMsgService; public LuckyNumberActRoundVo getRoundVo(Long uid) { Users u = usersService.getNotNullUsersByUid(uid); @@ -195,6 +201,9 @@ public class LuckyNumberActService { String objId = String.join("_", date, uid.toString(), u.getPartitionId().toString()); billRecordService.insertGeneralBillRecord(uid, objId, BillObjTypeEnum.LUCKY_NUM_JACKPOT_OUTPUT_GOLD, output, userPurse); }); + + String tip = I18NMessageSourceUtil.getMessage(I18nAlertEnum.LUCKY_NUMBER_GET_JACKPOT_TIP, new Object[]{output}, u.getPartitionId()); + sendSysMsgService.sendPersonTextMsg(uid, tip); } public LuckyNumberActRoundHistoryDetailVo getHistoryRoundDetail(Long uid, String date) { @@ -259,6 +268,7 @@ public class LuckyNumberActService { return vo; } + @Async public void settlement(String date, Integer partitionId) { LuckyNumberActConfig config = getConfig(); PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId); @@ -352,6 +362,25 @@ public class LuckyNumberActService { roundService.updateJackpot(nextRoundDate, partitionId, round.getJackpot()); } + @Async + public void sendJackpotTip(String date, int partitionId) { + + LuckyNumberActRound round = roundService.getOrDefault(date, partitionId); + if (null != round.getLuckyNumber()){ + throw new ServiceException(BusiStatus.SERVERBUSY); + } + + List luckyPlayerRecordList = playerRecordService.list(Wrappers.lambdaQuery() + .eq(LuckyNumberActInputRecord::getDate, date) + .eq(LuckyNumberActInputRecord::getPartitionId, partitionId) + .eq(LuckyNumberActInputRecord::getLuckyStatus, Constant.StatusV2.valid)); + + String tip = I18NMessageSourceUtil.getMessage(I18nAlertEnum.LUCKY_NUMBER_HAS_JACKPOT_TIP, partitionId); + for (LuckyNumberActInputRecord record : luckyPlayerRecordList){ + sendSysMsgService.sendPersonTextMsg(record.getUid(), tip); + } + } + private LuckyNumberActConfig getConfig() { String configStr = sysConfService.getSysConfValueById(Constant.SysConfId.LUCKY_NUMBER_ACT_CONFIG); if (!StringUtils.hasText(configStr)){ @@ -359,4 +388,5 @@ public class LuckyNumberActService { } return JSON.parseObject(configStr, LuckyNumberActConfig.class); } + } diff --git a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/activity/LuckyNumberActTask.java b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/activity/LuckyNumberActTask.java index 573c382d3..f43f65328 100644 --- a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/activity/LuckyNumberActTask.java +++ b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/activity/LuckyNumberActTask.java @@ -26,6 +26,15 @@ public class LuckyNumberActTask { } } + @Scheduled(cron = "00 30 23 * * *", zone = "Asia/Manila") + public void sendTipEn() { + List partitionEnumList = List.of(PartitionEnum.ENGLISH, PartitionEnum.ENGLISH2); + for (PartitionEnum partitionEnum : partitionEnumList) { + String date = DateTimeUtil.getZonedTodayStr(partitionEnum.getZoneId()); + service.sendJackpotTip(date, partitionEnum.getId()); + } + } + @Scheduled(cron = "30 35 23 * * *", zone = "Asia/Riyadh") public void settlementAr() { List partitionEnumList = List.of(PartitionEnum.ARAB, PartitionEnum.TURKEY); @@ -35,4 +44,13 @@ public class LuckyNumberActTask { } } + @Scheduled(cron = "00 30 23 * * *", zone = "Asia/Riyadh") + public void sendTipAr() { + List partitionEnumList = List.of(PartitionEnum.ARAB, PartitionEnum.TURKEY); + for (PartitionEnum partitionEnum : partitionEnumList) { + String date = DateTimeUtil.getZonedTodayStr(partitionEnum.getZoneId()); + service.sendJackpotTip(date, partitionEnum.getId()); + } + } + }