fix(用户管理): 删除用户时级联清理服务端密钥,修已删账号留下孤儿密钥行
biz_user_api_secret 按 uid 绑定且无外键,删除用户后密钥/代理配置成为无主行 (生产已出现 5 条孤儿)。deleteUser 内同步调用 adminClearByUser 并纳入同一事务, 删除失败(行不存在)时不触碰密钥。
This commit is contained in:
+8
@@ -15,7 +15,9 @@ import com.nanri.aiimage.modules.permission.mapper.AdminUserMapper;
|
||||
import com.nanri.aiimage.modules.permission.model.dto.UserColumnPermissionUpdateRequest;
|
||||
import com.nanri.aiimage.modules.permission.model.entity.AdminUserEntity;
|
||||
import com.nanri.aiimage.modules.permission.service.PermissionMenuService;
|
||||
import com.nanri.aiimage.modules.usersecret.service.UserApiSecretService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.dao.DuplicateKeyException;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -32,6 +34,7 @@ import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class AdminUserService {
|
||||
|
||||
private static final DateTimeFormatter CREATED_AT_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
|
||||
@@ -40,6 +43,7 @@ public class AdminUserService {
|
||||
private final WerkzeugPasswordEncoder passwordEncoder;
|
||||
private final AdminAuthSupport adminAuthSupport;
|
||||
private final PermissionMenuService permissionMenuService;
|
||||
private final UserApiSecretService userApiSecretService;
|
||||
|
||||
public AdminUserListVo listUsers(AdminUserEntity currentUser, Integer page, Integer pageSize,
|
||||
String username, Long createdById, String roleFilter) {
|
||||
@@ -271,6 +275,8 @@ public class AdminUserService {
|
||||
operator, userId, permissionRequest, menuType, false);
|
||||
}
|
||||
|
||||
/** 删除用户并级联清理其服务端密钥;不清理会留下无主密钥行(biz_user_api_secret 按 uid 绑定,无外键)。 */
|
||||
@Transactional
|
||||
public void deleteUser(AdminUserEntity currentUser, Long uid) {
|
||||
String role = adminAuthSupport.currentRole(currentUser);
|
||||
if (role == null) {
|
||||
@@ -297,6 +303,8 @@ public class AdminUserService {
|
||||
if (affected == 0) {
|
||||
throw new BusinessException("用户不存在");
|
||||
}
|
||||
int secretRows = userApiSecretService.adminClearByUser(uid);
|
||||
log.info("[admin-user] 用户已删除 uid={} 级联清理密钥行={}", uid, secretRows);
|
||||
}
|
||||
|
||||
private Map<Long, String> loadCreatorMap(List<AdminUserEntity> rows) {
|
||||
|
||||
Reference in New Issue
Block a user