独联体-房间流水添加周期

This commit is contained in:
2025-09-19 12:57:51 +08:00
parent 2c0c809871
commit 70ce45adac
9 changed files with 35 additions and 26 deletions

View File

@@ -22,6 +22,7 @@ public class RoomExtraDiamondDay implements Serializable {
@TableId(value = "id" , type = IdType.AUTO)
private Long id;
private Integer partitionId;
private String cycleDate;
/**
* 统计日期
*/

View File

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

View File

@@ -16,7 +16,7 @@ import java.util.Date;
public interface RoomExtraDiamondDayMapper extends BaseMapper<RoomExtraDiamondDay> {
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,

View File

@@ -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<String> 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<RoomExtraDiamondDay> roomExtraDiamondDays = roomExtraDiamondDayService.listByPartitionStatDateList(partitionId, statDateList);
List<RoomExtraDiamondDay> roomExtraDiamondDays = roomExtraDiamondDayService.listByPartitionCycleDate(partitionId, monthDay);
if (CollectionUtils.isEmpty(roomExtraDiamondDays)) {
return;
}

View File

@@ -20,10 +20,10 @@ import java.util.List;
@Service
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 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<RoomExtraDiamondDayM
.le(RoomExtraDiamondDay::getRoomExtraLuckyNum, BigDecimal.ZERO);
return list(queryWrapper);
}
public List<RoomExtraDiamondDay> listByPartitionCycleDate(Integer partitionId, String cycleDate) {
LambdaQueryWrapper<RoomExtraDiamondDay> 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);
}
}

View File

@@ -115,7 +115,7 @@ public class GuildGiftRecordService extends ServiceImpl<GuildGiftRecordMapper, G
Long roomUid = giftSendRecord.getRoomUid();
if (Constant.ClanMode.SOVIET.equals(partitionInfo.getClanMode()) && roomUid != null && roomUid > 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);
}

View File

@@ -2,10 +2,10 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.accompany.business.mybatismapper.extradiamond.RoomExtraDiamondDayMapper">
<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`, `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 +

View File

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

View File

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