Explorar o código

Merge branch 'dev' of chenweida/wlyy2.0 into dev

chenweida %!s(int64=6) %!d(string=hai) anos
pai
achega
1fe3ed70b4

+ 8 - 0
server/svr-admin-server/pom.xml

@ -35,6 +35,14 @@
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-server-ui</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-server-ui-hystrix</artifactId>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-server-ui-turbine</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>

+ 7 - 0
server/svr-admin-server/src/main/java/com.yihu.admin/AdminServer.java

@ -1,9 +1,14 @@
package com.yihu.admin;
import de.codecentric.boot.admin.config.EnableAdminServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.MailSender;
/**
 * Created by chenweida on 2017/8/15.
@ -11,7 +16,9 @@ import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
@EnableAdminServer
@SpringBootApplication
public class AdminServer {
    public static void main(String[] args) {
        SpringApplication.run(AdminServer.class, args);
    }

+ 48 - 0
server/svr-admin-server/src/main/java/com.yihu.admin/config/NotifierConfig.java

@ -0,0 +1,48 @@
package com.yihu.admin.config;
import com.yihu.admin.email.JKZLMailNotifier;
import de.codecentric.boot.admin.config.NotifierConfiguration;
import de.codecentric.boot.admin.notify.RemindingNotifier;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.mail.MailSender;
import org.springframework.scheduling.annotation.Scheduled;
import java.util.concurrent.TimeUnit;
/**
 * Created by chenweida on 2018/5/10 0010.
 */
@Configuration
@AutoConfigureAfter({MailSenderAutoConfiguration.class})
@AutoConfigureBefore({NotifierConfiguration.MailNotifierConfiguration.class})
public class NotifierConfig {
    @Autowired
    private MailSender mailSender;
    @Bean
    @Primary
    public RemindingNotifier remindingNotifier() {
        RemindingNotifier remindingNotifier = new RemindingNotifier(mailNotifier());
        //默认情况下,每5分钟发送一次提醒
        remindingNotifier.setReminderPeriod(TimeUnit.MINUTES.toMillis(5));
        return remindingNotifier;
    }
    
    public NotifierConfig() {
        System.out.println("初始化数据");
    }
    @Bean("mailNotifier")
    @ConfigurationProperties("spring.boot.admin.notify.mail")
    public JKZLMailNotifier mailNotifier() {
        return new JKZLMailNotifier(mailSender);
    }
}

+ 133 - 0
server/svr-admin-server/src/main/java/com.yihu.admin/email/JKZLMailNotifier.java

@ -0,0 +1,133 @@
package com.yihu.admin.email;
import de.codecentric.boot.admin.event.ClientApplicationEvent;
import de.codecentric.boot.admin.notify.MailNotifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.ParserContext;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.stereotype.Component;
import java.util.Arrays;
/**
 * Created by chenweida on 2018/5/8 0008.
 * de.codecentric.boot.admin.config.NotifierConfiguration
 */
public class JKZLMailNotifier extends MailNotifier {
    private static final String DEFAULT_SUBJECT = "#{application.name} (#{application.id}) is #{to.status}";
    private static final String DEFAULT_TEXT = "#{application.name} (#{application.id})\nstatus changed from #{from.status} to #{to.status}\n\n#{application.healthUrl}";
    private final SpelExpressionParser parser = new SpelExpressionParser();
    private Logger logger = LoggerFactory.getLogger(JKZLMailNotifier.class);
    private final MailSender sender;
    /**
     * recipients of the mail
     */
    private String to[] = {"root@localhost"};
    /**
     * cc-recipients of the mail
     */
    private String cc[];
    /**
     * sender of the change
     */
    private String from = null;
    /**
     * Mail Text. SpEL template using event as root;
     */
    private Expression text;
    /**
     * Mail Subject. SpEL template using event as root;
     */
    private Expression subject;
    public JKZLMailNotifier(MailSender sender) {
        super(sender);
        logger.info("init email");
        this.sender = sender;
        this.subject = parser.parseExpression(DEFAULT_SUBJECT, ParserContext.TEMPLATE_EXPRESSION);
        this.text = parser.parseExpression(DEFAULT_TEXT, ParserContext.TEMPLATE_EXPRESSION);
    }
    @Override
    protected void doNotify(ClientApplicationEvent event) {
        logger.info("send email");
        EvaluationContext context = new StandardEvaluationContext(event);
        SimpleMailMessage message = new SimpleMailMessage();
        //发送给别人  支持多个接收人
        message.setTo(to);
        //发送人 可配置
        message.setFrom(from);
        //发送的邮件名称  默认是 微服务ID + 状态
        // 例如
        // SPRING-CLOUD-SVR-SIMPLE1 (9ac26abe) is OFFLINE
        message.setSubject(subject.getValue(context, String.class));
        //邮件内容  默认是微服务 +状态
        // 例如
        // SPRING-CLOUD-SVR-SIMPLE1 (9ac26abe) status changed from UNKNOWN to OFFLINE
        // http://MS-20180328WODJ:8080/health
        message.setText(text.getValue(context, String.class));
        // 抄送  为null  不需要填写
        message.setCc(cc);
        sender.send(message);
    }
    public void setTo(String[] to) {
        this.to = Arrays.copyOf(to, to.length);
    }
    public String[] getTo() {
        return Arrays.copyOf(to, to.length);
    }
    public void setCc(String[] cc) {
        this.cc = Arrays.copyOf(cc, cc.length);
    }
    public String[] getCc() {
        return Arrays.copyOf(cc, cc.length);
    }
    public void setFrom(String from) {
        this.from = from;
    }
    public String getFrom() {
        return from;
    }
    public void setSubject(String subject) {
        this.subject = parser.parseExpression(subject, ParserContext.TEMPLATE_EXPRESSION);
    }
    public String getSubject() {
        return subject.getExpressionString();
    }
    public void setText(String text) {
        this.text = parser.parseExpression(text, ParserContext.TEMPLATE_EXPRESSION);
    }
    public String getText() {
        return text.getExpressionString();
    }
}

