- 为 CmsContactLead 实体的 name 和 phone 加入 @NotBlank、@Size 及 @Pattern 校验 - 规范 company、delivery、need、source、ip 字段长度限制,防止数据异常 - 在提交服务中新增 sanitizePhone 方法,清除手机号中的空格、横线及括号等分隔符 - 扩展数据库中 phone 字段长度到 VARCHAR(32),支持国际及带分机号格式 - 更新数据库中 name、company、need 字段长度,避免未来数据截断风险 - 补充项目长期记忆文件,记录技术栈及该修复详情
1.4 KiB
1.4 KiB
2026-07-19 工作日志
cms-api phone 字段超长报错修复
- 问题: cms-api 容器报
com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'phone' at row 1 - 根因: 公开接口
/api/cms/cms-contact-lead/submit(官网联系表单,无需登录) 前端传入超长/带分隔符的手机号,直接写入 MySQL 触发截断异常 - 影响: 用户提交联系表单失败,销售线索丢失;公开接口易被刷
- 修复:
CmsContactLead.java实体加 JSR-303 校验: name/phone 加 @NotBlank+@Size+@Pattern,company/delivery/need/source/ip 加 @SizeCmsContactLeadServiceImpl.submit()加sanitizePhone()清洗逻辑: 去空格/横线/括号,仅保留 + 和数字- 新增 SQL 迁移:
docs/sql/2026-07-19_cms_contact_lead_phone_resize.sql,phone 扩到 VARCHAR(32),同步放宽 name/company/need
关联问题(未修复,需前端处理)
- 日志中
参数类型转换异常: 参数名=id, 传入值=NaN, 期望类型=Integer:前端 JS 把 NaN 拼到 URL 调用@GetMapping("/{id}"),需前端判空 定时任务需要查询所有租户的超时订单 list = 0:正常 INFO 日志,非错误
修改的文件
- src/main/java/com/gxwebsoft/cms/entity/CmsContactLead.java
- src/main/java/com/gxwebsoft/cms/service/impl/CmsContactLeadServiceImpl.java
- docs/sql/2026-07-19_cms_contact_lead_phone_resize.sql (新增)