Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
solo-1
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
solo-1
Commits
f284c26e
Unverified
Commit
f284c26e
authored
Sep 11, 2019
by
Liang Ding
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🐛
Fix #12859
parent
30c7e749
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
19 deletions
+30
-19
src/main/java/org/b3log/solo/service/ArticleQueryService.java
...main/java/org/b3log/solo/service/ArticleQueryService.java
+30
-19
No files found.
src/main/java/org/b3log/solo/service/ArticleQueryService.java
View file @
f284c26e
...
@@ -50,7 +50,7 @@ import java.util.*;
...
@@ -50,7 +50,7 @@ import java.util.*;
* @author <a href="https://hacpai.com/member/armstrong">ArmstrongCN</a>
* @author <a href="https://hacpai.com/member/armstrong">ArmstrongCN</a>
* @author <a href="http://zephyr.b3log.org">Zephyr</a>
* @author <a href="http://zephyr.b3log.org">Zephyr</a>
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
* @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
* @version 1.3.
2.15, May 20
, 2019
* @version 1.3.
3.0, Sep 11
, 2019
* @since 0.3.5
* @since 0.3.5
*/
*/
@Service
@Service
...
@@ -193,38 +193,49 @@ public class ArticleQueryService {
...
@@ -193,38 +193,49 @@ public class ArticleQueryService {
tagIds
.
add
(
categoryTags
.
optJSONObject
(
i
).
optString
(
Tag
.
TAG
+
"_"
+
Keys
.
OBJECT_ID
));
tagIds
.
add
(
categoryTags
.
optJSONObject
(
i
).
optString
(
Tag
.
TAG
+
"_"
+
Keys
.
OBJECT_ID
));
}
}
Query
query
=
new
Query
().
setFilter
(
new
PropertyFilter
(
Tag
.
TAG
+
"_"
+
Keys
.
OBJECT_ID
,
FilterOperator
.
IN
,
tagIds
)).
final
StringBuilder
queryCount
=
new
StringBuilder
(
"SELECT count(0) as c FROM "
);
setPage
(
currentPageNum
,
pageSize
).
final
StringBuilder
queryList
=
new
StringBuilder
(
"SELECT "
+
"b3_solo_article.oId "
).
append
(
" FROM "
);
addSort
(
Keys
.
OBJECT_ID
,
SortDirection
.
DESCENDING
);
final
StringBuilder
queryStr
=
new
StringBuilder
(
articleRepository
.
getName
()
+
" b3_solo_article,"
).
JSONObject
result
=
tagArticleRepository
.
get
(
query
);
append
(
tagArticleRepository
.
getName
()
+
" b3_solo_tag_article"
).
final
JSONArray
tagArticles
=
result
.
optJSONArray
(
Keys
.
RESULTS
);
append
(
" WHERE b3_solo_article.oId=b3_solo_tag_article.article_oId "
).
if
(
tagArticles
.
length
()
<=
0
)
{
append
(
" AND b3_solo_article."
).
append
(
Article
.
ARTICLE_STATUS
).
append
(
"=?"
).
return
ret
;
append
(
" AND "
).
append
(
"b3_solo_tag_article.tag_oId"
).
append
(
" IN ("
);
for
(
int
i
=
0
;
i
<
tagIds
.
size
();
i
++)
{
queryStr
.
append
(
" "
).
append
(
tagIds
.
get
(
i
));
if
(
i
<
(
tagIds
.
size
()
-
1
))
{
queryStr
.
append
(
","
);
}
}
}
queryStr
.
append
(
") ORDER BY "
).
append
(
"b3_solo_tag_article.oId DESC"
);
final
Set
<
String
>
articleIds
=
new
HashSet
<>();
for
(
int
i
=
0
;
i
<
tagArticles
.
length
();
i
++)
{
final
List
<
JSONObject
>
tagArticlesCountResult
=
articleRepository
.
articleIds
.
add
(
tagArticles
.
optJSONObject
(
i
).
optString
(
Article
.
ARTICLE
+
"_"
+
Keys
.
OBJECT_ID
));
select
(
queryCount
.
append
(
queryStr
.
toString
()).
toString
(),
Article
.
ARTICLE_STATUS_C_PUBLISHED
);
queryStr
.
append
(
" LIMIT "
).
append
((
currentPageNum
-
1
)
*
pageSize
).
append
(
","
).
append
(
pageSize
);
final
List
<
JSONObject
>
tagArticles
=
articleRepository
.
select
(
queryList
.
append
(
queryStr
.
toString
()).
toString
(),
Article
.
ARTICLE_STATUS_C_PUBLISHED
);
if
(
tagArticles
.
size
()
<=
0
)
{
return
ret
;
}
}
final
int
pageCount
=
result
.
optJSONObject
(
Pagination
.
PAGINATION
).
optInt
(
Pagination
.
PAGINATION_PAGE_COUNT
);
final
int
tagArticlesCount
=
tagArticlesCountResult
==
null
?
0
:
tagArticlesCountResult
.
get
(
0
).
optInt
(
"c"
);
final
int
pageCount
=
(
int
)
Math
.
ceil
(
tagArticlesCount
/
(
double
)
pageSize
);
final
JSONObject
preference
=
optionQueryService
.
getPreference
();
final
JSONObject
preference
=
optionQueryService
.
getPreference
();
final
int
windowSize
=
preference
.
optInt
(
Option
.
ID_C_ARTICLE_LIST_PAGINATION_WINDOW_SIZE
);
final
int
windowSize
=
preference
.
optInt
(
Option
.
ID_C_ARTICLE_LIST_PAGINATION_WINDOW_SIZE
);
final
List
<
Integer
>
pageNums
=
Paginator
.
paginate
(
currentPageNum
,
pageSize
,
pageCount
,
windowSize
);
final
List
<
Integer
>
pageNums
=
Paginator
.
paginate
(
currentPageNum
,
pageSize
,
pageCount
,
windowSize
);
pagination
.
put
(
Pagination
.
PAGINATION_PAGE_COUNT
,
pageCount
);
pagination
.
put
(
Pagination
.
PAGINATION_PAGE_COUNT
,
pageCount
);
pagination
.
put
(
Pagination
.
PAGINATION_PAGE_NUMS
,
(
Object
)
pageNums
);
pagination
.
put
(
Pagination
.
PAGINATION_PAGE_NUMS
,
(
Object
)
pageNums
);
pagination
.
put
(
Pagination
.
PAGINATION_RECORD_COUNT
,
tagArticlesCount
);
query
=
new
Query
().
setFilter
(
new
PropertyFilter
(
Keys
.
OBJECT_ID
,
FilterOperator
.
IN
,
articleIds
)).
final
Set
<
String
>
articleIds
=
new
HashSet
<>();
for
(
int
i
=
0
;
i
<
tagArticles
.
size
();
i
++)
{
articleIds
.
add
(
tagArticles
.
get
(
i
).
optString
(
Keys
.
OBJECT_ID
));
}
final
Query
query
=
new
Query
().
setFilter
(
new
PropertyFilter
(
Keys
.
OBJECT_ID
,
FilterOperator
.
IN
,
articleIds
)).
setPageCount
(
1
).
addSort
(
Keys
.
OBJECT_ID
,
SortDirection
.
DESCENDING
);
setPageCount
(
1
).
addSort
(
Keys
.
OBJECT_ID
,
SortDirection
.
DESCENDING
);
final
List
<
JSONObject
>
articles
=
new
ArrayList
<>();
final
List
<
JSONObject
>
articles
=
new
ArrayList
<>();
final
JSONArray
articleArray
=
articleRepository
.
get
(
query
).
optJSONArray
(
Keys
.
RESULTS
);
final
JSONArray
articleArray
=
articleRepository
.
get
(
query
).
optJSONArray
(
Keys
.
RESULTS
);
for
(
int
i
=
0
;
i
<
articleArray
.
length
();
i
++)
{
for
(
int
i
=
0
;
i
<
articleArray
.
length
();
i
++)
{
final
JSONObject
article
=
articleArray
.
optJSONObject
(
i
);
final
JSONObject
article
=
articleArray
.
optJSONObject
(
i
);
if
(
Article
.
ARTICLE_STATUS_C_PUBLISHED
!=
article
.
optInt
(
Article
.
ARTICLE_STATUS
))
{
// Skips the unpublished article
continue
;
}
article
.
put
(
Article
.
ARTICLE_CREATE_TIME
,
article
.
optLong
(
Article
.
ARTICLE_CREATED
));
article
.
put
(
Article
.
ARTICLE_CREATE_TIME
,
article
.
optLong
(
Article
.
ARTICLE_CREATED
));
article
.
put
(
Article
.
ARTICLE_T_CREATE_DATE
,
new
Date
(
article
.
optLong
(
Article
.
ARTICLE_CREATED
)));
article
.
put
(
Article
.
ARTICLE_T_CREATE_DATE
,
new
Date
(
article
.
optLong
(
Article
.
ARTICLE_CREATED
)));
article
.
put
(
Article
.
ARTICLE_T_UPDATE_DATE
,
new
Date
(
article
.
optLong
(
Article
.
ARTICLE_UPDATED
)));
article
.
put
(
Article
.
ARTICLE_T_UPDATE_DATE
,
new
Date
(
article
.
optLong
(
Article
.
ARTICLE_UPDATED
)));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment