From 70ce45adaca58078c4c788c69219a3f20cbb7002 Mon Sep 17 00:00:00 2001 From: hokli <2629910752@qq.com> Date: Fri, 19 Sep 2025 12:57:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8B=AC=E8=81=94=E4=BD=93-=E6=88=BF=E9=97=B4?= =?UTF-8?q?=E6=B5=81=E6=B0=B4=E6=B7=BB=E5=8A=A0=E5=91=A8=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extradiamond/RoomExtraDiamondDay.java | 1 + .../SuperLuckyGiftDiamondIncomeListener.java | 6 ++++- .../RoomExtraDiamondDayMapper.java | 2 +- .../extradiamond/ExtraDiamondDayService.java | 24 +++++++------------ .../RoomExtraDiamondDayService.java | 13 ++++++++-- .../service/guild/GuildGiftRecordService.java | 2 +- .../sqlmappers/RoomExtraDiamondDayMapper.xml | 4 ++-- .../ExtraDiamondDayController.java | 5 ++-- .../extradiamond/ExtraDiamondDayTask.java | 4 +++- 9 files changed, 35 insertions(+), 26 deletions(-) diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/RoomExtraDiamondDay.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/RoomExtraDiamondDay.java index bf5379a04..6d990bfb6 100644 --- a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/RoomExtraDiamondDay.java +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/RoomExtraDiamondDay.java @@ -22,6 +22,7 @@ public class RoomExtraDiamondDay implements Serializable { @TableId(value = "id" , type = IdType.AUTO) private Long id; private Integer partitionId; + private String cycleDate; /** * 统计日期 */ diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/event/listener/SuperLuckyGiftDiamondIncomeListener.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/event/listener/SuperLuckyGiftDiamondIncomeListener.java index ff12cd87a..d46e34ef3 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/event/listener/SuperLuckyGiftDiamondIncomeListener.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/event/listener/SuperLuckyGiftDiamondIncomeListener.java @@ -13,6 +13,7 @@ import com.accompany.business.service.user.UsersService; import com.accompany.business.util.CycleTimeUtil; import com.accompany.business.util.FullMonthCycleTimeUtil; import com.accompany.common.constant.Constant; +import com.accompany.common.utils.DateTimeUtil; import com.accompany.core.model.PartitionInfo; import com.accompany.core.model.Users; import com.accompany.core.service.partition.PartitionInfoService; @@ -23,6 +24,8 @@ import org.springframework.stereotype.Component; import java.util.Date; +import static com.accompany.common.utils.DateTimeUtil.dateFormatter; + @Component public class SuperLuckyGiftDiamondIncomeListener implements ApplicationListener { @@ -83,7 +86,8 @@ public class SuperLuckyGiftDiamondIncomeListener implements ApplicationListener< } if (Constant.ClanMode.SOVIET.equals(partitionInfo.getClanMode()) && roomUid != null && roomUid > 0L) { - extraDiamondDayService.updateRoomExtraDiamond(guildMember, roomUid, receiver.getPartitionId(), statDate, + statDate = DateTimeUtil.convertWithZoneId(time, partitionInfo.getZoneId()).format(dateFormatter); + extraDiamondDayService.updateRoomExtraDiamond(guildMember, roomUid, partitionInfo, statDate, roomUid, 0D, message.getTotalDiamondNum(), time); } } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/extradiamond/RoomExtraDiamondDayMapper.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/extradiamond/RoomExtraDiamondDayMapper.java index e33fc576e..bd3f4dabb 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/extradiamond/RoomExtraDiamondDayMapper.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/extradiamond/RoomExtraDiamondDayMapper.java @@ -16,7 +16,7 @@ import java.util.Date; public interface RoomExtraDiamondDayMapper extends BaseMapper { int updateExtraDiamond(@Param("guildMemberId") Long guildMemberId, @Param("guildId") Integer guildId, - @Param("uid") Long uid, @Param("partitionId") Integer partitionId, + @Param("uid") Long uid, @Param("partitionId") Integer partitionId, @Param("cycleDate") String cycleDate, @Param("statDate") String statDate, @Param("roomUid") Long roomUid, @Param("normalDiamondNum") Double normalDiamondNum, @Param("luckyDiamondNum") Double luckyDiamondNum, @Param("roomDiamondNum") BigDecimal roomDiamondNum, @Param("roomLuckyDiamond") BigDecimal roomLuckyDiamond, diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/extradiamond/ExtraDiamondDayService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/extradiamond/ExtraDiamondDayService.java index 01c241665..00e4d745a 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/extradiamond/ExtraDiamondDayService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/extradiamond/ExtraDiamondDayService.java @@ -1,8 +1,5 @@ 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.model.extradiamond.GuildExtraDiamondDay; import com.accompany.business.model.extradiamond.RoomExtraDiamondDay; @@ -12,7 +9,9 @@ import com.accompany.business.service.guild.GuildMemberService; import com.accompany.business.service.guild.GuildService; import com.accompany.business.service.purse.UserPurseService; import com.accompany.common.status.BusiStatus; +import com.accompany.common.utils.DateTimeUtil; import com.accompany.core.exception.ServiceException; +import com.accompany.core.model.PartitionInfo; import com.accompany.core.service.SysConfService; import com.accompany.core.util.StringUtils; import com.alibaba.fastjson.JSONObject; @@ -24,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired; 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; @@ -79,7 +79,7 @@ public class ExtraDiamondDayService { } } - public void updateRoomExtraDiamond(GuildMember guildMember, Long uid, Integer partitionId, String statDate, Long roomUid, + public void updateRoomExtraDiamond(GuildMember guildMember, Long uid, PartitionInfo partitionInfo, String statDate, Long roomUid, Double normalDiamondNum, Double luckyDiamondNum, Date time) { Long guildMemberId = 0L; Integer guildId = 0; @@ -87,12 +87,14 @@ public class ExtraDiamondDayService { guildMemberId = guildMember.getId(); guildId = guildMember.getGuildId(); } + int partitionId = partitionInfo.getId(); + String cycleDate = DateTimeUtil.convertWithZoneId(time, partitionInfo.getZoneId()).with(DayOfWeek.MONDAY).format(DateTimeUtil.dateFormatter); ExtraDiamondRateConfigDto diamondRateConfig = this.getExtraDiamondRateConfig(guildMember.getPartitionId()); 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, + roomExtraDiamondDayService.updateExtraDiamond(guildMemberId, guildId, uid, partitionId, cycleDate, statDate, roomUid, normalDiamondNum, luckyDiamondNum, roomDiamondNum, roomLuckyDiamond, time); } @@ -156,15 +158,7 @@ public class ExtraDiamondDayService { } } - public void sendRoomExtraDiamondTask(Integer partitionId, Date now) { - Date lastWeek = DateUtil.offsetWeek(now, -1); - DateTime mondayOfLastWeek = DateUtil.beginOfWeek(lastWeek); - DateTime sundayOfLastWeek = DateUtil.endOfWeek(lastWeek); - - List statDateList = DateUtil.rangeToList(mondayOfLastWeek, sundayOfLastWeek, DateField.DAY_OF_MONTH) - .stream() - .map(d -> DateUtil.format(d, "yyyy-MM-dd")) - .collect(Collectors.toList()); + public void sendRoomExtraDiamondTask(Integer partitionId, String monthDay) { String lockKey = "sendLastDayDiamondtask_room_" + partitionId; RLock lock = redissonClient.getLock(lockKey); @@ -174,7 +168,7 @@ public class ExtraDiamondDayService { if (!locked) { throw new ServiceException(BusiStatus.SERVERBUSY); } - List roomExtraDiamondDays = roomExtraDiamondDayService.listByPartitionStatDateList(partitionId, statDateList); + List roomExtraDiamondDays = roomExtraDiamondDayService.listByPartitionCycleDate(partitionId, monthDay); if (CollectionUtils.isEmpty(roomExtraDiamondDays)) { return; } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/extradiamond/RoomExtraDiamondDayService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/extradiamond/RoomExtraDiamondDayService.java index 3070903dd..ee7f8e59f 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/extradiamond/RoomExtraDiamondDayService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/extradiamond/RoomExtraDiamondDayService.java @@ -20,10 +20,10 @@ import java.util.List; @Service public class RoomExtraDiamondDayService extends ServiceImpl { - public int updateExtraDiamond(Long guildMemberId, Integer guildId, Long uid, Integer partitionId, + public int updateExtraDiamond(Long guildMemberId, Integer guildId, Long uid, Integer partitionId, String cycleDate, String statDate, Long roomUid, Double normalDiamondNum, Double luckyDiamondNum, BigDecimal roomDiamondNum, BigDecimal roomLuckyDiamond, Date time) { - return baseMapper.updateExtraDiamond(guildMemberId, guildId, uid, partitionId, statDate, roomUid, + return baseMapper.updateExtraDiamond(guildMemberId, guildId, uid, partitionId, cycleDate, statDate, roomUid, normalDiamondNum, luckyDiamondNum, roomDiamondNum, roomLuckyDiamond, time); } @@ -44,4 +44,13 @@ public class RoomExtraDiamondDayService extends ServiceImpl listByPartitionCycleDate(Integer partitionId, String cycleDate) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(RoomExtraDiamondDay::getPartitionId, partitionId) + .eq(RoomExtraDiamondDay::getCycleDate, cycleDate) + .le(RoomExtraDiamondDay::getRoomExtraNum, BigDecimal.ZERO) + .le(RoomExtraDiamondDay::getRoomExtraLuckyNum, BigDecimal.ZERO); + return list(queryWrapper); + } } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildGiftRecordService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildGiftRecordService.java index 61dc7ad01..837ad59f4 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildGiftRecordService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildGiftRecordService.java @@ -115,7 +115,7 @@ public class GuildGiftRecordService extends ServiceImpl 0L) { statDate = DateTimeUtil.convertWithZoneId(createTime, partitionInfo.getZoneId()).format(dateFormatter); - extraDiamondDayService.updateRoomExtraDiamond(guildMember, giftSendRecord.getUid(), giftSendRecord.getPartitionId(), + extraDiamondDayService.updateRoomExtraDiamond(guildMember, giftSendRecord.getUid(), partitionInfo, statDate, roomUid, totalDiamondNum, 0D, createTime); } diff --git a/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/RoomExtraDiamondDayMapper.xml b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/RoomExtraDiamondDayMapper.xml index 2162ed315..653356f5b 100644 --- a/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/RoomExtraDiamondDayMapper.xml +++ b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/RoomExtraDiamondDayMapper.xml @@ -2,10 +2,10 @@ - INSERT INTO `room_extra_diamond_day` (`partition_id`, `stat_date`, `guild_member_id`, `guild_id`, `uid`, + INSERT INTO `room_extra_diamond_day` (`partition_id`, `cycle_date`,`stat_date`, `guild_member_id`, `guild_id`, `uid`, `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}, #{cycleDate}, #{statDate}, #{guildMemberId}, #{guildId}, #{uid}, #{roomUid}, #{normalDiamondNum}, #{luckyDiamondNum}, #{roomDiamondNum}, #{roomLuckyDiamond}, #{time}, #{time}) ON DUPLICATE KEY UPDATE diamond_num = diamond_num + diff --git a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/extradiamond/ExtraDiamondDayController.java b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/extradiamond/ExtraDiamondDayController.java index fa3f3620c..06a933beb 100644 --- a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/extradiamond/ExtraDiamondDayController.java +++ b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/extradiamond/ExtraDiamondDayController.java @@ -1,6 +1,5 @@ package com.accompany.business.controller.extradiamond; -import cn.hutool.core.date.DateUtil; import com.accompany.business.service.extradiamond.ExtraDiamondDayService; import com.accompany.common.annotation.Authorization; import org.springframework.beans.factory.annotation.Autowired; @@ -22,7 +21,7 @@ public class ExtraDiamondDayController { @Authorization @GetMapping("/sendRoomLastDayDiamondtask") - public void sendRoomLastDayDiamondtask(Integer partitionId, String statDate) { - extraDiamondDayService.sendRoomExtraDiamondTask(partitionId, DateUtil.parseDateTime(statDate)); + public void sendRoomLastDayDiamondtask(Integer partitionId, String monthDay) { + extraDiamondDayService.sendRoomExtraDiamondTask(partitionId, monthDay); } } diff --git a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/extradiamond/ExtraDiamondDayTask.java b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/extradiamond/ExtraDiamondDayTask.java index fd7686cdb..85777073e 100644 --- a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/extradiamond/ExtraDiamondDayTask.java +++ b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/extradiamond/ExtraDiamondDayTask.java @@ -24,6 +24,8 @@ public class ExtraDiamondDayTask { @Scheduled(cron = "0 6 0 ? * MON") public void sendExtraDiamondWeekTask() { Date date = new Date(); - extraDiamondDayService.sendRoomExtraDiamondTask(PartitionEnum.SOVIET.getId(), date); + Date lastWeek = DateUtil.offsetWeek(date, -1); + Date mondayOfLastWeek = DateUtil.beginOfWeek(lastWeek); + extraDiamondDayService.sendRoomExtraDiamondTask(PartitionEnum.SOVIET.getId(), DateUtil.formatDate(mondayOfLastWeek)); } }