Skip to content

Commit 75c03ca

Browse files
committed
refactor code
1 parent 75ed962 commit 75c03ca

File tree

11 files changed

+29
-310
lines changed

11 files changed

+29
-310
lines changed

pom.xml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
<graphql-spring-boot-starter.version>11.1.0</graphql-spring-boot-starter.version>
2323
<graphql-java-tools.version>11.1.2</graphql-java-tools.version>
2424
<jsoup.version>1.14.2</jsoup.version>
25+
<compileflow.version>1.1.0</compileflow.version>
26+
<org.mapstruct.version>1.4.2.Final</org.mapstruct.version>
2527

2628
<graphql-java-extended-scalars.version>17.0</graphql-java-extended-scalars.version>
2729
<spring-cloud-commons.version>3.1.0</spring-cloud-commons.version>
@@ -190,6 +192,17 @@
190192
<version>${spring-cloud-commons.version}</version>
191193
</dependency>
192194

195+
<dependency>
196+
<groupId>com.alibaba.compileflow</groupId>
197+
<artifactId>compileflow</artifactId>
198+
<version>${compileflow.version}</version>
199+
</dependency>
200+
201+
<dependency>
202+
<groupId>org.mapstruct</groupId>
203+
<artifactId>mapstruct</artifactId>
204+
<version>${org.mapstruct.version}</version>
205+
</dependency>
193206

194207
</dependencies>
195208

@@ -230,6 +243,22 @@
230243
<groupId>org.codehaus.mojo</groupId>
231244
<artifactId>versions-maven-plugin</artifactId>
232245
</plugin>
246+
<plugin>
247+
<groupId>org.apache.maven.plugins</groupId>
248+
<artifactId>maven-compiler-plugin</artifactId>
249+
<version>3.8.1</version>
250+
<configuration>
251+
<source>1.8</source>
252+
<target>1.8</target>
253+
<annotationProcessorPaths>
254+
<path>
255+
<groupId>org.mapstruct</groupId>
256+
<artifactId>mapstruct-processor</artifactId>
257+
<version>${org.mapstruct.version}</version>
258+
</path>
259+
</annotationProcessorPaths>
260+
</configuration>
261+
</plugin>
233262
</plugins>
234263
</build>
235264

src/main/java/app/controller/MovieController.java

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@
33
import app.constant.MovieTypeEnum;
44
import app.entity.Film;
55
import app.service.MovieService;
6-
import app.vo.movie.MovieSubject;
76
import lombok.AllArgsConstructor;
87
import org.springframework.beans.factory.annotation.Autowired;
98
import org.springframework.web.bind.annotation.GetMapping;
109
import org.springframework.web.bind.annotation.PathVariable;
1110
import org.springframework.web.bind.annotation.PostMapping;
12-
import org.springframework.web.bind.annotation.RequestBody;
1311
import org.springframework.web.bind.annotation.RestController;
1412

1513
import java.util.List;
@@ -39,16 +37,6 @@ public List<Film> getAllMoviesList() {
3937
return movieService.getAllMovies();
4038
}
4139

