fix(system): 解决上传配置更新后的缓存同步问题
- 在SettingController中,上传配置变更后清除对应租户的上传缓存,避免接口继续命中旧配置 - 在SettingServiceImpl的更新方法中,上传配置变更成功后删除对应租户的上传缓存,确保配置生效 - 统一处理上传配置缓存清理,提高系统配置更新的正确性和一致性
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user