独联体-房间每周一发额外奖励

This commit is contained in:
2025-09-18 16:00:54 +08:00
parent e57ecad216
commit 1b9e5a6e97
13 changed files with 126 additions and 59 deletions

View File

@@ -56,6 +56,10 @@ public class GuildExtraDiamondDay implements Serializable {
* 主播lucky额外奖励 * 主播lucky额外奖励
*/ */
private BigDecimal anchorExtraLuckyNum; private BigDecimal anchorExtraLuckyNum;
/**
* 主播奖励是否已经发放0-未发放
*/
private Byte anchorSendStatus;
/** /**
* 公会长普通额外奖励 * 公会长普通额外奖励
*/ */

View File

@@ -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;
/** /**
* 创建时间 * 创建时间
*/ */

View File

@@ -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);
} }
} }

View File

@@ -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);
} }

View File

@@ -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);
} }

View File

@@ -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();
} }
} }

View File

@@ -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) {

View File

@@ -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);
}
} }

View File

@@ -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);
} }
} }

View File

@@ -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>

View File

@@ -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>

View File

@@ -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));
} }
} }

View File

@@ -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);
} }
} }