Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in
Toggle navigation
T
tanpu-community
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
探普后端
tanpu-community
Commits
5fbe7a74
Commit
5fbe7a74
authored
Feb 22, 2022
by
刘基明
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
讨论区
parent
314567f0
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
103 additions
and
16 deletions
+103
-16
ThemeSimpleQo.java
.../java/com/tanpu/community/api/beans/qo/ThemeSimpleQo.java
+4
-7
TopicController.java
.../java/com/tanpu/community/controller/TopicController.java
+2
-2
TopicManager.java
...c/main/java/com/tanpu/community/manager/TopicManager.java
+33
-2
ThemeService.java
...c/main/java/com/tanpu/community/service/ThemeService.java
+3
-3
TopicService.java
...c/main/java/com/tanpu/community/service/TopicService.java
+24
-0
ConvertUtil.java
...e/src/main/java/com/tanpu/community/util/ConvertUtil.java
+20
-0
TimeUtils.java
...ice/src/main/java/com/tanpu/community/util/TimeUtils.java
+17
-2
No files found.
community-api/src/main/java/com/tanpu/community/api/beans/qo/ThemeSimpleQo.java
View file @
5fbe7a74
...
@@ -4,8 +4,6 @@ import io.swagger.annotations.ApiModel;
...
@@ -4,8 +4,6 @@ import io.swagger.annotations.ApiModel;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
@Data
@Data
@ApiModel
(
"讨论区讨论"
)
@ApiModel
(
"讨论区讨论"
)
...
@@ -26,11 +24,10 @@ public class ThemeSimpleQo {
...
@@ -26,11 +24,10 @@ public class ThemeSimpleQo {
@ApiModelProperty
(
value
=
"文本内容"
)
@ApiModelProperty
(
value
=
"文本内容"
)
private
String
content
;
private
String
content
;
@ApiModelProperty
(
value
=
"评论时间"
)
@ApiModelProperty
(
value
=
"更新时间"
)
private
LocalDateTime
updateTime
;
private
String
updateTime
;
@ApiModelProperty
(
value
=
"评论时间,格式化"
)
private
String
commentTime
;
@ApiModelProperty
(
value
=
"发表时间-标准格式化"
)
public
String
formatTime
;
}
}
community-service/src/main/java/com/tanpu/community/controller/TopicController.java
View file @
5fbe7a74
...
@@ -50,7 +50,7 @@ public class TopicController {
...
@@ -50,7 +50,7 @@ public class TopicController {
@PostMapping
(
value
=
"/list"
)
@PostMapping
(
value
=
"/list"
)
@ApiOperation
(
"热门话题,含搜索"
)
@ApiOperation
(
"热门话题,含搜索"
)
public
CommonResp
<
Page
<
TopicRankQo
>>
getTopicList
(
@RequestBody
TopicSearchReq
req
)
{
public
CommonResp
<
Page
<
TopicRankQo
>>
getTopicList
(
@RequestBody
TopicSearchReq
req
)
{
return
CommonResp
.
success
(
topicManager
.
getAllTopic
Brief
Info
(
req
));
return
CommonResp
.
success
(
topicManager
.
getAllTopic
Rank
Info
(
req
));
}
}
@GetMapping
(
value
=
"/detailPage"
)
@GetMapping
(
value
=
"/detailPage"
)
...
@@ -76,7 +76,7 @@ public class TopicController {
...
@@ -76,7 +76,7 @@ public class TopicController {
}
}
@
GetMapping
(
value
=
"/link
/discussion"
)
@
PostMapping
(
value
=
"/rel
/discussion"
)
@ApiOperation
(
"资源关联讨论区,课程(基金)介绍用"
)
@ApiOperation
(
"资源关联讨论区,课程(基金)介绍用"
)
public
CommonResp
<
DiscussionAeraQo
>
getForum
(
@RequestBody
TopicDiscussionReq
req
)
{
public
CommonResp
<
DiscussionAeraQo
>
getForum
(
@RequestBody
TopicDiscussionReq
req
)
{
return
CommonResp
.
success
(
topicManager
.
getForum
(
req
));
return
CommonResp
.
success
(
topicManager
.
getForum
(
req
));
...
...
community-service/src/main/java/com/tanpu/community/manager/TopicManager.java
View file @
5fbe7a74
...
@@ -11,19 +11,25 @@ import com.tanpu.community.api.beans.req.page.Page;
...
@@ -11,19 +11,25 @@ import com.tanpu.community.api.beans.req.page.Page;
import
com.tanpu.community.api.beans.req.topic.FollowTopicReq
;
import
com.tanpu.community.api.beans.req.topic.FollowTopicReq
;
import
com.tanpu.community.api.beans.req.topic.TopicDiscussionReq
;
import
com.tanpu.community.api.beans.req.topic.TopicDiscussionReq
;
import
com.tanpu.community.api.beans.req.topic.TopicSearchReq
;
import
com.tanpu.community.api.beans.req.topic.TopicSearchReq
;
import
com.tanpu.community.api.beans.vo.feign.fatools.UserInfoResp
;
import
com.tanpu.community.api.enums.OperationTypeEnum
;
import
com.tanpu.community.api.enums.OperationTypeEnum
;
import
com.tanpu.community.api.enums.TopicSpecialPermissionEnum
;
import
com.tanpu.community.api.enums.TopicSpecialPermissionEnum
;
import
com.tanpu.community.dao.entity.community.ThemeEntity
;
import
com.tanpu.community.dao.entity.community.TopicEntity
;
import
com.tanpu.community.dao.entity.community.TopicEntity
;
import
com.tanpu.community.dao.mapper.community.TopicFollowRelMapper
;
import
com.tanpu.community.dao.mapper.community.TopicFollowRelMapper
;
import
com.tanpu.community.service.FeignService
;
import
com.tanpu.community.service.RankService
;
import
com.tanpu.community.service.RankService
;
import
com.tanpu.community.service.ThemeService
;
import
com.tanpu.community.service.ThemeService
;
import
com.tanpu.community.service.TopicService
;
import
com.tanpu.community.service.TopicService
;
import
com.tanpu.community.util.ConvertUtil
;
import
com.tanpu.community.util.PageUtils
;
import
com.tanpu.community.util.PageUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -45,6 +51,8 @@ public class TopicManager {
...
@@ -45,6 +51,8 @@ public class TopicManager {
TopicFollowRelMapper
topicFollowRelMapper
;
TopicFollowRelMapper
topicFollowRelMapper
;
@Resource
@Resource
private
ThemeService
themeService
;
private
ThemeService
themeService
;
@Resource
private
FeignService
feignService
;
// 首页-话题标签
// 首页-话题标签
public
List
<
TopicRankQo
>
getTop4TopicTitles
()
{
public
List
<
TopicRankQo
>
getTop4TopicTitles
()
{
...
@@ -52,7 +60,7 @@ public class TopicManager {
...
@@ -52,7 +60,7 @@ public class TopicManager {
}
}
// 话题列表
// 话题列表
public
Page
<
TopicRankQo
>
getAllTopic
Brief
Info
(
TopicSearchReq
req
)
{
public
Page
<
TopicRankQo
>
getAllTopic
Rank
Info
(
TopicSearchReq
req
)
{
// 全量排序,内存分页
// 全量排序,内存分页
List
<
TopicRankQo
>
topicList
=
rankService
.
getRankTopicList
(
req
.
getSearchKeyword
());
List
<
TopicRankQo
>
topicList
=
rankService
.
getRankTopicList
(
req
.
getSearchKeyword
());
Page
<
TopicRankQo
>
result
=
PageUtils
.
page
(
req
.
getPage
(),
topicList
);
Page
<
TopicRankQo
>
result
=
PageUtils
.
page
(
req
.
getPage
(),
topicList
);
...
@@ -169,7 +177,30 @@ public class TopicManager {
...
@@ -169,7 +177,30 @@ public class TopicManager {
}
}
public
DiscussionAeraQo
getForum
(
TopicDiscussionReq
req
)
{
public
DiscussionAeraQo
getForum
(
TopicDiscussionReq
req
)
{
return
null
;
TopicEntity
topicEntity
=
topicService
.
queryRelateTopic
(
req
);
// 没有关联话题,或者已下线
if
(
topicEntity
==
null
)
return
null
;
DiscussionAeraQo
result
=
new
DiscussionAeraQo
();
List
<
TopicRankQo
>
rankTopicList
=
rankService
.
getRankTopicList
(
topicEntity
.
getTopicTitle
());
List
<
TopicRankQo
>
collect
=
rankTopicList
.
stream
().
filter
(
o
->
o
.
getTopicId
().
equals
(
topicEntity
.
getTopicId
())).
collect
(
Collectors
.
toList
());
BeanUtils
.
copyProperties
(
collect
.
get
(
0
),
result
);
// 最新讨论
List
<
ThemeEntity
>
themeEntities
=
themeService
.
queryNewestByTopic
(
topicEntity
.
getTopicId
(),
0
,
3
,
Collections
.
emptyList
());
// 查询用户信息
List
<
String
>
authorIds
=
new
ArrayList
<>(
themeEntities
.
stream
().
map
(
ThemeEntity:
:
getAuthorId
).
collect
(
Collectors
.
toSet
()));
List
<
UserInfoResp
>
queryUsersListNew
=
feignService
.
getUserList
(
authorIds
);
Map
<
String
,
UserInfoResp
>
nameMap
=
queryUsersListNew
.
stream
().
collect
(
Collectors
.
toMap
(
UserInfoResp:
:
getUserId
,
o
->
o
));
result
.
setThemes
(
ConvertUtil
.
themeEntity2Discussion
(
themeEntities
,
nameMap
));
return
result
;
}
}
}
}
community-service/src/main/java/com/tanpu/community/service/ThemeService.java
View file @
5fbe7a74
...
@@ -160,13 +160,13 @@ public class ThemeService {
...
@@ -160,13 +160,13 @@ public class ThemeService {
* @param pageSize 查询数量
* @param pageSize 查询数量
* @return
* @return
*/
*/
public
List
<
ThemeEntity
>
queryNewestByTopic
(
String
topidId
,
Integer
page
No
,
Integer
pageSize
,
List
<
String
>
excludeIds
)
{
public
List
<
ThemeEntity
>
queryNewestByTopic
(
String
topidId
,
Integer
page
Start
,
Integer
pageSize
,
List
<
String
>
excludeIds
)
{
LambdaQueryWrapper
<
ThemeEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<
ThemeEntity
>()
LambdaQueryWrapper
<
ThemeEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<
ThemeEntity
>()
.
eq
(
ThemeEntity:
:
getTopicId
,
topidId
);
.
eq
(
ThemeEntity:
:
getTopicId
,
topidId
);
if
(!
excludeIds
.
isEmpty
())
{
if
(!
excludeIds
.
isEmpty
())
{
queryWrapper
.
notIn
(
ThemeEntity:
:
getThemeId
,
excludeIds
);
queryWrapper
.
notIn
(
ThemeEntity:
:
getThemeId
,
excludeIds
);
}
}
queryWrapper
.
last
(
"limit "
+
page
No
+
", "
+
pageSize
)
queryWrapper
.
last
(
"limit "
+
page
Start
+
", "
+
pageSize
)
.
orderByDesc
(
ThemeEntity:
:
getCreateTime
)
.
orderByDesc
(
ThemeEntity:
:
getCreateTime
)
.
eq
(
ThemeEntity:
:
getDeleteTag
,
DeleteTagEnum
.
NOT_DELETED
.
getCode
());
.
eq
(
ThemeEntity:
:
getDeleteTag
,
DeleteTagEnum
.
NOT_DELETED
.
getCode
());
return
themeMapper
.
selectList
(
queryWrapper
);
return
themeMapper
.
selectList
(
queryWrapper
);
...
@@ -313,7 +313,7 @@ public class ThemeService {
...
@@ -313,7 +313,7 @@ public class ThemeService {
if
(
themeEntity
!=
null
)
{
if
(
themeEntity
!=
null
)
{
ThemeQo
themeQo
=
ConvertUtil
.
themeEntityToQo
(
themeEntity
);
ThemeQo
themeQo
=
ConvertUtil
.
themeEntityToQo
(
themeEntity
);
topic
.
setLastTheme
(
getUserName
(
themeQo
.
getAuthorId
())
+
":"
+
themeQo
.
content
.
get
(
0
).
getValue
());
topic
.
setLastTheme
(
getUserName
(
themeQo
.
getAuthorId
())
+
":"
+
themeQo
.
content
.
get
(
0
).
getValue
());
topic
.
setLastThemeTime
(
TimeUtils
.
format
(
themeEntity
.
getUpdateTime
()));
topic
.
setLastThemeTime
(
TimeUtils
.
format
TopicListTime
(
themeEntity
.
getUpdateTime
()));
}
}
...
...
community-service/src/main/java/com/tanpu/community/service/TopicService.java
View file @
5fbe7a74
...
@@ -9,6 +9,7 @@ import com.tanpu.community.api.beans.qo.TopicAttachmentDetail;
...
@@ -9,6 +9,7 @@ import com.tanpu.community.api.beans.qo.TopicAttachmentDetail;
import
com.tanpu.community.api.beans.qo.TopicFollowQo
;
import
com.tanpu.community.api.beans.qo.TopicFollowQo
;
import
com.tanpu.community.api.beans.qo.TopicPageDetailQo
;
import
com.tanpu.community.api.beans.qo.TopicPageDetailQo
;
import
com.tanpu.community.api.beans.qo.TopicRankQo
;
import
com.tanpu.community.api.beans.qo.TopicRankQo
;
import
com.tanpu.community.api.beans.req.topic.TopicDiscussionReq
;
import
com.tanpu.community.api.beans.resp.CoursePackageSimpleResp
;
import
com.tanpu.community.api.beans.resp.CoursePackageSimpleResp
;
import
com.tanpu.community.api.beans.vo.feign.product.FundCompanyVO
;
import
com.tanpu.community.api.beans.vo.feign.product.FundCompanyVO
;
import
com.tanpu.community.api.beans.vo.feign.activity.OfflineActivitySimpleResp
;
import
com.tanpu.community.api.beans.vo.feign.activity.OfflineActivitySimpleResp
;
...
@@ -259,4 +260,27 @@ public class TopicService {
...
@@ -259,4 +260,27 @@ public class TopicService {
return
StringUtils
.
join
(
userNames
,
"、"
);
return
StringUtils
.
join
(
userNames
,
"、"
);
}
}
/**
* 查询资源关联的话题
* @param req
* @return
*/
public
TopicEntity
queryRelateTopic
(
TopicDiscussionReq
req
)
{
List
<
TopicSubjectEntity
>
topicSubjectEntities
=
topicSubjectMapper
.
selectList
(
new
LambdaQueryWrapper
<
TopicSubjectEntity
>()
.
eq
(
TopicSubjectEntity:
:
getSubjectId
,
req
.
getSubjectId
())
.
eq
(
TopicSubjectEntity:
:
getSubjectType
,
req
.
getSubjectType
())
.
orderByDesc
(
TopicSubjectEntity:
:
getCreateTime
));
if
(
CollectionUtils
.
isEmpty
(
topicSubjectEntities
)){
return
null
;
}
String
topicId
=
topicSubjectEntities
.
get
(
0
).
getTopicId
();
return
topicMapper
.
selectOne
(
new
LambdaQueryWrapper
<
TopicEntity
>()
.
eq
(
TopicEntity:
:
getTopicId
,
topicId
)
.
eq
(
TopicEntity:
:
getIsConceal
,
StatusEnum
.
FALSE
)
.
eq
(
TopicEntity:
:
getDeleteTag
,
StatusEnum
.
FALSE
));
}
}
}
community-service/src/main/java/com/tanpu/community/util/ConvertUtil.java
View file @
5fbe7a74
...
@@ -372,4 +372,24 @@ public class ConvertUtil {
...
@@ -372,4 +372,24 @@ public class ConvertUtil {
}).
collect
(
Collectors
.
toList
());
}).
collect
(
Collectors
.
toList
());
}
}
public
static
List
<
ThemeSimpleQo
>
themeEntity2Discussion
(
List
<
ThemeEntity
>
themeEntities
,
Map
<
String
,
UserInfoResp
>
nameMap
)
{
if
(
CollectionUtils
.
isEmpty
(
themeEntities
))
return
Collections
.
emptyList
();
return
themeEntities
.
stream
().
map
(
o
->{
ThemeQo
themeQo
=
themeEntityToQo
(
o
);
ThemeSimpleQo
themeSimpleQo
=
new
ThemeSimpleQo
();
BeanUtils
.
copyProperties
(
themeQo
,
themeSimpleQo
);
String
authorId
=
themeSimpleQo
.
getAuthorId
();
if
(
nameMap
.
containsKey
(
authorId
))
{
UserInfoResp
userInfo
=
nameMap
.
get
(
authorId
);
themeSimpleQo
.
setNickName
(
userInfo
.
getNickName
());
themeSimpleQo
.
setUserImg
(
userInfo
.
getHeadImageUrl
());
}
themeSimpleQo
.
setFormatTime
(
TimeUtils
.
calUpToNowTime
(
o
.
getUpdateTime
()));
themeSimpleQo
.
setContent
(
themeQo
.
getContent
().
get
(
0
).
getValue
());
return
themeSimpleQo
;
}).
collect
(
Collectors
.
toList
());
}
}
}
community-service/src/main/java/com/tanpu/community/util/TimeUtils.java
View file @
5fbe7a74
...
@@ -19,7 +19,9 @@ public class TimeUtils {
...
@@ -19,7 +19,9 @@ public class TimeUtils {
return
LocalDateTime
.
ofInstant
(
instant
,
zone
);
return
LocalDateTime
.
ofInstant
(
instant
,
zone
);
}
}
//计算迄今时间
/**
* 计算迄今时间
*/
public
static
String
calUpToNowTime
(
LocalDateTime
start
)
{
public
static
String
calUpToNowTime
(
LocalDateTime
start
)
{
Duration
between
=
Duration
.
between
(
start
,
LocalDateTime
.
now
());
Duration
between
=
Duration
.
between
(
start
,
LocalDateTime
.
now
());
long
duration
=
between
.
toMinutes
();
long
duration
=
between
.
toMinutes
();
...
@@ -37,7 +39,20 @@ public class TimeUtils {
...
@@ -37,7 +39,20 @@ public class TimeUtils {
return
start
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm"
));
return
start
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm"
));
}
}
//格式化时间
/**
* 格式化话题列表时间
*/
public
static
String
formatTopicListTime
(
LocalDateTime
start
)
{
Duration
between
=
Duration
.
between
(
start
,
LocalDateTime
.
now
());
long
duration
=
between
.
toMinutes
();
if
(
duration
<
60
*
24
)
{
return
start
.
format
(
DateTimeFormatter
.
ofPattern
(
" HH:mm"
));
}
else
if
(
duration
<
60
*
48
)
{
return
start
.
format
(
DateTimeFormatter
.
ofPattern
(
"昨天 HH:mm"
));
}
return
start
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy年MM月dd日"
));
}
public
static
String
format
(
LocalDateTime
start
)
{
public
static
String
format
(
LocalDateTime
start
)
{
return
start
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm"
));
return
start
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm"
));
}
}
...
...
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