- 为 CmsContactLead 实体的 name 和 phone 加入 @NotBlank、@Size 及 @Pattern 校验 - 规范 company、delivery、need、source、ip 字段长度限制,防止数据异常 - 在提交服务中新增 sanitizePhone 方法,清除手机号中的空格、横线及括号等分隔符 - 扩展数据库中 phone 字段长度到 VARCHAR(32),支持国际及带分机号格式 - 更新数据库中 name、company、need 字段长度,避免未来数据截断风险 - 补充项目长期记忆文件,记录技术栈及该修复详情
20 lines
1.4 KiB
Markdown
20 lines
1.4 KiB
Markdown
# 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+@Pattern,company/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 (新增)
|