独联体-公会长奖励改为次日发
This commit is contained in:
@@ -39,7 +39,7 @@ public class GuildExtraDiamondDay implements Serializable {
|
||||
/**
|
||||
* 公会长UID
|
||||
*/
|
||||
private Integer ownerUid;
|
||||
private Long ownerUid;
|
||||
/**
|
||||
* 普通礼物钻石流水
|
||||
*/
|
||||
@@ -68,6 +68,10 @@ public class GuildExtraDiamondDay implements Serializable {
|
||||
* 公会长lucky额外奖励
|
||||
*/
|
||||
private BigDecimal ownerExtraLuckyNum;
|
||||
/**
|
||||
* 公会长奖励是否已经发放0-未发放
|
||||
*/
|
||||
private Byte ownerSendStatus;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
|
@@ -101,4 +101,13 @@ public class GuildService extends ServiceImpl<GuildMapper, Guild> {
|
||||
.eq(Guild::getEnable, Boolean.TRUE)
|
||||
.list();
|
||||
}
|
||||
|
||||
|
||||
public Map<Integer, Guild> mapGuildByPartitionId(Integer partitionId) {
|
||||
return this.lambdaQuery()
|
||||
.eq(Guild::getPartitionId, partitionId)
|
||||
.eq(Guild::getEnable, Boolean.TRUE)
|
||||
.list().stream()
|
||||
.collect(Collectors.toMap(Guild::getId, family -> family));
|
||||
}
|
||||
}
|
||||
|
@@ -24,10 +24,7 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.DayOfWeek;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -71,12 +68,6 @@ public class ExtraDiamondDayService {
|
||||
Long ownerUid = guild.getOwnerUid();
|
||||
guildExtraDiamondDayService.updateExtraDiamond(cycleDate, statDate, partitionId, guildMemberId, guildId, ownerUid, guildMember.getUid(),
|
||||
decimalNormal, decimalLucky, ownerDiamondNum, ownerLuckyDiamond, anchorDiamondNum, anchorLuckyDiamond, time);
|
||||
if (ownerDiamondNum.compareTo(BigDecimal.ZERO) > 0) {
|
||||
userPurseService.addGold(ownerUid, ownerDiamondNum.doubleValue(), OWNER_EXTRA_GOLD);
|
||||
}
|
||||
if (ownerLuckyDiamond.compareTo(BigDecimal.ZERO) > 0) {
|
||||
userPurseService.addGold(ownerUid, ownerLuckyDiamond.doubleValue(), OWNER_EXTRA_GOLD);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateRoomExtraDiamond(GuildMember guildMember, Long uid, PartitionInfo partitionInfo, String statDate, Long roomUid,
|
||||
@@ -107,8 +98,8 @@ public class ExtraDiamondDayService {
|
||||
return configDto.getConfigByPartitionId(partitionId);
|
||||
}
|
||||
|
||||
public void sendGuildExtraDiamondTask(Integer partitionId, String statDate) {
|
||||
log.info("sendGuildExtraDiamondTask partitionId:" + partitionId + " statDate:" + statDate);
|
||||
public void sendGuildMemberExtraDiamondTask(Integer partitionId, String statDate) {
|
||||
log.info("sendGuildMemberExtraDiamondTask partitionId:" + partitionId + " statDate:" + statDate);
|
||||
Date updateTime = new Date();
|
||||
String lockKey = "sendLastDayDiamondtask_anchor_" + partitionId + "_" + statDate;
|
||||
RLock lock = redissonClient.getLock(lockKey);
|
||||
@@ -123,7 +114,7 @@ public class ExtraDiamondDayService {
|
||||
log.info("empty guildMember partitionId:" + partitionId + " partitionId:" + statDate + " no guildMember");
|
||||
return;
|
||||
}
|
||||
List<GuildExtraDiamondDay> guildExtraDiamondDays = guildExtraDiamondDayService.listByPartitionStatDate4Task(partitionId, statDate);
|
||||
List<GuildExtraDiamondDay> guildExtraDiamondDays = guildExtraDiamondDayService.listGuildMemberByPartitionStatDate4Task(partitionId, statDate);
|
||||
if (CollectionUtils.isNotEmpty(guildExtraDiamondDays)) {
|
||||
Iterator<GuildExtraDiamondDay> iterator = guildExtraDiamondDays.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
@@ -151,7 +142,65 @@ public class ExtraDiamondDayService {
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("sendLastDayDiamondtask anchor error" , e);
|
||||
log.error("sendGuildMemberExtraDiamondTask anchor error" , e);
|
||||
} finally {
|
||||
if (locked) {
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void sendGuildExtraDiamondTask(Integer partitionId, String statDate) {
|
||||
log.info("sendGuildExtraDiamondTask partitionId:" + partitionId + " statDate:" + statDate);
|
||||
Date updateTime = new Date();
|
||||
String lockKey = "sendLastDayDiamondtask_anchor_" + partitionId + "_" + statDate;
|
||||
RLock lock = redissonClient.getLock(lockKey);
|
||||
boolean locked = false;
|
||||
try {
|
||||
locked = lock.tryLock(20, TimeUnit.SECONDS);
|
||||
if (!locked) {
|
||||
throw new ServiceException(BusiStatus.SERVERBUSY);
|
||||
}
|
||||
Map<Integer, Guild> guildMap = guildService.mapGuildByPartitionId(partitionId);
|
||||
if (guildMap.isEmpty()) {
|
||||
log.info("empty guildMember partitionId:" + partitionId + " partitionId:" + statDate + " no guildMember");
|
||||
return;
|
||||
}
|
||||
List<GuildExtraDiamondDay> guildExtraDiamondDays = guildExtraDiamondDayService.listGuildByPartitionStatDate4Task(partitionId, statDate);
|
||||
if (CollectionUtils.isNotEmpty(guildExtraDiamondDays)) {
|
||||
Iterator<GuildExtraDiamondDay> iterator = guildExtraDiamondDays.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
GuildExtraDiamondDay diamondDay = iterator.next();
|
||||
if (guildMap.get(diamondDay.getGuildId()) == null || diamondDay.getAnchorSendStatus() == 1) {
|
||||
iterator.remove();
|
||||
continue;
|
||||
}
|
||||
diamondDay.setOwnerSendStatus((byte) 1);
|
||||
diamondDay.setUpdateTime(updateTime);
|
||||
}
|
||||
if (CollectionUtils.isEmpty(guildExtraDiamondDays)) {
|
||||
return;
|
||||
}
|
||||
boolean updateBatchById = guildExtraDiamondDayService.updateBatchById(guildExtraDiamondDays);
|
||||
if (!updateBatchById) {
|
||||
return;
|
||||
}
|
||||
Map<Long, BigDecimal> ownerExtraMap = new HashMap<>();
|
||||
for (GuildExtraDiamondDay extraDiamondDay : guildExtraDiamondDays) {
|
||||
Long ownerUid = extraDiamondDay.getOwnerUid();
|
||||
BigDecimal ownerExtra = ownerExtraMap.get(ownerUid);
|
||||
BigDecimal add = extraDiamondDay.getOwnerExtraNum().add(extraDiamondDay.getOwnerExtraLuckyNum());
|
||||
ownerExtra = ownerExtra == null ? add : ownerExtra.add(add);
|
||||
ownerExtraMap.put(ownerUid, ownerExtra);
|
||||
}
|
||||
for (Map.Entry<Long, BigDecimal> decimalEntry : ownerExtraMap.entrySet()) {
|
||||
if (decimalEntry.getValue().compareTo(BigDecimal.ZERO) > 0) {
|
||||
userPurseService.addGold(decimalEntry.getKey(), decimalEntry.getValue().doubleValue(), OWNER_EXTRA_GOLD);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("sendGuildExtraDiamondTask anchor error" , e);
|
||||
} finally {
|
||||
if (locked) {
|
||||
lock.unlock();
|
||||
|
@@ -32,7 +32,7 @@ public class GuildExtraDiamondDayService extends ServiceImpl<GuildExtraDiamondDa
|
||||
diamondNum, luckyDiamond, ownerDiamondNum, ownerLuckyDiamond, anchorDiamondNum, anchorLuckyDiamond, time);
|
||||
}
|
||||
|
||||
public List<GuildExtraDiamondDay> listByPartitionStatDate4Task(Integer partitionId, String statDate) {
|
||||
public List<GuildExtraDiamondDay> listGuildMemberByPartitionStatDate4Task(Integer partitionId, String statDate) {
|
||||
LambdaQueryWrapper<GuildExtraDiamondDay> queryWrapper = Wrappers.lambdaQuery();
|
||||
queryWrapper.eq(GuildExtraDiamondDay::getPartitionId, partitionId)
|
||||
.eq(GuildExtraDiamondDay::getStatDate, statDate)
|
||||
@@ -40,6 +40,14 @@ public class GuildExtraDiamondDayService extends ServiceImpl<GuildExtraDiamondDa
|
||||
return list(queryWrapper);
|
||||
}
|
||||
|
||||
public List<GuildExtraDiamondDay> listGuildByPartitionStatDate4Task(Integer partitionId, String statDate) {
|
||||
LambdaQueryWrapper<GuildExtraDiamondDay> queryWrapper = Wrappers.lambdaQuery();
|
||||
queryWrapper.eq(GuildExtraDiamondDay::getPartitionId, partitionId)
|
||||
.eq(GuildExtraDiamondDay::getStatDate, statDate)
|
||||
.eq(GuildExtraDiamondDay::getOwnerSendStatus, 0);
|
||||
return list(queryWrapper);
|
||||
}
|
||||
|
||||
public List<GuildExtraDiamondDay> groupByPartitionMember(Integer partitionId, String statDate, String endDate, Long guildMemberId) {
|
||||
return baseMapper.groupByPartitionMember(partitionId, statDate, endDate, guildMemberId);
|
||||
}
|
||||
|
@@ -19,6 +19,12 @@ public class ExtraDiamondDayController {
|
||||
extraDiamondDayService.sendGuildExtraDiamondTask(partitionId, statDate);
|
||||
}
|
||||
|
||||
@Authorization
|
||||
@GetMapping("/sendGuildMemberExtraDiamondTask")
|
||||
public void sendGuildMemberExtraDiamondTask(Integer partitionId, String statDate) {
|
||||
extraDiamondDayService.sendGuildMemberExtraDiamondTask(partitionId, statDate);
|
||||
}
|
||||
|
||||
@Authorization
|
||||
@GetMapping("/sendRoomLastDayDiamondtask")
|
||||
public void sendRoomLastDayDiamondtask(Integer partitionId, String monthDay) {
|
||||
|
@@ -18,6 +18,7 @@ public class ExtraDiamondDayTask {
|
||||
public void sendExtraDiamondTask() {
|
||||
Date date = new Date();
|
||||
String statDate = DateUtil.formatDate(date);
|
||||
extraDiamondDayService.sendGuildMemberExtraDiamondTask(PartitionEnum.SOVIET.getId(), statDate);
|
||||
extraDiamondDayService.sendGuildExtraDiamondTask(PartitionEnum.SOVIET.getId(), statDate);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user