✨ 打卡照片按类型最多传 9 张,照片列加宽为 text

- 节点打卡提交新增 photoItems(带显式类型),photos 原样保留供旧版小程序按下标回推
- 打卡照片是每个打卡节点必有的类型,不由过程配置决定,与各凭证类型各自最多 9 张
- 新版提交要求每个类型至少 1 张;旧版仍只要求至少 1 张,避免打断未升级的小程序
- 管理端订正只校验每类上限,不校验必填
- photos 由 varchar(2000) 改 text:36 张约 4000 字符,旧列宽约 17 张即溢出
- 基线建表脚本补 COLLATE=utf8mb4_0900_ai_ci(与本机库实际排序规则一致)
This commit is contained in:
2026-10-07 16:49:19 +08:00
parent e9156ab56b
commit 2e5eae4d32
9 changed files with 606 additions and 33 deletions
@@ -30,7 +30,19 @@ public class NodeSubmitDTO implements Serializable {
@Schema(description = "定位信息")
private Location location;
@Schema(description = "凭证照片 URL 列表")
/**
* 带类型的打卡照片,类型由提交方显式给出;非空时优先于 photos。
*/
@Schema(description = "带类型的照片列表,非空时优先于 photos")
private List<PunchPhotoDTO> photoItems;
/**
* 旧版小程序提交的裸 URL 列表,类型只能按下标回推过程配置的凭证类型。
* <p>
* 与 photoItems 并存是为了不强制升级小程序:新版提交 photoItems,旧版仍走这里;
* 等旧版本覆盖率达标后由后续改造删除。
*/
@Schema(description = "凭证照片 URL 列表,类型按下标回推")
private List<String> photos;
@Schema(description = "重量(吨)")
@@ -0,0 +1,32 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
*/
package org.springblade.transport.pojo.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 带类型的打卡照片
* <p>
* 类型取值域是固定的「打卡照片」加该节点过程配置勾选的凭证类型,域外类型一律拒绝:
* 类型是照片分组的唯一依据,放进来路不明的类型会让回显分组错乱。
*/
@Data
@Schema(description = "带类型的打卡照片")
public class PunchPhotoDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "照片类型")
private String type;
@Schema(description = "图片URL")
private String url;
}