Files
mp-java/.workbuddy/memory/2026-07-19.md
赵忠林 b79cc1003c fix(cms): 修复联系表单手机号长度及格式问题
- 为 CmsContactLead 实体的 name 和 phone 加入 @NotBlank、@Size 及 @Pattern 校验
- 规范 company、delivery、need、source、ip 字段长度限制,防止数据异常
- 在提交服务中新增 sanitizePhone 方法,清除手机号中的空格、横线及括号等分隔符
- 扩展数据库中 phone 字段长度到 VARCHAR(32),支持国际及带分机号格式
- 更新数据库中 name、company、need 字段长度,避免未来数据截断风险
- 补充项目长期记忆文件,记录技术栈及该修复详情
2026-07-19 19:36:38 +08:00

1.4 KiB
Raw Blame History

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 触发截断异常
  • 影响: 用户提交联系表单失败,销售线索丢失;公开接口易被刷
  • 修复:
    1. CmsContactLead.java 实体加 JSR-303 校验: name/phone 加 @NotBlank+@Size+@Patterncompany/delivery/need/source/ip 加 @Size
    2. CmsContactLeadServiceImpl.submit()sanitizePhone() 清洗逻辑: 去空格/横线/括号,仅保留 + 和数字
    3. 新增 SQL 迁移: docs/sql/2026-07-19_cms_contact_lead_phone_resize.sqlphone 扩到 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 (新增)