修改bug

This commit is contained in:
lcj
2025-12-12 17:12:04 +08:00
parent 758e49973b
commit a5cf647f2b
3 changed files with 62 additions and 24 deletions

View File

@ -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";

View File

@ -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;
} }
} }

View File

@ -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业务层处理
@ -53,7 +52,7 @@ public class BusWjzxServiceImpl extends ServiceImpl<BusWjzxMapper, BusWjzx> impl
* @return 文件中心 * @return 文件中心
*/ */
@Override @Override
public BusWjzxVo queryById(Long id){ public BusWjzxVo queryById(Long id) {
return baseMapper.selectVoById(id); return baseMapper.selectVoById(id);
} }
@ -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;
@ -115,7 +113,7 @@ public class BusWjzxServiceImpl extends ServiceImpl<BusWjzxMapper, BusWjzx> impl
public Boolean insertByBo(BusWjzxBo bo) { public Boolean insertByBo(BusWjzxBo bo) {
BusWjzx add = MapstructUtils.convert(bo, BusWjzx.class); BusWjzx add = MapstructUtils.convert(bo, BusWjzx.class);
validEntityBeforeSave(add); validEntityBeforeSave(add);
if (add != null && StringUtils.isNotBlank(add.getWjm())){ if (add != null && StringUtils.isNotBlank(add.getWjm())) {
String[] split = add.getWjm().split("\\."); String[] split = add.getWjm().split("\\.");
add.setWjlx(split[split.length - 1]); add.setWjlx(split[split.length - 1]);
} }
@ -142,7 +140,7 @@ public class BusWjzxServiceImpl extends ServiceImpl<BusWjzxMapper, BusWjzx> impl
/** /**
* 保存前的数据校验 * 保存前的数据校验
*/ */
private void validEntityBeforeSave(BusWjzx entity){ private void validEntityBeforeSave(BusWjzx entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
} }
@ -155,7 +153,7 @@ public class BusWjzxServiceImpl extends ServiceImpl<BusWjzxMapper, BusWjzx> impl
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验 //TODO 做一些业务上的校验,判断是否需要校验
} }
ArrayList<Long> temp = new ArrayList<>(); ArrayList<Long> temp = new ArrayList<>();