fix(system): 解决上传配置更新后的缓存同步问题

- 在SettingController中,上传配置变更后清除对应租户的上传缓存,避免接口继续命中旧配置
- 在SettingServiceImpl的更新方法中,上传配置变更成功后删除对应租户的上传缓存,确保配置生效
- 统一处理上传配置缓存清理,提高系统配置更新的正确性和一致性
This commit is contained in:
2026-08-08 00:58:22 +08:00
parent 4a827abe9b
commit 262a9e0183
2 changed files with 13 additions and 1 deletions

View File

@@ -111,6 +111,10 @@ public class SettingController extends BaseController {
// 更新系统设置信息到缓存 key = "" // 更新系统设置信息到缓存 key = ""
String key = setting.getSettingKey().concat(":").concat(loginUser.getTenantId().toString()); String key = setting.getSettingKey().concat(":").concat(loginUser.getTenantId().toString());
redisUtil.set(key, JSON.parseObject(setting.getContent())); redisUtil.set(key, JSON.parseObject(setting.getContent()));
// 上传配置变更后需同步清除上传缓存,避免 /api/oss/upload 继续命中旧配置
if ("upload".equals(setting.getSettingKey())) {
redisUtil.delete("Upload:" + loginUser.getTenantId());
}
// 更新租户信息 // 更新租户信息
if (setting.getSettingKey().equals("setting")) { if (setting.getSettingKey().equals("setting")) {
final String content = setting.getContent(); final String content = setting.getContent();

View File

@@ -182,7 +182,15 @@ public class SettingServiceImpl extends ServiceImpl<SettingMapper, Setting> impl
@Override @Override
public boolean updateByKey(Setting setting) { public boolean updateByKey(Setting setting) {
return update(setting, new QueryWrapper<Setting>().eq("setting_key", setting.getSettingKey())); boolean ok = update(setting, new QueryWrapper<Setting>().eq("setting_key", setting.getSettingKey()));
// 上传配置变更后必须清缓存,否则 /api/oss/upload 仍读到旧的 Upload:{tenantId} 缓存
if (ok && "upload".equals(setting.getSettingKey())) {
Integer tenantId = setting.getTenantId();
if (tenantId != null) {
redisUtil.delete("Upload:" + tenantId);
}
}
return ok;
} }
} }