修改bug
This commit is contained in:
@ -32,7 +32,8 @@ public class DashScopeChat {
|
|||||||
|
|
||||||
private final ChatClient chatClient;
|
private final ChatClient chatClient;
|
||||||
|
|
||||||
private static final String DEFAULT_PROMPT = "你叫煤球,是一个博学的智能聊天助手,请根据用户提问回答!";
|
private static final String DEFAULT_PROMPT =
|
||||||
|
"你是一名智能助手,代号为“煤球”。回答时不要提及自身身份或角色设定,除非用户主动询问;请直接提供清晰、准确、专业的回答。";
|
||||||
|
|
||||||
private static final String DEFAULT_FILE_DIR = System.getProperty("user.dir") + "/chat-memory";
|
private static final String DEFAULT_FILE_DIR = System.getProperty("user.dir") + "/chat-memory";
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.ai.domain.AIChatMemory;
|
import org.dromara.ai.domain.AIChatMemory;
|
||||||
import org.dromara.ai.domain.dto.AIChatMemoryQueryReq;
|
import org.dromara.ai.domain.dto.AIChatMemoryQueryReq;
|
||||||
import org.dromara.ai.domain.dto.AIChatMemoryUpdateReq;
|
import org.dromara.ai.domain.dto.AIChatMemoryUpdateReq;
|
||||||
@ -13,11 +14,15 @@ import org.dromara.ai.service.IAIChatMemoryService;
|
|||||||
import org.dromara.common.core.constant.HttpStatus;
|
import org.dromara.common.core.constant.HttpStatus;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
|
import org.dromara.common.core.utils.file.FileUtils;
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -27,6 +32,7 @@ import java.util.List;
|
|||||||
* @author lilemy
|
* @author lilemy
|
||||||
* @date 2025-11-04
|
* @date 2025-11-04
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class AIChatMemoryServiceImpl extends ServiceImpl<AIChatMemoryMapper, AIChatMemory>
|
public class AIChatMemoryServiceImpl extends ServiceImpl<AIChatMemoryMapper, AIChatMemory>
|
||||||
implements IAIChatMemoryService {
|
implements IAIChatMemoryService {
|
||||||
@ -103,9 +109,42 @@ public class AIChatMemoryServiceImpl extends ServiceImpl<AIChatMemoryMapper, AIC
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||||
if (isValid) {
|
List<AIChatMemory> aiChatMemories = this.listByIds(ids);
|
||||||
//TODO 做一些业务上的校验,判断是否需要校验
|
if (aiChatMemories.size() != ids.size()) {
|
||||||
|
throw new ServiceException("数据不存在");
|
||||||
}
|
}
|
||||||
return baseMapper.deleteByIds(ids) > 0;
|
// 暂存文件路径
|
||||||
|
List<File> filesToDelete = new ArrayList<>();
|
||||||
|
for (AIChatMemory mem : aiChatMemories) {
|
||||||
|
if (StringUtils.isNotBlank(mem.getFileName())) {
|
||||||
|
File file = new File(System.getProperty("user.dir")
|
||||||
|
+ "/chat-memory/", mem.getFileName());
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 防止目录穿越
|
||||||
|
if (file.getCanonicalPath().startsWith(
|
||||||
|
new File(System.getProperty("user.dir") + "/chat-memory").getCanonicalPath())) {
|
||||||
|
filesToDelete.add(file);
|
||||||
|
} else {
|
||||||
|
log.warn("危险的 filename 路径被拒绝删除: {}", mem.getFileName());
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.warn("filename 获取失败: {}", mem.getFileName());
|
||||||
|
throw new ServiceException("文件获取失败: " + mem.getFileName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 删除数据库
|
||||||
|
boolean b = baseMapper.deleteByIds(ids) > 0;
|
||||||
|
if (!b) {
|
||||||
|
throw new ServiceException("数据库删除失败");
|
||||||
|
}
|
||||||
|
// 删除文件(非事务,不影响数据库逻辑)
|
||||||
|
for (File f : filesToDelete) {
|
||||||
|
if (f.exists() && !FileUtils.del(f)) {
|
||||||
|
log.warn("文件删除失败: {}", f.getAbsolutePath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,34 +1,33 @@
|
|||||||
package org.dromara.bigscreen.service.impl;
|
package org.dromara.bigscreen.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.bigscreen.domain.BusWjzx;
|
||||||
import org.dromara.bigscreen.domain.dto.BusWjzxBo;
|
import org.dromara.bigscreen.domain.dto.BusWjzxBo;
|
||||||
import org.dromara.bigscreen.domain.vo.BusWjzxSjDateVo;
|
import org.dromara.bigscreen.domain.vo.BusWjzxSjDateVo;
|
||||||
|
import org.dromara.bigscreen.domain.vo.BusWjzxVo;
|
||||||
|
import org.dromara.bigscreen.mapper.BusWjzxMapper;
|
||||||
|
import org.dromara.bigscreen.service.IBusWjzxService;
|
||||||
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
|
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
|
||||||
import org.dromara.common.core.domain.event.ProcessEvent;
|
import org.dromara.common.core.domain.event.ProcessEvent;
|
||||||
import org.dromara.common.core.domain.event.ProcessTaskEvent;
|
import org.dromara.common.core.domain.event.ProcessTaskEvent;
|
||||||
import org.dromara.common.core.utils.MapstructUtils;
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
|
||||||
import org.dromara.system.service.impl.SysOssServiceImpl;
|
import org.dromara.system.service.impl.SysOssServiceImpl;
|
||||||
import org.dromara.xzd.biddingManagement.biddingDocument.domain.XzdBiddingFileEstimate;
|
|
||||||
import org.dromara.xzd.biddingManagement.biddingDocument.domain.vo.XzdBiddingFileEstimateVo;
|
|
||||||
import org.springframework.context.event.EventListener;
|
import org.springframework.context.event.EventListener;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.dromara.bigscreen.domain.vo.BusWjzxVo;
|
|
||||||
import org.dromara.bigscreen.domain.BusWjzx;
|
|
||||||
import org.dromara.bigscreen.mapper.BusWjzxMapper;
|
|
||||||
import org.dromara.bigscreen.service.IBusWjzxService;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
import java.util.stream.Collectors;
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件中心Service业务层处理
|
* 文件中心Service业务层处理
|
||||||
@ -98,8 +97,7 @@ public class BusWjzxServiceImpl extends ServiceImpl<BusWjzxMapper, BusWjzx> impl
|
|||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
LambdaQueryWrapper<BusWjzx> lqw = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<BusWjzx> lqw = Wrappers.lambdaQuery();
|
||||||
lqw.orderByDesc(BusWjzx::getId);
|
lqw.orderByDesc(BusWjzx::getId);
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getWjm()), BusWjzx::getWjm, bo.getWjm());
|
lqw.like(StringUtils.isNotBlank(bo.getWjm()), BusWjzx::getWjm, bo.getWjm());
|
||||||
|
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), BusWjzx::getAuditStatus, bo.getAuditStatus());
|
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), BusWjzx::getAuditStatus, bo.getAuditStatus());
|
||||||
lqw.eq(bo.getCreateBy() != null, BusWjzx::getCreateBy, bo.getCreateBy());
|
lqw.eq(bo.getCreateBy() != null, BusWjzx::getCreateBy, bo.getCreateBy());
|
||||||
return lqw;
|
return lqw;
|
||||||
|
|||||||
Reference in New Issue
Block a user