diff --git a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatMemoryFilter.java b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatMemoryFilter.java index 1ce696866..ee8ba1e03 100644 --- a/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatMemoryFilter.java +++ b/chat/api/src/main/java/com/tencent/supersonic/chat/api/pojo/request/ChatMemoryFilter.java @@ -26,4 +26,11 @@ public class ChatMemoryFilter { private MemoryReviewResult llmReviewRet; private MemoryReviewResult humanReviewRet; + + private String sort = "desc"; + private String orderCondition; + public boolean isAsc() { + return "asc".equalsIgnoreCase(sort); + } + } diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/persistence/repository/ChatMemoryRepository.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/persistence/repository/ChatMemoryRepository.java index 90d9b2a11..fdb5b4646 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/persistence/repository/ChatMemoryRepository.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/persistence/repository/ChatMemoryRepository.java @@ -10,6 +10,8 @@ public interface ChatMemoryRepository { void updateMemory(ChatMemoryDO chatMemoryDO); + void batchDelete(List ids); + ChatMemoryDO getMemory(Long id); List getMemories(QueryWrapper queryWrapper); diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/persistence/repository/impl/ChatMemoryRepositoryImpl.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/persistence/repository/impl/ChatMemoryRepositoryImpl.java index 25ce1655c..43530e8ae 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/persistence/repository/impl/ChatMemoryRepositoryImpl.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/persistence/repository/impl/ChatMemoryRepositoryImpl.java @@ -8,6 +8,7 @@ import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Repository; import java.util.List; +import org.springframework.util.CollectionUtils; @Repository @Primary @@ -29,6 +30,17 @@ public class ChatMemoryRepositoryImpl implements ChatMemoryRepository { chatMemoryMapper.updateById(chatMemoryDO); } + @Override + public void batchDelete(List ids) { + if (CollectionUtils.isEmpty(ids)) { + return; + } + for (Long id : ids) { + chatMemoryMapper.deleteById(id); + } + } + + @Override public ChatMemoryDO getMemory(Long id) { return chatMemoryMapper.selectById(id); diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/rest/MemoryController.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/rest/MemoryController.java index c0c60813d..04d3cb0e1 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/rest/MemoryController.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/rest/MemoryController.java @@ -1,8 +1,5 @@ package com.tencent.supersonic.chat.server.rest; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import com.github.pagehelper.PageInfo; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.auth.api.authentication.utils.UserHolder; @@ -10,6 +7,9 @@ import com.tencent.supersonic.chat.api.pojo.request.ChatMemoryUpdateReq; import com.tencent.supersonic.chat.api.pojo.request.PageMemoryReq; import com.tencent.supersonic.chat.server.persistence.dataobject.ChatMemoryDO; import com.tencent.supersonic.chat.server.service.MemoryService; +import com.tencent.supersonic.headless.api.pojo.request.MetaBatchReq; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -36,4 +36,10 @@ public class MemoryController { public PageInfo pageMemories(@RequestBody PageMemoryReq pageMemoryReq) { return memoryService.pageMemories(pageMemoryReq); } + + @PostMapping("batchDelete") + public Boolean batchDelete(@RequestBody MetaBatchReq metaBatchReq) { + memoryService.batchDelete(metaBatchReq.getIds()); + return true; + } } diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/MemoryService.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/MemoryService.java index 0affcfdb1..49aaa723a 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/MemoryService.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/MemoryService.java @@ -20,6 +20,8 @@ public interface MemoryService { void disableMemory(ChatMemoryDO memory); + void batchDelete(List ids); + PageInfo pageMemories(PageMemoryReq pageMemoryReq); List getMemories(ChatMemoryFilter chatMemoryFilter); diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/MemoryServiceImpl.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/MemoryServiceImpl.java index 41738e877..9b408fe6e 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/MemoryServiceImpl.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/MemoryServiceImpl.java @@ -55,8 +55,16 @@ public class MemoryServiceImpl implements MemoryService { chatMemoryRepository.updateMemory(memory); } + @Override + public void batchDelete(List ids) { + chatMemoryRepository.batchDelete(ids); + } + @Override public PageInfo pageMemories(PageMemoryReq pageMemoryReq) { + ChatMemoryFilter chatMemoryFilter = pageMemoryReq.getChatMemoryFilter(); + chatMemoryFilter.setSort(pageMemoryReq.getSort()); + chatMemoryFilter.setOrderCondition(pageMemoryReq.getOrderCondition()); return PageHelper.startPage(pageMemoryReq.getCurrent(), pageMemoryReq.getPageSize()) .doSelectPageInfo(() -> getMemories(pageMemoryReq.getChatMemoryFilter())); } @@ -86,6 +94,11 @@ public class MemoryServiceImpl implements MemoryService { .lambda() .eq(ChatMemoryDO::getLlmReviewRet, chatMemoryFilter.getLlmReviewRet()); } + if (StringUtils.isBlank(chatMemoryFilter.getOrderCondition())) { + queryWrapper.orderByDesc("id"); + } else { + queryWrapper.orderBy(true, chatMemoryFilter.isAsc(), chatMemoryFilter.getOrderCondition()); + } return chatMemoryRepository.getMemories(queryWrapper); }