This commit is contained in:
cc
2024-11-12 15:41:33 +08:00
parent 34cef80465
commit 7e91a2e461
6 changed files with 48 additions and 28 deletions

5
.idea/misc.xml generated
View File

@@ -8,10 +8,7 @@
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8(202)" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
<component name="ProjectType">
<option name="id" value="jpab" />
</component>
</project>

2
.idea/vcs.xml generated
View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@@ -103,6 +103,7 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
</plugin>
</plugins>
</build>

View File

@@ -13,6 +13,7 @@ public class ValidCodeConverter {
private static final Map<Integer, String> codeDescriptions = new HashMap<>();
static {
codeDescriptions.put(-100, "无变化");
codeDescriptions.put(-1, "未知");
codeDescriptions.put(2, "无效-拆单");
codeDescriptions.put(3, "无效-取消");

View File

@@ -209,7 +209,7 @@ public class JDUtils {
/**
* 菜单:
* 今日统计
* 昨统计
* 昨统计
* 最近七天统计
* 最近一个月统计
* 今天订单
@@ -221,10 +221,10 @@ public class JDUtils {
content = "菜单:京粉 +命令 \n 如: 京粉 今日统计\r";
content += "今日统计\r";
content += "昨天统计\r";
content += "最近七天统计\r";
content += "最近一个月统计\r";
content += "订单\r";
content += "订单\r";
content += "七日统计\r";
content += "一个月统计\r";
content += "订单\r";
content += "订单\r";
content += "刷新三天\r";
break;
case "今日统计": {
@@ -239,9 +239,11 @@ public class JDUtils {
break;
}
case "统计": {
case "统计": {
List<OrderRow> yesterdayOrders = filterOrdersByDate(orderRows, 1);
content = "昨天统计:";
List<OrderRow> todayOrders = filterOrdersByDate(orderRows, 0);
yesterdayOrders.removeAll(todayOrders);
content = "昨日统计:";
content += "订单总数:" + yesterdayOrders.size() + "\r";
content += "已付款:" + yesterdayOrders.stream().filter(orderRow -> orderRow.getValidCode() == 16).count() + "\r";
content += "已取消:" + yesterdayOrders.stream().filter(orderRow -> orderRow.getValidCode() != 16).count() + "\r";
@@ -249,25 +251,25 @@ public class JDUtils {
break;
}
case "最近七天统计":
case "七日统计":
List<OrderRow> last7DaysOrders = filterOrdersByDate(orderRows, 7);
content = "最近七天统计:";
content = "七日统计:";
content += "订单总数:" + last7DaysOrders.size() + "\r";
content += "已付款:" + last7DaysOrders.stream().filter(orderRow -> orderRow.getValidCode() == 16).count() + "\r";
content += "已取消:" + last7DaysOrders.stream().filter(orderRow -> orderRow.getValidCode() != 16).count() + "\r";
content += "佣金总计:" + last7DaysOrders.stream().filter(orderRow -> orderRow.getValidCode() == 16).mapToDouble(OrderRow::getEstimateFee).sum();
break;
case "最近一个月统计":
case "一个月统计":
List<OrderRow> last30DaysOrders = filterOrdersByDate(orderRows, 30);
content = "最近一个月统计:";
content = "一个月统计:";
content += "订单总数:" + last30DaysOrders.size() + "\r";
content += "已付款:" + last30DaysOrders.stream().filter(orderRow -> orderRow.getValidCode() == 16).count() + "\r";
content += "已取消:" + last30DaysOrders.stream().filter(orderRow -> orderRow.getValidCode() != 16).count() + "\r";
content += "佣金总计:" + last30DaysOrders.stream().filter(orderRow -> orderRow.getValidCode() == 16).mapToDouble(OrderRow::getEstimateFee).sum();
break;
case "订单": {
case "订单": {
List<OrderRow> todayOrders = filterOrdersByDate(orderRows, 0);
// 订单总数,已付款,已取消,佣金总计
content = "今日统计:";
@@ -283,9 +285,9 @@ public class JDUtils {
break;
}
case "订单": {
case "订单": {
List<OrderRow> yesterdayOrders = filterOrdersByDate(orderRows, 1);
content = "统计:";
content = "统计:";
content += "订单总数:" + yesterdayOrders.size() + "\r";
content += "已付款:" + yesterdayOrders.stream().filter(orderRow -> orderRow.getValidCode() == 16).count() + "\r";
content += "已取消:" + yesterdayOrders.stream().filter(orderRow -> orderRow.getValidCode() != 16).count() + "\r";
@@ -328,6 +330,13 @@ public class JDUtils {
}
content = "刷新三天成功,耗时" + (System.currentTimeMillis() - start) / 1000 + "\r" + "刷新订单数:" + count;
}
case "刷新两个月": {
long start = System.currentTimeMillis();
fetchHistoricalOrders();
content = "刷新两个月,耗时" + (System.currentTimeMillis() - start) / 1000 + "\r";
}
}
if (content != null) {
wxUtil.sendTextMessage(WXUtil.super_admin_wxid, content, 1, WXUtil.super_admin_wxid);
@@ -350,7 +359,7 @@ public class JDUtils {
if (isAutoFlush && lastValidCode.equals(newValidCode)) {
} else {
String content;
content = getFormattedOrderInfo(orderRow);
content = getFormattedOrderInfo(orderRow, Util.isEmpty(oldValidCode) ? -100 : Integer.parseInt(oldValidCode));
// 推送
wxUtil.sendTextMessage(WXUtil.super_admin_wxid, content, 1, WXUtil.super_admin_wxid);
@@ -363,7 +372,7 @@ public class JDUtils {
}
public String getFormattedOrderInfo(OrderRow orderRow) {
public String getFormattedOrderInfo(OrderRow orderRow, Integer oldValidCode) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ValidCodeConverter converter = new ValidCodeConverter();
String orderInfo =
@@ -380,9 +389,14 @@ public class JDUtils {
+ "实际计算佣金的金额:" + orderRow.getActualCosPrice() + "\r"
+ "下单时间:" + formatter.format(orderRow.getOrderTime()) + "\r"
+ "完成时间:" + (orderRow.getFinishTime() != null ? formatter.format(orderRow.getFinishTime()) : "未完成") + "\r\n"
+ "订单状态:" + (converter.getCodeDescription(orderRow.getValidCode())) + "\r";
+ "最新订单状态:" + (converter.getCodeDescription(orderRow.getValidCode())) + "\r";
if (oldValidCode != -100) {
orderInfo = "订单状态从 " + (converter.getCodeDescription(oldValidCode)) + " --变成-- " +
(converter.getCodeDescription(orderRow.getValidCode())) + "\r" + orderInfo;
}
return orderInfo + "祝 财源滚滚";
return orderInfo;
}
/**
@@ -496,12 +510,12 @@ public class JDUtils {
LocalDateTime startDate = LocalDateTime.now().minusMonths(2).truncatedTo(ChronoUnit.HOURS);
LocalDateTime now = LocalDateTime.now();
LocalDateTime lastHour = now.minusHours(1).withMinute(0).withSecond(0).withNano(0);
LocalDateTime lastHour = now.truncatedTo(ChronoUnit.HOURS);
while (!startDate.isEqual(lastHour)) {
startDate = startDate.plusHours(1);
UnionOpenOrderRowQueryResponse response = fetchOrdersForDateTime(startDate, false); // 假的代表历史订单
if (response != null) {
int code = response.getQueryResult().getCode();
if (code == 200) {
@@ -520,7 +534,7 @@ public class JDUtils {
}
}
}
startDate = startDate.plusHours(1);
}
}

View File

@@ -11,6 +11,13 @@ spring:
url: jdbc:mysql://134.175.126.60:33306/jd?characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
username: root
password: mysql_7sjTXH
hikari:
maximum-pool-size: 200 # 最大连接数
minimum-idle: 5 # 最小空闲连接数
idle-timeout: 30000 # 空闲连接超时时间(毫秒)
max-lifetime: 2000000 # 最大生命周期(毫秒)
connection-timeout: 30000 # 连接超时时间(毫秒)
pool-name: SpringBootHikariCP # 连接池名字
#redis配置
redis:
host: 134.175.126.60
@@ -19,7 +26,7 @@ spring:
timeout: 1800000
lettuce:
pool:
max-active: 20
max-active: 200
#最大阻塞等待时间(负数表示没限制)
max-wait: -1
max-idle: 5