This commit is contained in:
Van0313
2025-05-22 23:43:31 +08:00
parent a3f9695f68
commit 20c87f5f51
5 changed files with 188 additions and 6 deletions

View File

@@ -3,9 +3,11 @@ package cn.van.business.util;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.van.business.model.jd.JDOrder;
import cn.van.business.model.jd.OrderRow;
import cn.van.business.model.pl.Comment;
import cn.van.business.repository.CommentRepository;
import cn.van.business.repository.JDOrderRepository;
import cn.van.business.repository.OrderRowRepository;
import cn.van.business.util.ds.DeepSeekClientUtil;
import cn.van.business.util.ds.GPTClientUtil;
@@ -120,6 +122,7 @@ public class JDUtil {
private final StringRedisTemplate redisTemplate;
private final OrderRowRepository orderRowRepository;
private final CommentRepository commentRepository;
private JDOrderRepository jdOrderRepository;
private final OrderUtil orderUtil;
private final DeepSeekClientUtil deepSeekClientUtil;
@@ -131,8 +134,8 @@ public class JDUtil {
// 构造函数中注入StringRedisTemplate
@Autowired
public JDUtil(StringRedisTemplate redisTemplate, OrderRowRepository orderRowRepository, WXUtil wxUtil, OrderUtil orderUtil, DeepSeekClientUtil deepSeekClientUtil, CommentRepository commentRepository, GPTClientUtil gptClientUtil) {
public JDUtil(JDOrderRepository jdOrderRepository, StringRedisTemplate redisTemplate, OrderRowRepository orderRowRepository, WXUtil wxUtil, OrderUtil orderUtil, DeepSeekClientUtil deepSeekClientUtil, CommentRepository commentRepository, GPTClientUtil gptClientUtil) {
this.jdOrderRepository = jdOrderRepository;
this.redisTemplate = redisTemplate;
this.orderRowRepository = orderRowRepository;
this.wxUtil = wxUtil;
@@ -1864,4 +1867,102 @@ public class JDUtil {
private long violations; // 违规订单数
private double violationCommission;// 违规佣金
}
public void LD(String input, String fromWxid) {
JDOrder jdOrder = parseOrderFromText(input);
StringBuilder sb = new StringBuilder();
//单号 下单日期 型号 内部订单号 地址 物流 外派给谁 后返金额 谁的单 下单价格
// 从jdOrder中获取转化
String distributionMark = jdOrder.getDistributionMark();
String distributionMark2 = "";
if (distributionMark != null){
if (distributionMark.startsWith("H")){
distributionMark2 = "鸿";
} else if (distributionMark.startsWith("F")) {
distributionMark2 = "";
}
}
sb.append(jdOrder.getOrderId()).append("\n").append(jdOrder.getModelNumber()).append("\n")
.append(jdOrder.getOrderId()).append("\n").append(jdOrder.getAddress()).append("\n").append(jdOrder.getLogisticsLink()).append("\n")
.append(jdOrder.getBuyer()).append("\n").append(jdOrder.getPaymentAmount()).append("\n");
logger.info("订单信息:{}", sb);
}
public JDOrder parseOrderFromText(String input) {
// 清理多余的空白字符
input = input.replaceAll("\\s+", " ").trim();
Map<String, String> fields = new HashMap<>();
// 定义正则表达式提取各个字段
extractField(input, fields, "单:", "分销标记:");
extractField(input, fields, "分销标记:", "型号:");
extractField(input, fields, "型号:", "链接:");
extractField(input, fields, "链接:", "下单付款:");
extractField(input, fields, "下单付款:", "后返金额:");
extractField(input, fields, "后返金额:", "地址:");
extractField(input, fields, "地址:", "物流链接:");
extractField(input, fields, "物流链接:", "订单号:");
extractField(input, fields, "订单号:", "下单人:");
// 手动提取“下单人”
Pattern buyerPattern = Pattern.compile("下单人:\\s*(.*?)\\s*(?=单:|\\Z)", Pattern.DOTALL);
Matcher buyerMatcher = buyerPattern.matcher(input);
if (buyerMatcher.find()) {
fields.put("下单人", buyerMatcher.group(1).trim());
}
// 构建 JDOrder 对象
JDOrder order = new JDOrder();
order.setRemark(fields.getOrDefault("", null));
order.setDistributionMark(fields.getOrDefault("分销标记", null));
order.setModelNumber(fields.getOrDefault("型号", null));
order.setLink(fields.getOrDefault("链接", null));
try {
order.setPaymentAmount(Double.parseDouble(fields.getOrDefault("下单付款", "0")));
} catch (NumberFormatException ignored) {
}
try {
order.setRebateAmount(Double.parseDouble(fields.getOrDefault("后返金额", "0")));
} catch (NumberFormatException ignored) {
}
order.setAddress(fields.getOrDefault("地址", null));
order.setLogisticsLink(extractFirstUrl(fields.getOrDefault("物流链接", "")));
order.setOrderId(fields.getOrDefault("订单号", null));
order.setBuyer(fields.getOrDefault("下单人", null));
// 设置下单时间,格式为 yyyy-MM-dd HH:mm:ss
try {
String dateStr = fields.getOrDefault("", "").split(" ")[0];
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
order.setOrderTime(sdf.parse(dateStr));
} catch (Exception e) {
order.setOrderTime(new Date());
}
return order;
}
// 提取字段的方法
private void extractField(String input, Map<String, String> map, String startKeyword, String endKeyword) {
Pattern pattern = Pattern.compile(startKeyword + "\\s*(.*?)\\s*(?=" + endKeyword + "|\\Z)", Pattern.DOTALL);
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
String value = matcher.group(1).trim().replaceAll("^" + startKeyword, "").trim();
map.put(startKeyword.replace("", ""), value);
}
}
// 提取 URL 的辅助方法
private String extractFirstUrl(String text) {
if (text == null || text.isEmpty()) return null;
Pattern urlPattern = Pattern.compile("(https?://[^\\s]+)");
Matcher matcher = urlPattern.matcher(text);
return matcher.find() ? matcher.group(0) : null;
}
}