CreateLocation 的 INSERT...SELECT 匹配不到仓库时影响 0 行,MySQL 不报错: err 为 nil、LastInsertId() 返回 0。此前只看 err,接口回 201 "Location created successfully" 且 data.id 为 0,而库里一行都没写进去—— 刷新后库位消失,重试还是"成功"。 改为以 RowsAffected 为准(INSERT 的 RowsAffected 就是实际插入行数,不受 clientFoundRows 影响),影响 0 行返回 ErrWarehouseNotFound,接口回 400 "仓库不存在,可能已被删除或不属于当前组织"。与既有的 execExpectingRow、 role_permissions 插入保持同一套路。 实测(docker,重建后端镜像后): 不存在的仓库 999 -> HTTP 400,warehouse_locations 1 行 -> 1 行 真实仓库 1 -> HTTP 201 id=3,1 行 -> 2 行,库中确有此行 新增 warehouse_test.go 覆盖两个分支,变异验证:去掉 affected==0 判断后 "影响 0 行"用例失败(返回 <nil>,正是线上症状)。 |
||
|---|---|---|
| .. | ||
| handler | ||
| middleware | ||
| model | ||
| repository | ||
| service | ||
| testutil | ||