|
|
@@ -1,5 +1,7 @@
|
|
|
|
package com.accompany.business.ramadan.service;
|
|
|
|
package com.accompany.business.ramadan.service;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.accompany.business.activity.model.RamadanGiftSendTopReward;
|
|
|
|
|
|
|
|
import com.accompany.business.activity.service.RamadanGiftSendTopRewardService;
|
|
|
|
import com.accompany.business.constant.activity.ActivityH5RedisKey;
|
|
|
|
import com.accompany.business.constant.activity.ActivityH5RedisKey;
|
|
|
|
import com.accompany.business.constant.activity.ActivityType;
|
|
|
|
import com.accompany.business.constant.activity.ActivityType;
|
|
|
|
import com.accompany.business.ramadan.constant.RamadanConstant;
|
|
|
|
import com.accompany.business.ramadan.constant.RamadanConstant;
|
|
|
@@ -66,6 +68,9 @@ public class RamadanGiftSendService {
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private BillRecordService billRecordService;
|
|
|
|
private BillRecordService billRecordService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private RamadanGiftSendTopRewardService ramadanGiftSendTopRewardService;
|
|
|
|
|
|
|
|
|
|
|
|
private static final String lastSendTimeAllFlag = "ALL";
|
|
|
|
private static final String lastSendTimeAllFlag = "ALL";
|
|
|
|
|
|
|
|
|
|
|
|
public void calRamadanData(Byte giftType, Long goldNum, Long sendUid, Integer partitionId, Long luckyGiftGoldNum) {
|
|
|
|
public void calRamadanData(Byte giftType, Long goldNum, Long sendUid, Integer partitionId, Long luckyGiftGoldNum) {
|
|
|
@@ -160,7 +165,8 @@ public class RamadanGiftSendService {
|
|
|
|
activityH5RankVo.setStartTimeStr(config.getStartTime().format(DateTimeUtil.datetimeFormatter));
|
|
|
|
activityH5RankVo.setStartTimeStr(config.getStartTime().format(DateTimeUtil.datetimeFormatter));
|
|
|
|
activityH5RankVo.setEndTimeStr(config.getEndTime().format(DateTimeUtil.datetimeFormatter));
|
|
|
|
activityH5RankVo.setEndTimeStr(config.getEndTime().format(DateTimeUtil.datetimeFormatter));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
activityH5RankVo.setMyRank(new ActivityH5UserVo());
|
|
|
|
|
|
|
|
activityH5RankVo.setRankList(new ArrayList<>());
|
|
|
|
calList(activityH5RankVo, pubUid, activityType, redisKeyAppend, lastSendTimeMap, size);
|
|
|
|
calList(activityH5RankVo, pubUid, activityType, redisKeyAppend, lastSendTimeMap, size);
|
|
|
|
|
|
|
|
|
|
|
|
return BusiResult.success(ramadanRankVo);
|
|
|
|
return BusiResult.success(ramadanRankVo);
|
|
|
@@ -218,27 +224,34 @@ public class RamadanGiftSendService {
|
|
|
|
BigDecimal topRanTenGoldNum =
|
|
|
|
BigDecimal topRanTenGoldNum =
|
|
|
|
BigDecimal.valueOf(rankUserVos.stream().collect(Collectors.summingDouble(ActivityH5UserVo::getTotalNum)));
|
|
|
|
BigDecimal.valueOf(rankUserVos.stream().collect(Collectors.summingDouble(ActivityH5UserVo::getTotalNum)));
|
|
|
|
Map<Long, BigDecimal> rankUserGoldRateMap = new HashMap<>();
|
|
|
|
Map<Long, BigDecimal> rankUserGoldRateMap = new HashMap<>();
|
|
|
|
|
|
|
|
Map<Long, Integer> rankMap = new HashMap<>();
|
|
|
|
|
|
|
|
Map<Long, Double> sendGoldMap = new HashMap<>();
|
|
|
|
|
|
|
|
int rank = 1;
|
|
|
|
for (ActivityH5UserVo rankUserVo : rankUserVos) {
|
|
|
|
for (ActivityH5UserVo rankUserVo : rankUserVos) {
|
|
|
|
rankUserGoldRateMap.put(rankUserVo.getUid(), BigDecimal.valueOf(rankUserVo.getTotalNum()).divide(topRanTenGoldNum, 2, RoundingMode.DOWN));
|
|
|
|
rankUserGoldRateMap.put(rankUserVo.getUid(), BigDecimal.valueOf(rankUserVo.getTotalNum()).divide(topRanTenGoldNum, 2, RoundingMode.DOWN));
|
|
|
|
|
|
|
|
rankMap.put(rankUserVo.getUid(), rank++);
|
|
|
|
|
|
|
|
sendGoldMap.put(rankUserVo.getUid(), rankUserVo.getTotalNum());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
log.info("RamadanGiftSendService.dayTask-partitionId-{}-lastDayFormat{}-yesterdayPoolGold-{},, topRanTenGoldNum:{},rankUserGoldRateMap:{}",
|
|
|
|
log.info("RamadanGiftSendService.dayTask-partitionId-{}-lastDayFormat{}-yesterdayPoolGold-{},, topRanTenGoldNum:{},rankUserGoldRateMap:{}",
|
|
|
|
partitionId, lastDayFormat,yesterdayPoolGold, topRanTenGoldNum, JSONObject.toJSONString(rankUserGoldRateMap));
|
|
|
|
partitionId, lastDayFormat,yesterdayPoolGold, topRanTenGoldNum, JSONObject.toJSONString(rankUserGoldRateMap));
|
|
|
|
Map<Long, BigDecimal> sendMap = new HashMap<>();
|
|
|
|
|
|
|
|
BigDecimal bigDecimalYesterdayPoolGold = BigDecimal.valueOf(yesterdayPoolGold);
|
|
|
|
BigDecimal bigDecimalYesterdayPoolGold = BigDecimal.valueOf(yesterdayPoolGold);
|
|
|
|
BigDecimal needSendGold = BigDecimal.ZERO;
|
|
|
|
BigDecimal needSendGold = BigDecimal.ZERO;
|
|
|
|
|
|
|
|
Map<Long, BigDecimal> sendMap = new HashMap<>();
|
|
|
|
for (Map.Entry<Long, BigDecimal> decimalEntry : rankUserGoldRateMap.entrySet()) {
|
|
|
|
for (Map.Entry<Long, BigDecimal> decimalEntry : rankUserGoldRateMap.entrySet()) {
|
|
|
|
BigDecimal addGold = decimalEntry.getValue().multiply(bigDecimalYesterdayPoolGold).setScale(0, RoundingMode.DOWN);
|
|
|
|
BigDecimal addGold = decimalEntry.getValue().multiply(bigDecimalYesterdayPoolGold).setScale(0, RoundingMode.DOWN);
|
|
|
|
if (addGold.doubleValue() == 0) {
|
|
|
|
if (addGold.doubleValue() == 0) {
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
sendMap.put(decimalEntry.getKey(), addGold);
|
|
|
|
sendMap.put(decimalEntry.getKey(), addGold);
|
|
|
|
needSendGold = needSendGold.add(needSendGold.add(addGold));
|
|
|
|
needSendGold = needSendGold.add(addGold);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (needSendGold.doubleValue() > yesterdayPoolGold) {
|
|
|
|
if (needSendGold.doubleValue() > yesterdayPoolGold) {
|
|
|
|
log.info("RamadanGiftSendService.dayTask-错误计算,不发奖励-partitionId-{}-lastDayFormat{}-yesterdayPoolGold-{},, topRanTenGoldNum:{},sendMap:{}",
|
|
|
|
log.info("RamadanGiftSendService.dayTask-错误计算,不发奖励-partitionId-{}-lastDayFormat{}-yesterdayPoolGold-{},needSendGold:{}, topRanTenGoldNum:{},sendMap:{}",
|
|
|
|
partitionId, lastDayFormat,yesterdayPoolGold, topRanTenGoldNum, JSONObject.toJSONString(sendMap));
|
|
|
|
partitionId, lastDayFormat,yesterdayPoolGold, needSendGold,topRanTenGoldNum, JSONObject.toJSONString(sendMap));
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
List<RamadanGiftSendTopReward> records = new ArrayList<>();
|
|
|
|
|
|
|
|
String format = zonedDateTime.minusDays(1).format(DateTimeUtil.dateFormatter);
|
|
|
|
for (Map.Entry<Long, BigDecimal> decimalEntry : sendMap.entrySet()) {
|
|
|
|
for (Map.Entry<Long, BigDecimal> decimalEntry : sendMap.entrySet()) {
|
|
|
|
Long uid = decimalEntry.getKey();
|
|
|
|
Long uid = decimalEntry.getKey();
|
|
|
|
RSet<Long> rSet = activityRankRuleService.activityRewardSignLong(RAMADAN_GIFT_SEND_GOLD_POOL, lastDayFormat, partitionId);
|
|
|
|
RSet<Long> rSet = activityRankRuleService.activityRewardSignLong(RAMADAN_GIFT_SEND_GOLD_POOL, lastDayFormat, partitionId);
|
|
|
@@ -253,6 +266,20 @@ public class RamadanGiftSendService {
|
|
|
|
String objId = RAMADAN_GIFT_SEND_GOLD_POOL.getName() + lastDayFormat + entryValue;
|
|
|
|
String objId = RAMADAN_GIFT_SEND_GOLD_POOL.getName() + lastDayFormat + entryValue;
|
|
|
|
userPurseService.addDiamond(uid, entryValue.doubleValue(), BillObjTypeEnum.RAMADAN_GIFT_SEND_RANK_GOLD,
|
|
|
|
userPurseService.addDiamond(uid, entryValue.doubleValue(), BillObjTypeEnum.RAMADAN_GIFT_SEND_RANK_GOLD,
|
|
|
|
(up)-> billRecordService.insertGeneralBillRecord(uid, objId, BillObjTypeEnum.RAMADAN_GIFT_SEND_RANK_GOLD, entryValue.doubleValue(), up));
|
|
|
|
(up)-> billRecordService.insertGeneralBillRecord(uid, objId, BillObjTypeEnum.RAMADAN_GIFT_SEND_RANK_GOLD, entryValue.doubleValue(), up));
|
|
|
|
|
|
|
|
RamadanGiftSendTopReward reward = new RamadanGiftSendTopReward();
|
|
|
|
|
|
|
|
reward.setRewardDate(format);
|
|
|
|
|
|
|
|
reward.setUid(uid);
|
|
|
|
|
|
|
|
reward.setRankTop(rankMap.get(uid));
|
|
|
|
|
|
|
|
reward.setGoldPool(bigDecimalYesterdayPoolGold.doubleValue());
|
|
|
|
|
|
|
|
reward.setSendGoldNum(sendGoldMap.get(uid));
|
|
|
|
|
|
|
|
reward.setTopGoldTotal(topRanTenGoldNum.doubleValue());
|
|
|
|
|
|
|
|
BigDecimal bigDecimal = rankUserGoldRateMap.get(uid);
|
|
|
|
|
|
|
|
if (bigDecimal != null) {
|
|
|
|
|
|
|
|
reward.setRewardGoldRate(bigDecimal.doubleValue());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
reward.setRewardGold(entryValue.doubleValue());
|
|
|
|
|
|
|
|
reward.setCreateTime(nowDate);
|
|
|
|
|
|
|
|
records.add(reward);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//备份
|
|
|
|
//备份
|
|
|
|
activityRankRuleService.addTotalNum4String(RAMADAN_GIFT_SEND_GOLD_POOL_BAK, lastDayFormat, yesterdayPoolGold, partitionId.toString());
|
|
|
|
activityRankRuleService.addTotalNum4String(RAMADAN_GIFT_SEND_GOLD_POOL_BAK, lastDayFormat, yesterdayPoolGold, partitionId.toString());
|
|
|
@@ -262,6 +289,8 @@ public class RamadanGiftSendService {
|
|
|
|
activityRankRuleService.getRankKey4String(RAMADAN_GIFT_SEND_GOLD_POOL, partitionId.toString()).expire(activityRankRuleService.expire, TimeUnit.DAYS);
|
|
|
|
activityRankRuleService.getRankKey4String(RAMADAN_GIFT_SEND_GOLD_POOL, partitionId.toString()).expire(activityRankRuleService.expire, TimeUnit.DAYS);
|
|
|
|
activityRankRuleService.getRankKey4String(RAMADAN_GIFT_SEND_GOLD_POOL_BAK, partitionId.toString()).expire(activityRankRuleService.expire, TimeUnit.DAYS);
|
|
|
|
activityRankRuleService.getRankKey4String(RAMADAN_GIFT_SEND_GOLD_POOL_BAK, partitionId.toString()).expire(activityRankRuleService.expire, TimeUnit.DAYS);
|
|
|
|
activityRankRuleService.getRankKey(RAMADAN_GIFT_SEND, lastDayFormat, partitionId.toString()).expire(activityRankRuleService.expire, TimeUnit.DAYS);
|
|
|
|
activityRankRuleService.getRankKey(RAMADAN_GIFT_SEND, lastDayFormat, partitionId.toString()).expire(activityRankRuleService.expire, TimeUnit.DAYS);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ramadanGiftSendTopRewardService.saveBatch(records);
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
|
log.info("RamadanGiftSendService.totalTask-partitionId:{},e:{}", partitionId, e.getMessage(), e);
|
|
|
|
log.info("RamadanGiftSendService.totalTask-partitionId:{},e:{}", partitionId, e.getMessage(), e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|