2
2
3
3
import com .baomidou .mybatisplus .core .conditions .query .QueryWrapper ;
4
4
import com .baomidou .mybatisplus .core .conditions .update .LambdaUpdateWrapper ;
5
+ import com .baomidou .mybatisplus .core .toolkit .StringUtils ;
6
+ import com .baomidou .mybatisplus .extension .plugins .pagination .Page ;
5
7
import com .tml .otowbackend .constants .CodeLanguage ;
6
8
import com .tml .otowbackend .core .exception .ResultCode ;
7
9
import com .tml .otowbackend .core .exception .ServerException ;
8
10
import com .tml .otowbackend .mapper .ProjectMapper ;
9
11
import com .tml .otowbackend .pojo .DO .Project ;
10
12
import com .tml .otowbackend .pojo .DTO .CreateProjectRequestDTO ;
13
+ import com .tml .otowbackend .pojo .DTO .QueryProjectPageResponseDTO ;
11
14
import com .tml .otowbackend .pojo .DTO .QueryProjectRequestDTO ;
12
- import com .tml .otowbackend .pojo .DTO .QueryProjectResponseDTO ;
13
15
import com .tml .otowbackend .pojo .DTO .UpdateProjectRequestDTO ;
16
+ import com .tml .otowbackend .pojo .VO .QueryProjectResponseVO ;
14
17
import com .tml .otowbackend .service .ProjectService ;
15
18
import com .tml .otowbackend .util .OSSUtil ;
16
19
import com .tml .otowbackend .util .UserThread ;
19
22
20
23
import javax .annotation .Resource ;
21
24
import java .util .List ;
25
+ import java .util .Objects ;
22
26
import java .util .Optional ;
23
27
import java .util .stream .Collectors ;
24
28
@@ -48,18 +52,24 @@ public void update(UpdateProjectRequestDTO requestDTO) {
48
52
String uid = UserThread .getUid ();
49
53
Integer language = CodeLanguage .queryCodeByLanguage (requestDTO .getCodeLanguage ());
50
54
wrapper .eq (Project ::getId ,requestDTO .getId ()).eq (Project ::getShareUid ,uid );
51
- Optional .ofNullable (requestDTO .getCover ())
52
- .ifPresent (cover -> wrapper .set (Project ::getCover , cover ));
53
- Optional .ofNullable (requestDTO .getDescription ())
54
- .ifPresent (description -> wrapper .set (Project ::getDescription , description ));
55
- Optional .ofNullable (requestDTO .getIntroduce ())
56
- .ifPresent (introduce -> wrapper .set (Project ::getIntroduce , introduce ));
57
- Optional .ofNullable (requestDTO .getPrice ())
58
- .ifPresent (price -> wrapper .set (Project ::getPrice , price ));
59
- Optional .ofNullable (language )
60
- .ifPresent (lang -> wrapper .set (Project ::getCodeLanguage , lang ));
61
- Optional .ofNullable (requestDTO .getName ())
62
- .ifPresent (name -> wrapper .set (Project ::getName , name ));
55
+ if (!StringUtils .isBlank (requestDTO .getCover ())){
56
+ wrapper .set (Project ::getCover , requestDTO .getCover ());
57
+ }
58
+ if (!StringUtils .isBlank (requestDTO .getDescription ())){
59
+ wrapper .set (Project ::getCover , requestDTO .getDescription ());
60
+ }
61
+ if (!StringUtils .isBlank (requestDTO .getIntroduce ())){
62
+ wrapper .set (Project ::getIntroduce , requestDTO .getIntroduce ());
63
+ }
64
+ if (!StringUtils .isBlank (requestDTO .getName ())){
65
+ wrapper .set (Project ::getName ,requestDTO .getName ());
66
+ }
67
+ if (Objects .nonNull (requestDTO .getCodeLanguage ())){
68
+ wrapper .set (Project ::getCodeLanguage , language );
69
+ }
70
+ if (Objects .nonNull (requestDTO .getPrice ())){
71
+ wrapper .set (Project ::getPrice , requestDTO .getPrice ());
72
+ }
63
73
projectMapper .update (null ,wrapper );
64
74
}
65
75
@@ -69,25 +79,37 @@ public void removeById(String projectId) {
69
79
}
70
80
71
81
@ Override
72
- public List <QueryProjectResponseDTO > queryProject (QueryProjectRequestDTO requestDTO ) {
73
- int limit = requestDTO .getLimit ();
74
- int page = requestDTO .getPage ();
75
- List <QueryProjectResponseDTO > resLists ;
76
- requestDTO .setLimit (Math .min (limit ,DEFAULT_MAX_LIMIT ));
77
- requestDTO .setPage (page -1 >=0 ?page :0 );
82
+ public QueryProjectPageResponseDTO queryProject (QueryProjectRequestDTO requestDTO ) {
83
+ int limit = Math .min ((requestDTO .getLimit ()),DEFAULT_MAX_LIMIT );
84
+ int page = Math .max (requestDTO .getPage () - 1 , 0 );
85
+ List <QueryProjectResponseVO > resLists ;
86
+ LambdaUpdateWrapper <Project > wrapper = new LambdaUpdateWrapper <>();
87
+ if (!StringUtils .isBlank (requestDTO .getName ())){
88
+ wrapper .like (Project ::getName , requestDTO .getName ());
89
+ }
90
+ if (!StringUtils .isBlank (requestDTO .getCodeLanguage ())){
91
+ wrapper .eq (Project ::getCodeLanguage ,requestDTO .getCodeLanguage ());
92
+ }
93
+ if (Objects .nonNull (requestDTO .getAmountMax ())){
94
+ wrapper .le (Project ::getPrice , requestDTO .getAmountMax ());
95
+ }
96
+ if (Objects .nonNull (requestDTO .getAmountMin ())) {
97
+ wrapper .ge (Project ::getPrice , requestDTO .getAmountMin ());
98
+ }
78
99
try {
79
- List <Project > projectPage = projectMapper .queryProjectPage (requestDTO );
80
- resLists = projectPage .stream ().map ((QueryProjectResponseDTO ::convertWithoutDetail )).collect (Collectors .toList ());
81
- return resLists ;
100
+ Page <Project > projectPage = projectMapper .selectPage (new Page <>(page , limit ), wrapper );
101
+ List <Project > records = projectPage .getRecords ();
102
+ resLists = records .stream ().map ((QueryProjectResponseVO ::convertWithoutDetail )).collect (Collectors .toList ());
103
+ return QueryProjectPageResponseDTO .builder ().total ((int ) projectPage .getTotal ()).respList (resLists ).build ();
82
104
}catch (RuntimeException e ){
83
105
throw new ServerException (ResultCode .QUERY_PROJECT_FAIL );
84
106
}
85
107
}
86
108
87
109
@ Override
88
- public QueryProjectResponseDTO queryOne (String id ) {
110
+ public QueryProjectResponseVO queryOne (String id ) {
89
111
Project one = projectMapper .selectOne (new QueryWrapper <Project >().eq ("id" , id ));
90
- return QueryProjectResponseDTO .convert (one );
112
+ return QueryProjectResponseVO .convert (one );
91
113
}
92
114
93
115
@ Override
0 commit comments