+ 0 - 124
server/svr-admin-server/src/main/java/com.yihu.admin/email/MyMailNotifier.java

@ -1,124 +0,0 @@
//package com.yihu.admin.email;
//
//import de.codecentric.boot.admin.event.ClientApplicationEvent;
//import de.codecentric.boot.admin.notify.MailNotifier;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.boot.context.properties.ConfigurationProperties;
//import org.springframework.expression.EvaluationContext;
//import org.springframework.expression.Expression;
//import org.springframework.expression.ParserContext;
//import org.springframework.expression.spel.standard.SpelExpressionParser;
//import org.springframework.expression.spel.support.StandardEvaluationContext;
//import org.springframework.mail.MailSender;
//import org.springframework.mail.SimpleMailMessage;
//import org.springframework.stereotype.Component;
//
//import java.util.Arrays;
//
///**
// * Created by chenweida on 2018/5/8 0008.
// * de.codecentric.boot.admin.config.NotifierConfiguration */
//@Component
//@ConfigurationProperties("spring.boot.admin.notify.mail")
//public class MyMailNotifier extends MailNotifier {
//
//
//    private static final String DEFAULT_SUBJECT = "#{application.name} (#{application.id}) is #{to.status}";
//    private static final String DEFAULT_TEXT = "#{application.name} (#{application.id})\nstatus changed from #{from.status} to #{to.status}\n\n#{application.healthUrl}";
//
//    private final SpelExpressionParser parser = new SpelExpressionParser();
//
//    private Logger logger = LoggerFactory.getLogger(MyMailNotifier.class);
//
//    private final MailSender sender;
//
//    /**
//     * recipients of the mail
//     */
//    private String to[] = {"root@localhost"};
//
//    /**
//     * cc-recipients of the mail
//     */
//    private String cc[];
//
//    /**
//     * sender of the change
//     */
//    private String from = null;
//
//    /**
//     * Mail Text. SpEL template using event as root;
//     */
//    private Expression text;
//
//    /**
//     * Mail Subject. SpEL template using event as root;
//     */
//    private Expression subject;
//
//    public MyMailNotifier(MailSender sender) {
//        super(sender);
//        logger.info("init email");
//        this.sender = sender;
//        this.subject = parser.parseExpression(DEFAULT_SUBJECT, ParserContext.TEMPLATE_EXPRESSION);
//        this.text = parser.parseExpression(DEFAULT_TEXT, ParserContext.TEMPLATE_EXPRESSION);
//
//    }
//
//    @Override
//    protected void doNotify(ClientApplicationEvent event) {
//        logger.info("send email");
//        EvaluationContext context = new StandardEvaluationContext(event);
//
//        SimpleMailMessage message = new SimpleMailMessage();
//        message.setTo(to);
//        message.setFrom(from);
//        message.setSubject(subject.getValue(context, String.class));
//        message.setText(text.getValue(context, String.class));
//        message.setCc(cc);
//
//        sender.send(message);
//    }
//
//    public void setTo(String[] to) {
//        this.to = Arrays.copyOf(to, to.length);
//    }
//
//    public String[] getTo() {
//        return Arrays.copyOf(to, to.length);
//    }
//
//    public void setCc(String[] cc) {
//        this.cc = Arrays.copyOf(cc, cc.length);
//    }
//
//    public String[] getCc() {
//        return Arrays.copyOf(cc, cc.length);
//    }
//
//    public void setFrom(String from) {
//        this.from = from;
//    }
//
//    public String getFrom() {
//        return from;
//    }
//
//    public void setSubject(String subject) {
//        this.subject = parser.parseExpression(subject, ParserContext.TEMPLATE_EXPRESSION);
//    }
//
//    public String getSubject() {
//        return subject.getExpressionString();
//    }
//
//    public void setText(String text) {
//        this.text = parser.parseExpression(text, ParserContext.TEMPLATE_EXPRESSION);
//    }
//
//    public String getText() {
//        return text.getExpressionString();
//    }
//}

+ 3 - 0
server/svr-admin-server/src/main/resources/application.yml

@ -25,6 +25,9 @@ spring:
        mail:
          to: 494679975@qq.com
          from: 1501877145@qq.com
      routes:
        endpoints: env,metrics,dump,jolokia,info,configprops,trace,logfile,refresh,flyway,liquibase,heapdump,loggers,auditevents,hystrix.stream.
  jackson:
    serialization:
      indent_output: true

+ 10 - 0
svr-lib-parent-pom/pom.xml

@ -102,6 +102,16 @@
                <artifactId>spring-boot-admin-server-ui</artifactId>
                <version>${version.spring-boot-admin}</version>
            </dependency>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-server-ui-hystrix</artifactId>
                <version>${version.spring-boot-admin}</version>
            </dependency>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-server-ui-turbine</artifactId>
                <version>${version.spring-boot-admin}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>