录单
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user