From 1ecc49046358a94d351d89e6aafaf93341651371 Mon Sep 17 00:00:00 2001 From: admin <2780501319@qq.com> Date: 星期三, 23 十月 2019 23:49:00 +0800 Subject: [PATCH] 爬取饿了么邮件 --- fanli/src/main/java/com/yeshi/fanli/util/elme/ElmeOrderUtil.java | 192 ++++++++++++++++++++++++++++++------------------ 1 files changed, 120 insertions(+), 72 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/util/elme/ElmeOrderUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/elme/ElmeOrderUtil.java index f791b77..1f8dcc8 100644 --- a/fanli/src/main/java/com/yeshi/fanli/util/elme/ElmeOrderUtil.java +++ b/fanli/src/main/java/com/yeshi/fanli/util/elme/ElmeOrderUtil.java @@ -1,92 +1,103 @@ package com.yeshi.fanli.util.elme; +import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.Properties; + +import javax.mail.Folder; +import javax.mail.Message; +import javax.mail.Part; +import javax.mail.Session; +import javax.mail.Store; +import javax.mail.internet.MimeMessage; + +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.yeshi.utils.mail.ShowMail; import com.yeshi.fanli.entity.elme.ElmeOrder; import com.yeshi.fanli.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.TimeUtil; -import jxl.Sheet; -import jxl.Workbook; - public class ElmeOrderUtil { - /** - * 瑙f瀽璁㈠崟锛堜粠杈撳叆娴侊級 - * - * @param input - * @return - */ - public static List<ElmeOrder> parseOrder(InputStream input) { + public static List<ElmeOrder> parseOrder(InputStream is) { List<ElmeOrder> list = new ArrayList<>(); + + org.apache.poi.ss.usermodel.Workbook wb = null; try { - jxl.Workbook rwb = Workbook.getWorkbook(input); - Sheet sheet = rwb.getSheet(0); - for (int r = 1; r < sheet.getRows(); r++) { - ElmeOrder order = new ElmeOrder(); - for (int c = 0; c < sheet.getColumns(); c++) { - String content = sheet.getCell(c, r).getContents(); - String columnName = sheet.getCell(c, 0).getContents().trim(); - switch (columnName) { - case "娓犻亾鍙�": - order.setChannelId(content); - break; - case "娓犻亾鍚嶇О": - order.setChannelName(content); - break; - case "track_pid": - order.setTrackPid(content); - break; - case "rid": - order.setRid(content); - break; - case "璁㈠崟鏃ユ湡": - order.setOrderDate(new Date(TimeUtil.convertToTimeTemp(content, "yyyy-MM-dd"))); - break; - case "璁㈠崟鍙�": - order.setOrderId(content.replace("<", "").replace(">", "")); - break; - case "鏀粯閲戦": - order.setPayMoney(new BigDecimal(content)); - break; - case "涓嬪崟鍩庡競": - order.setCity(content); - break; - case "鐢ㄥ埜閲戦": - order.setCouponMoney(new BigDecimal(content)); - break; - case "鏄惁鏂板棣栧崟": - order.setNewerFirstOrder(Integer.parseInt(content)); - break; - case "鏄惁鏂板澶嶈喘鍗�": - order.setNewerRepayOrder(Integer.parseInt(content)); - break; - case "鏄惁浣跨敤娣樺绾㈠寘": - order.setTaokeHongBao(Integer.parseInt(content)); - break; - case "鏄惁鏈夊湪浼氬満鍐呰闂ㄥ簵鐨勭偣鍑昏褰�": - order.setShopClick(Integer.parseInt(content)); - break; - case "鏄惁棰嗗埜鍚�7澶╁唴棣栧崟": - order.setRecieveCoupon7DayFirstOrder(Integer.parseInt(content)); - break; - case "鏄惁6缁撲剑": - if ("鏄�".equalsIgnoreCase(content)) - order.setIsSettle(true); - else - order.setIsSettle(false); - break; - } - } - list.add(order); - } - rwb.close(); - } catch (Exception e) { + wb = new XSSFWorkbook(is); + } catch (IOException e) { e.printStackTrace(); + } + // 寮�濮嬭В鏋� + org.apache.poi.ss.usermodel.Sheet sheet = wb.getSheetAt(0); + + Row firstRow = sheet.getRow(0); + for (int r = 1; r <= sheet.getLastRowNum(); r++) { + ElmeOrder order = new ElmeOrder(); + Row row = sheet.getRow(r); + for (int c = row.getFirstCellNum(); c < row.getLastCellNum(); c++) { + String content = row.getCell(c).toString().trim(); + String columnName = firstRow.getCell(c).getStringCellValue().trim(); + switch (columnName) { + case "娓犻亾鍙�": + order.setChannelId(content); + break; + case "娓犻亾鍚嶇О": + order.setChannelName(content); + break; + case "track_pid": + order.setTrackPid(content); + break; + case "rid": + order.setRid(content); + break; + case "璁㈠崟鏃ユ湡": + order.setOrderDate(new Date(TimeUtil.convertToTimeTemp(content, "yyyy-MM-dd"))); + break; + case "璁㈠崟鍙�": + order.setOrderId(content.replace("<", "").replace(">", "")); + break; + case "鏀粯閲戦": + order.setPayMoney(new BigDecimal(content)); + break; + case "涓嬪崟鍩庡競": + order.setCity(content); + break; + case "鐢ㄥ埜閲戦": + order.setCouponMoney(new BigDecimal(content)); + break; + case "鏄惁鏂板棣栧崟": + order.setNewerFirstOrder(Integer.parseInt(content)); + break; + case "鏄惁鏂板澶嶈喘鍗�": + order.setNewerRepayOrder(Integer.parseInt(content)); + break; + case "鏄惁浣跨敤娣樺绾㈠寘": + order.setTaokeHongBao(Integer.parseInt(content)); + break; + case "鏄惁鏈夊湪浼氬満鍐呰闂ㄥ簵鐨勭偣鍑昏褰�": + order.setShopClick(Integer.parseInt(content)); + break; + case "鏄惁棰嗗埜鍚�7澶╁唴棣栧崟": + order.setRecieveCoupon7DayFirstOrder(Integer.parseInt(content)); + break; + case "鏄惁6缁撲剑": + if ("鏄�".equalsIgnoreCase(content)) + order.setIsSettle(true); + else + order.setIsSettle(false); + break; + } + } + list.add(order); } return list; } @@ -95,4 +106,41 @@ return MoneyBigDecimalUtil.mul(payMoney, new BigDecimal("0.06")); } + public static List<ElmeOrder> pullLatest5DayOrder() { + List<ElmeOrder> totalOrderList = new ArrayList<>(); + String host = "pop.qq.com"; + String username = "2780501319@qq.com"; + String password = "dbltidaeknumdgfd"; + Properties props = new Properties(); + Session session = Session.getDefaultInstance(props, null); + try { + Store store = session.getStore("pop3"); + store.connect(host, username, password); + Folder folder = store.getFolder("INBOX"); + folder.open(Folder.READ_ONLY); + Message message[] = folder.getMessages(); + List<Message> list = Arrays.asList(message); + int count = 0; + for (int i = list.size() - 1; i >= 0; i--) { + ShowMail showMail = new ShowMail((MimeMessage) list.get(i)); + if ("qiuming.wu<qiuming.wu@ele.me>".equalsIgnoreCase(showMail.getFrom())) { + if (count++ > 4) + break; + boolean attch = showMail.isContainAttach((Part) list.get(i)); + if (attch) { + List<InputStream> attchList = showMail.saveAttachMent((Part) list.get(i)); + if (attchList.size() > 0) { + List<ElmeOrder> orderList = ElmeOrderUtil.parseOrder(attchList.get(0)); + if (orderList != null && orderList.size() > 0) + totalOrderList.addAll(orderList); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return totalOrderList; + } + } -- Gitblit v1.8.0