Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
midjourney-proxy
Overview
Overview
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
徐少华
midjourney-proxy
Commits
eec136d6
Commit
eec136d6
authored
Aug 24, 2020
by
郑永强
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:[1003410] 首页数据概览-二维码数据统计
parent
321174af
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
275 additions
and
9 deletions
+275
-9
BookQrcodeStatisticsDTO.java
...ava/com/pcloud/book/book/dto/BookQrcodeStatisticsDTO.java
+26
-0
QrcodeStatisticsDTO.java
...in/java/com/pcloud/book/book/dto/QrcodeStatisticsDTO.java
+18
-0
BookGroupServeCountDTO.java
...ava/com/pcloud/book/group/dto/BookGroupServeCountDTO.java
+3
-0
BookAdviserBiz.java
...rc/main/java/com/pcloud/book/book/biz/BookAdviserBiz.java
+12
-0
BookAdviserBizImpl.java
...ava/com/pcloud/book/book/biz/impl/BookAdviserBizImpl.java
+170
-9
BookAdviserFacade.java
...n/java/com/pcloud/book/book/facade/BookAdviserFacade.java
+5
-0
BookAdviserFacadeImpl.java
...m/pcloud/book/book/facade/impl/BookAdviserFacadeImpl.java
+19
-0
ChannelConsr.java
...main/java/com/pcloud/book/consumer/user/ChannelConsr.java
+16
-0
ThreadPoolUtils.java
...ain/java/com/pcloud/book/util/common/ThreadPoolUtils.java
+6
-0
No files found.
pcloud-facade-book/src/main/java/com/pcloud/book/book/dto/BookQrcodeStatisticsDTO.java
0 → 100644
View file @
eec136d6
package
com
.
pcloud
.
book
.
book
.
dto
;
import
com.google.common.collect.Lists
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
BookQrcodeStatisticsDTO
{
private
String
bookChannelAdviserId
;
@ApiModelProperty
(
"图书标识"
)
private
Long
bookId
;
@ApiModelProperty
(
"运营标识"
)
private
Long
channelId
;
@ApiModelProperty
(
"编辑id"
)
private
Long
adviserId
;
@ApiModelProperty
(
"二维码统计详情"
)
private
List
<
QrcodeStatisticsDTO
>
qrcodeSceneDtoList
=
Lists
.
newArrayList
();
}
pcloud-facade-book/src/main/java/com/pcloud/book/book/dto/QrcodeStatisticsDTO.java
0 → 100644
View file @
eec136d6
package
com
.
pcloud
.
book
.
book
.
dto
;
import
lombok.Data
;
@Data
public
class
QrcodeStatisticsDTO
{
private
Long
id
;
private
String
qrcodeName
;
private
String
qrcodeUrl
;
private
Long
counts
;
private
Long
browserCounts
;
}
pcloud-facade-book/src/main/java/com/pcloud/book/group/dto/BookGroupServeCountDTO.java
View file @
eec136d6
package
com
.
pcloud
.
book
.
group
.
dto
;
import
com.google.common.collect.Lists
;
import
com.pcloud.common.dto.BaseDto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @Author zhuyajie
* @Description 书刊资源数量
...
...
pcloud-service-book/src/main/java/com/pcloud/book/book/biz/BookAdviserBiz.java
View file @
eec136d6
...
...
@@ -240,4 +240,16 @@ public interface BookAdviserBiz {
* * @param null
*/
Integer
getBookCountByAgentAndTime
(
Long
agentId
,
String
startTime
,
String
endTime
);
/**
* 获取书刊二维码统计数据
* @param adviserIds
* @param bookIds
* @param channelIds
* @return
*/
Map
<
String
,
BookQrcodeStatisticsDTO
>
mapBookQrcodeStatistics
(
List
<
Long
>
adviserIds
,
List
<
Long
>
bookIds
,
List
<
Long
>
channelIds
);
PageBeanNew
<
QrcodeStatisticsDTO
>
getBookQrcodeStatistics
(
Long
adviserId
,
Long
bookId
,
Long
channelId
,
Integer
currentPage
,
Integer
numPerPage
);
}
pcloud-service-book/src/main/java/com/pcloud/book/book/biz/impl/BookAdviserBizImpl.java
View file @
eec136d6
...
...
@@ -2,18 +2,26 @@ package com.pcloud.book.book.biz.impl;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ExecutionException
;
import
java.util.concurrent.Future
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeoutException
;
import
java.util.stream.Collectors
;
import
com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto
;
import
com.pcloud.book.book.biz.BookFundBiz
;
import
com.pcloud.book.book.dto.BookDataStatisticsDTO
;
import
com.pcloud.book.book.dto.BookQrcodeStatisticsDTO
;
import
com.pcloud.book.book.dto.BookResourceStatisticsDTO
;
import
com.pcloud.book.book.dto.BookRightsSettingDTO
;
import
com.pcloud.book.book.dto.QrcodeStatisticsDTO
;
import
com.pcloud.book.book.vo.QrCodeVO
;
import
com.pcloud.book.book.vo.request.UpdateBookRobotProcessDto
;
import
com.pcloud.book.consumer.analysisengine.BrowseRecordConsr
;
...
...
@@ -26,10 +34,12 @@ import com.pcloud.book.rightsSetting.dao.RightsSettingDAO;
import
com.pcloud.book.rightsSetting.dto.RightsSettingDto
;
import
com.pcloud.book.es.biz.ESBookAndAdviserBiz
;
import
com.pcloud.book.util.common.ThreadPoolUtils
;
import
com.pcloud.channelcenter.base.exceptions.ChannelBizException
;
import
com.pcloud.channelcenter.qrcode.dto.QrcodeMessageDTO
;
import
com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto
;
import
com.pcloud.common.utils.NumberUtil
;
import
com.pcloud.wechatgroup.group.dto.GroupUserCountDTO
;
import
org.apache.commons.collections.MapUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -1007,10 +1017,41 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
if
(
CollectionUtils
.
isEmpty
(
adviserIds
)
||
CollectionUtils
.
isEmpty
(
bookIds
)
||
CollectionUtils
.
isEmpty
(
channelIds
)){
throw
new
ChannelBizException
(
ChannelBizException
.
FILED_NULL
,
"adviserIds、bookIds、channelIds 参数为空!"
);
}
Map
<
String
,
QrcodeMessageDTO
>
mapQrcodeMessage
=
channelConsr
.
mapResourceCount
(
adviserIds
,
bookIds
,
channelIds
);
Map
<
String
,
BookGroupServeCountDTO
>
mapBookGroupServeCount
=
bookGroupBiz
.
mapBookGroupServeCount
(
adviserIds
,
bookIds
,
channelIds
);
Map
<
String
,
BookGroupServeCountDTO
>
mapBookGroupQrcodeServeCount
=
bookGroupBiz
.
mapBookGroupQrcodeServeCount
(
adviserIds
,
bookIds
,
channelIds
,
JoinGroupTypeEnum
.
GROUP_QRCODE
.
getCode
());
Map
<
String
,
BookGroupServeCountDTO
>
mapBookGroupRobotServeCount
=
bookGroupBiz
.
mapBookGroupQrcodeServeCount
(
adviserIds
,
bookIds
,
channelIds
,
JoinGroupTypeEnum
.
ROBOT
.
getCode
());
Future
<
Map
<
String
,
QrcodeMessageDTO
>>
mapQrcodeMessageSubmit
=
ThreadPoolUtils
.
OTHER_POOL
.
submit
(()
->
channelConsr
.
mapResourceCount
(
adviserIds
,
bookIds
,
channelIds
));
Future
<
Map
<
String
,
BookGroupServeCountDTO
>>
mapBookGroupServeCountSubmit
=
ThreadPoolUtils
.
OTHER_POOL
.
submit
(()
->
bookGroupBiz
.
mapBookGroupServeCount
(
adviserIds
,
bookIds
,
channelIds
));
Future
<
Map
<
String
,
BookGroupServeCountDTO
>>
mapBookGroupQrcodeSubmit
=
ThreadPoolUtils
.
OTHER_POOL
.
submit
(()
->
bookGroupBiz
.
mapBookGroupQrcodeServeCount
(
adviserIds
,
bookIds
,
channelIds
,
JoinGroupTypeEnum
.
GROUP_QRCODE
.
getCode
()));
Future
<
Map
<
String
,
BookGroupServeCountDTO
>>
mapBookGroupRobotServeCountSubmit
=
ThreadPoolUtils
.
OTHER_POOL
.
submit
(()->
bookGroupBiz
.
mapBookGroupQrcodeServeCount
(
adviserIds
,
bookIds
,
channelIds
,
JoinGroupTypeEnum
.
ROBOT
.
getCode
()));
Future
<
Map
<
Long
,
RightsSettingDto
>>
rightsMapSubmit
=
ThreadPoolUtils
.
OTHER_POOL
.
submit
(()->
rightsSettingDAO
.
listByBookIds
(
bookIds
));
Map
<
String
,
QrcodeMessageDTO
>
mapQrcodeMessage
=
new
HashMap
<>();
Map
<
String
,
BookGroupServeCountDTO
>
mapBookGroupServeCount
=
new
HashMap
<>();
Map
<
String
,
BookGroupServeCountDTO
>
mapBookGroupQrcodeServeCount
=
new
HashMap
<>();
Map
<
String
,
BookGroupServeCountDTO
>
mapBookGroupRobotServeCount
=
new
HashMap
<>();
Map
<
Long
,
RightsSettingDto
>
rightsMap
=
new
HashMap
<>();
try
{
mapQrcodeMessage
=
mapQrcodeMessageSubmit
.
get
(
ThreadPoolUtils
.
REMOTE_TIME_OUT
,
TimeUnit
.
SECONDS
);
}
catch
(
InterruptedException
|
ExecutionException
|
TimeoutException
e
)
{
LOGGER
.
error
(
"获取二维码信息错误: {}=="
,
e
);
}
try
{
mapBookGroupServeCount
=
mapBookGroupServeCountSubmit
.
get
();
}
catch
(
InterruptedException
|
ExecutionException
e
)
{
LOGGER
.
error
(
"获取资源服务数量错误: {}=="
,
e
);
}
try
{
mapBookGroupQrcodeServeCount
=
mapBookGroupQrcodeSubmit
.
get
();
}
catch
(
InterruptedException
|
ExecutionException
e
)
{
LOGGER
.
error
(
"批量获取书下的资源数错误: {}=="
,
e
);
}
try
{
mapBookGroupRobotServeCount
=
mapBookGroupRobotServeCountSubmit
.
get
();
}
catch
(
InterruptedException
|
ExecutionException
e
)
{
LOGGER
.
error
(
"批量获取书下的资源数小睿错误: {}=="
,
e
);
}
try
{
rightsMap
=
rightsMapSubmit
.
get
();
}
catch
(
InterruptedException
|
ExecutionException
e
)
{
LOGGER
.
error
(
"获取权益数量错误: {}=="
,
e
);
}
if
(
mapQrcodeMessage
==
null
||
mapQrcodeMessage
.
isEmpty
()){
mapQrcodeMessage
=
new
HashMap
<>();
}
...
...
@@ -1029,8 +1070,8 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
bookChannelAdviserIds
.
addAll
(
mapBookGroupRobotServeCount
.
keySet
().
stream
().
collect
(
Collectors
.
toList
()));
bookChannelAdviserIds
=
bookChannelAdviserIds
.
stream
().
distinct
().
collect
(
Collectors
.
toList
());
// 处理权益数
Map
<
Long
,
RightsSettingDto
>
rightsMap
=
rightsSettingDAO
.
listByBookIds
(
bookIds
);
if
(
rightsMap
!=
null
&&
!
rightsMap
.
isEmpty
()){
for
(
BookGroupServeCountDTO
bookGroupServeCountDTO
:
mapBookGroupServeCount
.
values
())
{
if
(!
JoinGroupTypeEnum
.
XIAORUI
.
getCode
().
equals
(
bookGroupServeCountDTO
.
getJoinGroupType
())){
...
...
@@ -1113,16 +1154,40 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
@Override
public
Map
<
String
,
BookDataStatisticsDTO
>
mapBookDataStatistics
(
List
<
Long
>
adviserIds
,
List
<
Long
>
bookIds
,
List
<
Long
>
channelIds
)
{
if
(
CollectionUtils
.
isEmpty
(
adviserIds
)
||
CollectionUtils
.
isEmpty
(
bookIds
)
||
CollectionUtils
.
isEmpty
(
channelIds
)){
throw
new
ChannelBizException
(
ChannelBizException
.
FILED_NULL
,
"adviserIds、bookIds、channelIds 参数为空!"
);
}
Map
<
String
,
BookDataStatisticsDTO
>
resultMap
=
new
HashMap
<>();
BookDataStatisticsDTO
bookDataStatisticsDTO
;
// 获取配置了书刊权益的书
Map
<
Long
,
RightsSettingDto
>
rightsMap
=
rightsSettingBiz
.
listByBookIds
(
bookIds
);
Future
<
Map
<
Long
,
RightsSettingDto
>>
rightsMapSubmit
=
ThreadPoolUtils
.
OTHER_THREAD_POOL
.
submit
(()
->
rightsSettingBiz
.
listByBookIds
(
bookIds
));
Future
<
Map
<
String
,
BrowseCacheRecordDto
>>
bookScanAndUvSubmit
=
ThreadPoolUtils
.
OTHER_THREAD_POOL
.
submit
(()
->
browseRecordConsr
.
getBookScanAndUv
(
adviserIds
,
channelIds
,
bookIds
));
Map
<
Long
,
RightsSettingDto
>
rightsMap
=
new
HashMap
<>();
// 获取现代纸书统计数据
Map
<
String
,
BrowseCacheRecordDto
>
bookScanAndUv
=
new
HashMap
<>();
try
{
rightsMap
=
rightsMapSubmit
.
get
();
}
catch
(
InterruptedException
|
ExecutionException
e
)
{
LOGGER
.
error
(
"获取配置了书刊权益的书错误: {}=="
,
e
);
}
try
{
bookScanAndUv
=
bookScanAndUvSubmit
.
get
(
ThreadPoolUtils
.
REMOTE_TIME_OUT
,
TimeUnit
.
SECONDS
);
}
catch
(
InterruptedException
|
ExecutionException
|
TimeoutException
e
)
{
LOGGER
.
error
(
"获取现代纸书统计数据错误: {}=="
,
e
);
}
// 根据条件筛选出社群书数据
List
<
BookGroupDTO
>
bookGroupList
=
bookGroupDao
.
getDTOByBookIdsAdviserIdsChannelIds
(
bookIds
,
adviserIds
,
channelIds
);
if
(!
CollectionUtils
.
isEmpty
(
bookGroupList
)){
List
<
Long
>
bookGroupIds
=
bookGroupList
.
stream
().
map
(
x
->
x
.
getId
()).
collect
(
Collectors
.
toList
());
Map
<
Long
,
GroupUserCountDTO
>
scanCountByGroup
=
wechatGroupConsr
.
getScanCountByGroup
(
bookGroupIds
,
null
);
Future
<
Map
<
Long
,
GroupUserCountDTO
>>
scanCountByGroupSubmit
=
ThreadPoolUtils
.
OTHER_THREAD_POOL
.
submit
(()
->
wechatGroupConsr
.
getScanCountByGroup
(
bookGroupIds
,
null
));
Map
<
Long
,
GroupUserCountDTO
>
scanCountByGroup
=
new
HashMap
<>();
try
{
scanCountByGroup
=
scanCountByGroupSubmit
.
get
(
ThreadPoolUtils
.
REMOTE_TIME_OUT
,
TimeUnit
.
SECONDS
);
}
catch
(
InterruptedException
|
ExecutionException
|
TimeoutException
e
)
{
LOGGER
.
error
(
"获取社群码扫码次数/人数错误: {}=="
,
e
);
}
for
(
BookGroupDTO
bookGroupDTO
:
bookGroupList
)
{
GroupUserCountDTO
groupUserCountDTO
=
scanCountByGroup
.
get
(
bookGroupDTO
.
getId
());
...
...
@@ -1142,8 +1207,6 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
resultMap
.
put
(
bookDataStatisticsDTO
.
getBookChannelAdviserId
(),
bookDataStatisticsDTO
);
}
}
// 获取现代纸书统计数据
Map
<
String
,
BrowseCacheRecordDto
>
bookScanAndUv
=
browseRecordConsr
.
getBookScanAndUv
(
adviserIds
,
channelIds
,
bookIds
);
// 综合
for
(
BrowseCacheRecordDto
browseCacheRecordDto
:
bookScanAndUv
.
values
())
{
String
bookChannelAdviserId
=
browseCacheRecordDto
.
getJournalId
()
+
"_"
+
browseCacheRecordDto
.
getChannelId
()
+
"_"
+
browseCacheRecordDto
.
getAdviserId
();
...
...
@@ -1179,4 +1242,102 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
}
return
bookCount
;
}
@Override
public
Map
<
String
,
BookQrcodeStatisticsDTO
>
mapBookQrcodeStatistics
(
List
<
Long
>
adviserIds
,
List
<
Long
>
bookIds
,
List
<
Long
>
channelIds
)
{
Map
<
String
,
BookQrcodeStatisticsDTO
>
resultMap
=
new
HashMap
<>();
BookQrcodeStatisticsDTO
bookQrcodeStatisticsDTO
;
// 社群书统计
List
<
BookGroupDTO
>
bookGroupList
=
bookGroupDao
.
getDTOByBookIdsAdviserIdsChannelIds
(
bookIds
,
adviserIds
,
channelIds
);
if
(!
CollectionUtils
.
isEmpty
(
bookGroupList
)){
List
<
Long
>
bookGroupIds
=
bookGroupList
.
stream
().
map
(
x
->
x
.
getId
()).
collect
(
Collectors
.
toList
());
Map
<
Long
,
GroupUserCountDTO
>
scanCountByGroup
=
wechatGroupConsr
.
getScanCountByGroup
(
bookGroupIds
,
null
);
for
(
BookGroupDTO
bookGroupDTO
:
bookGroupList
)
{
GroupUserCountDTO
groupUserCountDTO
=
scanCountByGroup
.
get
(
bookGroupDTO
.
getId
());
bookQrcodeStatisticsDTO
=
new
BookQrcodeStatisticsDTO
();
bookQrcodeStatisticsDTO
.
setBookChannelAdviserId
(
bookGroupDTO
.
getBookId
()+
"_"
+
bookGroupDTO
.
getChannelId
()+
"_"
+
bookGroupDTO
.
getCreateUser
());
bookQrcodeStatisticsDTO
.
setAdviserId
(
bookGroupDTO
.
getCreateUser
());
bookQrcodeStatisticsDTO
.
setBookId
(
bookGroupDTO
.
getBookId
());
bookQrcodeStatisticsDTO
.
setChannelId
(
bookGroupDTO
.
getChannelId
());
QrcodeStatisticsDTO
qrcodeStatisticsDTO
=
new
QrcodeStatisticsDTO
();
qrcodeStatisticsDTO
.
setId
(
bookGroupDTO
.
getId
());
qrcodeStatisticsDTO
.
setQrcodeName
(
bookGroupDTO
.
getGroupQrcodeName
());
qrcodeStatisticsDTO
.
setQrcodeUrl
(
bookGroupDTO
.
getGroupQrcodeUrl
());
qrcodeStatisticsDTO
.
setCounts
(
0L
);
qrcodeStatisticsDTO
.
setBrowserCounts
(
0L
);
if
(
groupUserCountDTO
!=
null
){
qrcodeStatisticsDTO
.
setCounts
(
groupUserCountDTO
.
getCount
().
longValue
());
qrcodeStatisticsDTO
.
setBrowserCounts
(
groupUserCountDTO
.
getUserCount
().
longValue
());
}
bookQrcodeStatisticsDTO
.
getQrcodeSceneDtoList
().
add
(
qrcodeStatisticsDTO
);
resultMap
.
put
(
bookQrcodeStatisticsDTO
.
getBookChannelAdviserId
(),
bookQrcodeStatisticsDTO
);
}
}
// 现代纸书统计
List
<
QrcodeSceneDto
>
qrcodeSceneDtos
=
channelConsr
.
listQrcodeScene
(
adviserIds
,
bookIds
,
channelIds
);
if
(
CollectionUtils
.
isEmpty
(
qrcodeSceneDtos
)){
qrcodeSceneDtos
=
Lists
.
newArrayList
();
}
String
bookChannelAdviserId
;
for
(
QrcodeSceneDto
qrcodeSceneDto
:
qrcodeSceneDtos
)
{
bookChannelAdviserId
=
qrcodeSceneDto
.
getAdviserBookId
()
+
"_"
+
qrcodeSceneDto
.
getChannelPartyId
()
+
"_"
+
qrcodeSceneDto
.
getAdviserId
();
bookQrcodeStatisticsDTO
=
resultMap
.
get
(
bookChannelAdviserId
);
if
(
bookQrcodeStatisticsDTO
==
null
){
bookQrcodeStatisticsDTO
=
new
BookQrcodeStatisticsDTO
();
bookQrcodeStatisticsDTO
.
setBookChannelAdviserId
(
bookChannelAdviserId
);
bookQrcodeStatisticsDTO
.
setAdviserId
(
qrcodeSceneDto
.
getAdviserId
());
bookQrcodeStatisticsDTO
.
setBookId
(
qrcodeSceneDto
.
getAdviserBookId
());
bookQrcodeStatisticsDTO
.
setChannelId
(
qrcodeSceneDto
.
getChannelPartyId
());
resultMap
.
put
(
bookQrcodeStatisticsDTO
.
getBookChannelAdviserId
(),
bookQrcodeStatisticsDTO
);
}
QrcodeStatisticsDTO
qrcodeStatisticsDTO
=
new
QrcodeStatisticsDTO
();
qrcodeStatisticsDTO
.
setId
(
qrcodeSceneDto
.
getSceneId
());
qrcodeStatisticsDTO
.
setQrcodeName
(
qrcodeSceneDto
.
getSceneName
());
qrcodeStatisticsDTO
.
setQrcodeUrl
(
qrcodeSceneDto
.
getQrcodeUrl
());
qrcodeStatisticsDTO
.
setCounts
(
qrcodeSceneDto
.
getCounts
());
qrcodeStatisticsDTO
.
setBrowserCounts
(
qrcodeSceneDto
.
getBrowserCounts
());
bookQrcodeStatisticsDTO
.
getQrcodeSceneDtoList
().
add
(
qrcodeStatisticsDTO
);
}
// 筛选出疑似未印刷的二维码(扫码人数<=20 || 扫码次数<=40)
Iterator
<
BookQrcodeStatisticsDTO
>
iterator
=
resultMap
.
values
().
iterator
();
while
(
iterator
.
hasNext
())
{
BookQrcodeStatisticsDTO
item
=
iterator
.
next
();
for
(
int
i
=
item
.
getQrcodeSceneDtoList
().
size
()
-
1
;
i
>=
0
;
i
--)
{
QrcodeStatisticsDTO
qrcodeStatisticsDTO
=
item
.
getQrcodeSceneDtoList
().
get
(
i
);
if
(
qrcodeStatisticsDTO
.
getBrowserCounts
()
<=
20
||
qrcodeStatisticsDTO
.
getCounts
()
<=
40
){
continue
;
}
item
.
getQrcodeSceneDtoList
().
remove
(
qrcodeStatisticsDTO
);
if
(
item
.
getQrcodeSceneDtoList
().
size
()
==
0
){
iterator
.
remove
();
resultMap
.
remove
(
item
);
}
}
}
return
resultMap
;
}
@Override
public
PageBeanNew
<
QrcodeStatisticsDTO
>
getBookQrcodeStatistics
(
Long
adviserId
,
Long
bookId
,
Long
channelId
,
Integer
currentPage
,
Integer
numPerPage
)
{
if
(!
NumberUtil
.
isNumber
(
adviserId
)
||
!
NumberUtil
.
isNumber
(
bookId
)
||
!
NumberUtil
.
isNumber
(
channelId
)){
throw
new
BizException
(
BizException
.
PARAM_IS_NULL
.
getCode
(),
"参数不能为空"
);
}
Map
<
String
,
BookQrcodeStatisticsDTO
>
bookQrcodeStatisticsDTOMap
=
this
.
mapBookQrcodeStatistics
(
Lists
.
newArrayList
(
adviserId
),
Lists
.
newArrayList
(
bookId
),
Lists
.
newArrayList
(
channelId
));
if
(
MapUtils
.
isEmpty
(
bookQrcodeStatisticsDTOMap
)){
return
new
PageBeanNew
<>(
currentPage
,
numPerPage
,
0
,
Lists
.
newArrayList
());
}
String
bookChannelAdviserId
=
bookId
+
"_"
+
channelId
+
"_"
+
adviserId
;
BookQrcodeStatisticsDTO
bookQrcodeStatisticsDTO
=
bookQrcodeStatisticsDTOMap
.
get
(
bookChannelAdviserId
);
List
<
QrcodeStatisticsDTO
>
qrcodeSceneDtoList
=
bookQrcodeStatisticsDTO
.
getQrcodeSceneDtoList
();
if
(
CollectionUtils
.
isEmpty
(
qrcodeSceneDtoList
)){
return
new
PageBeanNew
<>(
currentPage
,
numPerPage
,
0
,
Lists
.
newArrayList
());
}
return
new
PageBeanNew
(
currentPage
,
numPerPage
,
qrcodeSceneDtoList
.
size
(),
qrcodeSceneDtoList
.
stream
().
skip
(
currentPage
*
numPerPage
).
limit
(
numPerPage
).
collect
(
Collectors
.
toList
()));
}
}
pcloud-service-book/src/main/java/com/pcloud/book/book/facade/BookAdviserFacade.java
View file @
eec136d6
...
...
@@ -7,6 +7,7 @@ import com.pcloud.book.base.dto.CountDto;
import
com.pcloud.book.book.dto.BookAdviserDto
;
import
com.pcloud.book.book.dto.BookCountDto
;
import
com.pcloud.book.book.dto.BookDataStatisticsDTO
;
import
com.pcloud.book.book.dto.BookQrcodeStatisticsDTO
;
import
com.pcloud.book.book.dto.BookResourceStatisticsDTO
;
import
com.pcloud.book.book.dto.MapResourceTotalCountDTO
;
import
com.pcloud.book.book.entity.BookAdviser
;
...
...
@@ -228,4 +229,8 @@ public interface BookAdviserFacade {
@ApiOperation
(
"获取书刊统计数据(用户数、扫码量)"
)
@PostMapping
(
"mapBookDataStatistics"
)
ResponseDto
<
Map
<
String
,
BookDataStatisticsDTO
>>
mapBookDataStatistics
(
@RequestBody
MapResourceTotalCountDTO
mapResourceTotalCountDTO
);
@ApiOperation
(
"获取书刊二维码统计数据"
)
@PostMapping
(
"mapBookQrcodeStatistics"
)
ResponseDto
<
Map
<
String
,
BookQrcodeStatisticsDTO
>>
mapBookQrcodeStatistics
(
@RequestBody
MapResourceTotalCountDTO
mapResourceTotalCountDTO
);
}
pcloud-service-book/src/main/java/com/pcloud/book/book/facade/impl/BookAdviserFacadeImpl.java
View file @
eec136d6
...
...
@@ -8,11 +8,14 @@ import java.util.List;
import
java.util.Map
;
import
com.pcloud.book.book.dto.BookDataStatisticsDTO
;
import
com.pcloud.book.book.dto.BookQrcodeStatisticsDTO
;
import
com.pcloud.book.book.dto.BookResourceStatisticsDTO
;
import
com.pcloud.book.book.dto.MapResourceTotalCountDTO
;
import
com.pcloud.book.book.dto.QrcodeStatisticsDTO
;
import
com.pcloud.book.book.vo.QrCodeVO
;
import
com.pcloud.channelcenter.qrcode.entity.QrcodeScene
;
import
com.pcloud.common.page.PageBeanNew
;
import
io.swagger.annotations.ApiModelProperty
;
import
org.codehaus.jackson.JsonParseException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
...
...
@@ -224,4 +227,20 @@ public class BookAdviserFacadeImpl implements BookAdviserFacade {
public
ResponseDto
<
Map
<
String
,
BookDataStatisticsDTO
>>
mapBookDataStatistics
(
@RequestBody
MapResourceTotalCountDTO
mapResourceTotalCountDTO
)
{
return
new
ResponseDto
<>(
bookAdviserBiz
.
mapBookDataStatistics
(
mapResourceTotalCountDTO
.
getAdviserIds
(),
mapResourceTotalCountDTO
.
getBookIds
(),
mapResourceTotalCountDTO
.
getChannelIds
()));
}
@Override
public
ResponseDto
<
Map
<
String
,
BookQrcodeStatisticsDTO
>>
mapBookQrcodeStatistics
(
@RequestBody
MapResourceTotalCountDTO
mapResourceTotalCountDTO
){
return
new
ResponseDto
<>(
bookAdviserBiz
.
mapBookQrcodeStatistics
(
mapResourceTotalCountDTO
.
getAdviserIds
(),
mapResourceTotalCountDTO
.
getBookIds
(),
mapResourceTotalCountDTO
.
getChannelIds
()));
}
@ApiModelProperty
(
"分页获取疑似未印刷二维码"
)
@GetMapping
(
"getBookQrcodeStatistics"
)
public
ResponseDto
<
PageBeanNew
<
QrcodeStatisticsDTO
>>
getBookQrcodeStatistics
(
@RequestParam
(
"adviserId"
)
Long
adviserId
,
@RequestParam
(
"bookId"
)
Long
bookId
,
@RequestParam
(
"channelId"
)
Long
channelId
,
@RequestParam
(
"currentPage"
)
Integer
currentPage
,
@RequestParam
(
"numPerPage"
)
Integer
numPerPage
){
return
new
ResponseDto
<>(
bookAdviserBiz
.
getBookQrcodeStatistics
(
adviserId
,
bookId
,
channelId
,
currentPage
,
numPerPage
));
}
}
pcloud-service-book/src/main/java/com/pcloud/book/consumer/user/ChannelConsr.java
View file @
eec136d6
...
...
@@ -6,6 +6,7 @@ package com.pcloud.book.consumer.user;
import
com.pcloud.channelcenter.base.exceptions.ChannelBizException
;
import
com.pcloud.channelcenter.qrcode.dto.MapResourceCountDTO
;
import
com.pcloud.channelcenter.qrcode.dto.QrcodeMessageDTO
;
import
com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto
;
import
com.pcloud.channelcenter.qrcode.service.QrcodeSceneService
;
import
com.pcloud.channelcenter.wechat.entity.AccountSetting
;
import
com.pcloud.channelcenter.wechat.service.AccountSettingService
;
...
...
@@ -216,4 +217,19 @@ public class ChannelConsr {
throw
new
ChannelBizException
(
ChannelBizException
.
PARAM_IS_NULL
,
"channelId 为空"
);
}
}
/**
* 批量获取现代纸书下所有的二维码
* @param adviserIds
* @param bookIds
* @param channelIds
* @return
*/
public
List
<
QrcodeSceneDto
>
listQrcodeScene
(
List
<
Long
>
adviserIds
,
List
<
Long
>
bookIds
,
List
<
Long
>
channelIds
)
{
MapResourceCountDTO
mapResourceCountDTO
=
new
MapResourceCountDTO
();
mapResourceCountDTO
.
setAdviserIds
(
adviserIds
);
mapResourceCountDTO
.
setBookIds
(
bookIds
);
mapResourceCountDTO
.
setChannelIds
(
channelIds
);
return
ResponseHandleUtil
.
parseList
(
qrcodeSceneService
.
listQrcodeScene
(
mapResourceCountDTO
),
QrcodeSceneDto
.
class
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/util/common/ThreadPoolUtils.java
View file @
eec136d6
...
...
@@ -10,6 +10,12 @@ import java.util.concurrent.TimeUnit;
public
class
ThreadPoolUtils
{
/**
* 远程调用超时时间(单位:秒)
*/
public
static
final
int
REMOTE_TIME_OUT
=
5
;
/**
* 异步导出线程池
*/
public
static
final
ExecutorService
EXPORT_THREAD_POOL
=
new
ThreadPoolExecutor
(
8
,
8
,
0L
,
TimeUnit
.
SECONDS
,
...
...
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