fruitParty 和 christmas 活动时间自定义

This commit is contained in:
tianfeng 2025-12-26 19:05:19 +08:00
parent 52de5d6577
commit 769e7544d4
4 changed files with 40 additions and 7 deletions

View File

@ -50,6 +50,10 @@ public class RankingListQryExe {
public RankingListCO execute(RankingListQueryCmd cmd) {
// 获取枚举
RankingActivityType activityType = RankingActivityType.getByCode(cmd.getActivityType());
if (activityType == RankingActivityType.CHRISTMAS || activityType == RankingActivityType.FRUIT_PARTY) {
cmd.setCycleKey("20251222");
}
RankingCycleType cycleType = cmd.getCycleType() != null ? RankingCycleType.getByCode(cmd.getCycleType()) : RankingCycleType.WEEKLY;
ActivityConfigDTO activityConfigDTO = ResponseAssert.requiredSuccess(sysActivityConfigClient.effectiveActivityByTemplate(-1L, activityType.name()));

View File

@ -366,17 +366,22 @@ public class RankCountStrategy implements GiftStrategy {
return;
}
// 生成本周周一的cycleKey格式yyyyMMdd
String cycleKey = generateWeeklyCycleKey();
// 计算实际金额
Long actualAmount = getActualAmount(isLuckyGift, runningWater.getGiftValue().getActualAmount(), luckyGiftRatio);
// 遍历活动找到对应的type再累计对应活动类型的数据
for (ActivityConfig activity : ongoingActivities) {
String cycleKey = generateWeeklyCycleKey();
if (!matchActivityRule(runningWater, activity)) {
continue;
}
//圣诞节特殊处理
RankingActivityType type = RankingActivityType.getByConstantName(activity.getActivityType());
if (type == RankingActivityType.CHRISTMAS) {
cycleKey = "20251222";
}
// 将活动类型转换为RankingActivityType枚举
try {

View File

@ -42,6 +42,7 @@ import com.red.circle.other.inner.enums.config.EnumConfigKey;
import com.red.circle.other.inner.model.dto.user.UserProfileDTO;
import com.red.circle.tool.core.date.LocalDateTimeUtils;
import com.red.circle.tool.core.date.ZonedDateTimeAsiaRiyadhUtils;
import com.red.circle.tool.core.date.ZonedId;
import com.red.circle.tool.core.json.JacksonUtils;
import com.red.circle.tool.core.num.ArithmeticUtils;
import com.red.circle.tool.core.parse.DataTypeUtils;
@ -55,6 +56,10 @@ import com.red.circle.wallet.inner.model.dto.WalletReceiptResDTO;
import com.red.circle.wallet.inner.model.enums.GoldOrigin;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.chrono.ChronoZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@ -89,6 +94,8 @@ public class HotGameServiceImpl implements HotGameService {
private final RankingActivityService rankingActivityService;
@Value("${red-circle.game-rank.gameid}")
private String gameId;
@Value("${red-circle.game-rank.endTime}")
private String endTime;
@Override
public HotGameResponse<HotGameUserProfile> getUserProfile(HotGameUserProfileQuery query) {
@ -248,13 +255,17 @@ public class HotGameServiceImpl implements HotGameService {
}
private void incGameRankingTmpActivity(HotGameUserCoinUpdate request) {
if (ZonedDateTimeAsiaRiyadhUtils.now().isAfter(getFinishTime())) {
return;
}
if (gameId != null && gameId.equals(request.getGameId()) && request.getType() == 2 && request.getCoin() > 0) {
RankingDataUpdateCmd receiverCmd = new RankingDataUpdateCmd();
receiverCmd.setUserId(DataTypeUtils.toLong(request.getUid()));
receiverCmd.setUserSex(1);
receiverCmd.setActivityType(RankingActivityType.FRUIT_PARTY.getCode());
receiverCmd.setCycleType(RankingCycleType.WEEKLY.getCode());
receiverCmd.setCycleKey(ZonedDateTimeAsiaRiyadhUtils.nowWeekMondayToInt().toString());
receiverCmd.setCycleKey("20251222");
receiverCmd.setDimension(RankingDimension.GAME_WIN.getCode());
receiverCmd.setIncrementQuantity(request.getCoin());
receiverCmd.setBizNo(request.getGameId());
@ -263,6 +274,12 @@ public class HotGameServiceImpl implements HotGameService {
}
}
private ZonedDateTime getFinishTime() {
return ZonedDateTime.of(LocalDateTime.parse(endTime,
DateTimeFormatter.ISO_LOCAL_DATE_TIME),
ZonedId.ASIA_RIYADH.getZonedId());
}
private void incGameRankingRecord(HotGameUserCoinUpdate request, GameListConfig gameListConfig) {
if (request.getType() != 2 || gameListConfig == null || request.getCoin() <= 0) {
return;

View File

@ -2,12 +2,14 @@ import com.red.circle.framework.core.asserts.ResponseAssert;
import com.red.circle.other.infra.database.mongo.service.team.TeamBillCycleUtils;
import com.red.circle.other.inner.asserts.user.UserSpecialErrorCode;
import com.red.circle.tool.core.date.ZonedDateTimeAsiaRiyadhUtils;
import com.red.circle.tool.core.date.ZonedId;
import com.red.circle.tool.crypto.SecurityUtils;
import org.junit.Test;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import static com.red.circle.other.infra.database.mongo.service.team.TeamBillCycleUtils.getCalcBillBelong;
@ -16,12 +18,17 @@ public class ApiTest {
@Test
public void testPassword() {
String account = "445566";
System.out.println(account.matches("^\\d{8}$"));
System.out.println(account.matches("^\\d{2}$"));
System.out.println(ZonedDateTimeAsiaRiyadhUtils.now());
System.out.println(ZonedDateTime.of(LocalDateTime.parse("2026-01-03T00:00:00", DateTimeFormatter.ISO_LOCAL_DATE_TIME), ZonedId.ASIA_RIYADH.getZonedId()));
System.out.println(ZonedDateTimeAsiaRiyadhUtils.now().isAfter(getFinishTime()));
}
private ZonedDateTime getFinishTime() {
return ZonedDateTime.of(LocalDateTime.parse("2026-01-03T00:00:00", DateTimeFormatter.ISO_LOCAL_DATE_TIME), ZonedId.ASIA_RIYADH.getZonedId());
}
@Test
public void test() {
String[] strings = TeamBillCycleUtils.parseBillBelongToDateRange(20251001);