# 外部接口配置说明 ## 工单下达接口用户账号配置 ### 问题背景 工单下达时需要调用外部接口 `ProduceWorkOrdKittingCheck`,该接口需要传递 `userAccount` 参数。 系统会按以下优先级获取用户账号: 1. **配置的固定账号**(如果在系统参数中配置了 `order.external.api.userAccount`) 2. **当前登录用户的用户名**(username,通常是英文账号,如 "admin") 3. **当前登录用户的昵称**(nickname,可能是中文) 4. **默认值 "system"**(如果以上都获取不到) 如果用户昵称是中文,可能导致外部系统数据库保存失败,因此建议配置固定的英文账号。 ### 解决方案 可以在系统参数配置中添加一个固定的英文用户账号,用于所有外部接口调用。 ### 配置步骤 #### 方式一:通过管理后台配置(推荐) 1. 登录管理后台 2. 进入 **系统管理 > 参数配置** 3. 点击 **新增参数** 4. 填写以下信息: - **参数名称**: 外部接口用户账号 - **参数键名**: `order.external.api.userAccount` - **参数键值**: `admin` (或其他英文账号) - **参数类型**: 系统参数 - **备注**: 用于调用外部接口时的用户账号,建议使用英文 #### 方式二:直接在数据库中添加 ```sql INSERT INTO infra_config (category, name, `key`, value, type, visible, remark, creator, create_time, updater, update_time, deleted, tenant_id) VALUES ('order', '外部接口用户账号', 'order.external.api.userAccount', 'admin', 1, 1, '用于调用外部接口时的用户账号,建议使用英文', 'system', NOW(), 'system', NOW(), 0, 1); ``` ### 配置说明 - **如果配置了该参数**: 所有外部接口调用都会使用配置的固定账号(如 `admin`) - **如果未配置该参数**: 系统会优先使用当前登录用户的用户名(username),如果没有则使用昵称(nickname) ### 新增功能说明 系统已增强,现在可以从登录上下文中直接获取以下用户信息: - `username` - 登录用户名(通常是英文) - `nickname` - 用户昵称 - `mobile` - 手机号 - `email` - 邮箱 - `sex` - 性别 - `avatar` - 头像 - `deptId` - 部门ID 这些信息在用户登录时会自动加载到 Token 中,无需额外查询数据库。 ### 日志查看 配置后,可以在日志中看到详细的调用信息: ``` ========== 工单下达接口调用开始 ========== 工单号: M500000005 域: 8010 当前用户昵称: 芋道源码 配置的固定账号: admin 最终使用账号: admin URL编码后: admin 完整URL: http://123.60.180.165:8087/api/business/resource-examine/ProduceWorkOrdKittingCheck?workord=M500000005&domain=8010&userAccount=admin ``` ### 测试建议 1. **不配置固定账号**,使用 admin 账号登录,查看日志确认使用的是 "admin"(username) 2. **不配置固定账号**,使用中文昵称账号登录,查看日志确认使用的是中文昵称 3. **配置固定账号为 admin**,使用任意账号登录,查看日志确认使用的是 "admin" 4. 确认外部接口返回 "ok" ### 注意事项 - 配置的账号必须是外部系统认可的有效账号 - 建议使用英文账号,避免中文编码问题 - 修改配置后无需重启服务,立即生效 - 如果不配置固定账号,系统会智能选择用户名(优先)或昵称