diff --git a/api/.gitignore b/api/.gitignore index 40e5a26c3..6198f54fd 100644 --- a/api/.gitignore +++ b/api/.gitignore @@ -8,4 +8,5 @@ .project .settings .classpath -**/*.DS_Store \ No newline at end of file +**/*.DS_Store +*.log \ No newline at end of file diff --git a/api/pom.xml b/api/pom.xml index 9500d6f10..eeece55a7 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -1,6 +1,13 @@ + + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.1.3.RELEASE + + cn.crap api war @@ -18,6 +25,7 @@ 1.3.7 1.3.2 8.0.13 + 1.8 @@ -26,46 +34,23 @@ 27.1-jre - com.aliyun.oss aliyun-sdk-oss 2.8.2 - org.mybatis.generator mybatis-generator-core ${mybatis-generator-core.version} - - org.mybatis - mybatis-spring - ${mybatis-spring.version} - com.alibaba druid 1.0.14 - - org.mybatis - mybatis - ${mybatis.version} - - - - org.aspectj - aspectjweaver - 1.8.9 - - - log4j - log4j - 1.2.17 - org.apache.httpcomponents httpclient @@ -74,120 +59,46 @@ org.apache.httpcomponents httpcore - 4.4.3 - net.sf.json-lib - json-lib - 2.4 - jdk15 - - - org.json - json - 20140107 - - - com.fasterxml.jackson.core - jackson-annotations - 2.4.0 - - - org.codehaus.jackson - jackson-core-asl - 1.9.13 - - - org.codehaus.jackson - jackson-mapper-asl - 1.9.13 - - - com.fasterxml.jackson.core - jackson-core - 2.4.1 - - - com.fasterxml.jackson.core - jackson-databind - 2.9.10.3 - - - commons-fileupload - commons-fileupload - 1.3.3 - - - - org.springframework - spring-beans - ${spring_version} - - - org.springframework - spring-context - ${spring_version} - - - - org.springframework - spring-context-support - ${spring_version} - - - org.springframework - spring-core - ${spring_version} + org.springframework.boot + spring-boot-starter-web - org.springframework - spring-orm - ${spring_version} + org.springframework.boot + spring-boot-starter-test + test - org.springframework - spring-expression - ${spring_version} + org.springframework.boot + spring-boot-configuration-processor + true - org.springframework - spring-jdbc - ${spring_version} + org.mybatis.spring.boot + mybatis-spring-boot-starter + 1.3.2 - org.springframework - spring-tx - ${spring_version} + org.springframework.boot + spring-boot-starter-mail - org.springframework - spring-web - ${spring_version} + io.springfox + springfox-swagger-ui + 2.9.1 - org.springframework - spring-webmvc - ${spring_version} + io.springfox + springfox-swagger2 + 2.9.1 - mysql mysql-connector-java ${mysql-connector-java.version} - - - jstl - jstl - 1.2 - - - org.apache.tomcat - servlet-api - 6.0.44 - provided - com.itextpdf.tool @@ -262,13 +173,6 @@ poi-examples 3.10-FINAL - - javax.mail @@ -288,23 +192,6 @@ 2.2.1 --> - - org.slf4j - slf4j-api - 1.7.25 - - - org.springframework - spring-test - ${spring_version} - test - - - junit - junit - 4.11 - test - javax.el javax.el-api @@ -317,45 +204,39 @@ 2.2.4 test - org.freemarker freemarker 2.3.28 - org.projectlombok lombok 1.18.6 provided + + log4j + log4j + 1.2.17 + + + + org.apache.tomcat.embed + tomcat-embed-jasper + + + javax.servlet + jstl + - api - - org.apache.maven.plugins - maven-compiler-plugin - 3.1 - - 1.8 - 1.8 - UTF8 - + org.springframework.boot + spring-boot-maven-plugin @@ -367,6 +248,15 @@ src/main/resources + + **/*.* + + + + src/main/webapp + + **/*.* + diff --git a/api/src/main/java/cn/crap/BootMain.java b/api/src/main/java/cn/crap/BootMain.java new file mode 100644 index 000000000..262aafa73 --- /dev/null +++ b/api/src/main/java/cn/crap/BootMain.java @@ -0,0 +1,21 @@ +package cn.crap; + +import cn.crap.config.FilterConfig; +import cn.crap.config.InterceptorConfig; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Import; + +/** + * @author James + */ +@SpringBootApplication +@MapperScan(basePackages = {"cn.crap.dao"}) +@Import(value = {FilterConfig.class, InterceptorConfig.class}) +public class BootMain { + + public static void main(String[] args) { + SpringApplication.run(BootMain.class, args); + } +} diff --git a/api/src/main/java/cn/crap/config/FilterConfig.java b/api/src/main/java/cn/crap/config/FilterConfig.java new file mode 100644 index 000000000..03e8db518 --- /dev/null +++ b/api/src/main/java/cn/crap/config/FilterConfig.java @@ -0,0 +1,47 @@ +package cn.crap.config; + +import cn.crap.framework.ParamFilter; +import cn.crap.framework.ThreadContext; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author James + */ +public class FilterConfig { + + public static Map initParameters = new HashMap(){ + { + put("ignoreSuffixes", ".jpg,.png,.html,.js,.css,.jpeg,.doc,.pdf,.ignore"); + } + }; + + @Bean(name = "threadContextFilter") + public FilterRegistrationBean contextFilterRegistrationBean() { + FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean<>(); + filterRegistrationBean.setFilter(new ThreadContext()); + filterRegistrationBean.addUrlPatterns("/*"); + filterRegistrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE); + filterRegistrationBean.setInitParameters(initParameters); + return filterRegistrationBean; + } + + private static String[] urlPatterns = { + "*.do", + "*.json", + "*.htm" + }; + + @Bean(name = "paramFilter") + public FilterRegistrationBean createParamFilter() { + FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean<>(); + filterRegistrationBean.setFilter(new ParamFilter()); + filterRegistrationBean.addUrlPatterns(urlPatterns); + return filterRegistrationBean; + } +} diff --git a/api/src/main/java/cn/crap/config/InterceptorConfig.java b/api/src/main/java/cn/crap/config/InterceptorConfig.java new file mode 100644 index 000000000..63ec19402 --- /dev/null +++ b/api/src/main/java/cn/crap/config/InterceptorConfig.java @@ -0,0 +1,33 @@ +package cn.crap.config; + +import cn.crap.framework.interceptor.AuthInterceptor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * @author James + */ +public class InterceptorConfig implements WebMvcConfigurer { + + @Autowired + private AuthInterceptor authInterceptor; + + private static String[] excludePathPatterns = { + "/**/*.jpg", + "/**/*.png", + "/**/*.html", + "/**/*.js", + "/**/*.css", + "/**/*.jpeg", + "/**/*.doc", + "/**/*.pdf", + "/**/*.ignore" + }; + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(authInterceptor).addPathPatterns("/**") + .excludePathPatterns(excludePathPatterns); + } +} diff --git a/api/src/main/java/cn/crap/config/Swagger2Config.java b/api/src/main/java/cn/crap/config/Swagger2Config.java new file mode 100644 index 000000000..719113c6d --- /dev/null +++ b/api/src/main/java/cn/crap/config/Swagger2Config.java @@ -0,0 +1,45 @@ +package cn.crap.config; + +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +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; + +/** + * @author chengdu + * @date 2019/6/29. + */ +@Configuration +@ConditionalOnProperty(name = "swagger.enable", havingValue = "true") +@EnableSwagger2 +public class Swagger2Config { + + private static Predicate[] components = new Predicate[]{ + RequestHandlerSelectors.basePackage("cn.crap.controller") + }; + + @Bean + public Docket createRestApi() { + return new Docket(DocumentationType.SWAGGER_2) + .apiInfo(apiInfo()) + .select() + .apis(Predicates.or(components)) + .paths(PathSelectors.any()) + .build(); + } + + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("API") + .description("api") + .build(); + } +} diff --git a/api/src/main/java/cn/crap/controller/visitor/MainController.java b/api/src/main/java/cn/crap/controller/visitor/MainController.java index d79a707e9..e83520adc 100644 --- a/api/src/main/java/cn/crap/controller/visitor/MainController.java +++ b/api/src/main/java/cn/crap/controller/visitor/MainController.java @@ -24,6 +24,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import javax.mail.MessagingException; @@ -65,7 +66,7 @@ public class MainController extends BaseController{ * * @throws Exception */ - @RequestMapping("/home.do") + @RequestMapping(value = "/", method = RequestMethod.GET) public String home(HttpServletResponse response, ModelMap modelMap) throws Exception { SettingDto indexUrl = settingCache.get(S_INDEX_PAGE); if (indexUrl != null && !MyString.isEmpty(indexUrl.getValue()) @@ -163,9 +164,9 @@ public String dashboard(ModelMap modelMap) throws MyException{ modelMap.addAttribute("menuList", menuList); // fork & star 数量 - TaskUtil.execute(new OpenSourceInfoTask()); - modelMap.addAttribute(FORK_NUM, OpenSourceInfoTask.forNumStr); - modelMap.addAttribute(STAR_NUM, OpenSourceInfoTask.starNumStr); +// TaskUtil.execute(new OpenSourceInfoTask()); +// modelMap.addAttribute(FORK_NUM, OpenSourceInfoTask.forNumStr); +// modelMap.addAttribute(STAR_NUM, OpenSourceInfoTask.starNumStr); return "WEB-INF/views/dashboard.jsp"; } diff --git a/api/src/main/java/cn/crap/framework/SpringContextHolder.java b/api/src/main/java/cn/crap/framework/SpringContextHolder.java index e64cb7604..16231895d 100644 --- a/api/src/main/java/cn/crap/framework/SpringContextHolder.java +++ b/api/src/main/java/cn/crap/framework/SpringContextHolder.java @@ -3,6 +3,9 @@ import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +@Component public class SpringContextHolder implements ApplicationContextAware { private static ApplicationContext applicationContext; diff --git a/api/src/main/java/cn/crap/framework/ThreadContext.java b/api/src/main/java/cn/crap/framework/ThreadContext.java index 89371bbb0..a76dbffc4 100644 --- a/api/src/main/java/cn/crap/framework/ThreadContext.java +++ b/api/src/main/java/cn/crap/framework/ThreadContext.java @@ -27,7 +27,7 @@ public class ThreadContext implements Filter { */ @Override final public void init(FilterConfig filterConfig) throws ServletException { - this.IGNORE_SUFFIXES = initIgnoreSuffix(filterConfig); + IGNORE_SUFFIXES = initIgnoreSuffix(filterConfig); log.info("ThreadContext:初始化.........."); } diff --git a/api/src/main/java/cn/crap/framework/interceptor/AuthInterceptor.java b/api/src/main/java/cn/crap/framework/interceptor/AuthInterceptor.java index 7a90be165..c218ce941 100644 --- a/api/src/main/java/cn/crap/framework/interceptor/AuthInterceptor.java +++ b/api/src/main/java/cn/crap/framework/interceptor/AuthInterceptor.java @@ -7,6 +7,8 @@ import cn.crap.service.tool.UserCache; import cn.crap.utils.*; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; @@ -21,6 +23,7 @@ * @author * */ +@Component public class AuthInterceptor extends HandlerInterceptorAdapter{ @Autowired private UserCache userCache; diff --git a/api/src/main/resources/application.yml b/api/src/main/resources/application.yml new file mode 100644 index 000000000..a87858390 --- /dev/null +++ b/api/src/main/resources/application.yml @@ -0,0 +1,40 @@ +# Server settings +server: + port: 8080 + servlet: + context-path: / + +swagger: + enable: false + +#log +logging: + config: classpath:logback-boot.xml + +spring: + servlet: + multipart: + max-request-size: 100MB + max-file-size: 100MB + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3306/apidev?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai + username: apidev + password: apidev + mvc: + view: + prefix: / +# suffix: .jsp + mail: + jndi-name: xxx + host: smtp.qq.com + username: 3281328128@qq.com + password: ukkrwqdflbgzcjbj + port: 587 + protocol: smtp + default-encoding: UTF-8 + +mybatis: + mapper-locations: mapper/*.xml + configuration: + log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl \ No newline at end of file diff --git a/api/src/main/resources/logback-boot.xml b/api/src/main/resources/logback-boot.xml new file mode 100644 index 000000000..b430318ab --- /dev/null +++ b/api/src/main/resources/logback-boot.xml @@ -0,0 +1,51 @@ + + + + + + + %d %p (%file:%line\)- %m%n + + UTF-8 + + + + + + + log/sys.log + + + + + + log/sys.%d.%i.log + + 30 + + + 1KB + + + + + + %d %p (%file:%line\)- %m%n + + + UTF-8 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/api/src/main/java/cn/crap/dao/mapper/ArticleMapper.xml b/api/src/main/resources/mapper/ArticleMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/ArticleMapper.xml rename to api/src/main/resources/mapper/ArticleMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/BugLogMapper.xml b/api/src/main/resources/mapper/BugLogMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/BugLogMapper.xml rename to api/src/main/resources/mapper/BugLogMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/BugMapper.xml b/api/src/main/resources/mapper/BugMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/BugMapper.xml rename to api/src/main/resources/mapper/BugMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/CommentMapper.xml b/api/src/main/resources/mapper/CommentMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/CommentMapper.xml rename to api/src/main/resources/mapper/CommentMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/DebugMapper.xml b/api/src/main/resources/mapper/DebugMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/DebugMapper.xml rename to api/src/main/resources/mapper/DebugMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/ErrorMapper.xml b/api/src/main/resources/mapper/ErrorMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/ErrorMapper.xml rename to api/src/main/resources/mapper/ErrorMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/HotSearchMapper.xml b/api/src/main/resources/mapper/HotSearchMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/HotSearchMapper.xml rename to api/src/main/resources/mapper/HotSearchMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/InterfaceMapper.xml b/api/src/main/resources/mapper/InterfaceMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/InterfaceMapper.xml rename to api/src/main/resources/mapper/InterfaceMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/LogMapper.xml b/api/src/main/resources/mapper/LogMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/LogMapper.xml rename to api/src/main/resources/mapper/LogMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/MenuMapper.xml b/api/src/main/resources/mapper/MenuMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/MenuMapper.xml rename to api/src/main/resources/mapper/MenuMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/ModuleMapper.xml b/api/src/main/resources/mapper/ModuleMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/ModuleMapper.xml rename to api/src/main/resources/mapper/ModuleMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/ProjectMapper.xml b/api/src/main/resources/mapper/ProjectMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/ProjectMapper.xml rename to api/src/main/resources/mapper/ProjectMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/ProjectMetaMapper.xml b/api/src/main/resources/mapper/ProjectMetaMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/ProjectMetaMapper.xml rename to api/src/main/resources/mapper/ProjectMetaMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/ProjectUserMapper.xml b/api/src/main/resources/mapper/ProjectUserMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/ProjectUserMapper.xml rename to api/src/main/resources/mapper/ProjectUserMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/SettingMapper.xml b/api/src/main/resources/mapper/SettingMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/SettingMapper.xml rename to api/src/main/resources/mapper/SettingMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/SourceMapper.xml b/api/src/main/resources/mapper/SourceMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/SourceMapper.xml rename to api/src/main/resources/mapper/SourceMapper.xml diff --git a/api/src/main/java/cn/crap/dao/mapper/UserMapper.xml b/api/src/main/resources/mapper/UserMapper.xml similarity index 100% rename from api/src/main/java/cn/crap/dao/mapper/UserMapper.xml rename to api/src/main/resources/mapper/UserMapper.xml diff --git a/api/src/main/resources/monitor.xml b/api/src/main/resources/monitor.xml deleted file mode 100644 index 6e687a1d5..000000000 --- a/api/src/main/resources/monitor.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/api/src/main/resources/mybatis-config.xml b/api/src/main/resources/mybatis-config.xml deleted file mode 100755 index bf6ff253a..000000000 --- a/api/src/main/resources/mybatis-config.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/api/src/main/resources/mybatis-dao.xml b/api/src/main/resources/mybatis-dao.xml deleted file mode 100644 index 7e58ed30d..000000000 --- a/api/src/main/resources/mybatis-dao.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/api/src/main/resources/springMVC.xml b/api/src/main/resources/springMVC.xml deleted file mode 100644 index 300cd1557..000000000 --- a/api/src/main/resources/springMVC.xml +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - classpath:config.properties - - - - - - - - - - - - - - - - - - - - - - - - - text/html;charset=UTF-8 - - - - - - - - - - - - - - - ${mail.username} - ${mail.password} - ${mail.host} - 465 - - - - - false - 3000 - 3000 - 3000 - 465 - 465 - false - javax.net.ssl.SSLSocketFactory - - 3000 - 3000 - 3000 - - 3000 - 3000 - 3000 - - - - - \ No newline at end of file