独联体-公会长奖励改为次日发
This commit is contained in:
@@ -39,7 +39,7 @@ public class GuildExtraDiamondDay implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 公会长UID
|
* 公会长UID
|
||||||
*/
|
*/
|
||||||
private Integer ownerUid;
|
private Long ownerUid;
|
||||||
/**
|
/**
|
||||||
* 普通礼物钻石流水
|
* 普通礼物钻石流水
|
||||||
*/
|
*/
|
||||||
@@ -68,6 +68,10 @@ public class GuildExtraDiamondDay implements Serializable {
|
|||||||
* 公会长lucky额外奖励
|
* 公会长lucky额外奖励
|
||||||
*/
|
*/
|
||||||
private BigDecimal ownerExtraLuckyNum;
|
private BigDecimal ownerExtraLuckyNum;
|
||||||
|
/**
|
||||||
|
* 公会长奖励是否已经发放0-未发放
|
||||||
|
*/
|
||||||
|
private Byte ownerSendStatus;
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
|
@@ -101,4 +101,13 @@ public class GuildService extends ServiceImpl<GuildMapper, Guild> {
|
|||||||
.eq(Guild::getEnable, Boolean.TRUE)
|
.eq(Guild::getEnable, Boolean.TRUE)
|
||||||
.list();
|
.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.math.BigDecimal;
|
||||||
import java.time.DayOfWeek;
|
import java.time.DayOfWeek;
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -71,12 +68,6 @@ public class ExtraDiamondDayService {
|
|||||||
Long ownerUid = guild.getOwnerUid();
|
Long ownerUid = guild.getOwnerUid();
|
||||||
guildExtraDiamondDayService.updateExtraDiamond(cycleDate, statDate, partitionId, guildMemberId, guildId, ownerUid, guildMember.getUid(),
|
guildExtraDiamondDayService.updateExtraDiamond(cycleDate, statDate, partitionId, guildMemberId, guildId, ownerUid, guildMember.getUid(),
|
||||||
decimalNormal, decimalLucky, ownerDiamondNum, ownerLuckyDiamond, anchorDiamondNum, anchorLuckyDiamond, time);
|
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,
|
public void updateRoomExtraDiamond(GuildMember guildMember, Long uid, PartitionInfo partitionInfo, String statDate, Long roomUid,
|
||||||
@@ -107,8 +98,8 @@ public class ExtraDiamondDayService {
|
|||||||
return configDto.getConfigByPartitionId(partitionId);
|
return configDto.getConfigByPartitionId(partitionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendGuildExtraDiamondTask(Integer partitionId, String statDate) {
|
public void sendGuildMemberExtraDiamondTask(Integer partitionId, String statDate) {
|
||||||
log.info("sendGuildExtraDiamondTask partitionId:" + partitionId + " statDate:" + statDate);
|
log.info("sendGuildMemberExtraDiamondTask partitionId:" + partitionId + " statDate:" + statDate);
|
||||||
Date updateTime = new Date();
|
Date updateTime = new Date();
|
||||||
String lockKey = "sendLastDayDiamondtask_anchor_" + partitionId + "_" + statDate;
|
String lockKey = "sendLastDayDiamondtask_anchor_" + partitionId + "_" + statDate;
|
||||||
RLock lock = redissonClient.getLock(lockKey);
|
RLock lock = redissonClient.getLock(lockKey);
|
||||||
@@ -123,7 +114,7 @@ public class ExtraDiamondDayService {
|
|||||||
log.info("empty guildMember partitionId:" + partitionId + " partitionId:" + statDate + " no guildMember");
|
log.info("empty guildMember partitionId:" + partitionId + " partitionId:" + statDate + " no guildMember");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<GuildExtraDiamondDay> guildExtraDiamondDays = guildExtraDiamondDayService.listByPartitionStatDate4Task(partitionId, statDate);
|
List<GuildExtraDiamondDay> guildExtraDiamondDays = guildExtraDiamondDayService.listGuildMemberByPartitionStatDate4Task(partitionId, statDate);
|
||||||
if (CollectionUtils.isNotEmpty(guildExtraDiamondDays)) {
|
if (CollectionUtils.isNotEmpty(guildExtraDiamondDays)) {
|
||||||
Iterator<GuildExtraDiamondDay> iterator = guildExtraDiamondDays.iterator();
|
Iterator<GuildExtraDiamondDay> iterator = guildExtraDiamondDays.iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
@@ -151,7 +142,65 @@ public class ExtraDiamondDayService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} 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 {
|
} finally {
|
||||||
if (locked) {
|
if (locked) {
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
|
@@ -32,7 +32,7 @@ public class GuildExtraDiamondDayService extends ServiceImpl<GuildExtraDiamondDa
|
|||||||
diamondNum, luckyDiamond, ownerDiamondNum, ownerLuckyDiamond, anchorDiamondNum, anchorLuckyDiamond, time);
|
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();
|
LambdaQueryWrapper<GuildExtraDiamondDay> queryWrapper = Wrappers.lambdaQuery();
|
||||||
queryWrapper.eq(GuildExtraDiamondDay::getPartitionId, partitionId)
|
queryWrapper.eq(GuildExtraDiamondDay::getPartitionId, partitionId)
|
||||||
.eq(GuildExtraDiamondDay::getStatDate, statDate)
|
.eq(GuildExtraDiamondDay::getStatDate, statDate)
|
||||||
@@ -40,6 +40,14 @@ public class GuildExtraDiamondDayService extends ServiceImpl<GuildExtraDiamondDa
|
|||||||
return list(queryWrapper);
|
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) {
|
public List<GuildExtraDiamondDay> groupByPartitionMember(Integer partitionId, String statDate, String endDate, Long guildMemberId) {
|
||||||
return baseMapper.groupByPartitionMember(partitionId, statDate, endDate, guildMemberId);
|
return baseMapper.groupByPartitionMember(partitionId, statDate, endDate, guildMemberId);
|
||||||
}
|
}
|
||||||
|
@@ -19,6 +19,12 @@ public class ExtraDiamondDayController {
|
|||||||
extraDiamondDayService.sendGuildExtraDiamondTask(partitionId, statDate);
|
extraDiamondDayService.sendGuildExtraDiamondTask(partitionId, statDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Authorization
|
||||||
|
@GetMapping("/sendGuildMemberExtraDiamondTask")
|
||||||
|
public void sendGuildMemberExtraDiamondTask(Integer partitionId, String statDate) {
|
||||||
|
extraDiamondDayService.sendGuildMemberExtraDiamondTask(partitionId, statDate);
|
||||||
|
}
|
||||||
|
|
||||||
@Authorization
|
@Authorization
|
||||||
@GetMapping("/sendRoomLastDayDiamondtask")
|
@GetMapping("/sendRoomLastDayDiamondtask")
|
||||||
public void sendRoomLastDayDiamondtask(Integer partitionId, String monthDay) {
|
public void sendRoomLastDayDiamondtask(Integer partitionId, String monthDay) {
|
||||||
|
@@ -18,6 +18,7 @@ public class ExtraDiamondDayTask {
|
|||||||
public void sendExtraDiamondTask() {
|
public void sendExtraDiamondTask() {
|
||||||
Date date = new Date();
|
Date date = new Date();
|
||||||
String statDate = DateUtil.formatDate(date);
|
String statDate = DateUtil.formatDate(date);
|
||||||
|
extraDiamondDayService.sendGuildMemberExtraDiamondTask(PartitionEnum.SOVIET.getId(), statDate);
|
||||||
extraDiamondDayService.sendGuildExtraDiamondTask(PartitionEnum.SOVIET.getId(), statDate);
|
extraDiamondDayService.sendGuildExtraDiamondTask(PartitionEnum.SOVIET.getId(), statDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user