优化显示,新增流量重置

This commit is contained in:
qaq
2025-08-04 17:13:38 +08:00
parent 8ffb9218c4
commit 614d147032
13 changed files with 369 additions and 47 deletions
@@ -0,0 +1,16 @@
package com.admin.common.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class ResetFlowDto {
@NotNull(message = "重置账号id不能为空")
private Integer id;
@NotNull(message = "重置类型不能为空")
private Integer type;
}
@@ -3,11 +3,7 @@ package com.admin.controller;
import com.admin.common.aop.LogAnnotation;
import com.admin.common.annotation.RequireRole;
import com.admin.common.dto.ChangePasswordDto;
import com.admin.common.dto.LoginDto;
import com.admin.common.dto.PageDto;
import com.admin.common.dto.UserDto;
import com.admin.common.dto.UserUpdateDto;
import com.admin.common.dto.*;
import com.admin.common.lang.R;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -78,4 +74,14 @@ public class UserController extends BaseController {
public R updatePassword(@Validated @RequestBody ChangePasswordDto changePasswordDto) {
return userService.updatePassword(changePasswordDto);
}
@LogAnnotation
@RequireRole
@PostMapping("/reset")
public R reset(@Validated @RequestBody ResetFlowDto resetFlowDto) {
return userService.reset(resetFlowDto);
}
}
@@ -1,10 +1,6 @@
package com.admin.service;
import com.admin.common.dto.ChangePasswordDto;
import com.admin.common.dto.LoginDto;
import com.admin.common.dto.PageDto;
import com.admin.common.dto.UserDto;
import com.admin.common.dto.UserUpdateDto;
import com.admin.common.dto.*;
import com.admin.common.lang.R;
import com.admin.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -32,4 +28,6 @@ public interface UserService extends IService<User> {
R getUserPackageInfo();
R updatePassword(ChangePasswordDto changePasswordDto);
R reset(ResetFlowDto resetFlowDto);
}
@@ -2,13 +2,7 @@ package com.admin.service.impl;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import com.admin.common.dto.ChangePasswordDto;
import com.admin.common.dto.LoginDto;
import com.admin.common.dto.PageDto;
import com.admin.common.dto.UserDto;
import com.admin.common.dto.UserUpdateDto;
import com.admin.common.dto.UserPackageDto;
import com.admin.common.dto.GostDto;
import com.admin.common.dto.*;
import com.admin.common.lang.R;
import com.admin.common.task.DelayQueueManager;
import com.admin.common.task.DelayTask;
@@ -351,6 +345,24 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
}
}
@Override
public R reset(ResetFlowDto resetFlowDto) {
if (resetFlowDto.getType() == 1){ // 清零账号流量
User user = this.getById(resetFlowDto.getId());
if (user == null) return R.err(ERROR_USER_NOT_FOUND);
user.setInFlow(0L);
user.setOutFlow(0L);
this.updateById(user);
}else { // 清零隧道流量
UserTunnel tunnel = userTunnelService.getById(resetFlowDto.getId());
if (tunnel == null) return R.err("隧道不存在");
tunnel.setInFlow(0L);
tunnel.setOutFlow(0L);
userTunnelService.updateById(tunnel);
}
return R.ok();
}
// ========== 私有辅助方法 ==========
/**
@@ -691,7 +703,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
UserPackageDto.UserInfoDto userInfo = buildUserInfoDto(user);
// 2. 获取隧道权限详情
List<UserPackageDto.UserTunnelDetailDto> tunnelPermissions = getTunnelPermissions(user.getId(), roleId);
List<UserPackageDto.UserTunnelDetailDto> tunnelPermissions = getTunnelPermissions(user.getId());
// 3. 获取转发详情
List<UserPackageDto.UserForwardDetailDto> forwards = userMapper.getUserForwardDetails(user.getId().intValue());
@@ -731,15 +743,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
* 获取隧道权限详情
*
* @param userId 用户ID
* @param roleId 角色ID
* @return 隧道权限详情列表
*/
private List<UserPackageDto.UserTunnelDetailDto> getTunnelPermissions(Long userId, Integer roleId) {
if (roleId != null && roleId == ADMIN_ROLE_ID) {
return userMapper.getAllTunnelsForAdmin();
} else {
return userMapper.getUserTunnelDetails(userId.intValue());
}
private List<UserPackageDto.UserTunnelDetailDto> getTunnelPermissions(Long userId) {
return userMapper.getUserTunnelDetails(userId.intValue());
}
/**