幸运数字-结算-小秘书

This commit is contained in:
khalil
2025-05-09 17:27:22 +08:00
parent 9657f71c27
commit 0ba6505d2c
3 changed files with 51 additions and 0 deletions

View File

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

View File

@@ -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<LuckyNumberActInputRecord> luckyPlayerRecordList = playerRecordService.list(Wrappers.<LuckyNumberActInputRecord>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);
}
}

View File

@@ -26,6 +26,15 @@ public class LuckyNumberActTask {
}
}
@Scheduled(cron = "00 30 23 * * *", zone = "Asia/Manila")
public void sendTipEn() {
List<PartitionEnum> 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<PartitionEnum> 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<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ARAB, PartitionEnum.TURKEY);
for (PartitionEnum partitionEnum : partitionEnumList) {
String date = DateTimeUtil.getZonedTodayStr(partitionEnum.getZoneId());
service.sendJackpotTip(date, partitionEnum.getId());
}
}
}