独联体-房间流水添加周期
This commit is contained in:
@@ -22,6 +22,7 @@ public class RoomExtraDiamondDay implements Serializable {
|
|||||||
@TableId(value = "id" , type = IdType.AUTO)
|
@TableId(value = "id" , type = IdType.AUTO)
|
||||||
private Long id;
|
private Long id;
|
||||||
private Integer partitionId;
|
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.CycleTimeUtil;
|
||||||
import com.accompany.business.util.FullMonthCycleTimeUtil;
|
import com.accompany.business.util.FullMonthCycleTimeUtil;
|
||||||
import com.accompany.common.constant.Constant;
|
import com.accompany.common.constant.Constant;
|
||||||
|
import com.accompany.common.utils.DateTimeUtil;
|
||||||
import com.accompany.core.model.PartitionInfo;
|
import com.accompany.core.model.PartitionInfo;
|
||||||
import com.accompany.core.model.Users;
|
import com.accompany.core.model.Users;
|
||||||
import com.accompany.core.service.partition.PartitionInfoService;
|
import com.accompany.core.service.partition.PartitionInfoService;
|
||||||
@@ -23,6 +24,8 @@ import org.springframework.stereotype.Component;
|
|||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import static com.accompany.common.utils.DateTimeUtil.dateFormatter;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class SuperLuckyGiftDiamondIncomeListener implements ApplicationListener<SuperLuckyGiftDiamondIncomeMessageEvent> {
|
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) {
|
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);
|
roomUid, 0D, message.getTotalDiamondNum(), time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -16,7 +16,7 @@ import java.util.Date;
|
|||||||
public interface RoomExtraDiamondDayMapper extends BaseMapper<RoomExtraDiamondDay> {
|
public interface RoomExtraDiamondDayMapper extends BaseMapper<RoomExtraDiamondDay> {
|
||||||
|
|
||||||
int updateExtraDiamond(@Param("guildMemberId") Long guildMemberId, @Param("guildId") Integer guildId,
|
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("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("roomDiamondNum") BigDecimal roomDiamondNum, @Param("roomLuckyDiamond") BigDecimal roomLuckyDiamond,
|
||||||
|
@@ -1,8 +1,5 @@
|
|||||||
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;
|
||||||
@@ -12,7 +9,9 @@ import com.accompany.business.service.guild.GuildMemberService;
|
|||||||
import com.accompany.business.service.guild.GuildService;
|
import com.accompany.business.service.guild.GuildService;
|
||||||
import com.accompany.business.service.purse.UserPurseService;
|
import com.accompany.business.service.purse.UserPurseService;
|
||||||
import com.accompany.common.status.BusiStatus;
|
import com.accompany.common.status.BusiStatus;
|
||||||
|
import com.accompany.common.utils.DateTimeUtil;
|
||||||
import com.accompany.core.exception.ServiceException;
|
import com.accompany.core.exception.ServiceException;
|
||||||
|
import com.accompany.core.model.PartitionInfo;
|
||||||
import com.accompany.core.service.SysConfService;
|
import com.accompany.core.service.SysConfService;
|
||||||
import com.accompany.core.util.StringUtils;
|
import com.accompany.core.util.StringUtils;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
@@ -24,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.DayOfWeek;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
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) {
|
Double normalDiamondNum, Double luckyDiamondNum, Date time) {
|
||||||
Long guildMemberId = 0L;
|
Long guildMemberId = 0L;
|
||||||
Integer guildId = 0;
|
Integer guildId = 0;
|
||||||
@@ -87,12 +87,14 @@ public class ExtraDiamondDayService {
|
|||||||
guildMemberId = guildMember.getId();
|
guildMemberId = guildMember.getId();
|
||||||
guildId = guildMember.getGuildId();
|
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());
|
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 roomDiamondNum = diamondRateConfig.getRoomExtraRate().multiply(decimalNormal);
|
BigDecimal roomDiamondNum = diamondRateConfig.getRoomExtraRate().multiply(decimalNormal);
|
||||||
BigDecimal roomLuckyDiamond = diamondRateConfig.getRoomExtraLuckyRate().multiply(decimalLucky);
|
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);
|
normalDiamondNum, luckyDiamondNum, roomDiamondNum, roomLuckyDiamond, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,15 +158,7 @@ public class ExtraDiamondDayService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendRoomExtraDiamondTask(Integer partitionId, Date now) {
|
public void sendRoomExtraDiamondTask(Integer partitionId, String monthDay) {
|
||||||
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());
|
|
||||||
|
|
||||||
String lockKey = "sendLastDayDiamondtask_room_" + partitionId;
|
String lockKey = "sendLastDayDiamondtask_room_" + partitionId;
|
||||||
RLock lock = redissonClient.getLock(lockKey);
|
RLock lock = redissonClient.getLock(lockKey);
|
||||||
@@ -174,7 +168,7 @@ public class ExtraDiamondDayService {
|
|||||||
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.listByPartitionCycleDate(partitionId, monthDay);
|
||||||
if (CollectionUtils.isEmpty(roomExtraDiamondDays)) {
|
if (CollectionUtils.isEmpty(roomExtraDiamondDays)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -20,10 +20,10 @@ import java.util.List;
|
|||||||
@Service
|
@Service
|
||||||
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 cycleDate,
|
||||||
String statDate, Long roomUid, Double normalDiamondNum, Double luckyDiamondNum,
|
String statDate, Long roomUid, Double normalDiamondNum, Double luckyDiamondNum,
|
||||||
BigDecimal roomDiamondNum, BigDecimal roomLuckyDiamond, Date time) {
|
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);
|
normalDiamondNum, luckyDiamondNum, roomDiamondNum, roomLuckyDiamond, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,4 +44,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> 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();
|
Long roomUid = giftSendRecord.getRoomUid();
|
||||||
if (Constant.ClanMode.SOVIET.equals(partitionInfo.getClanMode()) && roomUid != null && roomUid > 0L) {
|
if (Constant.ClanMode.SOVIET.equals(partitionInfo.getClanMode()) && roomUid != null && roomUid > 0L) {
|
||||||
statDate = DateTimeUtil.convertWithZoneId(createTime, partitionInfo.getZoneId()).format(dateFormatter);
|
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);
|
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">
|
<!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">
|
<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`, `cycle_date`,`stat_date`, `guild_member_id`, `guild_id`, `uid`,
|
||||||
`room_uid`, `diamond_num`, `lucky_diamond_num`, `room_extra_num`,
|
`room_uid`, `diamond_num`, `lucky_diamond_num`, `room_extra_num`,
|
||||||
`room_extra_lucky_num`, `create_time`, `update_time`)
|
`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
|
#{luckyDiamondNum}, #{roomDiamondNum}, #{roomLuckyDiamond}, #{time}, #{time}) ON DUPLICATE KEY
|
||||||
UPDATE
|
UPDATE
|
||||||
diamond_num = diamond_num +
|
diamond_num = diamond_num +
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
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,7 +21,7 @@ public class ExtraDiamondDayController {
|
|||||||
|
|
||||||
@Authorization
|
@Authorization
|
||||||
@GetMapping("/sendRoomLastDayDiamondtask")
|
@GetMapping("/sendRoomLastDayDiamondtask")
|
||||||
public void sendRoomLastDayDiamondtask(Integer partitionId, String statDate) {
|
public void sendRoomLastDayDiamondtask(Integer partitionId, String monthDay) {
|
||||||
extraDiamondDayService.sendRoomExtraDiamondTask(partitionId, DateUtil.parseDateTime(statDate));
|
extraDiamondDayService.sendRoomExtraDiamondTask(partitionId, monthDay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -24,6 +24,8 @@ public class ExtraDiamondDayTask {
|
|||||||
@Scheduled(cron = "0 6 0 ? * MON")
|
@Scheduled(cron = "0 6 0 ? * MON")
|
||||||
public void sendExtraDiamondWeekTask() {
|
public void sendExtraDiamondWeekTask() {
|
||||||
Date date = new Date();
|
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