Skip to content

Commit

Permalink
Merge pull request #1 from xhnya/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
xhnya committed Jan 19, 2022
2 parents d0c919b + 31571cd commit 8a67784
Show file tree
Hide file tree
Showing 486 changed files with 98,774 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,8 @@ buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar

.idea/**
.idea
log/**
log
303 changes: 303 additions & 0 deletions blog.sql

Large diffs are not rendered by default.

144 changes: 144 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.xhnya</groupId>
<artifactId>blog</artifactId>
<version>0.0.1-SNAPSHOT</version>

<name>blog</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 阿里云oss依赖 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
<!-- 日期工具栏依赖 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>



<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>com.atlassian.commonmark</groupId>
<artifactId>commonmark</artifactId>
<version>0.14.0</version>
</dependency>
<dependency>
<groupId>com.atlassian.commonmark</groupId>
<artifactId>commonmark-ext-heading-anchor</artifactId>
<version>0.14.0</version>
</dependency>
<dependency>
<groupId>com.atlassian.commonmark</groupId>
<artifactId>commonmark-ext-gfm-tables</artifactId>
<version>0.14.0</version>
</dependency>

<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
</dependency>


<dependency>
<groupId>cn.ucloud.ufile</groupId>
<artifactId>ufile-client-java</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>com.vaadin.external.google</groupId>
<artifactId>android-json</artifactId>
<version>0.0.20131108.vaadin1</version>
<scope>compile</scope>
</dependency>

</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>
15 changes: 15 additions & 0 deletions src/main/java/com/xhnya/blog/BlogApplication.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.xhnya.blog;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

@SpringBootApplication
public class BlogApplication {

public static void main(String[] args) {
SpringApplication.run(BlogApplication.class, args);
}

}
24 changes: 24 additions & 0 deletions src/main/java/com/xhnya/blog/NotFoundException.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.xhnya.blog;


import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

/**
* @author xhn
* @data 2020/11/13 - 22:09
*/
@ResponseStatus(HttpStatus.NOT_FOUND)
public class NotFoundException extends RuntimeException {

public NotFoundException() {
}

public NotFoundException(String message) {
super(message);
}

public NotFoundException(String message, Throwable cause) {
super(message, cause);
}
}
77 changes: 77 additions & 0 deletions src/main/java/com/xhnya/blog/aspect/LogAspect.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package com.xhnya.blog.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
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;

/**
* @author xhn
* @data 2020/11/14 - 10:54
*/
@Aspect
@Component
public class LogAspect {

private final Logger logger = LoggerFactory.getLogger(this.getClass());


@Pointcut("execution(* com.xhnya.blog.web.*.*(..))")
public void log() {
}

@Before("log()")
public void doBefore(JoinPoint joinPoint) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
String url = request.getRequestURL().toString();
String ip = request.getRemoteAddr();
String classMethod = joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName();
Object[] args = joinPoint.getArgs();
RequestLog requestLog = new RequestLog(url, ip, classMethod, args);


logger.info("Request : {}", requestLog);
}

@After("log()")
public void doAfter() {
//logger.info("--------doAfter--------");
}

@AfterReturning(returning = "result", pointcut = "log()")
public void doAfterReturn(Object result) {
logger.info("Result : {}", result);
}

private class RequestLog {
private String url;
private String ip;
private String classMethod;
private Object[] args;

public RequestLog(String url, String ip, String classMethod, Object[] args) {
this.url = url;
this.ip = ip;
this.classMethod = classMethod;
this.args = args;
}

@Override
public String toString() {
return "{" +
"url='" + url + '\'' +
", ip='" + ip + '\'' +
", classMethod='" + classMethod + '\'' +
", args=" + Arrays.toString(args) +
'}';
}
}

}
41 changes: 41 additions & 0 deletions src/main/java/com/xhnya/blog/dao/BlogRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.xhnya.blog.dao;

import com.xhnya.blog.po.Blog;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
* @author xhn
* @data 2020/11/19 - 16:36
*/

public interface BlogRepository extends JpaRepository<Blog, Long>, JpaSpecificationExecutor<Blog> {

//select * from t_blog b where recommend = true order by update_time,nativeQuery = true
@Query("select b from Blog b where b.recommend= true")
List<Blog> findTop(Pageable pageable);

@Query("select b from Blog b where b.title like ?1 or b.content like ?1")
Page<Blog> findByQuery(String query, Pageable pageable);


@Transactional
@Modifying
@Query("update Blog b set b.views = b.views+1 where b.id = ?1")
int updateViews(Long id);

@Query("select function('date_format',b.updateTime,'%Y') as year from Blog b group by function('date_format',b.updateTime,'%Y') order by year desc ")
List<String> findGroupYear();

@Query("select b from Blog b where function('date_format',b.updateTime,'%Y') = ?1")
List<Blog> findByYear(String year);

Blog getBlogById(Long id);
}
17 changes: 17 additions & 0 deletions src/main/java/com/xhnya/blog/dao/CommentRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.xhnya.blog.dao;

import com.xhnya.blog.po.Comment;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

/**
* @author xhn
* @data 2020/11/22 - 20:31
*/
public interface CommentRepository extends JpaRepository<Comment, Long> {

List<Comment> findByBlogIdAndParentCommentNull(Long blogId, Sort sort);

}
19 changes: 19 additions & 0 deletions src/main/java/com/xhnya/blog/dao/TagRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.xhnya.blog.dao;

import com.xhnya.blog.po.Tag;
import com.xhnya.blog.po.Type;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

import java.util.List;


public interface TagRepository extends JpaRepository<Tag, Long>{
Tag findByTagName(String name);

@Query("select t from Tag t")
List<Tag> findTop(Pageable pageable);
}
21 changes: 21 additions & 0 deletions src/main/java/com/xhnya/blog/dao/TypeRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.xhnya.blog.dao;

import com.xhnya.blog.po.Type;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/**
* @author xhn
* @data 2020/11/17 - 20:12
*/
public interface TypeRepository extends JpaRepository<Type, Long> {


Type findByName(String name);

@Query("select t from Type t")
List<Type> findTop(Pageable pageable);
}
12 changes: 12 additions & 0 deletions src/main/java/com/xhnya/blog/dao/UserRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.xhnya.blog.dao;

import com.xhnya.blog.po.User;
import org.springframework.data.jpa.repository.JpaRepository;

/**
* @author xhn
* @data 2020/11/15 - 20:02
*/
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsernameAndPassword(String username, String password);
}
Loading

0 comments on commit 8a67784

Please sign in to comment.