package tech.aiflowy.ai.controller; import org.springframework.web.bind.annotation.*; import tech.aiflowy.ai.entity.AiBotMessage; import tech.aiflowy.ai.service.AiBotMessageService; import tech.aiflowy.common.domain.Result; import tech.aiflowy.common.web.controller.BaseCurdController; import tech.aiflowy.common.satoken.util.SaTokenUtil; import com.agentsflex.core.util.Maps; import com.agentsflex.core.util.StringUtil; import com.mybatisflex.core.query.QueryWrapper; import tech.aiflowy.common.web.jsonbody.JsonBody; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; /** * Bot 消息记录表 控制层。 * * @author michael * @since 2024-11-04 */ @RestController @RequestMapping("/api/v1/aiBotMessage") public class AiBotMessageController extends BaseCurdController { private final AiBotMessageService aiBotMessageService; public AiBotMessageController(AiBotMessageService service, AiBotMessageService aiBotMessageService) { super(service); this.aiBotMessageService = aiBotMessageService; } @GetMapping("list") @Override public Result list(AiBotMessage entity, Boolean asTree, String sortKey, String sortType) { if (entity.getBotId() == null || StringUtil.noText(entity.getSessionId())) { return Result.fail(); } QueryWrapper queryWrapper = QueryWrapper.create(); queryWrapper.eq(AiBotMessage::getBotId, entity.getBotId()); queryWrapper.eq(AiBotMessage::getAccountId, SaTokenUtil.getLoginAccount().getId()); queryWrapper.eq(AiBotMessage::getSessionId, entity.getSessionId()); queryWrapper.orderBy(AiBotMessage::getCreated, true); List list = service.list(queryWrapper); if (list == null || list.isEmpty()) { return Result.fail(); } List maps = new ArrayList<>(); for (AiBotMessage aiBotMessage : list) { maps.add(Maps.of("id", aiBotMessage.getId()) .set("content", aiBotMessage.getContent()) .set("role", aiBotMessage.getRole()) .set("created", aiBotMessage.getCreated().getTime()) .set("updateAt", aiBotMessage.getCreated().getTime()) ); } return Result.success(maps); } @Override protected Result onSaveOrUpdateBefore(AiBotMessage entity, boolean isSave) { entity.setAccountId(SaTokenUtil.getLoginAccount().getId()); return super.onSaveOrUpdateBefore(entity, isSave); } @GetMapping("messageList") public Result messageList(@RequestParam(value = "botId") String botId, @RequestParam(value = "sessionId") String sessionId, @RequestParam(value = "isExternalMsg") int isExternalMsg ) { return aiBotMessageService.messageList(botId, sessionId, isExternalMsg); } @PostMapping("removeMsg") public Result removeMsg( @JsonBody(value = "botId", required = true) String botId, @JsonBody(value = "sessionId", required = true) String sessionId, @JsonBody(value = "isExternalMsg", required = true) int isExternalMsg ) { return aiBotMessageService.removeMsg(botId, sessionId, isExternalMsg); } }