1
This commit is contained in:
@@ -33,7 +33,7 @@ public class OrderController {
|
|||||||
@ResponseBody
|
@ResponseBody
|
||||||
public String refreshHistory(String token) throws Exception {
|
public String refreshHistory(String token) throws Exception {
|
||||||
if (checkToken(token)) {
|
if (checkToken(token)) {
|
||||||
jdUtils.fetchHistoricalOrders3060();
|
jdUtils.fetchHistoricalOrders3090();
|
||||||
}
|
}
|
||||||
return "OK";
|
return "OK";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,8 +9,11 @@ package cn.van.business.repository;
|
|||||||
|
|
||||||
import cn.van.business.model.jd.OrderRow;
|
import cn.van.business.model.jd.OrderRow;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
@@ -27,6 +30,12 @@ public interface OrderRowRepository extends JpaRepository<OrderRow, String> {
|
|||||||
List<OrderRow> findByValidCode(int validCode);
|
List<OrderRow> findByValidCode(int validCode);
|
||||||
|
|
||||||
// 查找 validCode != 15 或者 !=-1 的订单行 ,并且按orderTime 降序
|
// 查找 validCode != 15 或者 !=-1 的订单行 ,并且按orderTime 降序
|
||||||
|
@Query("select o from OrderRow o where o.validCode not in ?1 order by o.orderTime DESC")
|
||||||
List<OrderRow> findByValidCodeNotInOrderByOrderTimeDesc(int[] validCodes);
|
List<OrderRow> findByValidCodeNotInOrderByOrderTimeDesc(int[] validCodes);
|
||||||
|
|
||||||
|
@Query("select o from OrderRow o where o.validCode not in ?1 and o.orderTime >= ?2 order by o.orderTime DESC")
|
||||||
|
List<OrderRow> findByValidCodeNotInAndOrderTimeGreaterThanOrderByOrderTimeDesc(
|
||||||
|
int[] validCodes,
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd") Date threeMonthsAgo
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,15 @@
|
|||||||
package cn.van.business.util;
|
package cn.van.business.util;
|
||||||
|
|
||||||
|
|
||||||
import cn.van.business.model.jd.GoodsInfoVO;
|
|
||||||
import cn.van.business.model.jd.OrderRow;
|
import cn.van.business.model.jd.OrderRow;
|
||||||
import cn.van.business.repository.OrderRowRepository;
|
import cn.van.business.repository.OrderRowRepository;
|
||||||
import com.alibaba.fastjson2.JSON;
|
|
||||||
import com.alibaba.fastjson2.util.DateUtils;
|
import com.alibaba.fastjson2.util.DateUtils;
|
||||||
import com.jd.open.api.sdk.DefaultJdClient;
|
import com.jd.open.api.sdk.DefaultJdClient;
|
||||||
import com.jd.open.api.sdk.JdClient;
|
import com.jd.open.api.sdk.JdClient;
|
||||||
import com.jd.open.api.sdk.domain.kplunion.OrderService.request.query.OrderRowReq;
|
import com.jd.open.api.sdk.domain.kplunion.OrderService.request.query.OrderRowReq;
|
||||||
import com.jd.open.api.sdk.domain.kplunion.OrderService.response.query.GoodsInfo;
|
|
||||||
import com.jd.open.api.sdk.domain.kplunion.OrderService.response.query.OrderRowResp;
|
import com.jd.open.api.sdk.domain.kplunion.OrderService.response.query.OrderRowResp;
|
||||||
import com.jd.open.api.sdk.domain.kplunion.promotionbysubunioni.PromotionService.request.get.PromotionCodeReq;
|
|
||||||
import com.jd.open.api.sdk.request.kplunion.UnionOpenOrderRowQueryRequest;
|
import com.jd.open.api.sdk.request.kplunion.UnionOpenOrderRowQueryRequest;
|
||||||
import com.jd.open.api.sdk.request.kplunion.UnionOpenPromotionBysubunionidGetRequest;
|
|
||||||
import com.jd.open.api.sdk.response.kplunion.UnionOpenOrderRowQueryResponse;
|
import com.jd.open.api.sdk.response.kplunion.UnionOpenOrderRowQueryResponse;
|
||||||
import com.jd.open.api.sdk.response.kplunion.UnionOpenPromotionCommonGetResponse;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -47,15 +41,27 @@ import java.util.stream.Stream;
|
|||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class JDUtils {
|
public class JDUtils {
|
||||||
private static final String SERVER_URL = "https://api.jd.com/routerjson";
|
/**
|
||||||
|
* 密钥配置
|
||||||
|
*/
|
||||||
|
|
||||||
// van论坛
|
// van论坛
|
||||||
private static final String APP_KEY_WZ = "98e21c89ae5610240ec3f5f575f86a59";
|
private static final String LPF_APP_KEY_WZ = "98e21c89ae5610240ec3f5f575f86a59";
|
||||||
private static final String SECRET_KEY_WZ = "3dcb6b23a1104639ac433fd07adb6dfb";
|
private static final String LPF_SECRET_KEY_WZ = "3dcb6b23a1104639ac433fd07adb6dfb";
|
||||||
|
// 导购的
|
||||||
|
private static final String LPF_APP_KEY_DG = "faf410cb9587dc80dc7b31e321d7d322";
|
||||||
|
private static final String LPF_SECRET_KEY_DG = "a4fb15d7bedd4316b97b4e96e4effc1c";
|
||||||
|
|
||||||
|
private static final String LL_APP_KEY_DG = "9c2011409f0fc906b73432dd3687599d";
|
||||||
|
private static final String LL_SECRET_KEY_DG = "3ceddff403e544a8a2eacc727cf05dab";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实际业务处理
|
||||||
|
*/
|
||||||
// 标记是否拉取过小时的订单,空订单会set 一个 tag,避免重复拉取
|
// 标记是否拉取过小时的订单,空订单会set 一个 tag,避免重复拉取
|
||||||
private static final String JD_REFRESH_TAG = "jd:refresh:tag:";
|
private static final String JD_REFRESH_TAG = "jd:refresh:tag:";
|
||||||
// 导购的
|
private static final String SERVER_URL = "https://api.jd.com/routerjson";
|
||||||
private static final String APP_KEY_DG = "faf410cb9587dc80dc7b31e321d7d322";
|
|
||||||
private static final String SECRET_KEY_DG = "a4fb15d7bedd4316b97b4e96e4effc1c";
|
|
||||||
//accessToken
|
//accessToken
|
||||||
private static final String ACCESS_TOKEN = "";
|
private static final String ACCESS_TOKEN = "";
|
||||||
|
|
||||||
@@ -204,8 +210,10 @@ public class JDUtils {
|
|||||||
@Scheduled(cron = "*/10 * * * * ?")
|
@Scheduled(cron = "*/10 * * * * ?")
|
||||||
public void sendOrderToWx() {
|
public void sendOrderToWx() {
|
||||||
//long start = System.currentTimeMillis();
|
//long start = System.currentTimeMillis();
|
||||||
int[] parm = {-1};
|
int[] validCodes = {-1};
|
||||||
List<OrderRow> orderRows = orderRowRepository.findByValidCodeNotInOrderByOrderTimeDesc(parm);
|
// 只要三个月的,更多的也刷新不出来的
|
||||||
|
Date threeMonthsAgo = Date.from(LocalDateTime.now().minusMonths(3).atZone(ZoneId.systemDefault()).toInstant());
|
||||||
|
List<OrderRow> orderRows = orderRowRepository.findByValidCodeNotInAndOrderTimeGreaterThanOrderByOrderTimeDesc(validCodes, threeMonthsAgo);
|
||||||
|
|
||||||
for (OrderRow orderRow : orderRows) {
|
for (OrderRow orderRow : orderRows) {
|
||||||
|
|
||||||
@@ -221,19 +229,19 @@ public class JDUtils {
|
|||||||
* 一天拉取三次 30天到60天前的订单
|
* 一天拉取三次 30天到60天前的订单
|
||||||
*/
|
*/
|
||||||
@Scheduled(cron = "0 0 */4 * * ?")
|
@Scheduled(cron = "0 0 */4 * * ?")
|
||||||
public void fetchHistoricalOrders3060() {
|
public void fetchHistoricalOrders3090() {
|
||||||
|
|
||||||
fetchHistoricalOrders3060Do();
|
fetchHistoricalOrders3090Do();
|
||||||
}
|
}
|
||||||
|
|
||||||
private int fetchHistoricalOrders3060Do() {
|
private int fetchHistoricalOrders3090Do() {
|
||||||
|
|
||||||
int count = 0;
|
int count = 0;
|
||||||
LocalDateTime now = LocalDateTime.now();
|
LocalDateTime now = LocalDateTime.now();
|
||||||
//logger.info("拉取历史订单---> , {} 点,{} 分", now.getHour(), now.getMinute());
|
//logger.info("拉取历史订单---> , {} 点,{} 分", now.getHour(), now.getMinute());
|
||||||
|
|
||||||
LocalDateTime lastHour = now.truncatedTo(ChronoUnit.HOURS).minusMonths(1);
|
LocalDateTime lastHour = now.truncatedTo(ChronoUnit.HOURS).minusMonths(1);
|
||||||
LocalDateTime startDate = lastHour.minusMonths(2).truncatedTo(ChronoUnit.HOURS);
|
LocalDateTime startDate = lastHour.minusMonths(3).truncatedTo(ChronoUnit.HOURS);
|
||||||
|
|
||||||
while (!startDate.isEqual(lastHour)) {
|
while (!startDate.isEqual(lastHour)) {
|
||||||
Integer pageIndex = 1;
|
Integer pageIndex = 1;
|
||||||
@@ -484,7 +492,7 @@ public class JDUtils {
|
|||||||
/**
|
/**
|
||||||
* 接收京粉指令指令
|
* 接收京粉指令指令
|
||||||
*/
|
*/
|
||||||
public void sendOrderToWxByOrderJD(String order) throws Exception {
|
public void sendOrderToWxByOrderJD(String order) {
|
||||||
int[] param = {-1};
|
int[] param = {-1};
|
||||||
List<OrderRow> orderRows = orderRowRepository.findByValidCodeNotInOrderByOrderTimeDesc(param);
|
List<OrderRow> orderRows = orderRowRepository.findByValidCodeNotInOrderByOrderTimeDesc(param);
|
||||||
/**
|
/**
|
||||||
@@ -512,7 +520,7 @@ public class JDUtils {
|
|||||||
content.append("今日订单\r");
|
content.append("今日订单\r");
|
||||||
content.append("昨日订单\r");
|
content.append("昨日订单\r");
|
||||||
content.append("刷新7天\r");
|
content.append("刷新7天\r");
|
||||||
content.append("刷新3060\r");
|
content.append("刷新3090\r");
|
||||||
content.append("刷新1430\r");
|
content.append("刷新1430\r");
|
||||||
content.append("刷新0714\r");
|
content.append("刷新0714\r");
|
||||||
|
|
||||||
@@ -748,9 +756,9 @@ public class JDUtils {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
case "刷新3060": {
|
case "刷新3090": {
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
int count = fetchHistoricalOrders3060Do();
|
int count = fetchHistoricalOrders3090Do();
|
||||||
long time = System.currentTimeMillis() - start;
|
long time = System.currentTimeMillis() - start;
|
||||||
content.append("订单行:").append(count).append(",耗时: ").append(time).append("ms, ").append((time) / 1000).append(" s\r");
|
content.append("订单行:").append(count).append(",耗时: ").append(time).append("ms, ").append((time) / 1000).append(" s\r");
|
||||||
break;
|
break;
|
||||||
@@ -772,7 +780,6 @@ public class JDUtils {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
sendOrderToWxByOrderJDAdvanced(order);
|
sendOrderToWxByOrderJDAdvanced(order);
|
||||||
}
|
}
|
||||||
@@ -805,25 +812,17 @@ public class JDUtils {
|
|||||||
content.append(daysInt).append("天").append("\r\n");
|
content.append(daysInt).append("天").append("\r\n");
|
||||||
|
|
||||||
|
|
||||||
Map<String, Long> skuIdViolationCountMap = filterOrdersByDays.stream()
|
Map<String, Long> skuIdViolationCountMap = filterOrdersByDays.stream().filter(orderRow -> orderRow.getValidCode() == 27 || orderRow.getValidCode() == 28).filter(orderRow -> orderRow.getSkuName() != null).collect(Collectors.groupingBy(OrderRow::getSkuName, Collectors.counting()));
|
||||||
.filter(orderRow -> orderRow.getValidCode() == 27 || orderRow.getValidCode() == 28)
|
|
||||||
.filter(orderRow -> orderRow.getSkuName() != null)
|
|
||||||
.collect(Collectors.groupingBy(OrderRow::getSkuName, Collectors.counting()));
|
|
||||||
|
|
||||||
Map<String, List<OrderInfo>> orderInfoMap = filterOrdersByDays.stream()
|
Map<String, List<OrderInfo>> orderInfoMap = filterOrdersByDays.stream().filter(orderRow -> orderRow.getValidCode() == 27 || orderRow.getValidCode() == 28).filter(orderRow -> orderRow.getSkuName() != null).map(orderRow -> {
|
||||||
.filter(orderRow -> orderRow.getValidCode() == 27 || orderRow.getValidCode() == 28)
|
|
||||||
.filter(orderRow -> orderRow.getSkuName() != null)
|
|
||||||
.map(orderRow -> {
|
|
||||||
OrderInfo info = new OrderInfo();
|
OrderInfo info = new OrderInfo();
|
||||||
info.setSkuName(orderRow.getSkuName());
|
info.setSkuName(orderRow.getSkuName());
|
||||||
info.setOrderId(orderRow.getOrderId());
|
info.setOrderId(orderRow.getOrderId());
|
||||||
info.setOrderDate(orderRow.getOrderTime());
|
info.setOrderDate(orderRow.getOrderTime());
|
||||||
return info;
|
return info;
|
||||||
})
|
}).collect(Collectors.groupingBy(OrderInfo::getSkuName));
|
||||||
.collect(Collectors.groupingBy(OrderInfo::getSkuName));
|
|
||||||
|
|
||||||
List<Map.Entry<String, Long>> sortedViolationCounts = skuIdViolationCountMap.entrySet().stream()
|
List<Map.Entry<String, Long>> sortedViolationCounts = skuIdViolationCountMap.entrySet().stream().sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())).collect(Collectors.toList());
|
||||||
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())).collect(Collectors.toList());
|
|
||||||
|
|
||||||
Integer num = 0;
|
Integer num = 0;
|
||||||
for (Map.Entry<String, Long> entry : sortedViolationCounts) {
|
for (Map.Entry<String, Long> entry : sortedViolationCounts) {
|
||||||
@@ -919,7 +918,7 @@ public class JDUtils {
|
|||||||
//System.out.println("调用API - 从 " + startTime
|
//System.out.println("调用API - 从 " + startTime
|
||||||
// + " 到 " + endTime);
|
// + " 到 " + endTime);
|
||||||
// 实际的 API 调用逻辑应在这里进行
|
// 实际的 API 调用逻辑应在这里进行
|
||||||
JdClient client = new DefaultJdClient(SERVER_URL, ACCESS_TOKEN, APP_KEY_WZ, SECRET_KEY_WZ);
|
JdClient client = new DefaultJdClient(SERVER_URL, ACCESS_TOKEN, LPF_APP_KEY_WZ, LPF_SECRET_KEY_WZ);
|
||||||
UnionOpenOrderRowQueryRequest request = new UnionOpenOrderRowQueryRequest();
|
UnionOpenOrderRowQueryRequest request = new UnionOpenOrderRowQueryRequest();
|
||||||
OrderRowReq orderReq = new OrderRowReq();
|
OrderRowReq orderReq = new OrderRowReq();
|
||||||
orderReq.setPageIndex(pageIndex);
|
orderReq.setPageIndex(pageIndex);
|
||||||
|
|||||||
Reference in New Issue
Block a user