1
This commit is contained in:
@@ -32,4 +32,15 @@ public class XbMessage {
|
|||||||
@Column(name = "from_wxid", length = 100)
|
@Column(name = "from_wxid", length = 100)
|
||||||
private String fromWxid;
|
private String fromWxid;
|
||||||
|
|
||||||
|
@Size(max = 1024)
|
||||||
|
@Column(name = "first_line", length = 1024)
|
||||||
|
private String firstLine;
|
||||||
|
|
||||||
|
@Size(max = 1024)
|
||||||
|
@Column(name = "first_sku_name", length = 1024)
|
||||||
|
private String firstSkuName;
|
||||||
|
|
||||||
|
@Column(name = "first_price")
|
||||||
|
private Double firstPrice;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1449,6 +1449,10 @@ public class JDUtil {
|
|||||||
xbMessage.setCreateDate(LocalDate.now());
|
xbMessage.setCreateDate(LocalDate.now());
|
||||||
xbMessage.setTipOriginalMessage(message);
|
xbMessage.setTipOriginalMessage(message);
|
||||||
xbMessage.setFromWxid(wxid);
|
xbMessage.setFromWxid(wxid);
|
||||||
|
String firstLine = message.split("\n")[0];
|
||||||
|
Double price = parsePrice(message);
|
||||||
|
xbMessage.setFirstLine(firstLine);
|
||||||
|
xbMessage.setFirstPrice(price);
|
||||||
xbMessage = xbMessageRepository.save(xbMessage);
|
xbMessage = xbMessageRepository.save(xbMessage);
|
||||||
xbMessageId = xbMessage.getId();
|
xbMessageId = xbMessage.getId();
|
||||||
}
|
}
|
||||||
@@ -2780,4 +2784,32 @@ public class JDUtil {
|
|||||||
Matcher matcher = urlPattern.matcher(text);
|
Matcher matcher = urlPattern.matcher(text);
|
||||||
return matcher.find() ? matcher.group(0) : null;
|
return matcher.find() ? matcher.group(0) : null;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 从字符串中解析出价格数值
|
||||||
|
* @param input 包含价格的字符串(如"🔥7.2折⎜◉854.64💰")
|
||||||
|
* @return 解析出的价格(double类型),解析失败返回null
|
||||||
|
*/
|
||||||
|
public static Double parsePrice(String input) {
|
||||||
|
if (input == null || input.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 正则表达式:匹配一个或多个数字,可包含一个小数点
|
||||||
|
Pattern pattern = Pattern.compile("\\d+\\.\\d+|\\d+");
|
||||||
|
Matcher matcher = pattern.matcher(input);
|
||||||
|
|
||||||
|
// 从右向左查找最后一个数字(价格通常在字符串末尾)
|
||||||
|
double price = -1;
|
||||||
|
while (matcher.find()) {
|
||||||
|
String numberStr = matcher.group();
|
||||||
|
try {
|
||||||
|
price = Double.parseDouble(numberStr);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
// 忽略转换失败的情况
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return price >= 0 ? price : null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user