update 聊天模块新增异常

This commit is contained in:
yyb
2025-08-25 13:39:55 +08:00
parent 80b15dcf5b
commit f8264b2df1
6 changed files with 223 additions and 63 deletions

View File

@@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@@ -78,7 +79,6 @@ public interface ManageBroadcastMapper extends BaseMapper<ManageBroadcast> {
* @param endDate
* @return
*/
@HashRateDB
List<ManageMiningUserOnlineDto> getMinerUserOnlineStatus(@Param("minerUser") String minerUser, @Param("coin") String coin, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
@@ -95,4 +95,18 @@ public interface ManageBroadcastMapper extends BaseMapper<ManageBroadcast> {
@DistributionDB
BigDecimal getAccountExpend(@Param("user") String user, @Param("coin") String coin);
/**
* 删除1个月前所有在线离线数据
* @param coin
* @return
*/
int deleteOnlineAndOfflineData(@Param("coin") String coin, @Param("date") LocalDateTime date);
/**
* 查询需要删除的行数
* @param coin
* @return
*/
int selectNeedDeleteNumbers(@Param("coin") String coin, @Param("date") LocalDateTime date);
}

View File

@@ -2,6 +2,7 @@ package com.m2pool.manage.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.m2pool.manage.entity.ManageWalletOutIn;
import com.m2pool.manage.mapper.ManageBroadcastMapper;
import com.m2pool.manage.mapper.ManageWalletOutInMapper;
import com.m2pool.manage.service.ManageWalletOutInService;
import org.springframework.context.annotation.Configuration;
@@ -30,6 +31,11 @@ public class ManageTask {
@Resource
private ManageWalletOutInMapper manageWalletOutInMapper;
@Resource
private ManageBroadcastMapper manageBroadcastMapper;
/**
* 存储交易记录定时任务
*/
@Scheduled(cron = "22 21 0/1 * * ?")
public void insertDataToWalletOutInDb(){
ManageWalletOutIn manageWalletOutIn = manageWalletOutInMapper.selectOne(new LambdaQueryWrapper<ManageWalletOutIn>().orderByDesc(
@@ -43,4 +49,156 @@ public class ManageTask {
boolean b = manageWalletOutInService.saveBatch(walletInfo);
System.out.println("walletOutIn 插入结果"+b);
}
/**
* 删除再离线数据
*/
@Scheduled(cron = "5 5 1 * * ?")
public void deleteOnlineAndOfflineDataForNexa(){
// 记录开始时间(纳秒)
long startTime = System.nanoTime();
LocalDateTime now = LocalDateTime.now();
LocalDateTime oneMonthAgo = now.minusMonths(1);
int count = manageBroadcastMapper.selectNeedDeleteNumbers("nexa", oneMonthAgo);
while (count > 0) {
int deletedCount = manageBroadcastMapper.deleteOnlineAndOfflineData("nexa", oneMonthAgo);
count -= deletedCount;
}
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1_000_000;
System.out.println("删除nexa在离线时间: " + duration + " 毫秒");
}
@Scheduled(cron = "10 5 2 * * ?")
public void deleteOnlineAndOfflineDataForMona(){
// 记录开始时间(纳秒)
long startTime = System.nanoTime();
LocalDateTime now = LocalDateTime.now();
LocalDateTime oneMonthAgo = now.minusMonths(1);
int count = manageBroadcastMapper.selectNeedDeleteNumbers("mona", oneMonthAgo);
while (count > 0) {
int deletedCount = manageBroadcastMapper.deleteOnlineAndOfflineData("mona", oneMonthAgo);
count -= deletedCount;
}
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1_000_000;
System.out.println("删除mona在离线时间: " + duration + " 毫秒");
}
@Scheduled(cron = "10 5 3 * * ?")
public void deleteOnlineAndOfflineDataForRxd(){
// 记录开始时间(纳秒)
long startTime = System.nanoTime();
LocalDateTime now = LocalDateTime.now();
LocalDateTime oneMonthAgo = now.minusMonths(1);
int count = manageBroadcastMapper.selectNeedDeleteNumbers("rxd", oneMonthAgo);
while (count > 0) {
int deletedCount = manageBroadcastMapper.deleteOnlineAndOfflineData("rxd", oneMonthAgo);
count -= deletedCount;
}
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1_000_000;
System.out.println("删除rxd在离线时间: " + duration + " 毫秒");
}
@Scheduled(cron = "10 5 4 * * ?")
public void deleteOnlineAndOfflineDataForGrs(){
// 记录开始时间(纳秒)
long startTime = System.nanoTime();
LocalDateTime now = LocalDateTime.now();
LocalDateTime oneMonthAgo = now.minusMonths(1);
int count = manageBroadcastMapper.selectNeedDeleteNumbers("grs", oneMonthAgo);
while (count > 0) {
int deletedCount = manageBroadcastMapper.deleteOnlineAndOfflineData("grs", oneMonthAgo);
count -= deletedCount;
}
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1_000_000;
System.out.println("删除Grs在离线时间: " + duration + " 毫秒");
}
@Scheduled(cron = "10 5 5 * * ?")
public void deleteOnlineAndOfflineDataForEnx(){
// 记录开始时间(纳秒)
long startTime = System.nanoTime();
LocalDateTime now = LocalDateTime.now();
LocalDateTime oneMonthAgo = now.minusMonths(1);
int count = manageBroadcastMapper.selectNeedDeleteNumbers("enx", oneMonthAgo);
while (count > 0) {
int deletedCount = manageBroadcastMapper.deleteOnlineAndOfflineData("enx", oneMonthAgo);
count -= deletedCount;
}
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1_000_000;
System.out.println("删除enx在离线时间: " + duration + " 毫秒");
}
@Scheduled(cron = "10 5 6 * * ?")
public void deleteOnlineAndOfflineDataForAlph(){
// 记录开始时间(纳秒)
long startTime = System.nanoTime();
LocalDateTime now = LocalDateTime.now();
LocalDateTime oneMonthAgo = now.minusMonths(1);
int count = manageBroadcastMapper.selectNeedDeleteNumbers("alph", oneMonthAgo);
while (count > 0) {
int deletedCount = manageBroadcastMapper.deleteOnlineAndOfflineData("alph", oneMonthAgo);
count -= deletedCount;
}
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1_000_000;
System.out.println("删除alph在离线时间: " + duration + " 毫秒");
}
@Scheduled(cron = "10 5 7 * * ?")
public void deleteOnlineAndOfflineDataForDgbo(){
// 记录开始时间(纳秒)
long startTime = System.nanoTime();
LocalDateTime now = LocalDateTime.now();
LocalDateTime oneMonthAgo = now.minusMonths(1);
int count = manageBroadcastMapper.selectNeedDeleteNumbers("dgbo", oneMonthAgo);
while (count > 0) {
int deletedCount = manageBroadcastMapper.deleteOnlineAndOfflineData("dgbo", oneMonthAgo);
count -= deletedCount;
}
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1_000_000;
System.out.println("删除dgbo在离线时间: " + duration + " 毫秒");
}
@Scheduled(cron = "10 5 8 * * ?")
public void deleteOnlineAndOfflineDataForDgbq(){
// 记录开始时间(纳秒)
long startTime = System.nanoTime();
LocalDateTime now = LocalDateTime.now();
LocalDateTime oneMonthAgo = now.minusMonths(1);
int count = manageBroadcastMapper.selectNeedDeleteNumbers("dgbq", oneMonthAgo);
while (count > 0) {
int deletedCount = manageBroadcastMapper.deleteOnlineAndOfflineData("dgbq", oneMonthAgo);
count -= deletedCount;
}
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1_000_000;
System.out.println("删除dgbq在离线时间: " + duration + " 毫秒");
}
@Scheduled(cron = "10 5 9 * * ?")
public void deleteOnlineAndOfflineDataForDgbs(){
// 记录开始时间(纳秒)
long startTime = System.nanoTime();
LocalDateTime now = LocalDateTime.now();
LocalDateTime oneMonthAgo = now.minusMonths(1);
int count = manageBroadcastMapper.selectNeedDeleteNumbers("dgbs", oneMonthAgo);
while (count > 0) {
int deletedCount = manageBroadcastMapper.deleteOnlineAndOfflineData("dgbs", oneMonthAgo);
count -= deletedCount;
}
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1_000_000;
System.out.println("删除dgbs在离线时间: " + duration + " 毫秒");
}
}

View File

@@ -5,6 +5,7 @@
<mapper namespace="com.m2pool.manage.mapper.ManageBroadcastMapper">
<select id="selectUserListByPage" resultType="com.m2pool.manage.dto.ManageUserDto">
SELECT
uma.id,
@@ -101,7 +102,7 @@
sum(case when `state` = "online" then 1 else 0 end) as onlineNum,
sum(case when `state` = "offline" then 1 else 0 end) as offlineNum
from
${coin}_mhsv2
${coin}_mhs30m
<where>
`user` = #{minerUser}
<choose>
@@ -148,5 +149,12 @@
where
coin = #{coin} AND `user` = #{user}
</select>
<select id="selectNeedDeleteNumbers" resultType="java.lang.Integer">
select count(*) from ${coin}_mhs30m where `date` <![CDATA[ <= ]]> #{date}
</select>
<delete id="deleteOnlineAndOfflineData">
delete from ${coin}_mhs30m where `date` <![CDATA[ <= ]]> #{date} LIMIT 5000
</delete>
</mapper>