独联体-房间每周一发额外奖励
This commit is contained in:
@@ -56,6 +56,10 @@ public class GuildExtraDiamondDay implements Serializable {
|
|||||||
* 主播lucky额外奖励
|
* 主播lucky额外奖励
|
||||||
*/
|
*/
|
||||||
private BigDecimal anchorExtraLuckyNum;
|
private BigDecimal anchorExtraLuckyNum;
|
||||||
|
/**
|
||||||
|
* 主播奖励是否已经发放0-未发放
|
||||||
|
*/
|
||||||
|
private Byte anchorSendStatus;
|
||||||
/**
|
/**
|
||||||
* 公会长普通额外奖励
|
* 公会长普通额外奖励
|
||||||
*/
|
*/
|
||||||
|
@@ -38,7 +38,7 @@ public class RoomExtraDiamondDay implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 房间UID
|
* 房间UID
|
||||||
*/
|
*/
|
||||||
private Integer roomUid;
|
private Long roomUid;
|
||||||
/**
|
/**
|
||||||
* 普通礼物钻石流水
|
* 普通礼物钻石流水
|
||||||
*/
|
*/
|
||||||
@@ -55,6 +55,10 @@ public class RoomExtraDiamondDay implements Serializable {
|
|||||||
* 房间lucky额外奖励
|
* 房间lucky额外奖励
|
||||||
*/
|
*/
|
||||||
private BigDecimal roomExtraLuckyNum;
|
private BigDecimal roomExtraLuckyNum;
|
||||||
|
/**
|
||||||
|
* 是否已发放
|
||||||
|
*/
|
||||||
|
private Byte sendStatus;
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
|
@@ -78,8 +78,7 @@ public class SuperLuckyGiftDiamondIncomeListener implements ApplicationListener<
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (partitionInfo.getId() == PartitionEnum.SOVIET.getId()) {
|
if (partitionInfo.getId() == PartitionEnum.SOVIET.getId()) {
|
||||||
extraDiamondDayService.updateGuildExtraDiamond(guildMember, cycleDate, statDate, 0D, message.getTotalDiamondNum(), time);
|
extraDiamondDayService.updateExtraDiamond(guildMember, receiverUid, partitionInfo.getId(), cycleDate, statDate,
|
||||||
extraDiamondDayService.updateRoomExtraDiamond(guildMember, receiverUid, partitionInfo.getId(), statDate,
|
|
||||||
message.getRoomUid(),0D, message.getTotalDiamondNum(), time);
|
message.getRoomUid(),0D, message.getTotalDiamondNum(), time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,5 +19,6 @@ public interface GuildExtraDiamondDayMapper extends BaseMapper<GuildExtraDiamond
|
|||||||
@Param("guildMemberId") Long guildMemberId, @Param("guildId") Integer guildId,
|
@Param("guildMemberId") Long guildMemberId, @Param("guildId") Integer guildId,
|
||||||
@Param("ownerUid") Long ownerUid, @Param("uid") Long uid, @Param("diamondNum") BigDecimal diamondNum,
|
@Param("ownerUid") Long ownerUid, @Param("uid") Long uid, @Param("diamondNum") BigDecimal diamondNum,
|
||||||
@Param("luckyDiamondNum") BigDecimal luckyDiamondNum, @Param("ownerDiamondNum") BigDecimal ownerDiamondNum,
|
@Param("luckyDiamondNum") BigDecimal luckyDiamondNum, @Param("ownerDiamondNum") BigDecimal ownerDiamondNum,
|
||||||
@Param("ownerLuckyDiamond") BigDecimal ownerLuckyDiamond, @Param("time") Date time);
|
@Param("ownerLuckyDiamond") BigDecimal ownerLuckyDiamond, @Param("anchorDiamondNum") BigDecimal anchorDiamondNum,
|
||||||
|
@Param("anchorLuckyDiamond") BigDecimal anchorLuckyDiamond, @Param("time") Date time);
|
||||||
}
|
}
|
||||||
|
@@ -4,6 +4,7 @@ import com.accompany.business.model.extradiamond.RoomExtraDiamondDay;
|
|||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,5 +19,6 @@ public interface RoomExtraDiamondDayMapper extends BaseMapper<RoomExtraDiamondDa
|
|||||||
@Param("uid") Long uid, @Param("partitionId") Integer partitionId,
|
@Param("uid") Long uid, @Param("partitionId") Integer partitionId,
|
||||||
@Param("statDate") String statDate, @Param("roomUid") Long roomUid,
|
@Param("statDate") String statDate, @Param("roomUid") Long roomUid,
|
||||||
@Param("normalDiamondNum") Double normalDiamondNum, @Param("luckyDiamondNum") Double luckyDiamondNum,
|
@Param("normalDiamondNum") Double normalDiamondNum, @Param("luckyDiamondNum") Double luckyDiamondNum,
|
||||||
|
@Param("roomDiamondNum") BigDecimal roomDiamondNum, @Param("roomLuckyDiamond") BigDecimal roomLuckyDiamond,
|
||||||
@Param("time") Date time);
|
@Param("time") Date time);
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,8 @@
|
|||||||
package com.accompany.business.service.extradiamond;
|
package com.accompany.business.service.extradiamond;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateField;
|
||||||
|
import cn.hutool.core.date.DateTime;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.accompany.business.dto.ExtraDiamondRateConfigDto;
|
import com.accompany.business.dto.ExtraDiamondRateConfigDto;
|
||||||
import com.accompany.business.model.extradiamond.GuildExtraDiamondDay;
|
import com.accompany.business.model.extradiamond.GuildExtraDiamondDay;
|
||||||
import com.accompany.business.model.extradiamond.RoomExtraDiamondDay;
|
import com.accompany.business.model.extradiamond.RoomExtraDiamondDay;
|
||||||
@@ -26,6 +29,7 @@ import java.util.Iterator;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static com.accompany.common.constant.Constant.SysConfId.EXTRA_DIAMOND_RATE_CONFIG;
|
import static com.accompany.common.constant.Constant.SysConfId.EXTRA_DIAMOND_RATE_CONFIG;
|
||||||
import static com.accompany.core.enumeration.BillObjTypeEnum.*;
|
import static com.accompany.core.enumeration.BillObjTypeEnum.*;
|
||||||
@@ -48,23 +52,33 @@ public class ExtraDiamondDayService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private GuildMemberService guildMemberService;
|
private GuildMemberService guildMemberService;
|
||||||
|
|
||||||
|
public void updateExtraDiamond(GuildMember guildMember, Long uid, Integer partitionId, String cycleDate, String statDate, Long roomUid,
|
||||||
|
Double normalDiamondNum, Double luckyDiamondNum, Date time) {
|
||||||
|
ExtraDiamondRateConfigDto diamondRateConfig = this.getExtraDiamondRateConfig(guildMember.getPartitionId());
|
||||||
|
|
||||||
|
updateGuildExtraDiamond(guildMember, cycleDate, statDate, normalDiamondNum, luckyDiamondNum, time, diamondRateConfig);
|
||||||
|
|
||||||
|
updateRoomExtraDiamond(guildMember, uid, partitionId, statDate, roomUid, 0D, luckyDiamondNum, time, diamondRateConfig);
|
||||||
|
}
|
||||||
|
|
||||||
public void updateGuildExtraDiamond(GuildMember guildMember, String cycleDate, String statDate,
|
public void updateGuildExtraDiamond(GuildMember guildMember, String cycleDate, String statDate,
|
||||||
Double normalDiamondNum, Double luckyDiamondNum, Date time) {
|
Double normalDiamondNum, Double luckyDiamondNum, Date time, ExtraDiamondRateConfigDto diamondRateConfig) {
|
||||||
if (guildMember == null) {
|
if (guildMember == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Long guildMemberId = guildMember.getId();
|
Long guildMemberId = guildMember.getId();
|
||||||
Integer guildId = guildMember.getGuildId();
|
Integer guildId = guildMember.getGuildId();
|
||||||
Integer partitionId = guildMember.getPartitionId();
|
Integer partitionId = guildMember.getPartitionId();
|
||||||
ExtraDiamondRateConfigDto diamondRateConfig = this.getExtraDiamondRateConfig(guildMember.getPartitionId());
|
|
||||||
BigDecimal decimalNormal = BigDecimal.valueOf(normalDiamondNum);
|
BigDecimal decimalNormal = BigDecimal.valueOf(normalDiamondNum);
|
||||||
BigDecimal decimalLucky = BigDecimal.valueOf(luckyDiamondNum);
|
BigDecimal decimalLucky = BigDecimal.valueOf(luckyDiamondNum);
|
||||||
BigDecimal ownerDiamondNum = diamondRateConfig.getOwnerExtraRate().multiply(decimalNormal);
|
BigDecimal ownerDiamondNum = diamondRateConfig.getOwnerExtraRate().multiply(decimalNormal);
|
||||||
BigDecimal ownerLuckyDiamond = diamondRateConfig.getOwnerExtraLuckyRate().multiply(decimalLucky);
|
BigDecimal ownerLuckyDiamond = diamondRateConfig.getOwnerExtraLuckyRate().multiply(decimalLucky);
|
||||||
|
BigDecimal anchorDiamondNum = diamondRateConfig.getAnchorExtraRate().multiply(decimalNormal);
|
||||||
|
BigDecimal anchorLuckyDiamond = diamondRateConfig.getAnchorExtraLuckyRate().multiply(decimalLucky);
|
||||||
Guild guild = guildService.getVaildGuildById(guildId);
|
Guild guild = guildService.getVaildGuildById(guildId);
|
||||||
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, time);
|
decimalNormal, decimalLucky, ownerDiamondNum, ownerLuckyDiamond, anchorDiamondNum, anchorLuckyDiamond, time);
|
||||||
if (ownerDiamondNum.compareTo(BigDecimal.ZERO) > 0) {
|
if (ownerDiamondNum.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
userPurseService.addGold(ownerUid, ownerDiamondNum.doubleValue(), OWNER_EXTRA_GOLD);
|
userPurseService.addGold(ownerUid, ownerDiamondNum.doubleValue(), OWNER_EXTRA_GOLD);
|
||||||
}
|
}
|
||||||
@@ -74,7 +88,7 @@ public class ExtraDiamondDayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void updateRoomExtraDiamond(GuildMember guildMember, Long uid, Integer partitionId, String statDate, Long roomUid,
|
public void updateRoomExtraDiamond(GuildMember guildMember, Long uid, Integer partitionId, String statDate, Long roomUid,
|
||||||
Double normalDiamondNum, Double luckyDiamondNum, Date time) {
|
Double normalDiamondNum, Double luckyDiamondNum, Date time, ExtraDiamondRateConfigDto diamondRateConfig) {
|
||||||
if (roomUid == null) {
|
if (roomUid == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -84,7 +98,12 @@ public class ExtraDiamondDayService {
|
|||||||
guildMemberId = guildMember.getId();
|
guildMemberId = guildMember.getId();
|
||||||
guildId = guildMember.getGuildId();
|
guildId = guildMember.getGuildId();
|
||||||
}
|
}
|
||||||
roomExtraDiamondDayService.updateExtraDiamond(guildMemberId, guildId, uid, partitionId, statDate, roomUid, normalDiamondNum, luckyDiamondNum, time);
|
BigDecimal decimalNormal = BigDecimal.valueOf(normalDiamondNum);
|
||||||
|
BigDecimal decimalLucky = BigDecimal.valueOf(luckyDiamondNum);
|
||||||
|
BigDecimal roomDiamondNum = diamondRateConfig.getRoomExtraRate().multiply(decimalNormal);
|
||||||
|
BigDecimal roomLuckyDiamond = diamondRateConfig.getRoomExtraLuckyRate().multiply(decimalLucky);
|
||||||
|
roomExtraDiamondDayService.updateExtraDiamond(guildMemberId, guildId, uid, partitionId, statDate, roomUid,
|
||||||
|
normalDiamondNum, luckyDiamondNum, roomDiamondNum, roomLuckyDiamond, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ExtraDiamondRateConfigDto getExtraDiamondRateConfig(Integer partitionId) {
|
private ExtraDiamondRateConfigDto getExtraDiamondRateConfig(Integer partitionId) {
|
||||||
@@ -97,14 +116,13 @@ public class ExtraDiamondDayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void sendGuildExtraDiamondTask(Integer partitionId, String statDate) {
|
public void sendGuildExtraDiamondTask(Integer partitionId, String statDate) {
|
||||||
ExtraDiamondRateConfigDto diamondRateConfig = this.getExtraDiamondRateConfig(partitionId);
|
|
||||||
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);
|
||||||
boolean locked = false;
|
boolean locked = false;
|
||||||
try {
|
try {
|
||||||
locked = lock.tryLock(20, TimeUnit.SECONDS);
|
locked = lock.tryLock(20, TimeUnit.SECONDS);
|
||||||
if (!locked){
|
if (!locked) {
|
||||||
throw new ServiceException(BusiStatus.SERVERBUSY);
|
throw new ServiceException(BusiStatus.SERVERBUSY);
|
||||||
}
|
}
|
||||||
Map<Long, GuildMember> guildMemberMap = guildMemberService.mapByPartitionId(partitionId);
|
Map<Long, GuildMember> guildMemberMap = guildMemberService.mapByPartitionId(partitionId);
|
||||||
@@ -117,14 +135,11 @@ public class ExtraDiamondDayService {
|
|||||||
Iterator<GuildExtraDiamondDay> iterator = guildExtraDiamondDays.iterator();
|
Iterator<GuildExtraDiamondDay> iterator = guildExtraDiamondDays.iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
GuildExtraDiamondDay diamondDay = iterator.next();
|
GuildExtraDiamondDay diamondDay = iterator.next();
|
||||||
if (guildMemberMap.get(diamondDay.getGuildMemberId()) == null) {
|
if (guildMemberMap.get(diamondDay.getGuildMemberId()) == null || diamondDay.getAnchorSendStatus() == 1) {
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
BigDecimal anchorExtraNum = diamondDay.getDiamondNum().multiply(diamondRateConfig.getAnchorExtraRate());
|
diamondDay.setAnchorSendStatus((byte) 1);
|
||||||
BigDecimal anchorExtraLuckyNum = diamondDay.getLuckyDiamondNum().multiply(diamondRateConfig.getAnchorExtraLuckyRate());
|
|
||||||
diamondDay.setAnchorExtraNum(anchorExtraNum);
|
|
||||||
diamondDay.setAnchorExtraLuckyNum(anchorExtraLuckyNum);
|
|
||||||
diamondDay.setUpdateTime(updateTime);
|
diamondDay.setUpdateTime(updateTime);
|
||||||
}
|
}
|
||||||
if (CollectionUtils.isEmpty(guildExtraDiamondDays)) {
|
if (CollectionUtils.isEmpty(guildExtraDiamondDays)) {
|
||||||
@@ -145,47 +160,66 @@ public class ExtraDiamondDayService {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("sendLastDayDiamondtask anchor error" , e);
|
log.error("sendLastDayDiamondtask anchor error" , e);
|
||||||
} finally {
|
} finally {
|
||||||
if (locked){
|
if (locked) {
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendRoomExtraDiamondTask(Integer partitionId, String statDate) {
|
public void sendRoomExtraDiamondTask(Integer partitionId, Date now) {
|
||||||
ExtraDiamondRateConfigDto diamondRateConfig = this.getExtraDiamondRateConfig(partitionId);
|
Date lastWeek = DateUtil.offsetWeek(now, -1);
|
||||||
Date updateTime = new Date();
|
DateTime mondayOfLastWeek = DateUtil.beginOfWeek(lastWeek);
|
||||||
String lockKey = "sendLastDayDiamondtask_room_" + partitionId + "_" + statDate;
|
DateTime sundayOfLastWeek = DateUtil.endOfWeek(lastWeek);
|
||||||
|
|
||||||
|
List<String> statDateList = DateUtil.rangeToList(mondayOfLastWeek, sundayOfLastWeek, DateField.DAY_OF_MONTH)
|
||||||
|
.stream()
|
||||||
|
.map(d -> DateUtil.format(d, "yyyy-MM-dd"))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
String lockKey = "sendLastDayDiamondtask_room_" + partitionId;
|
||||||
RLock lock = redissonClient.getLock(lockKey);
|
RLock lock = redissonClient.getLock(lockKey);
|
||||||
boolean locked = false;
|
boolean locked = false;
|
||||||
try {
|
try {
|
||||||
locked = lock.tryLock(20, TimeUnit.SECONDS);
|
locked = lock.tryLock(20, TimeUnit.SECONDS);
|
||||||
if (!locked){
|
if (!locked) {
|
||||||
throw new ServiceException(BusiStatus.SERVERBUSY);
|
throw new ServiceException(BusiStatus.SERVERBUSY);
|
||||||
}
|
}
|
||||||
|
List<RoomExtraDiamondDay> roomExtraDiamondDays = roomExtraDiamondDayService.listByPartitionStatDateList(partitionId, statDateList);
|
||||||
List<RoomExtraDiamondDay> roomExtraDiamondDays = roomExtraDiamondDayService.listByPartitionStatDate(partitionId, statDate);
|
if (CollectionUtils.isEmpty(roomExtraDiamondDays)) {
|
||||||
if (CollectionUtils.isNotEmpty(roomExtraDiamondDays)) {
|
return;
|
||||||
for (RoomExtraDiamondDay roomExtraDiamondDay : roomExtraDiamondDays) {
|
|
||||||
BigDecimal anchorExtraNum = roomExtraDiamondDay.getDiamondNum().multiply(diamondRateConfig.getRoomExtraRate());
|
|
||||||
BigDecimal anchorExtraLuckyNum = roomExtraDiamondDay.getLuckyDiamondNum().multiply(diamondRateConfig.getRoomExtraLuckyRate());
|
|
||||||
roomExtraDiamondDay.setRoomExtraNum(anchorExtraNum);
|
|
||||||
roomExtraDiamondDay.setRoomExtraLuckyNum(anchorExtraLuckyNum);
|
|
||||||
roomExtraDiamondDay.setUpdateTime(updateTime);
|
|
||||||
}
|
|
||||||
boolean updateBatchById = roomExtraDiamondDayService.updateBatchById(roomExtraDiamondDays);
|
|
||||||
if (updateBatchById) {
|
|
||||||
for (RoomExtraDiamondDay extraDiamondDay : roomExtraDiamondDays) {
|
|
||||||
BigDecimal addGold = extraDiamondDay.getRoomExtraNum().add(extraDiamondDay.getRoomExtraLuckyNum());
|
|
||||||
if (addGold.compareTo(BigDecimal.ZERO) > 0) {
|
|
||||||
userPurseService.addGold(extraDiamondDay.getUid(), addGold.doubleValue(), ROOM_EXTRA_GOLD);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
roomExtraDiamondDays = roomExtraDiamondDays.stream()
|
||||||
|
.filter(item -> item.getSendStatus() == null || item.getSendStatus() == 0)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
roomExtraDiamondDays.forEach(item -> {
|
||||||
|
item.setSendStatus((byte) 1);
|
||||||
|
});
|
||||||
|
|
||||||
|
boolean updateBatchById = roomExtraDiamondDayService.updateBatchById(roomExtraDiamondDays);
|
||||||
|
if (!updateBatchById) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<Long, BigDecimal> extraDiamondMap = roomExtraDiamondDays.stream()
|
||||||
|
.collect(Collectors.toMap(
|
||||||
|
RoomExtraDiamondDay::getRoomUid,
|
||||||
|
item -> {
|
||||||
|
BigDecimal extraNum = item.getRoomExtraNum() != null ? item.getRoomExtraNum() : BigDecimal.ZERO;
|
||||||
|
BigDecimal extraLuckyNum = item.getRoomExtraLuckyNum() != null ? item.getRoomExtraLuckyNum() : BigDecimal.ZERO;
|
||||||
|
return extraNum.add(extraLuckyNum);
|
||||||
|
},
|
||||||
|
BigDecimal::add
|
||||||
|
));
|
||||||
|
extraDiamondMap.entrySet().stream()
|
||||||
|
.filter(entry -> entry.getValue().compareTo(BigDecimal.ZERO) > 0)
|
||||||
|
.forEach(entry -> {
|
||||||
|
Long roomUid = entry.getKey();
|
||||||
|
BigDecimal extraDiamond = entry.getValue();
|
||||||
|
userPurseService.addGold(roomUid, extraDiamond.doubleValue(), ROOM_EXTRA_GOLD);
|
||||||
|
});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("sendLastDayDiamondtask room error" , e);
|
log.error("sendLastDayDiamondtask room error" , e);
|
||||||
} finally {
|
} finally {
|
||||||
if (locked){
|
if (locked) {
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -22,9 +22,10 @@ public class GuildExtraDiamondDayService extends ServiceImpl<GuildExtraDiamondDa
|
|||||||
|
|
||||||
public int updateExtraDiamond(String cycleDate, String statDate, Integer partitionId, Long guildMemberId,
|
public int updateExtraDiamond(String cycleDate, String statDate, Integer partitionId, Long guildMemberId,
|
||||||
Integer guildId, Long ownerUid, Long uid, BigDecimal diamondNum,
|
Integer guildId, Long ownerUid, Long uid, BigDecimal diamondNum,
|
||||||
BigDecimal luckyDiamond, BigDecimal ownerDiamondNum, BigDecimal ownerLuckyDiamond, Date time) {
|
BigDecimal luckyDiamond, BigDecimal ownerDiamondNum, BigDecimal ownerLuckyDiamond,
|
||||||
|
BigDecimal anchorDiamondNum, BigDecimal anchorLuckyDiamond, Date time) {
|
||||||
return baseMapper.updateExtraDiamond(cycleDate, statDate, partitionId, guildMemberId, guildId, ownerUid, uid,
|
return baseMapper.updateExtraDiamond(cycleDate, statDate, partitionId, guildMemberId, guildId, ownerUid, uid,
|
||||||
diamondNum, luckyDiamond, ownerDiamondNum, ownerLuckyDiamond, time);
|
diamondNum, luckyDiamond, ownerDiamondNum, ownerLuckyDiamond, anchorDiamondNum, anchorLuckyDiamond, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<GuildExtraDiamondDay> listByPartitionStatDate(Integer partitionId, String statDate) {
|
public List<GuildExtraDiamondDay> listByPartitionStatDate(Integer partitionId, String statDate) {
|
||||||
|
@@ -21,8 +21,10 @@ import java.util.List;
|
|||||||
public class RoomExtraDiamondDayService extends ServiceImpl<RoomExtraDiamondDayMapper, RoomExtraDiamondDay> {
|
public class RoomExtraDiamondDayService extends ServiceImpl<RoomExtraDiamondDayMapper, RoomExtraDiamondDay> {
|
||||||
|
|
||||||
public int updateExtraDiamond(Long guildMemberId, Integer guildId, Long uid, Integer partitionId,
|
public int updateExtraDiamond(Long guildMemberId, Integer guildId, Long uid, Integer partitionId,
|
||||||
String statDate, Long roomUid, Double normalDiamondNum, Double luckyDiamondNum, Date time) {
|
String statDate, Long roomUid, Double normalDiamondNum, Double luckyDiamondNum,
|
||||||
return baseMapper.updateExtraDiamond(guildMemberId, guildId, uid, partitionId, statDate, roomUid, normalDiamondNum, luckyDiamondNum, time);
|
BigDecimal roomDiamondNum, BigDecimal roomLuckyDiamond, Date time) {
|
||||||
|
return baseMapper.updateExtraDiamond(guildMemberId, guildId, uid, partitionId, statDate, roomUid,
|
||||||
|
normalDiamondNum, luckyDiamondNum, roomDiamondNum, roomLuckyDiamond, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<RoomExtraDiamondDay> listByPartitionStatDate(Integer partitionId, String statDate) {
|
public List<RoomExtraDiamondDay> listByPartitionStatDate(Integer partitionId, String statDate) {
|
||||||
@@ -33,4 +35,13 @@ public class RoomExtraDiamondDayService extends ServiceImpl<RoomExtraDiamondDayM
|
|||||||
.le(RoomExtraDiamondDay::getRoomExtraLuckyNum, BigDecimal.ZERO);
|
.le(RoomExtraDiamondDay::getRoomExtraLuckyNum, BigDecimal.ZERO);
|
||||||
return list(queryWrapper);
|
return list(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<RoomExtraDiamondDay> listByPartitionStatDateList(Integer partitionId, List<String> statDates) {
|
||||||
|
LambdaQueryWrapper<RoomExtraDiamondDay> queryWrapper = Wrappers.lambdaQuery();
|
||||||
|
queryWrapper.eq(RoomExtraDiamondDay::getPartitionId, partitionId)
|
||||||
|
.in(RoomExtraDiamondDay::getStatDate, statDates)
|
||||||
|
.le(RoomExtraDiamondDay::getRoomExtraNum, BigDecimal.ZERO)
|
||||||
|
.le(RoomExtraDiamondDay::getRoomExtraLuckyNum, BigDecimal.ZERO);
|
||||||
|
return list(queryWrapper);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -110,10 +110,9 @@ public class GuildGiftRecordService extends ServiceImpl<GuildGiftRecordMapper, G
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (partitionInfo.getId() == PartitionEnum.SOVIET.getId()) {
|
if (partitionInfo.getId() == PartitionEnum.SOVIET.getId()) {
|
||||||
extraDiamondDayService.updateGuildExtraDiamond(guildMember, cycleDate, statDate, totalDiamondNum, 0D, createTime);
|
|
||||||
statDate = DateTimeUtil.convertWithZoneId(createTime, partitionInfo.getZoneId()).format(dateFormatter);
|
statDate = DateTimeUtil.convertWithZoneId(createTime, partitionInfo.getZoneId()).format(dateFormatter);
|
||||||
extraDiamondDayService.updateRoomExtraDiamond(guildMember, giftSendRecord.getReciveUid(), partitionInfo.getId(),
|
extraDiamondDayService.updateExtraDiamond(guildMember, giftSendRecord.getReciveUid(), partitionInfo.getId(),
|
||||||
statDate, giftSendRecord.getRoomUid(), totalDiamondNum, 0D, createTime);
|
cycleDate, statDate, giftSendRecord.getRoomUid(), totalDiamondNum, 0D, createTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -5,14 +5,16 @@
|
|||||||
<update id="updateExtraDiamond">
|
<update id="updateExtraDiamond">
|
||||||
INSERT INTO `guild_extra_diamond_day` (`cycle_date`, `partition_id`, `stat_date`,
|
INSERT INTO `guild_extra_diamond_day` (`cycle_date`, `partition_id`, `stat_date`,
|
||||||
`guild_member_id`, `guild_id`, `uid`, `owner_uid`, `diamond_num`, `lucky_diamond_num`,
|
`guild_member_id`, `guild_id`, `uid`, `owner_uid`, `diamond_num`, `lucky_diamond_num`,
|
||||||
`owner_extra_num`, `owner_extra_lucky_num`, `create_time`, `update_time`)
|
`owner_extra_num`, `owner_extra_lucky_num`, `anchor_extra_num`, `anchor_extra_lucky_num`, `create_time`, `update_time`)
|
||||||
VALUES (#{cycleDate}, #{partitionId}, #{statDate}, #{guildMemberId}, #{guildId}, #{uid}, #{ownerUid}, #{diamondNum}, #{luckyDiamondNum},
|
VALUES (#{cycleDate}, #{partitionId}, #{statDate}, #{guildMemberId}, #{guildId}, #{uid}, #{ownerUid}, #{diamondNum}, #{luckyDiamondNum},
|
||||||
#{ownerDiamondNum}, #{ownerLuckyDiamond},#{time} ,#{time})
|
#{ownerDiamondNum}, #{ownerLuckyDiamond}, #{anchorDiamondNum}, #{anchorLuckyDiamond},#{time} ,#{time})
|
||||||
ON DUPLICATE KEY UPDATE
|
ON DUPLICATE KEY UPDATE
|
||||||
diamond_num = diamond_num + values (diamond_num),
|
diamond_num = diamond_num + values (diamond_num),
|
||||||
lucky_diamond_num = lucky_diamond_num + values (lucky_diamond_num),
|
lucky_diamond_num = lucky_diamond_num + values (lucky_diamond_num),
|
||||||
owner_extra_num = owner_extra_num + values (owner_extra_num),
|
owner_extra_num = owner_extra_num + values (owner_extra_num),
|
||||||
owner_extra_lucky_num = owner_extra_lucky_num + values (owner_extra_lucky_num),
|
owner_extra_lucky_num = owner_extra_lucky_num + values (owner_extra_lucky_num),
|
||||||
|
anchor_extra_num = anchor_extra_num + values (anchor_extra_num),
|
||||||
|
anchor_extra_lucky_num = anchor_extra_lucky_num + values (anchor_extra_lucky_num),
|
||||||
update_time = values (update_time)
|
update_time = values (update_time)
|
||||||
</update>
|
</update>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
@@ -3,12 +3,16 @@
|
|||||||
<mapper namespace="com.accompany.business.mybatismapper.extradiamond.RoomExtraDiamondDayMapper">
|
<mapper namespace="com.accompany.business.mybatismapper.extradiamond.RoomExtraDiamondDayMapper">
|
||||||
<update id="updateExtraDiamond">
|
<update id="updateExtraDiamond">
|
||||||
INSERT INTO `room_extra_diamond_day` (`partition_id`, `stat_date`, `guild_member_id`, `guild_id`, `uid`,
|
INSERT INTO `room_extra_diamond_day` (`partition_id`, `stat_date`, `guild_member_id`, `guild_id`, `uid`,
|
||||||
`room_uid`, `diamond_num`, `lucky_diamond_num`, `create_time`, `update_time`)
|
`room_uid`, `diamond_num`, `lucky_diamond_num`, `room_extra_num`,
|
||||||
|
`room_extra_lucky_num`, `create_time`, `update_time`)
|
||||||
VALUES (#{partitionId}, #{statDate}, #{guildMemberId}, #{guildId}, #{uid}, #{roomUid}, #{normalDiamondNum},
|
VALUES (#{partitionId}, #{statDate}, #{guildMemberId}, #{guildId}, #{uid}, #{roomUid}, #{normalDiamondNum},
|
||||||
#{luckyDiamondNum},#{time} ,#{time})
|
#{luckyDiamondNum}, #{roomDiamondNum}, #{roomLuckyDiamond}, #{time}, #{time}) ON DUPLICATE KEY
|
||||||
ON DUPLICATE KEY UPDATE
|
UPDATE
|
||||||
diamond_num = diamond_num + values (diamond_num),
|
diamond_num = diamond_num +
|
||||||
lucky_diamond_num = lucky_diamond_num + values (lucky_diamond_num),
|
values (diamond_num), lucky_diamond_num = lucky_diamond_num +
|
||||||
update_time = values (update_time)
|
values (lucky_diamond_num), room_extra_num = room_extra_num +
|
||||||
|
values (room_extra_num), room_extra_lucky_num = room_extra_lucky_num +
|
||||||
|
values (room_extra_lucky_num), update_time =
|
||||||
|
values (update_time)
|
||||||
</update>
|
</update>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
package com.accompany.business.controller.extradiamond;
|
package com.accompany.business.controller.extradiamond;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.accompany.business.service.extradiamond.ExtraDiamondDayService;
|
import com.accompany.business.service.extradiamond.ExtraDiamondDayService;
|
||||||
import com.accompany.common.annotation.Authorization;
|
import com.accompany.common.annotation.Authorization;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -22,6 +23,6 @@ public class ExtraDiamondDayController {
|
|||||||
@Authorization
|
@Authorization
|
||||||
@GetMapping("/sendRoomLastDayDiamondtask")
|
@GetMapping("/sendRoomLastDayDiamondtask")
|
||||||
public void sendRoomLastDayDiamondtask(Integer partitionId, String statDate) {
|
public void sendRoomLastDayDiamondtask(Integer partitionId, String statDate) {
|
||||||
extraDiamondDayService.sendRoomExtraDiamondTask(partitionId, statDate);
|
extraDiamondDayService.sendRoomExtraDiamondTask(partitionId, DateUtil.parseDateTime(statDate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,6 +19,11 @@ public class ExtraDiamondDayTask {
|
|||||||
Date date = new Date();
|
Date date = new Date();
|
||||||
String statDate = DateUtil.formatDate(date);
|
String statDate = DateUtil.formatDate(date);
|
||||||
extraDiamondDayService.sendGuildExtraDiamondTask(PartitionEnum.SOVIET.getId(), statDate);
|
extraDiamondDayService.sendGuildExtraDiamondTask(PartitionEnum.SOVIET.getId(), statDate);
|
||||||
extraDiamondDayService.sendRoomExtraDiamondTask(PartitionEnum.SOVIET.getId(), statDate);
|
}
|
||||||
|
|
||||||
|
@Scheduled(cron = "0 6 0 ? * MON")
|
||||||
|
public void sendExtraDiamondWeekTask() {
|
||||||
|
Date date = new Date();
|
||||||
|
extraDiamondDayService.sendRoomExtraDiamondTask(PartitionEnum.SOVIET.getId(), date);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user