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

20 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.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 (新增)