1
This commit is contained in:
@@ -43,7 +43,11 @@ public class InstructionServiceImpl implements IInstructionService {
|
||||
@Resource
|
||||
private com.ruoyi.jarvis.service.ITencentDocService tencentDocService;
|
||||
@Resource
|
||||
private com.ruoyi.jarvis.service.ITencentDocTokenService tencentDocTokenService;
|
||||
@Resource
|
||||
private com.ruoyi.jarvis.config.TencentDocConfig tencentDocConfig;
|
||||
@Resource
|
||||
private com.ruoyi.common.core.redis.RedisCache redisCache;
|
||||
|
||||
// 录单模板(与 jd/JDUtil 中 WENAN_D 保持一致)
|
||||
private static final String WENAN_D = "单:\n" + "{单号} \n备注:{单的备注}\n" + "分销标记:{分销标记}\n" + "第三方单号:{第三方单号}\n" + "型号:\n" + "{型号}\n" + "链接:\n" + "{链接}\n" + "下单付款:\n" + "\n" + "后返金额:\n" + "\n" + "地址:\n" + "{地址}\n" + "物流链接:\n" + "\n" + "订单号:\n" + "\n" + "下单人:\n" + "\n" + "京粉实际价格:\n" + "\n";
|
||||
@@ -1647,37 +1651,61 @@ private String handleTF(String input) {
|
||||
// 使用独立线程异步执行,避免阻塞录单流程
|
||||
new Thread(() -> {
|
||||
try {
|
||||
// 读取腾讯文档配置
|
||||
String accessToken = tencentDocConfig.getAccessToken();
|
||||
String fileId = tencentDocConfig.getFileId();
|
||||
String sheetId = tencentDocConfig.getSheetId();
|
||||
// Redis key前缀(用于获取文档配置)
|
||||
final String REDIS_KEY_PREFIX = "tencent:doc:auto:config:";
|
||||
|
||||
// 验证配置是否完整
|
||||
if (accessToken == null || accessToken.isEmpty() ||
|
||||
fileId == null || fileId.isEmpty() ||
|
||||
sheetId == null || sheetId.isEmpty()) {
|
||||
System.err.println("腾讯文档配置不完整,跳过自动写入。请检查配置:accessToken=" +
|
||||
(accessToken != null && !accessToken.isEmpty() ? "已配置" : "未配置") +
|
||||
", fileId=" + (fileId != null && !fileId.isEmpty() ? "已配置" : "未配置") +
|
||||
", sheetId=" + (sheetId != null && !sheetId.isEmpty() ? "已配置" : "未配置"));
|
||||
// 1. 从Token服务获取access-token(会自动从Redis读取并刷新)
|
||||
String accessToken = null;
|
||||
try {
|
||||
accessToken = tencentDocTokenService.getValidAccessToken();
|
||||
} catch (Exception e) {
|
||||
System.err.println("✗ 无法获取腾讯文档访问令牌 - " + e.getMessage());
|
||||
System.err.println(" 提示:请先完成腾讯文档授权,访问 /jarvis/tendoc/authUrl 获取授权URL");
|
||||
return;
|
||||
}
|
||||
|
||||
// 调用腾讯文档服务追加订单数据
|
||||
// 2. 从Redis获取文档配置(fileId 和 sheetId)
|
||||
String fileId = redisCache.getCacheObject(REDIS_KEY_PREFIX + "fileId");
|
||||
String sheetId = redisCache.getCacheObject(REDIS_KEY_PREFIX + "sheetId");
|
||||
|
||||
// 如果Redis中没有,则使用配置文件中的默认值
|
||||
if (fileId == null || fileId.isEmpty()) {
|
||||
fileId = tencentDocConfig.getFileId();
|
||||
}
|
||||
if (sheetId == null || sheetId.isEmpty()) {
|
||||
sheetId = tencentDocConfig.getSheetId();
|
||||
}
|
||||
|
||||
// 3. 验证配置是否完整
|
||||
if (fileId == null || fileId.isEmpty() || sheetId == null || sheetId.isEmpty()) {
|
||||
System.err.println("✗ H-TF订单文档配置不完整,跳过自动写入。" +
|
||||
"\n 提示:请通过 POST /jarvis/tencentDoc/config 接口配置文档ID和工作表ID" +
|
||||
"\n fileId: " + (fileId != null && !fileId.isEmpty() ? fileId : "未配置") +
|
||||
"\n sheetId: " + (sheetId != null && !sheetId.isEmpty() ? sheetId : "未配置"));
|
||||
return;
|
||||
}
|
||||
|
||||
// 4. 调用腾讯文档服务追加订单数据
|
||||
com.alibaba.fastjson2.JSONObject result = tencentDocService.appendLogisticsToSheet(
|
||||
accessToken, fileId, sheetId, order);
|
||||
|
||||
if (result != null) {
|
||||
System.out.println("订单已自动追加到腾讯文档 - 单号: " + order.getRemark() +
|
||||
", 第三方单号: " + order.getThirdPartyOrderNo());
|
||||
System.out.println("✓ H-TF订单已自动追加到腾讯文档" +
|
||||
"\n 单号: " + order.getRemark() +
|
||||
"\n 第三方单号: " + order.getThirdPartyOrderNo() +
|
||||
"\n 文档: " + fileId + "/" + sheetId);
|
||||
} else {
|
||||
System.err.println("订单追加到腾讯文档失败 - 单号: " + order.getRemark() +
|
||||
", API返回null");
|
||||
System.err.println("✗ 订单追加到腾讯文档失败 - 单号: " + order.getRemark() +
|
||||
"\n API返回null,请检查access-token是否有效或文档是否存在");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// 写入失败不影响录单结果,仅记录错误日志
|
||||
System.err.println("异步写入腾讯文档失败 - 单号: " + order.getRemark() +
|
||||
", 错误: " + e.getMessage());
|
||||
System.err.println("✗ 异步写入腾讯文档失败 - 单号: " + order.getRemark() +
|
||||
"\n 错误: " + e.getMessage() +
|
||||
"\n 提示:" +
|
||||
"\n 1. 检查腾讯文档授权是否有效" +
|
||||
"\n 2. 检查文档ID和工作表ID是否正确" +
|
||||
"\n 3. 使用 GET /jarvis/tencentDoc/config/test 测试配置");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}, "TencentDoc-Writer-" + order.getRemark()).start();
|
||||
|
||||
Reference in New Issue
Block a user