[opt](headless)Deletion of chat model and database should record user.
Some checks failed
supersonic CentOS CI / build (21) (push) Failing after 19s
supersonic ubuntu CI / build (21) (push) Failing after 24s
supersonic mac CI / build (21) (push) Has been cancelled
supersonic windows CI / build (21) (push) Has been cancelled

This commit is contained in:
jerryjzhang
2025-10-22 19:17:30 +08:00
parent 04b1edb2e2
commit 6c5f8fce40
6 changed files with 31 additions and 8 deletions

View File

@@ -15,5 +15,5 @@ public interface ChatModelService {
ChatModel updateChatModel(ChatModel chatModel, User user); ChatModel updateChatModel(ChatModel chatModel, User user);
void deleteChatModel(Integer id); void deleteChatModel(Integer id, User user);
} }

View File

@@ -79,7 +79,12 @@ public class ChatModelServiceImpl extends ServiceImpl<ChatModelMapper, ChatModel
} }
@Override @Override
public void deleteChatModel(Integer id) { public void deleteChatModel(Integer id, User user) {
ChatModel chatModel = getChatModel(id);
if (!checkAdminPermission(user, chatModel)) {
throw new RuntimeException("没有权限删除该大模型");
}
removeById(id); removeById(id);
} }
@@ -103,4 +108,13 @@ public class ChatModelServiceImpl extends ServiceImpl<ChatModelMapper, ChatModel
chatModelDO.setConfig(JsonUtil.toString(chatModel.getConfig())); chatModelDO.setConfig(JsonUtil.toString(chatModel.getConfig()));
return chatModelDO; return chatModelDO;
} }
private boolean checkAdminPermission(User user, ChatModel chatModel) {
String admin = chatModel.getAdmin();
if (user.isSuperAdmin()) {
return true;
}
return admin != null && admin.equals(user.getName())
|| chatModel.getCreatedBy().equals(user.getName());
}
} }

View File

@@ -46,8 +46,10 @@ public class ChatModelController {
} }
@DeleteMapping("/{id}") @DeleteMapping("/{id}")
public boolean deleteModel(@PathVariable("id") Integer id) { public boolean deleteModel(@PathVariable("id") Integer id,
chatModelService.deleteChatModel(id); HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
User user = UserHolder.findUser(httpServletRequest, httpServletResponse);
chatModelService.deleteChatModel(id, user);
return true; return true;
} }

View File

@@ -64,8 +64,10 @@ public class DatabaseController {
} }
@DeleteMapping("/{id}") @DeleteMapping("/{id}")
public boolean deleteDatabase(@PathVariable("id") Long id) { public boolean deleteDatabase(@PathVariable("id") Long id, HttpServletRequest request,
databaseService.deleteDatabase(id); HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
databaseService.deleteDatabase(id, user);
return true; return true;
} }

View File

@@ -34,7 +34,7 @@ public interface DatabaseService {
List<DatabaseResp> getDatabaseList(User user); List<DatabaseResp> getDatabaseList(User user);
void deleteDatabase(Long databaseId); void deleteDatabase(Long databaseId, User user);
List<String> getCatalogs(Long id) throws SQLException; List<String> getCatalogs(Long id) throws SQLException;

View File

@@ -138,7 +138,12 @@ public class DatabaseServiceImpl extends ServiceImpl<DatabaseDOMapper, DatabaseD
} }
@Override @Override
public void deleteDatabase(Long databaseId) { public void deleteDatabase(Long databaseId, User user) {
DatabaseResp databaseResp = getDatabase(databaseId);
if (!checkAdminPermission(user, databaseResp)) {
throw new RuntimeException("没有权限删除该数据库");
}
ModelFilter modelFilter = new ModelFilter(); ModelFilter modelFilter = new ModelFilter();
modelFilter.setDatabaseId(databaseId); modelFilter.setDatabaseId(databaseId);
modelFilter.setIncludesDetail(false); modelFilter.setIncludesDetail(false);