EXTERNAL_API_CONFIG.md 3.3 KB

外部接口配置说明

工单下达接口用户账号配置

问题背景

工单下达时需要调用外部接口 ProduceWorkOrdKittingCheck,该接口需要传递 userAccount 参数。

系统会按以下优先级获取用户账号:

  1. 配置的固定账号(如果在系统参数中配置了 order.external.api.userAccount
  2. 当前登录用户的用户名(username,通常是英文账号,如 "admin")
  3. 当前登录用户的昵称(nickname,可能是中文)
  4. 默认值 "system"(如果以上都获取不到)

如果用户昵称是中文,可能导致外部系统数据库保存失败,因此建议配置固定的英文账号。

解决方案

可以在系统参数配置中添加一个固定的英文用户账号,用于所有外部接口调用。

配置步骤

方式一:通过管理后台配置(推荐)

  1. 登录管理后台
  2. 进入 系统管理 > 参数配置
  3. 点击 新增参数
  4. 填写以下信息:
    • 参数名称: 外部接口用户账号
    • 参数键名: order.external.api.userAccount
    • 参数键值: admin (或其他英文账号)
    • 参数类型: 系统参数
    • 备注: 用于调用外部接口时的用户账号,建议使用英文

方式二:直接在数据库中添加

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"

注意事项

  • 配置的账号必须是外部系统认可的有效账号
  • 建议使用英文账号,避免中文编码问题
  • 修改配置后无需重启服务,立即生效
  • 如果不配置固定账号,系统会智能选择用户名(优先)或昵称