()
+ .eq(DealingsRecord::getLinkId, linkId)
+ .eq(DealingsRecord::getLinkUserId, session.getUserId())
+ .eq(DealingsRecord::getRegionId, session.getRegionId()));
+ if (exists > 0) {
+ return false;
+ }
+ User user = userService.findById(session.getUserId());
+ if (user == null) {
+ log.warn("[白嫖星çƒ] å¦é™¢åŠ©æŽ¨èµ›è£è€€æ¦œçŽ°é‡‘å¥–åŠ±è·³è¿‡ï¼Œç”¨æˆ·ä¸å˜åœ¨ userId={}, regionId={}, rankNo={}",
+ session.getUserId(), session.getRegionId(), rankNo);
+ return false;
+ }
+ user.setDepoBal((user.getDepoBal() == null ? BigDecimal.ZERO : user.getDepoBal()).add(amount));
+ userService.update(user);
+
+ DealingsRecord dealingsRecord = new DealingsRecord();
+ dealingsRecord.setDealingsWay(DealingsRecordConstant.TYPE_REMARK[9]);
+ dealingsRecord.setAmount(amount);
+ dealingsRecord.setDealingsTime(new Date());
+ dealingsRecord.setLinkId(linkId);
+ dealingsRecord.setLinkUserId(session.getUserId());
+ dealingsRecord.setRegionId(session.getRegionId());
+ dealingsRecord.setLinkType(DealingsRecordConstant.TYPE[0]);
+ dealingsRecord.setDealingsType(DealingsRecordConstant.DEALINGS_TYPE[0]);
+ dealingsRecord.setCreateBy(session.getUserId());
+ dealingsRecord.setRemark("å¦é™¢åŠ©æŽ¨èµ›è£è€€æ¦œç¬¬" + rankNo + "å现金奖励");
+ dealingsRecordService.save(dealingsRecord);
+ return true;
+ }
}
diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/PlanetDailyResetTask.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/PlanetDailyResetTask.java
index a7998a15..7fb81a03 100644
--- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/PlanetDailyResetTask.java
+++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/PlanetDailyResetTask.java
@@ -1,9 +1,6 @@
package cc.hiver.mall.quartz;
-import cc.hiver.mall.planet.constant.PlanetConstant;
-import cc.hiver.mall.planet.entity.PlanetBuffRecord;
import cc.hiver.mall.planet.entity.PlanetTicket;
-import cc.hiver.mall.planet.mapper.PlanetBuffRecordMapper;
import cc.hiver.mall.planet.mapper.PlanetTicketMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -19,9 +16,8 @@ import java.util.List;
* 白嫖星çƒ-æ¯æ—¥é‡ç½®å®šæ—¶ä»»åŠ¡
*
* æ¯æ—¥ 00:05 执行:
- * 1. 过期BUFF置为失效状æ€
- * 2. é‡ç½®ä»Šæ—¥è¿½æ•/被追计数(展示用)
- * 3. 更新连ç»éœ¸æ¦œå¤©æ•°
+ * 1. é‡ç½®ä»Šæ—¥è¿½æ•/被追计数(展示用)
+ * 2. 更新连ç»éœ¸æ¦œå¤©æ•°
*
* @author hiver
*/
@@ -32,26 +28,16 @@ public class PlanetDailyResetTask {
@Autowired
private PlanetTicketMapper ticketMapper;
- @Autowired
- private PlanetBuffRecordMapper buffRecordMapper;
-
@Scheduled(cron = "0 5 0 * * ?")
public void dailyReset() {
try {
- // 1. 过期BUFF
- final LambdaUpdateWrapper bw = new LambdaUpdateWrapper<>();
- bw.eq(PlanetBuffRecord::getStatus, PlanetConstant.BUFF_STATUS_ACTIVE)
- .lt(PlanetBuffRecord::getEndTime, new Date())
- .set(PlanetBuffRecord::getStatus, PlanetConstant.BUFF_STATUS_EXPIRED);
- buffRecordMapper.update(null, bw);
-
- // 2. é‡ç½®æ¯æ—¥è®¡æ•°(å±•ç¤ºå—æ®µ)
+ // 1. é‡ç½®æ¯æ—¥è®¡æ•°(å±•ç¤ºå—æ®µ)
final LambdaUpdateWrapper tw = new LambdaUpdateWrapper<>();
tw.set(PlanetTicket::getHuntCountToday, 0)
.set(PlanetTicket::getHuntedSuccessToday, 0);
ticketMapper.update(null, tw);
- // 3. 更新连ç»éœ¸æ¦œå¤©æ•°ï¼šä»åœ¨TOP10的用户 keepDays+1,å¦åˆ™æ¸…é›¶
+ // 2. 更新连ç»éœ¸æ¦œå¤©æ•°ï¼šä»åœ¨TOP10的用户 keepDays+1,å¦åˆ™æ¸…é›¶
updateRankKeepDays();
log.info("[白嫖星çƒ] æ¯æ—¥é‡ç½®ä»»åŠ¡å®Œæˆ");
} catch (Exception e) {
diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/PlanetDrawTask.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/PlanetDrawTask.java
index 5775a0fc..c64efe29 100644
--- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/PlanetDrawTask.java
+++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/PlanetDrawTask.java
@@ -7,8 +7,8 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
- * 白嫖星çƒ-到点开奖定时任务
- * æ¯åˆ†é’Ÿæ‰«æåˆ°è¾¾å¼€å¥–æ—¶é—´ä¸”æœªå¼€å¥–çš„å¥–æ± å¹¶æ‰§è¡ŒåŠ æƒå¼€å¥–
+ * 白嫖星çƒ-æ¯æ—¥çŽ°é‡‘å¼€å¥–å®šæ—¶ä»»åŠ¡
+ * æ¯å¤© 22:00 æŒ‰æ ¡åŒºæ‰«æåˆ°è¾¾å¼€å¥–æ—¶é—´ä¸”æœªå¼€å¥–çš„å¥–æ± å¹¶æ‰§è¡ŒåŠ æƒå¼€å¥–
*
* @author hiver
*/
@@ -19,7 +19,7 @@ public class PlanetDrawTask {
@Autowired
private PlanetDrawService drawService;
- @Scheduled(cron = "0 * * * * ?")
+ @Scheduled(cron = "0 0 22 * * ?")
public void drawDuePools() {
try {
final int count = drawService.drawDuePools();
diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/PlanetOperateSettleTask.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/PlanetOperateSettleTask.java
index 5f0d60f5..87dc5f62 100644
--- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/PlanetOperateSettleTask.java
+++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/PlanetOperateSettleTask.java
@@ -1,9 +1,12 @@
package cc.hiver.mall.quartz;
import cc.hiver.mall.planet.constant.PlanetConstant;
-import cc.hiver.mall.planet.entity.*;
-import cc.hiver.mall.planet.mapper.*;
-import cc.hiver.mall.planet.service.PlanetTicketService;
+import cc.hiver.mall.planet.entity.PlanetEconomyAudit;
+import cc.hiver.mall.planet.entity.PlanetTicket;
+import cc.hiver.mall.planet.entity.PlanetTicketLog;
+import cc.hiver.mall.planet.mapper.PlanetEconomyAuditMapper;
+import cc.hiver.mall.planet.mapper.PlanetTicketLogMapper;
+import cc.hiver.mall.planet.mapper.PlanetTicketMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -19,136 +22,19 @@ import java.util.stream.Collectors;
@Component
public class PlanetOperateSettleTask {
- @Autowired
- private PlanetLandmarkRoundMapper landmarkRoundMapper;
- @Autowired
- private PlanetLandmarkBidMapper landmarkBidMapper;
- @Autowired
- private PlanetLandmarkConfigMapper landmarkConfigMapper;
- @Autowired
- private PlanetLandmarkRewardLogMapper landmarkRewardLogMapper;
@Autowired
private PlanetEconomyAuditMapper economyAuditMapper;
@Autowired
private PlanetTicketLogMapper ticketLogMapper;
@Autowired
private PlanetTicketMapper ticketMapper;
- @Autowired
- private PlanetTicketService ticketService;
private static String genId() {
return UUID.randomUUID().toString().replace("-", "");
}
/**
- * æ¯æ™š22点åŽç»“ç®—æ ¡å›åœ°æ ‡ã€‚失败åªè®°å½•日志,é¿å…å½±å“开奖主æµç¨‹ã€‚
- */
- @Scheduled(cron = "0 3 22 * * ?")
- @Transactional(rollbackFor = Exception.class)
- public void settleLandmarks() {
- final LambdaQueryWrapper qw = new LambdaQueryWrapper<>();
- qw.eq(PlanetLandmarkRound::getStatus, PlanetConstant.LANDMARK_ROUND_RUNNING)
- .le(PlanetLandmarkRound::getRoundDate, LocalDate.now());
- final List rounds = landmarkRoundMapper.selectList(qw);
- for (PlanetLandmarkRound round : rounds) {
- try {
- settleRound(round);
- } catch (Exception e) {
- log.error("[白嫖星çƒ] åœ°æ ‡ç»“ç®—å¤±è´¥ roundId={}, {}", round.getId(), e.getMessage(), e);
- }
- }
- if (!rounds.isEmpty()) {
- log.info("[白嫖星çƒ] åœ°æ ‡ç»“ç®—å®Œæˆ roundCount={}", rounds.size());
- }
- }
-
- private void settleRound(PlanetLandmarkRound round) {
- final PlanetLandmarkConfig landmark = landmarkConfigMapper.selectById(round.getLandmarkId());
- if (landmark == null) {
- round.setStatus(PlanetConstant.LANDMARK_ROUND_SETTLED);
- round.setSettleTime(new Date());
- round.setUpdateTime(new Date());
- landmarkRoundMapper.updateById(round);
- return;
- }
- final LambdaQueryWrapper bq = new LambdaQueryWrapper<>();
- bq.eq(PlanetLandmarkBid::getRoundId, round.getId()).eq(PlanetLandmarkBid::getStatus, 0);
- final List bids = landmarkBidMapper.selectList(bq);
- if (bids == null || bids.isEmpty()) {
- round.setStatus(PlanetConstant.LANDMARK_ROUND_SETTLED);
- round.setSettleTime(new Date());
- round.setUpdateTime(new Date());
- landmarkRoundMapper.updateById(round);
- return;
- }
- final Map userInvest = bids.stream().collect(Collectors.groupingBy(
- PlanetLandmarkBid::getUserId, Collectors.summingInt(b -> b.getInvestTickets() == null ? 0 : b.getInvestTickets())));
- final String winnerUserId = userInvest.entrySet().stream()
- .max(Comparator.comparingInt(Map.Entry::getValue))
- .map(Map.Entry::getKey).orElse(null);
- final int winnerContribution = winnerUserId == null ? 0 : userInvest.get(winnerUserId);
- int totalBurn = 0;
- for (PlanetLandmarkBid bid : bids) {
- final boolean winner = winnerUserId != null && winnerUserId.equals(bid.getUserId());
- bid.setIsWinner(winner ? 1 : 0);
- bid.setStatus(1);
- if (winner) {
- bid.setRefundTickets(0);
- bid.setBurnTickets(bid.getInvestTickets());
- } else {
- final int invest = bid.getInvestTickets() == null ? 0 : bid.getInvestTickets();
- final int burn = Math.min(1, invest);
- final int refund = Math.max(0, invest - burn);
- bid.setBurnTickets(burn);
- bid.setRefundTickets(refund);
- totalBurn += burn;
- if (refund > 0) {
- ticketService.addTicketsWithoutBuff(bid.getUserId(), bid.getRegionId(), refund,
- PlanetConstant.TICKET_TYPE_LANDMARK_REFUND, bid.getId(), "æ ¡å›åœ°æ ‡æœªå 领退回");
- }
- }
- bid.setUpdateTime(new Date());
- landmarkBidMapper.updateById(bid);
- }
- grantLandmarkReward(round, landmark, winnerUserId);
- round.setOwnerUserId(winnerUserId);
- round.setOwnerContribution(winnerContribution);
- round.setTotalBurn(totalBurn);
- round.setStatus(PlanetConstant.LANDMARK_ROUND_SETTLED);
- round.setSettleTime(new Date());
- round.setUpdateTime(new Date());
- landmarkRoundMapper.updateById(round);
- }
-
- private void grantLandmarkReward(PlanetLandmarkRound round, PlanetLandmarkConfig landmark, String winnerUserId) {
- if (winnerUserId == null || !"ticket".equals(landmark.getBenefitType())) {
- return;
- }
- final int reward = landmark.getBenefitValue() == null ? 0 : landmark.getBenefitValue().intValue();
- if (reward <= 0) {
- return;
- }
- final String sourceId = round.getId() + "_reward";
- final int added = ticketService.addTicketsWithoutBuff(winnerUserId, round.getRegionId(), reward,
- PlanetConstant.TICKET_TYPE_LANDMARK_REWARD, sourceId, "å é¢†æ ¡å›åœ°æ ‡æ”¶ç›Šï¼š" + landmark.getName());
- if (added > 0) {
- final PlanetLandmarkRewardLog log = new PlanetLandmarkRewardLog();
- log.setId(genId());
- log.setRoundId(round.getId());
- log.setLandmarkId(landmark.getId());
- log.setRegionId(round.getRegionId());
- log.setUserId(winnerUserId);
- log.setBenefitType(landmark.getBenefitType());
- log.setBenefitValue(landmark.getBenefitValue());
- log.setTicketAmount(reward);
- log.setSourceId(sourceId);
- log.setCreateTime(new Date());
- landmarkRewardLogMapper.insert(log);
- }
- }
-
- /**
- * æ¯æ—¥ç»æµŽå®¡è®¡ï¼šç”¨åˆ¸æµæ°´åšåŒºåŸŸå‡€å¢ž/回收统计,å‘çŽ°å‡€å¢žè¿‡é«˜æ—¶æ ‡è®°é¢„è¦ã€‚
+ * æ¯æ—¥ç»æµŽå®¡è®¡ï¼šä¿ç•™å½“å‰ä»åœ¨ä½¿ç”¨çš„åˆ¸æ ‘ã€é˜²å¾¡å¡”ã€å¥–æ± ç‰åˆ¸æµæ°´ç»Ÿè®¡ã€‚
*/
@Scheduled(cron = "0 20 0 * * ?")
@Transactional(rollbackFor = Exception.class)
@@ -175,7 +61,6 @@ public class PlanetOperateSettleTask {
int burnTickets = 0;
int plantOutput = 0;
int searchTransfer = 0;
- int landmarkBurn = 0;
int upgradeBurn = 0;
int poolBurn = 0;
for (PlanetTicketLog log : logs) {
@@ -188,8 +73,7 @@ public class PlanetOperateSettleTask {
final String type = log.getType();
if (PlanetConstant.TICKET_TYPE_TREE_HARVEST.equals(type)) plantOutput += Math.max(0, change);
if (PlanetConstant.TICKET_TYPE_SEARCH.equals(type)) searchTransfer += Math.max(0, change);
- if (PlanetConstant.TICKET_TYPE_LANDMARK_BID.equals(type)) landmarkBurn += Math.max(0, -change);
- if (PlanetConstant.TICKET_TYPE_WAREHOUSE_UPGRADE.equals(type) || PlanetConstant.TICKET_TYPE_TOWER_UPGRADE.equals(type)) upgradeBurn += Math.max(0, -change);
+ if (PlanetConstant.TICKET_TYPE_TOWER_UPGRADE.equals(type)) upgradeBurn += Math.max(0, -change);
if (PlanetConstant.TICKET_TYPE_DRAW.equals(type)) poolBurn += Math.max(0, -change);
}
final Long activeUsers = ticketMapper.selectCount(new LambdaQueryWrapper()
@@ -207,7 +91,7 @@ public class PlanetOperateSettleTask {
audit.setNetTickets(newTickets - burnTickets);
audit.setPlantOutput(plantOutput);
audit.setSearchTransfer(searchTransfer);
- audit.setLandmarkBurn(landmarkBurn);
+ audit.setLandmarkBurn(0);
audit.setUpgradeBurn(upgradeBurn);
audit.setPoolBurn(poolBurn);
audit.setActiveUserCount(activeUsers == null ? 0 : activeUsers.intValue());