# 标签模块接口对接文档 ## 1. 接口概述 标签模块提供了一系列RESTful API接口,用于标签模板的管理、标签的触发检查、生成、预览和打印。本文档详细描述了这些接口的使用方法、请求参数和响应格式。 ### 1.1 接口基础信息 - **基础URL**:`http://{服务器地址}:{端口}/api/tags` - **测试环境请求地址**:`http://172.232.21.79:5002` - **正式环境请求地址**:`https://lr.tooexp.com` - **请求方式**:POST/GET/PUT/DELETE - **数据格式**:JSON - **响应格式**:JSON ### 1.2 状态码说明 | 状态码 | 描述 | |-------|------| | 200 | 操作成功 | | 400 | 请求参数错误或操作失败 | | 404 | 资源不存在 | | 500 | 服务器内部错误 | ### 1.3 错误码说明 | 错误码 | 描述 | |-------|------| | 0 | 操作成功 | | 1001 | 标签模板不存在 | | 1002 | 标签触发条件不满足 | | 1003 | 标签生成失败 | | 1004 | 标签渲染失败 | | 9999 | 系统内部错误 | ## 2. 接口详细说明 ### 2.1 标签模板管理 #### 2.1.1 获取标签模板列表 **接口路径**:`/templates` **请求方法**:GET **功能描述**:获取所有标签模板列表 **请求参数**:无 **响应格式**: **成功响应**: ```json { "code": 0, "message": "获取成功", "data": [ { "id": 1, "tagType": "STOP", "name": "Stop标签", "templateConfig": "{\"width\": 4, \"height\": 6, \"elements\": [...]}", "triggerRule": "{\"type\": \"time\", \"days\": 5}", "isActive": true, "createdAt": "2026-01-30T10:00:00Z", "updatedAt": "2026-01-30T10:00:00Z" } ] } ``` **失败响应**: ```json { "code": 9999, "message": "系统内部错误" } ``` #### 2.1.2 创建标签模板 **接口路径**:`/templates` **请求方法**:POST **功能描述**:创建新的标签模板 **请求参数**: | 参数名 | 类型 | 必填 | 描述 | 示例值 | |-------|------|------|------|--------| | tagType | string | 是 | 标签类型 | "STOP" | | name | string | 是 | 标签名称 | "Stop标签" | | templateConfig | string | 是 | 模板配置(JSON格式) | "{\"width\": 4, \"height\": 6, \"elements\": [...]}" | | triggerRule | string | 是 | 触发规则(JSON格式) | "{\"type\": \"time\", \"days\": 5}" | | isActive | bool | 否 | 是否启用,默认true | true | **请求示例**: ```json { "tagType": "STOP", "name": "Stop标签", "templateConfig": "{\"width\": 4, \"height\": 6, \"elements\": [{\"type\": \"text\", \"content\": \"Stop\", \"x\": 0.5, \"y\": 0.5, \"fontSize\": 24, \"bold\": true}, {\"type\": \"text\", \"content\": \"${neutralWaybillNumber}\", \"x\": 0.5, \"y\": 1.5, \"fontSize\": 12}, {\"type\": \"barcode\", \"content\": \"${neutralWaybillNumber}\", \"x\": 0.5, \"y\": 2.0, \"width\": 3.0, \"height\": 1.0, \"symbology\": \"CODE128\"}, {\"type\": \"text\", \"content\": \"Customer: ${customerId}\", \"x\": 0.5, \"y\": 3.5, \"fontSize\": 10}]}", "triggerRule": "{\"type\": \"time\", \"days\": 5}", "isActive": true } ``` **响应格式**: **成功响应**: ```json { "code": 0, "message": "创建成功", "data": { "id": 1, "tagType": "STOP", "name": "Stop标签", "templateConfig": "{\"width\": 4, \"height\": 6, \"elements\": [...]}", "triggerRule": "{\"type\": \"time\", \"days\": 5}", "isActive": true, "createdAt": "2026-01-30T10:00:00Z", "updatedAt": "2026-01-30T10:00:00Z" } } ``` **失败响应**: ```json { "code": 400, "message": "标签类型已存在" } ``` #### 2.1.3 更新标签模板 **接口路径**:`/templates/{id}` **请求方法**:PUT **功能描述**:更新指定的标签模板 **请求参数**: | 参数名 | 类型 | 必填 | 描述 | 示例值 | |-------|------|------|------|--------| | id | int | 是 | 模板ID(路径参数) | 1 | | name | string | 否 | 标签名称 | "Stop标签(更新)" | | templateConfig | string | 否 | 模板配置(JSON格式) | "{\"width\": 4, \"height\": 6, \"elements\": [...]}" | | triggerRule | string | 否 | 触发规则(JSON格式) | "{\"type\": \"time\", \"days\": 5}" | | isActive | bool | 否 | 是否启用 | true | **请求示例**: ```json { "name": "Stop标签(更新)", "templateConfig": "{\"width\": 4, \"height\": 6, \"elements\": [...]}", "isActive": true } ``` **响应格式**: **成功响应**: ```json { "code": 0, "message": "更新成功", "data": { "id": 1, "tagType": "STOP", "name": "Stop标签(更新)", "templateConfig": "{\"width\": 4, \"height\": 6, \"elements\": [...]}", "triggerRule": "{\"type\": \"time\", \"days\": 5}", "isActive": true, "createdAt": "2026-01-30T10:00:00Z", "updatedAt": "2026-01-30T11:00:00Z" } } ``` **失败响应**: ```json { "code": 1001, "message": "标签模板不存在" } ``` #### 2.1.4 删除标签模板 **接口路径**:`/templates/{id}` **请求方法**:DELETE **功能描述**:删除指定的标签模板 **请求参数**: | 参数名 | 类型 | 必填 | 描述 | 示例值 | |-------|------|------|------|--------| | id | int | 是 | 模板ID(路径参数) | 1 | **响应格式**: **成功响应**: ```json { "code": 0, "message": "删除成功" } ``` **失败响应**: ```json { "code": 1001, "message": "标签模板不存在" } ``` ### 2.2 标签触发与生成 #### 2.2.1 检查标签触发 **接口路径**:`/check-trigger` **请求方法**:POST **功能描述**:检查是否触发指定类型的标签 **请求参数**: | 参数名 | 类型 | 必填 | 描述 | 示例值 | |-------|------|------|------|--------| | neutralWaybillNumber | string | 是 | 中性单号 | "1234567890" | | customerId | int | 是 | 客户编码 | 123 | | tagTypes | array[string] | 是 | 标签类型列表 | ["STOP"] | **请求示例**: ```json { "neutralWaybillNumber": "1234567890", "customerId": 123, "tagTypes": ["STOP"] } ``` **响应格式**: **成功响应**: ```json { "code": 0, "message": "检查成功", "data": { "shouldTrigger": true, "triggerType": "STOP" } } ``` **失败响应**: ```json { "code": 1002, "message": "标签触发条件不满足" } ``` #### 2.2.2 生成标签 **接口路径**:`/generate` **请求方法**:POST **功能描述**:生成指定类型的标签 **请求参数**: | 参数名 | 类型 | 必填 | 描述 | 示例值 | |-------|------|------|------|--------| | tagType | string | 是 | 标签类型 | "STOP" | | neutralWaybillNumber | string | 是 | 中性单号 | "1234567890" | | customerId | int | 是 | 客户编码 | 123 | **请求示例**: ```json { "tagType": "STOP", "neutralWaybillNumber": "1234567890", "customerId": 123 } ``` **响应格式**: **成功响应**: ```json { "code": 0, "message": "生成成功", "data": { "id": 1, "tagType": "STOP", "templateId": 1, "neutralWaybillNumber": "1234567890", "customerId": 123, "status": "ACTIVE", "triggerTime": "2026-01-30T10:00:00Z", "createdAt": "2026-01-30T10:00:00Z", "updatedAt": "2026-01-30T10:00:00Z" } } ``` **失败响应**: ```json { "code": 1003, "message": "标签生成失败" } ``` ### 2.3 标签渲染 #### 2.3.1 渲染为HTML(预览) **接口路径**:`/render/html` **请求方法**:POST **功能描述**:将标签渲染为HTML格式,用于预览 **请求参数**: | 参数名 | 类型 | 必填 | 描述 | 示例值 | |-------|------|------|------|--------| | templateId | int | 是 | 模板ID | 1 | | data | object | 是 | 标签数据 | {"neutralWaybillNumber": "1234567890", "customerId": 123} | **请求示例**: ```json { "templateId": 1, "data": { "neutralWaybillNumber": "1234567890", "customerId": 123 } } ``` **响应格式**: **成功响应**: ```json { "code": 0, "message": "渲染成功", "data": { "html": "