refactor(dms): 增加 PDA 兼容性处理方法

- 新增 sanitizeForPda 方法,用于清理和转义特殊字符,确保 JSON 解析兼容性
- 添加 successForPda 和 errorForPda 方法,为 PDA 端提供增强的响应处理
- 这些改动旨在解决 PDA 端数据安全和 JSON 解析相关的问题
master
zch 1 week ago
parent a65d398858
commit 9311b5e2ee

@ -201,4 +201,89 @@ public class AjaxResult extends HashMap<String, Object> {
super.put(key, value); super.put(key, value);
return this; return this;
} }
/**
* PDAJSON
*
* @param input
* @return
*/
public static String sanitizeForPda(String input) {
if (input == null) {
return null;
}
// 【PDA兼容性处理】移除或替换可能导致JSON解析问题的特殊字符
return input
// 移除控制字符和不可见字符
.replaceAll("[\\p{Cntrl}&&[^\r\n\t]]", "")
// 替换可能导致JSON解析问题的特殊字符
.replace("\"", "'") // 双引号替换为单引号
.replace("\\", "/") // 反斜杠替换为正斜杠
// 保留中文字符和常用特殊字符,但确保格式安全
.trim();
}
/**
* PDAJSON
*
* @param data
* @return AjaxResult
*/
public static AjaxResult successForPda(Object data) {
return successForPda("操作成功", data);
}
/**
* PDAJSON
*
* @param msg
* @param data
* @return AjaxResult
*/
public static AjaxResult successForPda(String msg, Object data) {
// 对消息进行安全处理
String safeMsg = sanitizeForPda(msg);
// 如果数据是字符串,也进行安全处理
Object safeData = data;
if (data instanceof String) {
safeData = sanitizeForPda((String) data);
}
AjaxResult result = new AjaxResult(HttpStatus.SUCCESS, safeMsg, safeData);
// 【PDA兼容性】设置响应头确保正确的字符编码
// 注意这里不直接操作HttpServletResponse而是依赖Spring Boot的默认配置
// Spring Boot 默认已经设置了 UTF-8 编码,无需手动干预
return result;
}
/**
* PDA
*
* @param msg
* @return AjaxResult
*/
public static AjaxResult errorForPda(String msg) {
return errorForPda(msg, null);
}
/**
* PDA
*
* @param msg
* @param data
* @return AjaxResult
*/
public static AjaxResult errorForPda(String msg, Object data) {
String safeMsg = sanitizeForPda(msg);
Object safeData = data;
if (data instanceof String) {
safeData = sanitizeForPda((String) data);
}
return new AjaxResult(HttpStatus.ERROR, safeMsg, safeData);
}
} }
Loading…
Cancel
Save