独联体-房间流水添加周期
This commit is contained in:
@@ -22,6 +22,7 @@ public class RoomExtraDiamondDay implements Serializable {
|
||||
@TableId(value = "id" , type = IdType.AUTO)
|
||||
private Long id;
|
||||
private Integer partitionId;
|
||||
private String cycleDate;
|
||||
/**
|
||||
* 统计日期
|
||||
*/
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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,
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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 +
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user