订单拉取解析修改
This commit is contained in:
parent
49943af416
commit
39a9a5fd33
|
@ -381,7 +381,7 @@ public class MeituanServiceImpl implements IMeituanService {
|
|||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R orderInfo(String wmPoiId, String date, String cookie) { //根据date,查询前一天的key,如果有,则删除
|
||||
public R orderInfo(String wmPoiId, String date, String cookie) {
|
||||
try {
|
||||
int pageNum = 1;
|
||||
String getUrl = proxyProperties.gettpsUrl();
|
||||
|
@ -390,13 +390,13 @@ public class MeituanServiceImpl implements IMeituanService {
|
|||
if ("0".equals(code)) {
|
||||
JSONArray array = jsonObject.getJSONObject("data").getJSONArray("wmOrderList");
|
||||
|
||||
// boolean flag = false;
|
||||
// String key = wmPoiId + date;
|
||||
// String lastDayseq = Optional.ofNullable(redisTemplate.opsForValue().get(key)).orElse(null);
|
||||
boolean flag = false;
|
||||
String key = wmPoiId + date;
|
||||
String lastDayseq = Optional.ofNullable(redisTemplate.opsForValue().get(key)).orElse(null);
|
||||
while (array != null && array.size() > 0) {
|
||||
// if (flag) {
|
||||
// break;
|
||||
// }
|
||||
if (flag) {
|
||||
break;
|
||||
}
|
||||
List<BusOrderInfo> list = new ArrayList<>();
|
||||
for (int i = 0; i < array.size(); i++) {
|
||||
BusOrderInfo orderInfo = new BusOrderInfo();
|
||||
|
@ -415,7 +415,6 @@ public class MeituanServiceImpl implements IMeituanService {
|
|||
JSONObject userLabelVo = foodInfo.getJSONObject("userLabelVo");
|
||||
JSONArray array1 = userLabelVo.getJSONArray("contents");
|
||||
String info = array1.getJSONObject(0).getString("info");
|
||||
JSONObject expectTimeVo = order1.getJSONObject("expectTimeVo");
|
||||
daySeq = order1.getString("dayseq");
|
||||
wmOrderViewId = order1.getString("wmOrderViewId");
|
||||
orderTimeFmt = "2024-"+order1.getString("orderTimeFmt");
|
||||
|
@ -439,18 +438,18 @@ public class MeituanServiceImpl implements IMeituanService {
|
|||
|
||||
|
||||
}
|
||||
// String redisDaySeq = Optional.ofNullable(redisTemplate.opsForValue().get(key)).orElse(null);
|
||||
// if (redisDaySeq == null) {
|
||||
// redisTemplate.opsForValue().set(key, daySeq);
|
||||
// } else {
|
||||
String redisDaySeq = Optional.ofNullable(redisTemplate.opsForValue().get(key)).orElse(null);
|
||||
if (redisDaySeq == null) {
|
||||
redisTemplate.opsForValue().set(key, daySeq);
|
||||
} else {
|
||||
// if (Integer.valueOf(daySeq) > Integer.valueOf(redisDaySeq)) {
|
||||
// redisTemplate.opsForValue().set(key, daySeq);
|
||||
// }
|
||||
// if (daySeq.equals(lastDayseq)) {
|
||||
// flag = true;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
if (daySeq.equals(lastDayseq)) {
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
orderInfo.setStoreCode(wmPoiId);
|
||||
orderInfo.setDayseq(daySeq);
|
||||
orderInfo.setOrderNo(wmOrderViewId);
|
||||
|
@ -461,7 +460,7 @@ public class MeituanServiceImpl implements IMeituanService {
|
|||
|
||||
orderInfo.setStoreName(storeInfo1.getStoreName());
|
||||
|
||||
String reachTime = receiveTime(getUrl,wmPoiId,cookie,wmOrderViewId);
|
||||
String reachTime = receiveTime(wmPoiId,cookie,wmOrderViewId,getUrl);
|
||||
|
||||
orderInfo.setCompleteTime(date+" "+reachTime);
|
||||
orderInfo.setOrderStatus(statusDesc);
|
||||
|
@ -484,8 +483,7 @@ public class MeituanServiceImpl implements IMeituanService {
|
|||
list.add(orderInfo);
|
||||
}
|
||||
if (list.size() > 0) {
|
||||
List<BusOrderInfo> newList = list.stream().collect(Collectors.toMap(BusOrderInfo::getOrderNo, p->p,(p1, p2)->p1)).values().stream().collect(Collectors.toList());
|
||||
|
||||
List<BusOrderInfo> newList = list.stream().distinct().collect(Collectors.toList());
|
||||
priPhoneInfo(newList,cookie,getUrl);
|
||||
}else{
|
||||
break;
|
||||
|
@ -517,11 +515,117 @@ public class MeituanServiceImpl implements IMeituanService {
|
|||
}
|
||||
return R.fail(jsonObject.getString("msg"));
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return orderInfo(wmPoiId, date, cookie);
|
||||
System.out.println("================拉取订单出错:==============="+e.getMessage());
|
||||
// return orderInfo(wmPoiId, date, cookie);
|
||||
return R.fail("=====================拉取订单出错==================");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取号码
|
||||
*
|
||||
* @param cookie
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void priPhoneInfo(List<BusOrderInfo> ls, String cookie,String getUrl) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
||||
|
||||
List<BusOrderInfo> lsList = ls.stream().filter(x -> x.getPrivcyPhone() != null && x.getRecipientPhone() != null && x.getRecipientBindedPhone() != null).collect(Collectors.toList());
|
||||
List<BusOrderInfo> lsList1 = ls.stream().filter(x -> x.getPrivcyPhone() == null && x.getRecipientPhone() == null && x.getRecipientBindedPhone() == null).collect(Collectors.toList());
|
||||
|
||||
List<BusReturnVisitInfo> lss = new ArrayList<>();
|
||||
for (BusOrderInfo info : lsList) {
|
||||
BusReturnVisitInfo returnVisitInfo1 = new BusReturnVisitInfo();
|
||||
returnVisitInfo1.setStoreCode(info.getStoreCode());
|
||||
returnVisitInfo1.setStoreName(info.getStoreName());
|
||||
returnVisitInfo1.setPhoneEndNumber(info.getRecipientPhone());
|
||||
returnVisitInfo1.setPhoneNumber(info.getPrivcyPhone());
|
||||
lss.add(returnVisitInfo1);
|
||||
}
|
||||
for (BusOrderInfo orderInfo : lsList1) {
|
||||
String url = "https://e.waimai.meituan.com/v2/order/history/r/search/ajax";
|
||||
String regionId = valueFromCookie("region_id", cookie);
|
||||
String regionVersion = valueFromCookie("region_version", cookie);
|
||||
Map<String, Object> params = new LinkedHashMap<>();
|
||||
params.put("searchItem", orderInfo.getOrderNo());
|
||||
params.put("region_id", regionId);
|
||||
params.put("region_version", regionVersion);
|
||||
params.put("yodaReady", "h5");
|
||||
params.put("csecplatform", 4);
|
||||
params.put("csecversion", "2.4.0");
|
||||
String mtgsig = mtgsigInfo(getUrl,orderInfo.getOrderNo(), regionId, regionVersion,valueFromCookie("WEBDFPID",cookie));
|
||||
params.put("mtgsig", mtgsig);
|
||||
url = appendParams(url, params);
|
||||
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
|
||||
builder.addTextBody("wmPoiId",orderInfo.getStoreCode());
|
||||
HttpPost httpPost = new HttpPost(url);
|
||||
HttpEntity entity = builder.build();
|
||||
httpPost.setEntity(entity);
|
||||
httpPost.setHeader("Cookie", cookie);
|
||||
|
||||
CloseableHttpClient client = proxyHttpClient(getUrl);
|
||||
|
||||
String code = null;
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
try {
|
||||
HttpResponse response = client.execute(httpPost);
|
||||
HttpEntity responseEntity = response.getEntity();
|
||||
String resp = EntityUtils.toString(responseEntity);
|
||||
jsonObject = JSONObject.parseObject(resp);
|
||||
code = jsonObject.getString(("code"));
|
||||
} catch (Exception e) {
|
||||
System.out.println("===============订单解析号码出错:================"+e.getMessage());
|
||||
|
||||
client = localHttpClient();
|
||||
try {
|
||||
HttpResponse response = client.execute(httpPost);
|
||||
HttpEntity responseEntity = response.getEntity();
|
||||
String resp = EntityUtils.toString(responseEntity);
|
||||
jsonObject = JSONObject.parseObject(resp);
|
||||
code = jsonObject.getString(("code"));
|
||||
}catch (Exception e1){
|
||||
System.out.println("===============本地订单解析号码出错:================"+e1.getMessage());
|
||||
}
|
||||
}
|
||||
if ("0".equals(code)) {
|
||||
JSONArray array = jsonObject.getJSONArray("wmOrderList");
|
||||
|
||||
JSONObject oj = array.getJSONObject(0);
|
||||
|
||||
String privacyPhone = oj.getString("privacy_phone");
|
||||
String recipientPhone = oj.getString("recipient_phone");
|
||||
String recipientBindedPhone = oj.getString("recipient_bindedPhone");
|
||||
orderInfo.setPrivcyPhone(privacyPhone);
|
||||
orderInfo.setRecipientPhone(recipientPhone);
|
||||
orderInfo.setRecipientBindedPhone(recipientBindedPhone);
|
||||
lsList.add(orderInfo);
|
||||
|
||||
BusReturnVisitInfo returnVisitInfo = new BusReturnVisitInfo();
|
||||
returnVisitInfo.setStoreCode(orderInfo.getStoreCode());
|
||||
returnVisitInfo.setStoreName(orderInfo.getStoreName());
|
||||
returnVisitInfo.setPhoneEndNumber(orderInfo.getRecipientPhone());
|
||||
returnVisitInfo.setPhoneNumber(orderInfo.getPrivcyPhone());
|
||||
|
||||
try {
|
||||
returnVisitInfo.setOrderCompleteTime(sdf.parse(orderInfo.getCompleteTime()));
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
continue;
|
||||
}
|
||||
lss.add(returnVisitInfo);
|
||||
}
|
||||
}
|
||||
System.out.println("********************************"+JSON.toJSONString(lsList));
|
||||
// if (lsList.size() > 0) {
|
||||
// busOrderInfoMapper.batchInsertOrder(lsList);
|
||||
// }
|
||||
// if (lss.size() > 0) {
|
||||
// busReturnVisitInfoMapper.batchInsertVisit(lss);
|
||||
// }
|
||||
}
|
||||
|
||||
private String getOrderCountByType(String getUrl, String wmOrderViewId,String cookie){
|
||||
CloseableHttpClient httpClient = proxyHttpClient();
|
||||
String url = "https://e.waimai.meituan.com/gw/phf/v2/order/receive/processed/r/orderAsyncInfos/v3";
|
||||
|
@ -594,15 +698,15 @@ public class MeituanServiceImpl implements IMeituanService {
|
|||
jsonObject = JSONObject.parseObject(resp);
|
||||
} catch (Exception e) {
|
||||
System.out.println(e.getMessage());
|
||||
orderInfo(valueFromCookie("wmPoiId", cookie), date, cookie);
|
||||
// jsonObject.put("code","403");
|
||||
}
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String receiveTime(String getUrl,String storeCode,String cookie,String orderNo){
|
||||
CloseableHttpClient client = proxyHttpClient(getUrl);
|
||||
public String receiveTime(String storeCode,String cookie,String orderNo,String getUrl){
|
||||
CloseableHttpClient client = proxyHttpClient1(getUrl);
|
||||
String url = "https://e.waimai.meituan.com/api/logistics/logs";
|
||||
Map<String, Object> params = new LinkedHashMap<>();
|
||||
params.put("region_id", valueFromCookie("region_id",cookie));
|
||||
|
@ -697,102 +801,7 @@ public class MeituanServiceImpl implements IMeituanService {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
/**
|
||||
* 获取号码
|
||||
*
|
||||
* @param cookie
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void priPhoneInfo(List<BusOrderInfo> ls, String cookie,String getUrl) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
||||
|
||||
List<BusOrderInfo> lsList = ls.stream().filter(x -> x.getPrivcyPhone() != null && x.getRecipientPhone() != null && x.getRecipientBindedPhone() != null).collect(Collectors.toList());
|
||||
List<BusOrderInfo> lsList1 = ls.stream().filter(x -> x.getPrivcyPhone() == null && x.getRecipientPhone() == null && x.getRecipientBindedPhone() == null).collect(Collectors.toList());
|
||||
|
||||
List<BusReturnVisitInfo> lss = new ArrayList<>();
|
||||
for (BusOrderInfo info : lsList) {
|
||||
BusReturnVisitInfo returnVisitInfo1 = new BusReturnVisitInfo();
|
||||
returnVisitInfo1.setStoreCode(info.getStoreCode());
|
||||
returnVisitInfo1.setStoreName(info.getStoreName());
|
||||
returnVisitInfo1.setPhoneEndNumber(info.getRecipientPhone());
|
||||
returnVisitInfo1.setPhoneNumber(info.getPrivcyPhone());
|
||||
lss.add(returnVisitInfo1);
|
||||
}
|
||||
for (BusOrderInfo orderInfo : lsList1) {
|
||||
String url = "https://e.waimai.meituan.com/v2/order/history/r/search/ajax";
|
||||
String regionId = valueFromCookie("region_id", cookie);
|
||||
String regionVersion = valueFromCookie("region_version", cookie);
|
||||
Map<String, Object> params = new LinkedHashMap<>();
|
||||
params.put("searchItem", orderInfo.getOrderNo());
|
||||
params.put("region_id", regionId);
|
||||
params.put("region_version", regionVersion);
|
||||
params.put("yodaReady", "h5");
|
||||
params.put("csecplatform", 4);
|
||||
params.put("csecversion", "2.4.0");
|
||||
String mtgsig = mtgsigInfo(getUrl,orderInfo.getOrderNo(), regionId, regionVersion,valueFromCookie("WEBDFPID",cookie));
|
||||
System.out.println(mtgsig);
|
||||
System.out.println(orderInfo.toString());
|
||||
params.put("mtgsig", mtgsig);
|
||||
url = appendParams(url, params);
|
||||
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
|
||||
builder.addTextBody("wmPoiId",orderInfo.getStoreCode());
|
||||
HttpPost httpPost = new HttpPost(url);
|
||||
HttpEntity entity = builder.build();
|
||||
httpPost.setEntity(entity);
|
||||
httpPost.setHeader("Cookie", cookie);
|
||||
|
||||
CloseableHttpClient client = proxyHttpClient(getUrl);
|
||||
|
||||
String code = null;
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
try {
|
||||
HttpResponse response = client.execute(httpPost);
|
||||
HttpEntity responseEntity = response.getEntity();
|
||||
String resp = EntityUtils.toString(responseEntity);
|
||||
jsonObject = JSONObject.parseObject(resp);
|
||||
code = jsonObject.getString(("code"));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
continue;
|
||||
}
|
||||
|
||||
if ("0".equals(code)) {
|
||||
JSONArray array = jsonObject.getJSONArray("wmOrderList");
|
||||
|
||||
JSONObject oj = array.getJSONObject(0);
|
||||
|
||||
String privacyPhone = oj.getString("privacy_phone");
|
||||
String recipientPhone = oj.getString("recipient_phone");
|
||||
String recipientBindedPhone = oj.getString("recipient_bindedPhone");
|
||||
orderInfo.setPrivcyPhone(privacyPhone);
|
||||
orderInfo.setRecipientPhone(recipientPhone);
|
||||
orderInfo.setRecipientBindedPhone(recipientBindedPhone);
|
||||
lsList.add(orderInfo);
|
||||
|
||||
BusReturnVisitInfo returnVisitInfo = new BusReturnVisitInfo();
|
||||
returnVisitInfo.setStoreCode(orderInfo.getStoreCode());
|
||||
returnVisitInfo.setStoreName(orderInfo.getStoreName());
|
||||
returnVisitInfo.setPhoneEndNumber(orderInfo.getRecipientPhone());
|
||||
returnVisitInfo.setPhoneNumber(orderInfo.getPrivcyPhone());
|
||||
|
||||
try {
|
||||
returnVisitInfo.setOrderCompleteTime(sdf.parse(orderInfo.getCompleteTime()));
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
continue;
|
||||
}
|
||||
lss.add(returnVisitInfo);
|
||||
}
|
||||
}
|
||||
if (lsList.size() > 0) {
|
||||
busOrderInfoMapper.batchInsertOrder(lsList);
|
||||
}
|
||||
if (lss.size() > 0) {
|
||||
busReturnVisitInfoMapper.batchInsertVisit(lss);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取mtgsig
|
||||
|
@ -1053,8 +1062,6 @@ public class MeituanServiceImpl implements IMeituanService {
|
|||
|
||||
// private CloseableHttpClient proxyHttpClient() {
|
||||
private CloseableHttpClient proxyHttpClient(String ipPort) {
|
||||
// JDK 8u111版本后,目标页面为HTTPS协议,启用proxy用户密码鉴权
|
||||
System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
|
||||
String proxyHost = ipPort.split(":")[0];
|
||||
int proxyPort = Integer.valueOf(ipPort.split(":")[1]);
|
||||
String username = proxyProperties.getAccount();
|
||||
|
@ -1107,8 +1114,6 @@ public class MeituanServiceImpl implements IMeituanService {
|
|||
// }
|
||||
}
|
||||
private CloseableHttpClient proxyHttpClient() {
|
||||
// JDK 8u111版本后,目标页面为HTTPS协议,启用proxy用户密码鉴权
|
||||
System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
|
||||
String proxyHost = proxyProperties.getProxyAddr();
|
||||
int proxyPort = proxyProperties.getProxyPort();
|
||||
String username = proxyProperties.getAccount();
|
||||
|
@ -1147,4 +1152,24 @@ public class MeituanServiceImpl implements IMeituanService {
|
|||
// CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(config).build();
|
||||
return httpClient;
|
||||
}
|
||||
|
||||
private CloseableHttpClient proxyHttpClient1(String ipPort) {
|
||||
System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
|
||||
String proxyHost = ipPort.split(":")[0];
|
||||
int proxyPort = Integer.valueOf(ipPort.split(":")[1]);
|
||||
String username = proxyProperties.getAccount();
|
||||
String password = proxyProperties.getPwd();
|
||||
HttpHost proxy = new HttpHost(proxyHost, proxyPort);
|
||||
CredentialsProvider credsProvider = new BasicCredentialsProvider();
|
||||
credsProvider.setCredentials(new AuthScope(proxyHost, proxyPort),
|
||||
new UsernamePasswordCredentials(username, password));
|
||||
RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
|
||||
CloseableHttpClient httpClient = HttpClients
|
||||
.custom()
|
||||
.setDefaultRequestConfig(config)
|
||||
.setDefaultCredentialsProvider(credsProvider)
|
||||
.build();
|
||||
return httpClient;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue