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