diff --git a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java index e04b1fceb..efa599978 100644 --- a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java +++ b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/api/MyApiService.java @@ -8,7 +8,6 @@ import com.accompany.admin.service.UserLevelExperienceExportService; import com.accompany.business.constant.guild.GuildConstant; import com.accompany.business.dto.WeekActiveGuildStat; import com.accompany.business.model.*; -import com.accompany.business.model.guild.AgencyMonthSettleDetail; import com.accompany.business.model.guild.GuildMember; import com.accompany.business.model.relation.RelationUser; import com.accompany.business.mybatismapper.*; @@ -33,7 +32,6 @@ import com.accompany.common.constant.EmailConstant; import com.accompany.common.device.DeviceInfo; import com.accompany.common.netease.ErBanNetEaseService; import com.accompany.common.netease.neteaseacc.result.RoomMemberRet; -import com.accompany.common.netease.util.NetEaseConstant; import com.accompany.common.redis.RedisKey; import com.accompany.common.status.BusiStatus; import com.accompany.common.utils.CommonUtil; @@ -447,7 +445,7 @@ public class MyApiService { log.info("[lucky24Stat] start partitionId {} startTime {} endTime {} zoneIdHour {}", partition.getId(), DateTimeUtil.convertDate(startTime, DateTimeUtil.DEFAULT_DATETIME_PATTERN), DateTimeUtil.convertDate(endTime, DateTimeUtil.DEFAULT_DATETIME_PATTERN), zoneIdHour); - lucky24RecordService.statDate(partition.getId(), startTime, endTime, zoneIdHour); + lucky24RecordService.statDate(partition.getId(), startTime, endTime, zoneIdHour, dateStr); log.info("[lucky24Stat] end partitionId {} startTime {} endTime {} zoneIdHour {}", partition.getId(), DateTimeUtil.convertDate(startTime, DateTimeUtil.DEFAULT_DATETIME_PATTERN), DateTimeUtil.convertDate(endTime, DateTimeUtil.DEFAULT_DATETIME_PATTERN), zoneIdHour); diff --git a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/lucky/Lucky24RecordAdminService.java b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/lucky/Lucky24RecordAdminService.java index d6da7548e..83d353c9c 100644 --- a/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/lucky/Lucky24RecordAdminService.java +++ b/accompany-admin/accompany-admin-service/src/main/java/com/accompany/admin/service/lucky/Lucky24RecordAdminService.java @@ -81,6 +81,9 @@ public class Lucky24RecordAdminService { String startDate = minStartDate; String endDate = DateTimeUtil.getZonedTodayStr(partitionInfo.getZoneId()); + List poolTypeList = null == poolType? Arrays.stream(Lucky24PoolTypeEnum.values()).map(Lucky24PoolTypeEnum::getType).sorted().toList(): + Collections.singletonList(poolType); + List dateStrList = DateTimeUtil.getDateListBetweenTwoDates(startDate, endDate, endDate); Map statMap = new HashMap<>(dateStrList.size()); @@ -91,13 +94,13 @@ public class Lucky24RecordAdminService { Date startTime = DateTimeUtil.getBeginTimeOfDay(DateTimeUtil.convertStrToDate(endDate, DateTimeUtil.DEFAULT_DATE_PATTERN)); ZonedDateTime zonedStartTime = startTime.toInstant().atZone(ZoneId.systemDefault()); Date systemStartTime = Date.from(zonedStartTime.withZoneSameLocal(ZoneId.of(partitionInfo.getZoneId())).toInstant()); - long zoneIdHour = Duration.between(systemStartTime.toInstant(), startTime.toInstant()).toHours(); + Date endTime = DateTimeUtil.getEndTimeOfDay(DateTimeUtil.convertStrToDate(endDate, DateTimeUtil.DEFAULT_DATE_PATTERN)); ZonedDateTime zonedEndTime = endTime.toInstant().atZone(ZoneId.systemDefault()); Date systemEndTime = Date.from(zonedEndTime.withZoneSameLocal(ZoneId.of(partitionInfo.getZoneId())).toInstant()); List list = null == poolType? - recordMapper.listPlatform(partitionId, systemStartTime, systemEndTime, zoneIdHour): - recordMapper.listPlatformByPoolType(partitionId, poolType, systemStartTime, systemEndTime, zoneIdHour); + recordMapper.listPlatform(endDate, partitionId, poolTypeList, systemStartTime, systemEndTime): + recordMapper.listPlatformByPoolType(endDate, partitionId, poolTypeList, systemStartTime, systemEndTime); for (Lucky24PlatformStat stat: list) { statMap.put(stat.getDate(), stat); } @@ -284,17 +287,20 @@ public class Lucky24RecordAdminService { } private List listPersonal(int partitionId, String zonedId, Long uid, String date, String userRechargeLevel, Integer poolType) { + List poolTypeList = null == poolType ? + Arrays.stream(Lucky24PoolTypeEnum.values()).map(Lucky24PoolTypeEnum::getType).sorted().toList(): Collections.singletonList(poolType); + ZoneId zoneId = ZoneId.of(zonedId); Date startTime = DateTimeUtil.getBeginTimeOfDay(DateTimeUtil.convertStrToDate(date, DateTimeUtil.DEFAULT_DATE_PATTERN)); ZonedDateTime zonedStartTime = startTime.toInstant().atZone(ZoneId.systemDefault()); Date systemStartTime = Date.from(zonedStartTime.withZoneSameLocal(zoneId).toInstant()); - long zoneIdHour = Duration.between(systemStartTime.toInstant(), startTime.toInstant()).toHours(); + Date endTime = DateTimeUtil.getEndTimeOfDay(DateTimeUtil.convertStrToDate(date, DateTimeUtil.DEFAULT_DATE_PATTERN)); ZonedDateTime zonedEndTime = endTime.toInstant().atZone(ZoneId.systemDefault()); Date systemEndTime = Date.from(zonedEndTime.withZoneSameLocal(zoneId).toInstant()); return null == poolType? - recordMapper.listPersonal(partitionId, uid, userRechargeLevel, systemStartTime, systemEndTime, zoneIdHour): - recordMapper.listPersonalByPoolType(partitionId, uid, userRechargeLevel, poolType, systemStartTime, systemEndTime, zoneIdHour); + recordMapper.listPersonal(date, partitionId, poolTypeList, systemStartTime, systemEndTime, uid, userRechargeLevel): + recordMapper.listPersonalByPoolType(date, partitionId, poolTypeList, systemStartTime, systemEndTime, uid, userRechargeLevel); } public Page pageRecord(Long uid, String date, Integer poolType, int pageNo, int pageSize) { @@ -310,12 +316,16 @@ public class Lucky24RecordAdminService { ZonedDateTime zonedEndTime = endTime.toInstant().atZone(ZoneId.systemDefault()); Date systemEndTime = Date.from(zonedEndTime.withZoneSameLocal(zoneId).toInstant()); + List poolTypeList = null == poolType ? + Arrays.stream(Lucky24PoolTypeEnum.values()).map(Lucky24PoolTypeEnum::getType).sorted().toList(): Collections.singletonList(poolType); + Page voPage = new Page<>(pageNo, pageSize); Page poPage = new Page<>(pageNo, pageSize); recordMapper.selectPage(poPage, Wrappers.lambdaQuery() - .eq(Lucky24Record::getUid, uid) - .between(Lucky24Record::getCreateTime, systemStartTime, systemEndTime) - .eq(null != poolType, Lucky24Record::getPoolType, poolType)); + .eq(Lucky24Record::getPartitionId, partitionEnum.getId()) + .in(Lucky24Record::getPoolType, poolTypeList) + .between(Lucky24Record::getCreateTime, systemStartTime, systemEndTime) + .eq(Lucky24Record::getUid, uid)); if (CollectionUtils.isEmpty(poPage.getRecords())){ return voPage; diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/config/ShardingSphereConfig.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/config/ShardingSphereConfig.java index 42653b3d6..1cbdd7f94 100644 --- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/config/ShardingSphereConfig.java +++ b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/config/ShardingSphereConfig.java @@ -1,11 +1,6 @@ package com.accompany.sharding.config; import com.accompany.common.utils.DateTimeUtil; -import com.accompany.common.utils.EnvComponent; -import com.accompany.common.utils.ResourceUtil; -import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; -import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; -import org.apache.ibatis.plugin.Interceptor; import org.apache.shardingsphere.driver.api.ShardingSphereDataSourceFactory; import org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration; import org.apache.shardingsphere.infra.config.mode.ModeConfiguration; @@ -19,15 +14,10 @@ import org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleC import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration; import org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration; import org.apache.shardingsphere.single.config.SingleRuleConfiguration; -import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.DependsOn; -import org.springframework.context.annotation.Primary; -import org.springframework.jdbc.datasource.DataSourceTransactionManager; -import org.springframework.transaction.annotation.EnableTransactionManagement; import javax.sql.DataSource; import java.sql.SQLException; @@ -42,9 +32,6 @@ import java.util.*; @Configuration public class ShardingSphereConfig { - @Autowired - private EnvComponent envComponent; - @Autowired @Qualifier("masterDataSource") private DataSource masterDataSource; diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/mapper/Lucky24RecordMapper.java b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/mapper/Lucky24RecordMapper.java index d6c22c6ab..6ac07d010 100644 --- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/mapper/Lucky24RecordMapper.java +++ b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/java/com/accompany/sharding/mapper/Lucky24RecordMapper.java @@ -11,21 +11,22 @@ import java.util.List; public interface Lucky24RecordMapper extends BaseMapper { - List listPlatform(@Param("partitionId") Integer partitionId, @Param("startTime") Date startTime, @Param("endTime") Date endTime, - @Param("zoneIdHour") long zoneIdHour); + List listPlatform(@Param("zoneDate")String zoneDate, @Param("partitionId") Integer partitionId, + @Param("poolTypeList")List poolTypeList, + @Param("startTime") Date startTime, @Param("endTime") Date endTime); - List listPlatformByPoolType(@Param("partitionId") Integer partitionId, @Param("poolType") Integer poolType, + List listPlatformByPoolType(@Param("zoneDate")String zonedDate, @Param("partitionId") Integer partitionId, + @Param("poolTypeList")List poolTypeList, + @Param("startTime") Date startTime, @Param("endTime") Date endTime); + + List listPersonal(@Param("zoneDate")String zoneDate, @Param("partitionId") Integer partitionId, + @Param("poolTypeList")List poolTypeList, + @Param("startTime") Date startTime, @Param("endTime") Date endTime, + @Param("uid") Long uid, @Param("userRechargeLevel") String userRechargeLevel); + + List listPersonalByPoolType(@Param("zoneDate")String zoneDate, @Param("partitionId") Integer partitionId, + @Param("poolTypeList")List poolTypeList, @Param("startTime") Date startTime, @Param("endTime") Date endTime, - @Param("zoneIdHour") long zoneIdHour); - - List listPersonal(@Param("partitionId") Integer partitionId, - @Param("uid") Long uid, - @Param("userRechargeLevel") String userRechargeLevel, @Param("startTime") Date startTime, @Param("endTime") Date endTime, - @Param("zoneIdHour") long zoneIdHour); - - List listPersonalByPoolType(@Param("partitionId") Integer partitionId, - @Param("uid") Long uid, @Param("userRechargeLevel") String userRechargeLevel, @Param("poolType") Integer poolType, - @Param("startTime") Date startTime, @Param("endTime") Date endTime, - @Param("zoneIdHour") long zoneIdHour); + @Param("uid") Long uid, @Param("userRechargeLevel") String userRechargeLevel); } diff --git a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/resources/sharding/sqlmappers/Lucky24RecordMapper.xml b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/resources/sharding/sqlmappers/Lucky24RecordMapper.xml index a95bf426e..7298ec01f 100644 --- a/accompany-base/accompany-sharding/accompany-sharding-service/src/main/resources/sharding/sqlmappers/Lucky24RecordMapper.xml +++ b/accompany-base/accompany-sharding/accompany-sharding-service/src/main/resources/sharding/sqlmappers/Lucky24RecordMapper.xml @@ -3,100 +3,112 @@ + + - - - - + + diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/lucky/Lucky24RecordService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/lucky/Lucky24RecordService.java index de806fcf3..0175eb631 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/lucky/Lucky24RecordService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/lucky/Lucky24RecordService.java @@ -1,5 +1,6 @@ package com.accompany.business.service.lucky; +import com.accompany.business.constant.Lucky24PoolTypeEnum; import com.accompany.business.model.Gift; import com.accompany.business.mybatismapper.lucky.Lucky24StatMapper; import com.accompany.common.status.BusiStatus; @@ -20,6 +21,7 @@ import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.concurrent.ThreadPoolExecutor; @@ -73,8 +75,10 @@ public class Lucky24RecordService extends ServiceImpl platformList = this.baseMapper.listPlatform(partitionId, startTime, endTime, zoneIdHour); + public void statDate(Integer partitionId, Date startTime, Date endTime, long zoneIdHour, String zoneDate) { + List poolTypeList = Arrays.stream(Lucky24PoolTypeEnum.values()).map(Lucky24PoolTypeEnum::getType).sorted().toList(); + + List platformList = this.baseMapper.listPlatform(zoneDate, partitionId, poolTypeList, startTime, endTime); log.info("[lucky24RecordStat] platform partitionId {} startTime {} endTime {} zoneIdHour {} platformList: {}", partitionId, DateTimeUtil.convertDate(startTime, DateTimeUtil.DEFAULT_DATETIME_PATTERN), DateTimeUtil.convertDate(endTime, DateTimeUtil.DEFAULT_DATETIME_PATTERN), zoneIdHour, JSON.toJSONString(platformList)); @@ -86,7 +90,7 @@ public class Lucky24RecordService extends ServiceImpl platformByPoolTypeList = this.baseMapper.listPlatformByPoolType(partitionId, null, startTime, endTime, zoneIdHour); + List platformByPoolTypeList = this.baseMapper.listPlatformByPoolType(zoneDate, partitionId, poolTypeList, startTime, endTime); log.info("[lucky24RecordStat] platformByPoolType partitionId {} startTime {} endTime {} zoneIdHour {} platformByPoolTypeList: {}", partitionId, DateTimeUtil.convertDate(startTime, DateTimeUtil.DEFAULT_DATETIME_PATTERN), DateTimeUtil.convertDate(endTime, DateTimeUtil.DEFAULT_DATETIME_PATTERN), zoneIdHour, JSON.toJSONString(platformByPoolTypeList)); @@ -98,7 +102,7 @@ public class Lucky24RecordService extends ServiceImpl personalList = this.baseMapper.listPersonal(partitionId, null, null, startTime, endTime, zoneIdHour); + List personalList = this.baseMapper.listPersonal(zoneDate, partitionId, poolTypeList, startTime, endTime, null, null); log.info("[lucky24RecordStat] personal partitionId {} startTime {} endTime {} zoneIdHour {} personalList: {}", partitionId, DateTimeUtil.convertDate(startTime, DateTimeUtil.DEFAULT_DATETIME_PATTERN), DateTimeUtil.convertDate(endTime, DateTimeUtil.DEFAULT_DATETIME_PATTERN), zoneIdHour, JSON.toJSONString(personalList)); @@ -113,7 +117,7 @@ public class Lucky24RecordService extends ServiceImpl personalByPoolTypeList = this.baseMapper.listPersonalByPoolType(partitionId, null, null, null, startTime, endTime, zoneIdHour); + List personalByPoolTypeList = this.baseMapper.listPersonalByPoolType(zoneDate, partitionId, poolTypeList, startTime, endTime, null, null); log.info("[lucky24RecordStat] personalByPoolType partitionId {} startTime {} endTime {} zoneIdHour {} personalByPoolTypeList: {}", partitionId, DateTimeUtil.convertDate(startTime, DateTimeUtil.DEFAULT_DATETIME_PATTERN), DateTimeUtil.convertDate(endTime, DateTimeUtil.DEFAULT_DATETIME_PATTERN), zoneIdHour, JSON.toJSONString(personalByPoolTypeList)); diff --git a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/DiamondStatTask.java b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/DiamondStatTask.java index 527277a1e..c7b42c9c6 100644 --- a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/DiamondStatTask.java +++ b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/DiamondStatTask.java @@ -17,14 +17,14 @@ public class DiamondStatTask extends BaseTask { @Autowired private DiamondStatService service; - @Scheduled(cron = "0 0 0 * * ?") + @Scheduled(cron = "0 10 0 * * ?") public void statEn() { List partitionIds = List.of(PartitionEnum.ENGLISH.getId(), PartitionEnum.CHINESE.getId(), PartitionEnum.ENGLISH2.getId()); Date now = new Date(); service.stat(partitionIds, now); } - @Scheduled(cron = "0 0 5 * * ?") + @Scheduled(cron = "0 10 0 * * ?", zone = "Asia/Riyadh") public void statAr() { List partitionIds = List.of(PartitionEnum.ARAB.getId(), PartitionEnum.TURKEY.getId()); Date now = new Date(); diff --git a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/luckyBag/Lucky24Task.java b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/luckyBag/Lucky24Task.java index 7c8b5e185..eac59e7bf 100644 --- a/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/luckyBag/Lucky24Task.java +++ b/accompany-scheduler/accompany-scheduler-service/src/main/java/com/accompany/scheduler/task/luckyBag/Lucky24Task.java @@ -79,6 +79,9 @@ public class Lucky24Task { if (zdt.getDayOfYear() == hourAgo.getDayOfYear()){ continue; } + + String zoneDate = hourAgo.format(DateTimeUtil.dateFormatter); + bizExecutor.execute(() -> { // 获取当天的第一秒 ZonedDateTime startOfDay = hourAgo.withHour(0) @@ -94,10 +97,10 @@ public class Lucky24Task { ZonedDateTime endOfDay = hourAgo.withHour(23) .withMinute(59) .withSecond(59) - .withNano(999999999); + .withNano(999); Date systemEndTime = DateTimeUtil.converLocalDateTimeToDate(endOfDay.withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime()); - service.statDate(partitionInfo.getId(), systemStartTime, systemEndTime, zoneIdHour); + service.statDate(partitionInfo.getId(), systemStartTime, systemEndTime, zoneIdHour, zoneDate); }); } }