42-
@PostMapping("movie/star")
43-
public List<Film> getStarList(@RequestBody List<Long> movieIdList) {
44-
return movieService.getMoviesByMovieIds(movieIdList);
45-
}
46-
47-
@PostMapping("movie/viewed")
48-
public List<Film> getViewedList(@RequestBody List<Long> movieIdList) {
49-
return movieService.getMoviesByMovieIds(movieIdList);
50-
}
51-
5240
@PostMapping("sync/recent")
5341
public void syncRecent() {
5442
movieService.syncMovies(MovieTypeEnum.RECENT);
@@ -59,21 +47,6 @@ public void syncTop() {
5947
movieService.syncMovies(MovieTypeEnum.TOP);
6048
}
6149

62-
@PostMapping("movie/sync/{movieId}")
63-
public Film syncOneMovieToMovieList(@PathVariable Long movieId) {
64-
return movieService.syncMovieByMovieId(movieId, true);
65-
}
66-
67-
/**
68-
* get movie info by subject id
69-
* @param id subject id
70-
* @return movie subject
71-
*/
72-
@GetMapping("movie/subject/{id}")
73-
public MovieSubject getMovieSubject(@PathVariable Long id) {
74-
return movieService.getMovieSubject(id);
75-
}
76-
7750
/**
7851
* find film by movie id
7952
* @param id movie id

src/main/java/app/entity/Film.java

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
package app.entity;
22

33
import app.constant.MovieTypeEnum;
4-
import app.vo.movie.Avatar;
5-
import app.vo.movie.Movie;
6-
import app.vo.movie.MovieSubject;
74
import com.baomidou.mybatisplus.annotation.TableField;
85
import com.baomidou.mybatisplus.annotation.TableName;
96
import lombok.AllArgsConstructor;
107
import lombok.Builder;
118
import lombok.Data;
129
import lombok.NoArgsConstructor;
13-
import org.apache.commons.lang3.StringUtils;
1410

1511
import javax.persistence.Column;
1612
import javax.persistence.Entity;
@@ -24,9 +20,6 @@
2420
import java.time.LocalDateTime;
2521
import java.util.Objects;
2622

27-
import static app.util.ConstantUtils.LARGE;
28-
import static app.util.ConstantUtils.SEPARATOR;
29-
3023
/**
3124
* @author zhihao zhang
3225
* @since 2019.06.10
@@ -69,22 +62,6 @@ public class Film implements Serializable {
6962
@TableField("movie_type")
7063
private MovieTypeEnum movieTypeEnum;
7164

72-
public static Film transformMovieToFilm(Movie movie, MovieTypeEnum movieTypeEnum) {
73-
return Film.builder()
74-
.movieId(movie.getId())
75-
.title(movie.getTitle())
76-
.rating(movie.getRating().getAverage())
77-
.url(movie.getAlt())
78-
.movieYear(movie.getYear())
79-
.imageLarge(movie.getImages().get(LARGE))
80-
.casts(Avatar.getNames(movie.getCasts()))
81-
.directors(Avatar.getNames(movie.getDirectors()))
82-
.genres(StringUtils.join(movie.getGenres(), SEPARATOR))
83-
.updateTime(LocalDateTime.now())
84-
.movieTypeEnum(movieTypeEnum)
85-
.build();
86-
}
87-
8865
public static Film transformMovieAndOldFilmToNewFilm(Film newFilm, MovieTypeEnum movieTypeEnum,
8966
Film oldFilm) {
9067
if (Objects.isNull(oldFilm)) {
@@ -105,22 +82,4 @@ public static Film transformMovieAndOldFilmToNewFilm(Film newFilm, MovieTypeEnum
10582
}
10683
return newFilm;
10784
}
108-
109-
public static Film transformMovieSubjectToFilm(MovieSubject movieSubject, MovieTypeEnum movieTypeEnum) {
110-
return Film.builder()
111-
.movieId(movieSubject.getId())
112-
.title(movieSubject.getTitle())
113-
.rating(movieSubject.getRating().getAverage())
114-
.url(movieSubject.getAlt())
115-
.movieYear(movieSubject.getYear())
116-
.imageLarge(movieSubject.getImages().get(LARGE))
117-
.casts(Avatar.getNames(movieSubject.getCasts()))
118-
.directors(Avatar.getNames(movieSubject.getDirectors()))
119-
.genres(StringUtils.join(movieSubject.getGenres(), SEPARATOR))
120-
.summary(movieSubject.getSummary())
121-
.countries(StringUtils.join(movieSubject.getCountries().toArray(), SEPARATOR))
122-
.movieTypeEnum(movieTypeEnum)
123-
.updateTime(LocalDateTime.now())
124-
.build();
125-
}
12685
}

src/main/java/app/service/MovieService.java

Lines changed: 0 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,15 @@
55
import app.entity.Film;
66
import app.service.db.DataService;
77
import app.util.JsoupUtils;
8-
import app.vo.movie.MovieSubject;
9-
import com.fasterxml.jackson.databind.ObjectMapper;
10-
import com.fasterxml.jackson.databind.type.TypeFactory;
118
import com.google.common.base.Strings;
129
import com.google.common.collect.Lists;
1310
import lombok.AllArgsConstructor;
1411
import lombok.extern.slf4j.Slf4j;
15-
import okhttp3.OkHttpClient;
16-
import okhttp3.Request;
17-
import okhttp3.Response;
1812
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
1913
import org.springframework.beans.factory.annotation.Autowired;
2014
import org.springframework.stereotype.Service;
2115
import org.springframework.util.CollectionUtils;
2216

23-
import java.io.IOException;
2417
import java.util.List;
2518
import java.util.Objects;
2619
import java.util.concurrent.CompletableFuture;
@@ -39,10 +32,6 @@
3932
@Slf4j
4033
@AllArgsConstructor(onConstructor = @__(@Autowired))
4134
public class MovieService {
42-
private static final String DOUBAN_URL = "https://douban.uieee.com";
43-
private static final ObjectMapper MAPPER = new ObjectMapper();
44-
45-
private static final OkHttpClient HTTP_CLIENT = new OkHttpClient();
4635
private static final ExecutorService executorService =
4736
new ThreadPoolExecutor(2, 2, 60, TimeUnit.SECONDS,
4837
new LinkedBlockingQueue<>());
@@ -61,61 +50,6 @@ public Film getMovieById(Long id) {
6150
return dataService.findByMovieId(id);
6251
}
6352

64-
public List<Film> getMoviesByMovieIds(List<Long> movieIdList) {
65-
List<Long> filterMovieIdList = movieIdList.stream()
66-
.filter(Objects::nonNull)
67-
.collect(Collectors.toList());
68-
List<Long> existedIdList = dataService.findByMovieIds(filterMovieIdList).stream()
69-
.filter(film -> Objects.nonNull(film.getSummary()))
70-
.map(Film::getMovieId)
71-
.collect(Collectors.toList());
72-
List<Film> newFilmList = filterMovieIdList.stream()
73-
.filter(movieId -> !existedIdList.contains(movieId))
74-
.map(movieId -> syncMovieByMovieId(movieId, false))
75-
.filter(Objects::nonNull)
76-
.collect(Collectors.toList());
77-
78-
this.batchUpdateFilmList(newFilmList);
79-
return dataService.findByMovieIds(filterMovieIdList);
80-
}
81-
82-
public Film syncMovieByMovieId(Long movieId, boolean save) {
83-
Film film = dataService.findByMovieId(movieId);
84-
MovieSubject movieSubject;
85-
try {
86-
movieSubject = getMovieSubject(movieId);
87-
} catch (Exception e) {
88-
log.error("can not fetch this movieId: {}", movieId);
89-
return null;
90-
}
91-
92-
if (Objects.isNull(movieSubject)) {
93-
return null;
94-
}
95-
Film syncedFilm = Film.transformMovieSubjectToFilm(movieSubject, MovieTypeEnum.NORMAL);
96-
97-
if (Objects.nonNull(film)) {
98-
syncedFilm.setId(film.getId());
99-
}
100-
101-
if (save) {
102-
dataService.save(syncedFilm);
103-
}
104-
105-
return syncedFilm;
106-
}
107-
108-
public MovieSubject getMovieSubject(Long id) {
109-
String url = DOUBAN_URL.concat("/v2/movie/subject/").concat(String.valueOf(id));
110-
try {
111-
return MAPPER.readValue(getUrlContent(url),
112-
TypeFactory.defaultInstance().constructType(MovieSubject.class));
113-
} catch (Exception e) {
114-
log.error("failed to get movie subject by {}", url, e);
115-
return null;
116-
}
117-
}
118-
11953
@MethodTime
12054
public void syncMovies(MovieTypeEnum movieTypeEnum) {
12155
this.saveMovie(movieTypeEnum);
@@ -138,16 +72,6 @@ private void saveMovie(MovieTypeEnum movieTypeEnum) {
13872
this.saveFilmList(filmList, movieTypeEnum);
13973
}
14074

141-
private String getUrlContent(String url) throws IOException {
142-
Request request = new Request.Builder()
143-
.url(url)
144-
.build();
145-
146-
Response response = HTTP_CLIENT.newCall(request).execute();
147-
assert response.body() != null;
148-
return response.body().string();
149-
}
150-
15175
private void deleteOutDatedMovie(MovieTypeEnum movieTypeEnum) {
15276
List<Film> filmList = dataService.findByMovieTypeEnum(movieTypeEnum);
15377
filmList.forEach(film -> film.setMovieTypeEnum(MovieTypeEnum.NORMAL));

src/main/java/app/util/ConstantUtils.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,5 @@
66
* @since 3/8/20
77
*/
88
public final class ConstantUtils {
9-
public static final String LARGE = "large";
109
public static final String SEPARATOR = ",";
1110
}

src/main/java/app/util/JsoupUtils.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import java.net.URL;
1515
import java.time.LocalDateTime;
1616
import java.util.List;
17-
import java.util.Objects;
1817
import java.util.Optional;
1918
import java.util.stream.Collectors;
2019

@@ -117,7 +116,6 @@ private Film getFilmDetailFromUrl(String url) {
117116
List<String> genreList = spanElements.stream()
118117
.filter(item -> "v:genre".equals(item.attr(PROPERTY)))
119118
.map(Element::text)
120-
.filter(Objects::nonNull)
121119
.collect(Collectors.toList());
122120

123121
return Film.builder()
@@ -144,27 +142,23 @@ private Film getTopFilmDetailFromUrl(String url) {
144142
List<String> genreList = spanElements.stream()
145143
.filter(item -> "v:genre".equals(item.attr(PROPERTY)))
146144
.map(Element::text)
147-
.filter(Objects::nonNull)
148145
.collect(Collectors.toList());
149146

150147
Elements aElements = infoElement.getElementsByTag("a");
151148
List<String> directorList = aElements.stream()
152149
.filter(item -> "v:directedBy".equals(item.attr("rel")))
153150
.map(Element::text)
154-
.filter(Objects::nonNull)
155151
.collect(Collectors.toList());
156152

157153
List<String> actorList = aElements.stream()
158154
.filter(item -> "v:starring".equals(item.attr("rel")))
159155
.map(Element::text)
160-
.filter(Objects::nonNull)
161156
.limit(5)
162157
.collect(Collectors.toList());
163158

164159
Optional<Integer> movieYear = spanElements.stream()
165160
.filter(item -> "v:initialReleaseDate".equals(item.attr(PROPERTY)))
166161
.map(Element::text)
167-
.filter(Objects::nonNull)
168162
.map(item -> Integer.parseInt(item.substring(0, 4)))
169163
.limit(1)
170164
.findFirst();
@@ -174,7 +168,6 @@ private Film getTopFilmDetailFromUrl(String url) {
174168
Optional<Double> rating = strongElements.stream()
175169
.filter(item -> "v:average".equals(item.attr(PROPERTY)))
176170
.map(Element::text)
177-
.filter(Objects::nonNull)
178171
.map(Double::parseDouble)
179172
.limit(1)
180173
.findFirst();

src/main/java/app/vo/movie/Avatar.java

Lines changed: 0 additions & 36 deletions
This file was deleted.

0 commit comments

Comments
 (0)