From 2bc74afaa65159a2332859a1d08a253e3df8678b Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 1 Jul 2017 00:28:18 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=8D=95=E4=B8=80=E8=81=8C=E8=B4=A3?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- students/282692248/ood/ood-assignment/pom.xml | 32 +++ .../java/com/coderising/ood/ocp/DateUtil.java | 10 + .../java/com/coderising/ood/ocp/Logger.java | 38 ++++ .../java/com/coderising/ood/ocp/MailUtil.java | 10 + .../java/com/coderising/ood/ocp/SMSUtil.java | 10 + .../coderising/ood/ocp/good/Formatter.java | 7 + .../ood/ocp/good/FormatterFactory.java | 13 ++ .../ood/ocp/good/HtmlFormatter.java | 11 + .../com/coderising/ood/ocp/good/Logger.java | 18 ++ .../coderising/ood/ocp/good/RawFormatter.java | 11 + .../com/coderising/ood/ocp/good/Sender.java | 7 + .../com/coderising/ood/srp/Configuration.java | 23 ++ .../coderising/ood/srp/ConfigurationKeys.java | 9 + .../java/com/coderising/ood/srp/DBUtil.java | 25 +++ .../java/com/coderising/ood/srp/MailUtil.java | 18 ++ .../com/coderising/ood/srp/PromotionMail.java | 199 ++++++++++++++++++ .../ood/srp/chasing/Configuration.java | 23 ++ .../ood/srp/chasing/ConfigurationKeys.java | 9 + .../ood/srp/chasing/PromotionMail.java | 45 ++++ .../ood/srp/chasing/model/Product.java | 27 +++ .../ood/srp/chasing/model/User.java | 25 +++ .../ood/srp/chasing/product_promotion.txt | 4 + .../ood/srp/chasing/service/MailService.java | 62 ++++++ .../srp/chasing/service/ProductService.java | 32 +++ .../srp/chasing/service/PromotionService.java | 18 ++ .../ood/srp/chasing/service/UserService.java | 18 ++ .../ood/srp/chasing/util/DBUtil.java | 21 ++ .../ood/srp/chasing/util/MailUtil.java | 14 ++ .../coderising/ood/srp/product_promotion.txt | 4 + 29 files changed, 743 insertions(+) create mode 100644 students/282692248/ood/ood-assignment/pom.xml create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/DateUtil.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/MailUtil.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/SMSUtil.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Formatter.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/FormatterFactory.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/HtmlFormatter.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Logger.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/RawFormatter.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Sender.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/Configuration.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/ConfigurationKeys.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/PromotionMail.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/model/Product.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/model/User.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/product_promotion.txt create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/MailService.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/ProductService.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/PromotionService.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/UserService.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/util/DBUtil.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/util/MailUtil.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt diff --git a/students/282692248/ood/ood-assignment/pom.xml b/students/282692248/ood/ood-assignment/pom.xml new file mode 100644 index 0000000000..cac49a5328 --- /dev/null +++ b/students/282692248/ood/ood-assignment/pom.xml @@ -0,0 +1,32 @@ + + 4.0.0 + + com.coderising + ood-assignment + 0.0.1-SNAPSHOT + jar + + ood-assignment + http://maven.apache.org + + + UTF-8 + + + + + + junit + junit + 4.12 + + + + + + aliyunmaven + http://maven.aliyun.com/nexus/content/groups/public/ + + + diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/DateUtil.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/DateUtil.java new file mode 100644 index 0000000000..b6cf28c096 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/DateUtil.java @@ -0,0 +1,10 @@ +package com.coderising.ood.ocp; + +public class DateUtil { + + public static String getCurrentDateAsString() { + + return null; + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java new file mode 100644 index 0000000000..0357c4d912 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java @@ -0,0 +1,38 @@ +package com.coderising.ood.ocp; + +public class Logger { + + public final int RAW_LOG = 1; + public final int RAW_LOG_WITH_DATE = 2; + public final int EMAIL_LOG = 1; + public final int SMS_LOG = 2; + public final int PRINT_LOG = 3; + + int type = 0; + int method = 0; + + public Logger(int logType, int logMethod){ + this.type = logType; + this.method = logMethod; + } + public void log(String msg){ + + String logMsg = msg; + + if(this.type == RAW_LOG){ + logMsg = msg; + } else if(this.type == RAW_LOG_WITH_DATE){ + String txtDate = DateUtil.getCurrentDateAsString(); + logMsg = txtDate + ": " + msg; + } + + if(this.method == EMAIL_LOG){ + MailUtil.send(logMsg); + } else if(this.method == SMS_LOG){ + SMSUtil.send(logMsg); + } else if(this.method == PRINT_LOG){ + System.out.println(logMsg); + } + } +} + diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/MailUtil.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/MailUtil.java new file mode 100644 index 0000000000..ec54b839c5 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/MailUtil.java @@ -0,0 +1,10 @@ +package com.coderising.ood.ocp; + +public class MailUtil { + + public static void send(String logMsg) { + // TODO Auto-generated method stub + + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/SMSUtil.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/SMSUtil.java new file mode 100644 index 0000000000..13cf802418 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/SMSUtil.java @@ -0,0 +1,10 @@ +package com.coderising.ood.ocp; + +public class SMSUtil { + + public static void send(String logMsg) { + // TODO Auto-generated method stub + + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Formatter.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Formatter.java new file mode 100644 index 0000000000..b6e2ccbc16 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Formatter.java @@ -0,0 +1,7 @@ +package com.coderising.ood.ocp.good; + +public interface Formatter { + + String format(String msg); + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/FormatterFactory.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/FormatterFactory.java new file mode 100644 index 0000000000..3c2009a674 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/FormatterFactory.java @@ -0,0 +1,13 @@ +package com.coderising.ood.ocp.good; + +public class FormatterFactory { + public static Formatter createFormatter(int type){ + if(type == 1){ + return new RawFormatter(); + } + if (type == 2){ + return new HtmlFormatter(); + } + return null; + } +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/HtmlFormatter.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/HtmlFormatter.java new file mode 100644 index 0000000000..3d375f5acc --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/HtmlFormatter.java @@ -0,0 +1,11 @@ +package com.coderising.ood.ocp.good; + +public class HtmlFormatter implements Formatter { + + @Override + public String format(String msg) { + + return null; + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Logger.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Logger.java new file mode 100644 index 0000000000..f206472d0d --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Logger.java @@ -0,0 +1,18 @@ +package com.coderising.ood.ocp.good; + +public class Logger { + + private Formatter formatter; + private Sender sender; + + public Logger(Formatter formatter,Sender sender){ + this.formatter = formatter; + this.sender = sender; + } + public void log(String msg){ + sender.send(formatter.format(msg)) ; + } + + +} + diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/RawFormatter.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/RawFormatter.java new file mode 100644 index 0000000000..7f1cb4ae30 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/RawFormatter.java @@ -0,0 +1,11 @@ +package com.coderising.ood.ocp.good; + +public class RawFormatter implements Formatter { + + @Override + public String format(String msg) { + + return null; + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Sender.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Sender.java new file mode 100644 index 0000000000..aaa46c1fb7 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Sender.java @@ -0,0 +1,7 @@ +package com.coderising.ood.ocp.good; + +public interface Sender { + + void send(String msg); + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java new file mode 100644 index 0000000000..f328c1816a --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java @@ -0,0 +1,23 @@ +package com.coderising.ood.srp; +import java.util.HashMap; +import java.util.Map; + +public class Configuration { + + static Map configurations = new HashMap<>(); + static{ + configurations.put(ConfigurationKeys.SMTP_SERVER, "smtp.163.com"); + configurations.put(ConfigurationKeys.ALT_SMTP_SERVER, "smtp1.163.com"); + configurations.put(ConfigurationKeys.EMAIL_ADMIN, "admin@company.com"); + } + /** + * 应该从配置文件读, 但是这里简化为直接从一个map 中去读 + * @param key + * @return + */ + public String getProperty(String key) { + + return configurations.get(key); + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java new file mode 100644 index 0000000000..8695aed644 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java @@ -0,0 +1,9 @@ +package com.coderising.ood.srp; + +public class ConfigurationKeys { + + public static final String SMTP_SERVER = "smtp.server"; + public static final String ALT_SMTP_SERVER = "alt.smtp.server"; + public static final String EMAIL_ADMIN = "email.admin"; + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java new file mode 100644 index 0000000000..82e9261d18 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java @@ -0,0 +1,25 @@ +package com.coderising.ood.srp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class DBUtil { + + /** + * 应该从数据库读, 但是简化为直接生成。 + * @param sql + * @return + */ + public static List query(String sql){ + + List userList = new ArrayList(); + for (int i = 1; i <= 3; i++) { + HashMap userInfo = new HashMap(); + userInfo.put("NAME", "User" + i); + userInfo.put("EMAIL", "aa@bb.com"); + userList.add(userInfo); + } + + return userList; + } +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java new file mode 100644 index 0000000000..9f9e749af7 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java @@ -0,0 +1,18 @@ +package com.coderising.ood.srp; + +public class MailUtil { + + public static void sendEmail(String toAddress, String fromAddress, String subject, String message, String smtpHost, + boolean debug) { + //假装发了一封邮件 + StringBuilder buffer = new StringBuilder(); + buffer.append("From:").append(fromAddress).append("\n"); + buffer.append("To:").append(toAddress).append("\n"); + buffer.append("Subject:").append(subject).append("\n"); + buffer.append("Content:").append(message).append("\n"); + System.out.println(buffer.toString()); + + } + + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java new file mode 100644 index 0000000000..402c4f6f97 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java @@ -0,0 +1,199 @@ +package com.coderising.ood.srp; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +public class PromotionMail { + + + protected String sendMailQuery = null; + + + protected String smtpHost = null; + protected String altSmtpHost = null; + protected String fromAddress = null; + protected String toAddress = null; + protected String subject = null; + protected String message = null; + + protected String productID = null; + protected String productDesc = null; + + private static Configuration config; + + + + private static final String NAME_KEY = "NAME"; + private static final String EMAIL_KEY = "EMAIL"; + + + public static void main(String[] args) throws Exception { + + File f = new File("D:\\jp\\study\\coding2017-master\\students\\282692248\\ood\\ood-assignment\\src\\main\\java\\com\\coderising\\ood\\srp\\product_promotion.txt"); + boolean emailDebug = false; + + PromotionMail pe = new PromotionMail(f, emailDebug); + + } + + + public PromotionMail(File file, boolean mailDebug) throws Exception { + + //读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8 + readFile(file); + + + config = new Configuration(); + + setSMTPHost(); + setAltSMTPHost(); + + + setFromAddress(); + + + setLoadQuery(); + + sendEMails(mailDebug, loadMailingList()); + + + } + + + + + protected void setProductID(String productID) + { + this.productID = productID; + + } + + protected String getproductID() + { + return productID; + } + + protected void setLoadQuery() throws Exception { + + sendMailQuery = "Select name from subscriptions " + + "where product_id= '" + productID +"' " + + "and send_mail=1 "; + + + System.out.println("loadQuery set"); + } + + + protected void setSMTPHost() + { + smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER); + } + + + protected void setAltSMTPHost() + { + altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER); + + } + + + protected void setFromAddress() + { + fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN); + } + + protected void setMessage(HashMap userInfo) throws IOException + { + + String name = (String) userInfo.get(NAME_KEY); + + subject = "您关注的产品降价了"; + message = "尊敬的 "+name+", 您关注的产品 " + productDesc + " 降价了,欢迎购买!" ; + + + + } + + + protected void readFile(File file) throws IOException // @02C + { + BufferedReader br = null; + try { + br = new BufferedReader(new FileReader(file)); + String temp = br.readLine(); + String[] data = temp.split(" "); + + setProductID(data[0]); + setProductDesc(data[1]); + + System.out.println("产品ID = " + productID + "\n"); + System.out.println("产品描述 = " + productDesc + "\n"); + + } catch (IOException e) { + throw new IOException(e.getMessage()); + } finally { + br.close(); + } + } + + private void setProductDesc(String desc) { + this.productDesc = desc; + } + + + protected void configureEMail(HashMap userInfo) throws IOException + { + toAddress = (String) userInfo.get(EMAIL_KEY); + if (toAddress.length() > 0) + setMessage(userInfo); + } + + protected List loadMailingList() throws Exception { + return DBUtil.query(this.sendMailQuery); + } + + + protected void sendEMails(boolean debug, List mailingList) throws IOException + { + + System.out.println("开始发送邮件"); + + + if (mailingList != null) { + Iterator iter = mailingList.iterator(); + while (iter.hasNext()) { + configureEMail((HashMap) iter.next()); + try + { + if (toAddress.length() > 0) + MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug); + } + catch (Exception e) + { + + try { + MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug); + + } catch (Exception e2) + { + System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage()); + } + } + } + + + } + + else { + System.out.println("没有邮件发送"); + + } + + } +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/Configuration.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/Configuration.java new file mode 100644 index 0000000000..a34fd144aa --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/Configuration.java @@ -0,0 +1,23 @@ +package com.coderising.ood.srp.chasing; +import java.util.HashMap; +import java.util.Map; + +public class Configuration { + + static Map configurations = new HashMap<>(); + static{ + configurations.put(ConfigurationKeys.SMTP_SERVER, "smtp.163.com"); + configurations.put(ConfigurationKeys.ALT_SMTP_SERVER, "smtp1.163.com"); + configurations.put(ConfigurationKeys.EMAIL_ADMIN, "admin@company.com"); + } + /** + * 应该从配置文件读, 但是这里简化为直接从一个map 中去读 + * @param key + * @return + */ + public String getProperty(String key) { + + return configurations.get(key); + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/ConfigurationKeys.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/ConfigurationKeys.java new file mode 100644 index 0000000000..9d0f0caa1b --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/ConfigurationKeys.java @@ -0,0 +1,9 @@ +package com.coderising.ood.srp.chasing; + +public class ConfigurationKeys { + + public static final String SMTP_SERVER = "smtp.server"; + public static final String ALT_SMTP_SERVER = "alt.smtp.server"; + public static final String EMAIL_ADMIN = "email.admin"; + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/PromotionMail.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/PromotionMail.java new file mode 100644 index 0000000000..8008f6b11b --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/PromotionMail.java @@ -0,0 +1,45 @@ +package com.coderising.ood.srp.chasing; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +import com.coderising.ood.srp.chasing.model.Product; +import com.coderising.ood.srp.chasing.model.User; +import com.coderising.ood.srp.chasing.service.MailService; +import com.coderising.ood.srp.chasing.service.ProductService; +import com.coderising.ood.srp.chasing.service.PromotionService; +import com.coderising.ood.srp.chasing.service.UserService; + +public class PromotionMail { + private MailService mailServer = new MailService(new Configuration());; + private ProductService productService = null; + private UserService userService = new UserService(); + private PromotionService promptService = new PromotionService(); + + public static void main(String[] args) throws Exception { + File f = new File("D:\\coding2017\\students\\282692248\\ood\\ood-assignment\\src\\main\\java\\com\\coderising\\ood\\srp\\chasing\\product_promotion.txt"); + PromotionMail pe = new PromotionMail(f); + pe.sendPromptMails(); + } + + public PromotionMail(File file){ + productService = new ProductService(file); + } + + /** 主要业务逻辑:发送促销信息 */ + protected void sendPromptMails() throws IOException { + System.out.println("开始发送邮件"); + Product product = productService.loadProduct(); + List users = userService.loadUserByProduct(product); + if (users != null) { + for(User user:users){ + mailServer.sendMail(user.getEmail(), promptService.getPromptProfile(), + promptService.buildPromptMessageForUser(product, user)); + } + } + else { + System.out.println("没有邮件发送"); + } + } +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/model/Product.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/model/Product.java new file mode 100644 index 0000000000..a4843a26c6 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/model/Product.java @@ -0,0 +1,27 @@ +package com.coderising.ood.srp.chasing.model; + +public class Product { + protected String productID = null; + protected String productDesc = null; + + public Product() {} + + public Product(String productID, String productDesc) { + super(); + this.productID = productID; + this.productDesc = productDesc; + } + + public String getProductID() { + return productID; + } + public void setProductID(String productID) { + this.productID = productID; + } + public String getProductDesc() { + return productDesc; + } + public void setProductDesc(String productDesc) { + this.productDesc = productDesc; + } +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/model/User.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/model/User.java new file mode 100644 index 0000000000..aed750d6ce --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/model/User.java @@ -0,0 +1,25 @@ +package com.coderising.ood.srp.chasing.model; + +public class User { + private String name; + private String email; + + public User(String name, String email) { + super(); + this.name = name; + this.email = email; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getEmail() { + return email; + } + public void setEmail(String email) { + this.email = email; + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/product_promotion.txt b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/product_promotion.txt new file mode 100644 index 0000000000..b7a974adb3 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/product_promotion.txt @@ -0,0 +1,4 @@ +P8756 iPhone8 +P3946 XiaoMi10 +P8904 Oppo_R15 +P4955 Vivo_X20 \ No newline at end of file diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/MailService.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/MailService.java new file mode 100644 index 0000000000..957eac2928 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/MailService.java @@ -0,0 +1,62 @@ +package com.coderising.ood.srp.chasing.service; + +import com.coderising.ood.srp.chasing.Configuration; +import com.coderising.ood.srp.chasing.ConfigurationKeys; +import com.coderising.ood.srp.chasing.util.MailUtil; + +public class MailService { + protected String smtpHost = null; + protected String altSmtpHost = null; + protected String systemAddress = null; + + public MailService(Configuration config){ + smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER); + altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER); + systemAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN); + } + + /** + * 发送邮件 + * @param toAddress 收信人 + * @param subject 主题 + * @param message 正文 + */ + public void sendMail(String toAddress, String subject, String message){ + if(toAddress == null || toAddress.length() <= 0){ + return; + } + try{ + MailUtil.sendEmail(toAddress, systemAddress, subject, message, smtpHost); + }catch(Exception e){ + try{ + MailUtil.sendEmail(toAddress, systemAddress, subject, message, altSmtpHost); + }catch(Exception e2){ + System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage()); + } + } + } + + public String getSmtpHost() { + return smtpHost; + } + + public void setSmtpHost(String smtpHost) { + this.smtpHost = smtpHost; + } + + public String getAltSmtpHost() { + return altSmtpHost; + } + + public void setAltSmtpHost(String altSmtpHost) { + this.altSmtpHost = altSmtpHost; + } + + public String getFromAddress() { + return systemAddress; + } + + public void setFromAddress(String fromAddress) { + this.systemAddress = fromAddress; + } +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/ProductService.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/ProductService.java new file mode 100644 index 0000000000..00e55a806b --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/ProductService.java @@ -0,0 +1,32 @@ +package com.coderising.ood.srp.chasing.service; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; + +import com.coderising.ood.srp.chasing.model.Product; + +public class ProductService { + File f; + public ProductService(File f){ + this.f = f; + } + /** 获取促销商品 */ + public Product loadProduct() throws IOException // @02C + { + BufferedReader br = null; + try { + br = new BufferedReader(new FileReader(f)); + String temp = br.readLine(); + String[] data = temp.split(" "); + System.out.println("产品ID = " + data[0] + "\n"); + System.out.println("产品描述 = " + data[1] + "\n"); + return new Product(data[0], data[1]); + } catch (IOException e) { + throw new IOException(e.getMessage()); + } finally { + br.close(); + } + } +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/PromotionService.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/PromotionService.java new file mode 100644 index 0000000000..a4f3aa0a12 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/PromotionService.java @@ -0,0 +1,18 @@ +package com.coderising.ood.srp.chasing.service; + +import java.io.IOException; + +import com.coderising.ood.srp.chasing.model.Product; +import com.coderising.ood.srp.chasing.model.User; + +public class PromotionService { + /** 促销信息概要 */ + public String getPromptProfile(){ + return "您关注的产品降价了"; + } + + /** 为指定用户生成促销信息 */ + public String buildPromptMessageForUser(Product product, User userInfo) throws IOException { + return "尊敬的 "+userInfo.getName()+", 您关注的产品 " + product.getProductDesc() + " 降价了,欢迎购买!" ; + } +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/UserService.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/UserService.java new file mode 100644 index 0000000000..ccc8a44b31 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/service/UserService.java @@ -0,0 +1,18 @@ +package com.coderising.ood.srp.chasing.service; + +import java.util.List; + +import com.coderising.ood.srp.chasing.model.Product; +import com.coderising.ood.srp.chasing.model.User; +import com.coderising.ood.srp.chasing.util.DBUtil; + +public class UserService { + /** 获取关注指定商品的用户 */ + public List loadUserByProduct(Product product){ + String sql = "Select name from subscriptions " + + "where product_id= '" + product.getProductID() +"' " + + "and send_mail=1 "; + System.out.println("loadQuery set"); + return DBUtil.query(sql); + } +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/util/DBUtil.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/util/DBUtil.java new file mode 100644 index 0000000000..a1f5faf1f4 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/util/DBUtil.java @@ -0,0 +1,21 @@ +package com.coderising.ood.srp.chasing.util; +import java.util.ArrayList; +import java.util.List; + +import com.coderising.ood.srp.chasing.model.User; + +public class DBUtil { + + /** + * 应该从数据库读, 但是简化为直接生成。 + * @param sql + * @return + */ + public static List query(String sql){ + List userList = new ArrayList<>(); + for (int i = 1; i <= 3; i++) { + userList.add(new User("User" + i,"aa@bb.com")); + } + return userList; + } +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/util/MailUtil.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/util/MailUtil.java new file mode 100644 index 0000000000..6bc230b7bb --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/chasing/util/MailUtil.java @@ -0,0 +1,14 @@ +package com.coderising.ood.srp.chasing.util; + +public class MailUtil { + + public static void sendEmail(String toAddress, String fromAddress, String subject, String message, String smtpHost) { + //假装发了一封邮件 + StringBuilder buffer = new StringBuilder(); + buffer.append("From:").append(fromAddress).append("\n"); + buffer.append("To:").append(toAddress).append("\n"); + buffer.append("Subject:").append(subject).append("\n"); + buffer.append("Content:").append(message).append("\n"); + System.out.println(buffer.toString()); + } +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt new file mode 100644 index 0000000000..b7a974adb3 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt @@ -0,0 +1,4 @@ +P8756 iPhone8 +P3946 XiaoMi10 +P8904 Oppo_R15 +P4955 Vivo_X20 \ No newline at end of file From 52f16e2338e7d7d5787bb7eb51c32530d2491740 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 1 Jul 2017 09:39:08 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=BC=80=E9=97=AD=E5=8E=9F=E5=88=99?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coderising/ood/ocp/chasing/DateUtil.java | 10 ++++++++++ .../coderising/ood/ocp/chasing/Logger.java | 19 +++++++++++++++++++ .../coderising/ood/ocp/chasing/MailUtil.java | 10 ++++++++++ .../coderising/ood/ocp/chasing/SMSUtil.java | 10 ++++++++++ .../ocp/chasing/formatter/ILogFormatter.java | 5 +++++ .../formatter/LogWithDateFormatter.java | 12 ++++++++++++ .../ood/ocp/chasing/formatter/RawLog.java | 10 ++++++++++ .../ood/ocp/chasing/sender/ILogSender.java | 5 +++++ .../ood/ocp/chasing/sender/MailSender.java | 12 ++++++++++++ .../ood/ocp/chasing/sender/SMSSender.java | 10 ++++++++++ .../ood/ocp/chasing/sender/StdoutSender.java | 12 ++++++++++++ 11 files changed, 115 insertions(+) create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/DateUtil.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/Logger.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/MailUtil.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/SMSUtil.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/formatter/ILogFormatter.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/formatter/LogWithDateFormatter.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/formatter/RawLog.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/ILogSender.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/MailSender.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/SMSSender.java create mode 100644 students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/StdoutSender.java diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/DateUtil.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/DateUtil.java new file mode 100644 index 0000000000..7d0b475c45 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/DateUtil.java @@ -0,0 +1,10 @@ +package com.coderising.ood.ocp.chasing; + +public class DateUtil { + + public static String getCurrentDateAsString() { + + return null; + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/Logger.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/Logger.java new file mode 100644 index 0000000000..9ee56868e2 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/Logger.java @@ -0,0 +1,19 @@ +package com.coderising.ood.ocp.chasing; + +import com.coderising.ood.ocp.chasing.formatter.ILogFormatter; +import com.coderising.ood.ocp.chasing.sender.ILogSender; + +public class Logger { + + private ILogFormatter formatter; + private ILogSender sender; + + public Logger(ILogFormatter formatter, ILogSender sender){ + this.formatter = formatter; + this.sender = sender; + } + public void log(String msg){ + sender.send(formatter.format(msg)); + } +} + diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/MailUtil.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/MailUtil.java new file mode 100644 index 0000000000..3ebf73ec62 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/MailUtil.java @@ -0,0 +1,10 @@ +package com.coderising.ood.ocp.chasing; + +public class MailUtil { + + public static void send(String logMsg) { + // TODO Auto-generated method stub + + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/SMSUtil.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/SMSUtil.java new file mode 100644 index 0000000000..5f649d963b --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/SMSUtil.java @@ -0,0 +1,10 @@ +package com.coderising.ood.ocp.chasing; + +public class SMSUtil { + + public static void send(String logMsg) { + // TODO Auto-generated method stub + + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/formatter/ILogFormatter.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/formatter/ILogFormatter.java new file mode 100644 index 0000000000..0c713dde7d --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/formatter/ILogFormatter.java @@ -0,0 +1,5 @@ +package com.coderising.ood.ocp.chasing.formatter; + +public interface ILogFormatter { + String format(String txt); +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/formatter/LogWithDateFormatter.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/formatter/LogWithDateFormatter.java new file mode 100644 index 0000000000..fb9555db9a --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/formatter/LogWithDateFormatter.java @@ -0,0 +1,12 @@ +package com.coderising.ood.ocp.chasing.formatter; + +import com.coderising.ood.ocp.chasing.DateUtil; + +public class LogWithDateFormatter implements ILogFormatter { + + @Override + public String format(String txt) { + return DateUtil.getCurrentDateAsString() + ": " + txt; + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/formatter/RawLog.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/formatter/RawLog.java new file mode 100644 index 0000000000..fdf2008c54 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/formatter/RawLog.java @@ -0,0 +1,10 @@ +package com.coderising.ood.ocp.chasing.formatter; + +public class RawLog implements ILogFormatter { + + @Override + public String format(String txt) { + return txt; + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/ILogSender.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/ILogSender.java new file mode 100644 index 0000000000..339584d6e4 --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/ILogSender.java @@ -0,0 +1,5 @@ +package com.coderising.ood.ocp.chasing.sender; + +public interface ILogSender { + void send(String msg); +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/MailSender.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/MailSender.java new file mode 100644 index 0000000000..37652883ae --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/MailSender.java @@ -0,0 +1,12 @@ +package com.coderising.ood.ocp.chasing.sender; + +import com.coderising.ood.ocp.chasing.MailUtil; + +public class MailSender implements ILogSender { + + @Override + public void send(String msg) { + MailUtil.send(msg); + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/SMSSender.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/SMSSender.java new file mode 100644 index 0000000000..2c7f92bf3b --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/SMSSender.java @@ -0,0 +1,10 @@ +package com.coderising.ood.ocp.chasing.sender; + +public class SMSSender implements ILogSender { + + @Override + public void send(String msg) { + System.out.println(msg); + } + +} diff --git a/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/StdoutSender.java b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/StdoutSender.java new file mode 100644 index 0000000000..7e10d45b4f --- /dev/null +++ b/students/282692248/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/chasing/sender/StdoutSender.java @@ -0,0 +1,12 @@ +package com.coderising.ood.ocp.chasing.sender; + +import com.coderising.ood.ocp.chasing.SMSUtil; + +public class StdoutSender implements ILogSender { + + @Override + public void send(String msg) { + SMSUtil.send(msg); + } + +}