From 0d1b7d93646755cafeae59aceca2c764010420ef Mon Sep 17 00:00:00 2001
From: dairuoqi <1598007601@qq.com>
Date: Tue, 10 Jul 2018 12:05:43 +0800
Subject: [PATCH] Init
---
.gitignore | 25 ++++
pom.xml | 113 ++++++++++++++++++
.../geological/GeologicalApplication.java | 13 ++
.../com/rock/geological/aop/WebLogAspect.java | 63 ++++++++++
.../geological/config/DruidConfiguration.java | 81 +++++++++++++
.../rock/geological/config/SwaggerConfig.java | 35 ++++++
.../com/rock/geological/utils/ExcelUtils.java | 91 ++++++++++++++
.../web/controller/ExportController.java | 38 ++++++
.../web/controller/UserController.java | 42 +++++++
.../com/rock/geological/web/dao/UserDao.java | 18 +++
.../com/rock/geological/web/pojo/User.java | 96 +++++++++++++++
.../geological/web/service/UserService.java | 18 +++
.../web/service/UserServiceImpl.java | 32 +++++
src/main/resources/application.yml | 30 +++++
.../GeologicalApplicationTests.java | 16 +++
15 files changed, 711 insertions(+)
create mode 100644 .gitignore
create mode 100644 pom.xml
create mode 100644 src/main/java/com/rock/geological/GeologicalApplication.java
create mode 100644 src/main/java/com/rock/geological/aop/WebLogAspect.java
create mode 100644 src/main/java/com/rock/geological/config/DruidConfiguration.java
create mode 100644 src/main/java/com/rock/geological/config/SwaggerConfig.java
create mode 100644 src/main/java/com/rock/geological/utils/ExcelUtils.java
create mode 100644 src/main/java/com/rock/geological/web/controller/ExportController.java
create mode 100644 src/main/java/com/rock/geological/web/controller/UserController.java
create mode 100644 src/main/java/com/rock/geological/web/dao/UserDao.java
create mode 100644 src/main/java/com/rock/geological/web/pojo/User.java
create mode 100644 src/main/java/com/rock/geological/web/service/UserService.java
create mode 100644 src/main/java/com/rock/geological/web/service/UserServiceImpl.java
create mode 100644 src/main/resources/application.yml
create mode 100644 src/test/java/com/rock/geological/GeologicalApplicationTests.java
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..82eca33
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,25 @@
+/target/
+!.mvn/wrapper/maven-wrapper.jar
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/build/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..80b5a89
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,113 @@
+
+
+ 4.0.0
+
+ com.rock
+ geological
+ 0.0.1-SNAPSHOT
+ jar
+
+ geological
+ Demo project for Spring Boot
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.0.3.RELEASE
+
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+ mysql
+ mysql-connector-java
+ 5.1.30
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+ org.springframework.data
+ spring-data-rest-core
+ 3.0.7.RELEASE
+
+
+
+
+ io.springfox
+ springfox-swagger2
+ 2.8.0
+
+
+ io.springfox
+ springfox-swagger-ui
+ 2.8.0
+
+
+
+
+ cn.afterturn
+ easypoi-base
+ 3.0.3
+
+
+ cn.afterturn
+ easypoi-web
+ 3.0.3
+
+
+ cn.afterturn
+ easypoi-annotation
+ 3.0.3
+
+
+
+
+ com.alibaba
+ druid
+ 1.0.29
+
+
+
+ log4j
+ log4j
+ 1.2.17
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+
diff --git a/src/main/java/com/rock/geological/GeologicalApplication.java b/src/main/java/com/rock/geological/GeologicalApplication.java
new file mode 100644
index 0000000..ff2a223
--- /dev/null
+++ b/src/main/java/com/rock/geological/GeologicalApplication.java
@@ -0,0 +1,13 @@
+package com.rock.geological;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+
+@SpringBootApplication
+public class GeologicalApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(GeologicalApplication.class, args);
+ }
+}
diff --git a/src/main/java/com/rock/geological/aop/WebLogAspect.java b/src/main/java/com/rock/geological/aop/WebLogAspect.java
new file mode 100644
index 0000000..04fc937
--- /dev/null
+++ b/src/main/java/com/rock/geological/aop/WebLogAspect.java
@@ -0,0 +1,63 @@
+package com.rock.geological.aop;
+
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+
+@Aspect
+@Component
+/**
+ * 请求日志拦截器
+ */
+public class WebLogAspect {
+
+ private Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ ThreadLocal startTime = new ThreadLocal<>();
+
+ /**
+ * 定义一个切入点.
+ * ~ 第一个 * 代表任意修饰符及任意返回值.
+ * ~ 第二个 * 任意包名
+ * ~ 第三个 * 代表任意方法.
+ * ~ 第四个 * 定义在web包或者子包
+ * ~ 第五个 * 任意方法
+ * ~ .. 匹配任意数量的参数.
+ */
+ @Pointcut("execution(public * com.rock.geological.web.controller.*.*(..))")
+ public void webLog() {}
+
+
+ @Before("webLog()")
+ public void doBefore(JoinPoint joinPoint) {
+ startTime.set(System.currentTimeMillis());
+ // 接收到请求,记录请求内容
+ logger.info("===== {{ WebLogAspect.doBefore() }} ===== ");
+ ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ HttpServletRequest request = attributes.getRequest();
+ // 记录下请求内容
+ logger.info("URL : " + request.getRequestURL().toString() + " , HTTP_METHOD : " + request.getMethod());
+ logger.info("IP : " + request.getRemoteAddr());
+ logger.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
+ logger.info("PARAMS : " + Arrays.toString(joinPoint.getArgs()));
+ }
+
+
+ @AfterReturning(returning = "ret", pointcut = "webLog()")
+ public void doAfterReturning(Object ret) {
+ // 处理完请求,返回内容
+ logger.info("===== {{ WebLogAspect.doAfterReturning() }} =====");
+ logger.info("RESPONSE : " + ret);
+ logger.info("SPEND TIME : " + (System.currentTimeMillis() - startTime.get()));
+ }
+}
diff --git a/src/main/java/com/rock/geological/config/DruidConfiguration.java b/src/main/java/com/rock/geological/config/DruidConfiguration.java
new file mode 100644
index 0000000..ab5a121
--- /dev/null
+++ b/src/main/java/com/rock/geological/config/DruidConfiguration.java
@@ -0,0 +1,81 @@
+package com.rock.geological.config;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.druid.support.http.StatViewServlet;
+import com.alibaba.druid.support.http.WebStatFilter;
+import com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator;
+import com.alibaba.druid.support.spring.stat.DruidStatInterceptor;
+import org.springframework.aop.Advisor;
+import org.springframework.aop.support.DefaultPointcutAdvisor;
+import org.springframework.aop.support.JdkRegexpMethodPointcut;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.sql.DataSource;
+
+
+@Configuration
+public class DruidConfiguration {
+
+ //使用连接池dataSource
+ @Bean
+ @ConfigurationProperties(prefix = "spring.datasource")
+ public DataSource dataSource() {
+ DruidDataSource druidDataSource = new DruidDataSource();
+ return druidDataSource;
+ }
+
+
+ @Bean
+ public ServletRegistrationBean statViewServlet() {
+ // 创建servlet注册实体
+ ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),
+ "/druid/*");
+ // 设置ip白名单
+ servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
+ // 设置ip黑名单,如果allow与deny共同存在时,deny优先于allow
+ servletRegistrationBean.addInitParameter("deny", "192.168.0.1");
+ // 设置控制台管理用户
+ servletRegistrationBean.addInitParameter("loginUsername", "admin");
+ servletRegistrationBean.addInitParameter("loginPassword", "123456");
+ // 是否可以重置数据
+ servletRegistrationBean.addInitParameter("resetEnable", "false");
+ return servletRegistrationBean;
+ }
+
+ @Bean
+ public FilterRegistrationBean statFilter() {
+ // 创建过滤器
+ FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
+ // 设置过滤器过滤路径
+ filterRegistrationBean.addUrlPatterns("/*");
+ // 忽略过滤的形式
+ filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
+ return filterRegistrationBean;
+ }
+
+ @Bean
+ public JdkRegexpMethodPointcut druidStatPointcut() {
+ JdkRegexpMethodPointcut druidStatPointcut = new JdkRegexpMethodPointcut();
+ String patterns = "com.rock.geological.web.*.service.*";
+ //可以set多个
+ druidStatPointcut.setPatterns(patterns);
+ return druidStatPointcut;
+ }
+
+ @Bean
+ public Advisor druidStatAdvisor() {
+ return new DefaultPointcutAdvisor(druidStatPointcut(), druidStatInterceptor());
+ }
+
+ @Bean
+ public DruidStatInterceptor druidStatInterceptor() {
+ return new DruidStatInterceptor();
+ }
+
+
+
+}
diff --git a/src/main/java/com/rock/geological/config/SwaggerConfig.java b/src/main/java/com/rock/geological/config/SwaggerConfig.java
new file mode 100644
index 0000000..7c26d6d
--- /dev/null
+++ b/src/main/java/com/rock/geological/config/SwaggerConfig.java
@@ -0,0 +1,35 @@
+package com.rock.geological.config;
+
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+ @Bean
+ public Docket api() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(apiInfo())
+ .select()
+ // 自行修改为自己的包路径
+ .apis(RequestHandlerSelectors.basePackage("com.rock.geological.web.controller"))
+ .paths(PathSelectors.any())
+ .build();
+ }
+
+ private ApiInfo apiInfo() {
+ return new ApiInfoBuilder()
+ .title("api文档")
+ .description("restful 风格接口")
+ .version("1.0")
+ .build();
+ }
+}
diff --git a/src/main/java/com/rock/geological/utils/ExcelUtils.java b/src/main/java/com/rock/geological/utils/ExcelUtils.java
new file mode 100644
index 0000000..af2a146
--- /dev/null
+++ b/src/main/java/com/rock/geological/utils/ExcelUtils.java
@@ -0,0 +1,91 @@
+package com.rock.geological.utils;
+
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.ExcelImportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
+import cn.afterturn.easypoi.excel.entity.ImportParams;
+import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
+import com.sun.deploy.net.URLEncoder;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+public class ExcelUtils {
+ public static void exportExcel(List> list, String title, String sheetName, Class> pojoClass, String fileName, boolean isCreateHeader, HttpServletResponse response) {
+ ExportParams exportParams = new ExportParams(title, sheetName);
+ exportParams.setCreateHeadRows(isCreateHeader);
+ defaultExport(list, pojoClass, fileName, response, exportParams);
+
+ }
+
+ public static void exportExcel(List> list, String title, String sheetName, Class> pojoClass, String fileName, HttpServletResponse response) {
+ defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName));
+ }
+
+ public static void exportExcel(List