sharding分表查询

This commit is contained in:
2025-07-17 16:59:09 +08:00
parent 07f1dd492a
commit c09d2ad9b8
6 changed files with 55 additions and 10 deletions

View File

@@ -46,13 +46,18 @@ public class RoomHourDiamondAdminService {
}
roomUid = user.getUid();
}
Date startTime = DateUtil.parse(startTimeStr);
Date endTime = DateUtil.parse(endTimeStr);
IPage<RoomHourDiamondNum> iPage = roomHourDiamondNumService.listDiamondNum(new Page<>(pageNo, pageSize), roomUid, startTime, endTime, partitionId, regionId);
Date startTime = DateUtil.parseDateTime(startTimeStr);
Date endTime = DateUtil.parseDateTime(endTimeStr);
PageResult<RoomHourDiamondAdminVo> pageResult = new PageResult<>();
pageResult.setTotal((int) iPage.getTotal());
Integer count = roomHourDiamondNumService.countDiamondNum(roomUid, startTime, endTime, partitionId, regionId);
List<RoomHourDiamondAdminVo> list = new ArrayList<>();
pageResult.setRows(list);
pageResult.setRows(list);
pageResult.setTotal(count);
if (count <= 0) {
return pageResult;
}
IPage<RoomHourDiamondNum> page = new Page<>(pageNo, pageSize, false);
IPage<RoomHourDiamondNum> iPage = roomHourDiamondNumService.listDiamondNum(page, roomUid, startTime, endTime, partitionId, regionId);
List<RoomHourDiamondNum> records = iPage.getRecords();
if (CollectionUtils.isEmpty(records)) {
return pageResult;

View File

@@ -241,7 +241,7 @@ public class ShardingSphereConfig {
}
private AlgorithmConfiguration getjoyGameShardingAlgorithmConfiguration() {
return getMonthShardingAlgorithmConfiguration();
return getMonthShardingAlgorithmConfigurationV2();
}
private AlgorithmConfiguration getBaiShunGameRecordShardingAlgorithmConfiguration() {
@@ -276,13 +276,10 @@ public class ShardingSphereConfig {
}
private AlgorithmConfiguration getRoomHourDiamondShardingAlgorithmConfiguration() {
AlgorithmConfiguration algorithmConfiguration = getMonthShardingAlgorithmConfiguration();
AlgorithmConfiguration algorithmConfiguration = getMonthShardingAlgorithmConfigurationV2();
return algorithmConfiguration;
}
/**
* =====账单表分表策略=====
**/
private AlgorithmConfiguration getMonthShardingAlgorithmConfiguration() {
Properties properties = new Properties();
properties.setProperty("datetime-pattern", DateTimeUtil.DEFAULT_DATE_PATTERN_YEAR_MONTH);
@@ -294,6 +291,18 @@ public class ShardingSphereConfig {
return new AlgorithmConfiguration("INTERVAL", properties);
}
private AlgorithmConfiguration getMonthShardingAlgorithmConfigurationV2() {
Properties properties = new Properties();
properties.setProperty("datetime-pattern", DateTimeUtil.DEFAULT_DATETIME_PATTERN);
properties.setProperty("datetime-lower", "2025-01-01 00:00:00");
properties.setProperty("datetime-upper", "2026-12-31 23:59:59");
properties.setProperty("sharding-suffix-pattern", DateTimeUtil.DATE_FORMAT_YEAR_MONTH);
properties.setProperty("datetime-interval-amount", "1");
properties.setProperty("datetime-interval-unit", "MONTHS");
return new AlgorithmConfiguration("INTERVAL", properties);
}
/**
* =======动态评论表分表策略===========
**/

View File

@@ -18,4 +18,8 @@ public interface RoomHourDiamondNumMapper extends BaseMapper<RoomHourDiamondNum>
IPage<RoomHourDiamondNum> listDiamondNum(IPage<RoomHourDiamondNum> iPage, @Param("uid") Long uid,
@Param("statTime") Date statTime, @Param("endTime") Date endTime,
@Param("partitionId") Integer partitionId, @Param("regionId") Integer regionId);
Integer countDiamondNum(@Param("uid") Long uid,
@Param("statTime") Date statTime, @Param("endTime") Date endTime,
@Param("partitionId") Integer partitionId, @Param("regionId") Integer regionId);
}

View File

@@ -22,4 +22,22 @@
order by diamondNum desc
</select>
<select id="countDiamondNum" resultType="java.lang.Integer">
select
count(distinct r.room_uid)
from room_hour_diamond_num r
left join users u on u.uid=r.room_uid
where r.stat_date >= #{statTime}
and r.stat_date &lt;= #{endTime}
<if test="uid != null">
and r.room_uid = #{uid}
</if>
<if test="partitionId != null and partitionId != 0">
and u.partition_id = #{partitionId}
</if>
<if test="regionId != null and regionId != 0">
and u.region_id = #{regionId}
</if>
</select>
</mapper>

View File

@@ -34,4 +34,7 @@ public interface RoomHourDiamondNumService extends IService<RoomHourDiamondNum>
IPage<RoomHourDiamondNum> listDiamondNum(IPage<RoomHourDiamondNum> iPage, Long uid, Date statTime, Date endTime,
Integer partitionId, Integer regionId);
Integer countDiamondNum(Long uid, Date statTime, Date endTime,
Integer partitionId, Integer regionId);
}

View File

@@ -105,6 +105,12 @@ public class RoomHourDiamondNumServiceImpl extends ServiceImpl<RoomHourDiamondNu
return baseMapper.listDiamondNum(iPage, uid, statTime, endTime, partitionId, regionId);
}
@Override
public Integer countDiamondNum(Long uid, Date statTime,
Date endTime, Integer partitionId, Integer regionId) {
return baseMapper.countDiamondNum(uid, statTime, endTime, partitionId, regionId);
}
private String getCacheKeyPatten(Date statDate) {
Date currentYYYYMMDDHHTime = getCurrentYYYYMMDDHHTime(statDate);
return DateUtil.format(currentYYYYMMDDHHTime, DATE_HOUR_PATTERN);