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
2c4c9a24
Commit
2c4c9a24
authored
Oct 28, 2019
by
高鹏
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feat-1001647' into 'master'
社群书分析 See merge request rays/pcloud-book!210
parents
b833badf
fc235a94
Show whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
1509 additions
and
29 deletions
+1509
-29
.gitignore
.gitignore
+2
-0
BookGroupKeywordResourceDTO.java
...om/pcloud/book/group/dto/BookGroupKeywordResourceDTO.java
+45
-0
BookGroupService.java
.../java/com/pcloud/book/group/service/BookGroupService.java
+10
-0
BrowseRecordConsr.java
...cloud/book/consumer/analysisengine/BrowseRecordConsr.java
+13
-0
TradeConsr.java
.../main/java/com/pcloud/book/consumer/trade/TradeConsr.java
+30
-2
WechatGroupConsr.java
...om/pcloud/book/consumer/wechatgroup/WechatGroupConsr.java
+31
-0
BookGroupBiz.java
...src/main/java/com/pcloud/book/group/biz/BookGroupBiz.java
+25
-2
BookGroupBizImpl.java
...java/com/pcloud/book/group/biz/impl/BookGroupBizImpl.java
+130
-19
AppClickRecordDao.java
...ain/java/com/pcloud/book/group/dao/AppClickRecordDao.java
+1
-0
BookGroupCipherUserDao.java
...ava/com/pcloud/book/group/dao/BookGroupCipherUserDao.java
+6
-0
BookGroupClassifyDao.java
.../java/com/pcloud/book/group/dao/BookGroupClassifyDao.java
+11
-2
BookGroupDao.java
...src/main/java/com/pcloud/book/group/dao/BookGroupDao.java
+8
-0
GroupQrcodeDao.java
...c/main/java/com/pcloud/book/group/dao/GroupQrcodeDao.java
+7
-0
AppClickRecordDaoImpl.java
...com/pcloud/book/group/dao/impl/AppClickRecordDaoImpl.java
+2
-0
BookGroupCipherUserDaoImpl.java
...cloud/book/group/dao/impl/BookGroupCipherUserDaoImpl.java
+9
-0
BookGroupClassifyDaoImpl.java
.../pcloud/book/group/dao/impl/BookGroupClassifyDaoImpl.java
+10
-1
BookGroupDaoImpl.java
...java/com/pcloud/book/group/dao/impl/BookGroupDaoImpl.java
+6
-0
GroupQrcodeDaoImpl.java
...va/com/pcloud/book/group/dao/impl/GroupQrcodeDaoImpl.java
+4
-0
BookGroupFacade.java
...in/java/com/pcloud/book/group/facade/BookGroupFacade.java
+25
-1
BookGroupFacadeImpl.java
...om/pcloud/book/group/facade/impl/BookGroupFacadeImpl.java
+42
-1
BookGroupServiceImpl.java
.../pcloud/book/group/service/impl/BookGroupServiceImpl.java
+15
-1
GroupSet.java
...ook/src/main/java/com/pcloud/book/group/set/GroupSet.java
+284
-0
BookGroupAnalysisParam.java
...java/com/pcloud/book/group/vo/BookGroupAnalysisParam.java
+123
-0
BookGroupAnalysisVO.java
...in/java/com/pcloud/book/group/vo/BookGroupAnalysisVO.java
+419
-0
BookKeywordDao.java
...ain/java/com/pcloud/book/keywords/dao/BookKeywordDao.java
+18
-0
BookKeywordDaoImpl.java
...com/pcloud/book/keywords/dao/impl/BookKeywordDaoImpl.java
+17
-0
KeywordResourceDTO.java
...java/com/pcloud/book/keywords/dto/KeywordResourceDTO.java
+42
-0
AppClickRecord.xml
...e-book/src/main/resources/mapper/group/AppClickRecord.xml
+3
-0
BookGroupCipherUser.xml
...k/src/main/resources/mapper/group/BookGroupCipherUser.xml
+13
-0
BookGroupClassify.Mapper.xml
.../main/resources/mapper/group/BookGroupClassify.Mapper.xml
+2
-0
BookGroupMapper.xml
...-book/src/main/resources/mapper/group/BookGroupMapper.xml
+80
-0
GroupQrcode.Mapper.xml
...ok/src/main/resources/mapper/group/GroupQrcode.Mapper.xml
+11
-0
BookKeyword.Mapper.xml
...src/main/resources/mapper/keywords/BookKeyword.Mapper.xml
+65
-0
No files found.
.gitignore
View file @
2c4c9a24
...
...
@@ -7,3 +7,4 @@
*logs/
*.idea/
*bin/
*download/
\ No newline at end of file
pcloud-facade-book/src/main/java/com/pcloud/book/group/dto/BookGroupKeywordResourceDTO.java
0 → 100644
View file @
2c4c9a24
package
com
.
pcloud
.
book
.
group
.
dto
;
import
com.pcloud.common.dto.BaseDto
;
/**
* @描述:社群码下关键词关联的资源
* @作者:zhuyajie
* @创建时间:11:01 2019/9/30
* @版本:1.0
*/
public
class
BookGroupKeywordResourceDTO
extends
BaseDto
{
/**
* 类型(PRODUCT、APP)
*/
private
String
serveType
;
/**
* 商品或应用id
*/
private
Long
serveId
;
public
String
getServeType
()
{
return
serveType
;
}
public
void
setServeType
(
String
serveType
)
{
this
.
serveType
=
serveType
;
}
public
Long
getServeId
()
{
return
serveId
;
}
public
void
setServeId
(
Long
serveId
)
{
this
.
serveId
=
serveId
;
}
@Override
public
String
toString
()
{
return
"BookGroupKeywordResourceDTO{"
+
"serveType='"
+
serveType
+
'\''
+
", serveId="
+
serveId
+
'}'
;
}
}
pcloud-facade-book/src/main/java/com/pcloud/book/group/service/BookGroupService.java
View file @
2c4c9a24
package
com
.
pcloud
.
book
.
group
.
service
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.BookGroupKeywordResourceDTO
;
import
com.pcloud.book.group.dto.GroupCipherDTO
;
import
com.pcloud.book.group.dto.GroupUseDTO
;
import
com.pcloud.book.group.dto.PersonalQrcodeDTO
;
...
...
@@ -113,4 +114,13 @@ public interface BookGroupService {
@GetMapping
(
"dealBookGroupServerChannel"
)
void
dealBookGroupServerChannel
();
@ApiOperation
(
"获取社群书关键词关联的资源(关键词及1v1配置资源)"
)
@GetMapping
(
"getKeyWordResourceByBookGroup"
)
ResponseEntity
<
ResponseDto
<
List
<
BookGroupKeywordResourceDTO
>>>
getKeyWordResourceByBookGroup
(
@RequestParam
(
"bookGroupId"
)
Long
bookGroupId
);
@ApiOperation
(
value
=
"查社群码下二维码id"
,
httpMethod
=
"GET"
)
@GetMapping
(
"getQrcodeIdsByBookGroupId"
)
ResponseEntity
<
ResponseDto
<
List
<
Long
>>>
getQrcodeIdsByBookGroupId
(
@RequestParam
(
"bookGroupId"
)
Long
bookGroupId
);
}
pcloud-service-book/src/main/java/com/pcloud/book/consumer/analysisengine/BrowseRecordConsr.java
View file @
2c4c9a24
...
...
@@ -4,12 +4,14 @@
package
com
.
pcloud
.
book
.
consumer
.
analysisengine
;
import
com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto
;
import
com.pcloud.analysisengine.browse.dto.GroupBrowseStatisticVO
;
import
com.pcloud.analysisengine.browse.dto.SBookAnalyzeDto
;
import
com.pcloud.analysisengine.browse.service.BrowseRecordService
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -126,4 +128,15 @@ public class BrowseRecordConsr {
return
sBookAnalyzeDtoMap
;
}
@ParamLog
(
"获取社群码资源浏览量"
)
public
Map
<
Long
,
GroupBrowseStatisticVO
>
mapGroupBrowseStatistic
(
List
<
Long
>
bookGroupIds
,
String
monthDate
)
{
Map
<
Long
,
GroupBrowseStatisticVO
>
map
=
null
;
try
{
map
=
ResponseHandleUtil
.
parseMapResponse
(
browseRecordService
.
mapGroupBrowseStatistic
(
bookGroupIds
,
monthDate
),
Long
.
class
,
GroupBrowseStatisticVO
.
class
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"获取社群码资源浏览量失败"
+
e
.
getMessage
(),
e
);
}
return
map
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/consumer/trade/TradeConsr.java
View file @
2c4c9a24
...
...
@@ -5,8 +5,17 @@ import com.pcloud.common.dto.ResponseDto;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
com.pcloud.facade.tradecenter.dto.*
;
import
com.pcloud.facade.tradecenter.dto.ClassifyPayDetailDto
;
import
com.pcloud.facade.tradecenter.dto.GroupIncomeSearchDto
;
import
com.pcloud.facade.tradecenter.dto.GroupMoneyDto
;
import
com.pcloud.facade.tradecenter.dto.OrderSearchDto
;
import
com.pcloud.facade.tradecenter.dto.ProductSaleDetailDto
;
import
com.pcloud.facade.tradecenter.dto.QrGroupBuyDetailDto
;
import
com.pcloud.facade.tradecenter.dto.SaleDetailByQrcodeDto
;
import
com.pcloud.facade.tradecenter.dto.SpeWechatGroupDto
;
import
com.pcloud.facade.tradecenter.dto.WechatGroupDto
;
import
com.pcloud.facade.tradecenter.service.OrderFormService
;
import
org.apache.commons.collections.MapUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -15,7 +24,11 @@ import org.springframework.http.ResponseEntity;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @Author:lili
...
...
@@ -179,4 +192,19 @@ public class TradeConsr {
return
totalSale
;
}
@ParamLog
(
"查社群码资源购买情况"
)
public
Map
<
Long
,
ProductSaleDetailDto
>
getSaleInfo4Group
(
List
<
Long
>
bookGroupIds
,
String
month
)
{
Map
<
Long
,
ProductSaleDetailDto
>
map
=
new
HashMap
<>();
try
{
OrderSearchDto
orderSearchDto
=
new
OrderSearchDto
();
orderSearchDto
.
setBookGroupIds
(
bookGroupIds
);
orderSearchDto
.
setDate
(
month
);
map
=
ResponseHandleUtil
.
parseMapResponse
(
orderFormService
.
getSaleInfo4Group
(
orderSearchDto
),
Long
.
class
,
ProductSaleDetailDto
.
class
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"查社群码资源购买情况失败"
+
e
.
getMessage
(),
e
);
}
return
map
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/consumer/wechatgroup/WechatGroupConsr.java
View file @
2c4c9a24
...
...
@@ -8,6 +8,7 @@ import com.pcloud.common.utils.ResponseHandleUtil;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.wechatgroup.group.dto.GroupMemberStatisDTO
;
import
com.pcloud.wechatgroup.group.dto.GroupRobotDTO
;
import
com.pcloud.wechatgroup.group.dto.GroupUserCountDTO
;
import
com.pcloud.wechatgroup.group.dto.GroupUserDTO
;
import
com.pcloud.wechatgroup.group.dto.RobotReplyDTO
;
import
com.pcloud.wechatgroup.group.service.GroupMemberService
;
...
...
@@ -385,6 +386,36 @@ public class WechatGroupConsr {
return
map
;
}
@ParamLog
(
"获取社群码扫码次数/人数"
)
public
Map
<
Long
,
GroupUserCountDTO
>
getScanCountByGroup
(
List
<
Long
>
bookGroupIds
,
String
monthDate
)
{
Map
<
Long
,
GroupUserCountDTO
>
map
=
new
HashMap
<>();
if
(
ListUtils
.
isEmpty
(
bookGroupIds
)){
return
map
;
}
try
{
map
=
ResponseHandleUtil
.
parseMapResponse
(
groupMemberService
.
getScanCountByGroup
(
bookGroupIds
,
monthDate
),
Long
.
class
,
GroupUserCountDTO
.
class
);
}
catch
(
Exception
e
)
{
log
.
error
(
"获取社群码扫码次数/人数.[getScanCountByGroup]失败"
+
e
.
getMessage
(),
e
);
}
return
map
;
}
@ParamLog
(
"获取社群码累计进群人数"
)
public
Map
<
Long
,
GroupUserCountDTO
>
mapBookGroupJoinUserCount
(
List
<
Long
>
bookGroupIds
,
String
monthDate
)
{
Map
<
Long
,
GroupUserCountDTO
>
map
=
new
HashMap
<>();
if
(
ListUtils
.
isEmpty
(
bookGroupIds
)){
return
map
;
}
try
{
map
=
ResponseHandleUtil
.
parseMapResponse
(
groupMemberService
.
mapBookGroupJoinUserCount
(
bookGroupIds
,
monthDate
),
Long
.
class
,
GroupUserCountDTO
.
class
);
}
catch
(
Exception
e
)
{
log
.
error
(
"获取社群码累计进群人数.[mapBookGroupJoinUserCount]失败"
+
e
.
getMessage
(),
e
);
}
return
map
;
}
@ParamLog
(
"查询链接发送次数"
)
public
Map
<
String
,
Integer
>
getLinkSendCount
(
List
<
LinkGroupParamDTO
>
paramDTOList
)
{
Map
<
String
,
Integer
>
map
=
new
HashMap
<>();
...
...
pcloud-service-book/src/main/java/com/pcloud/book/group/biz/BookGroupBiz.java
View file @
2c4c9a24
...
...
@@ -3,6 +3,7 @@ package com.pcloud.book.group.biz;
import
com.pcloud.book.book.dto.BookDto
;
import
com.pcloud.book.group.dto.AppStatisticsDTO
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.BookGroupKeywordResourceDTO
;
import
com.pcloud.book.group.dto.BookGroupStatisticsDTO
;
import
com.pcloud.book.group.dto.ClassifyKeywordDTO
;
import
com.pcloud.book.group.dto.GroupCipherDTO
;
...
...
@@ -16,6 +17,8 @@ import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import
com.pcloud.book.group.dto.ResourceBrowseParamDto
;
import
com.pcloud.book.group.entity.BookGroup
;
import
com.pcloud.book.group.entity.BookGroupServe
;
import
com.pcloud.book.group.vo.BookGroupAnalysisParam
;
import
com.pcloud.book.group.vo.BookGroupAnalysisVO
;
import
com.pcloud.book.group.vo.FriendsVO
;
import
com.pcloud.book.group.vo.GroupIncomeStaticParamVO
;
import
com.pcloud.book.group.vo.GroupScanTrendParamVO
;
...
...
@@ -294,7 +297,6 @@ public interface BookGroupBiz {
* 根据社群码id获取个人二维码信息
*/
OwnAltQrcodeInfoDTO
getOwnAltQrcodeInfoDTOByBookGroupId
(
Long
wechatUserId
,
Long
bookGroupId
);
/**
* 根据分类id获取个人二维码信息
*/
...
...
@@ -402,7 +404,6 @@ public interface BookGroupBiz {
* @return
*/
Map
<
String
,
Integer
>
getBookGroupFriendsCountByDay
(
Long
bookGroupId
,
String
startDate
,
String
endDate
);
/**
* 好友数据统计列表
* @param bookGroupId
...
...
@@ -459,4 +460,26 @@ public interface BookGroupBiz {
* 将之前的配置资源取的社群码运营更新为应用本身的运营
*/
void
dealBookGroupServerChannel
();
/**
* 社群书分析
* @param bookGroupAnalysisParam
* @return
*/
PageBeanNew
<
BookGroupAnalysisVO
>
listPageBookGroupAnalysis
(
BookGroupAnalysisParam
bookGroupAnalysisParam
);
/**
* 社群书分析--导出
* @param bookGroupAnalysisParam
*/
void
exportBookGroupAnalysis
(
BookGroupAnalysisParam
bookGroupAnalysisParam
,
Long
partyId
);
/**
* 社群书关键词关联的资源(关键词及1v1配置资源)
*/
List
<
BookGroupKeywordResourceDTO
>
getKeyWordResourceByBookGroup
(
Long
bookGroupId
);
/**
* 社群书下二维码
*/
List
<
Long
>
getQrcodeIdsByBookGroupId
(
Long
bookGroupId
);
}
pcloud-service-book/src/main/java/com/pcloud/book/group/biz/impl/BookGroupBizImpl.java
View file @
2c4c9a24
...
...
@@ -15,6 +15,7 @@ import com.pcloud.book.book.dto.BookDto;
import
com.pcloud.book.book.set.BookSet
;
import
com.pcloud.book.consumer.app.AppConsr
;
import
com.pcloud.book.consumer.channel.QrcodeSceneConsr
;
import
com.pcloud.book.consumer.message.MessageConsr
;
import
com.pcloud.book.consumer.raystask.MainLineConsr
;
import
com.pcloud.book.consumer.resource.ProductConsr
;
import
com.pcloud.book.consumer.settlement.BookConsr
;
...
...
@@ -37,6 +38,7 @@ import com.pcloud.book.group.dao.TempletRelevanceDao;
import
com.pcloud.book.group.dao.WeixinQrcodeDao
;
import
com.pcloud.book.group.dto.AppStatisticsDTO
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.BookGroupKeywordResourceDTO
;
import
com.pcloud.book.group.dto.BookGroupStatisticDTO
;
import
com.pcloud.book.group.dto.BookGroupStatisticsDTO
;
import
com.pcloud.book.group.dto.ClassifyDTO
;
...
...
@@ -61,7 +63,10 @@ import com.pcloud.book.group.entity.TempletRelevance;
import
com.pcloud.book.group.enums.CipherTypeEnum
;
import
com.pcloud.book.group.enums.JoinGroupTypeEnum
;
import
com.pcloud.book.group.enums.LargTempletEnum
;
import
com.pcloud.book.group.set.GroupSet
;
import
com.pcloud.book.group.tools.SendWeixinRequestTools
;
import
com.pcloud.book.group.vo.BookGroupAnalysisParam
;
import
com.pcloud.book.group.vo.BookGroupAnalysisVO
;
import
com.pcloud.book.group.vo.ClassifyAndGroupCountVO
;
import
com.pcloud.book.group.vo.ClassifyQrcodeVO
;
import
com.pcloud.book.group.vo.FriendsVO
;
...
...
@@ -84,10 +89,8 @@ import com.pcloud.book.util.common.ThreadPoolUtils;
import
com.pcloud.channelcenter.qrcode.dto.GroupQrcodeVO
;
import
com.pcloud.channelcenter.wechat.dto.AccountSettingDto
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.core.biz.MessageBiz
;
import
com.pcloud.common.core.constant.ProductTypeConstant
;
import
com.pcloud.common.core.constant.SystemCode
;
import
com.pcloud.common.core.dto.SendNotifyDto
;
import
com.pcloud.common.core.enums.NotifyOriginTypeEnum
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.dto.StoreFlowInfoDto
;
...
...
@@ -206,8 +209,6 @@ public class BookGroupBizImpl implements BookGroupBiz {
@Autowired
private
MainLineConsr
mainLineConsr
;
@Autowired
private
MessageBiz
messageBiz
;
@Autowired
private
BookGroupClassifyDao
bookGroupClassifyDao
;
@Autowired
private
BookKeywordDao
bookKeywordDao
;
...
...
@@ -237,6 +238,11 @@ public class BookGroupBizImpl implements BookGroupBiz {
private
GroupQrcodeDao
groupQrcodeDao
;
@Autowired
private
BookGroupCipherUserDao
bookGroupCipherUserDao
;
@Autowired
private
GroupSet
groupSet
;
@Autowired
private
MessageConsr
messageConsr
;
@Override
...
...
@@ -1160,21 +1166,7 @@ public class BookGroupBizImpl implements BookGroupBiz {
JSONObject
content
=
new
JSONObject
();
content
.
put
(
"commitTime"
,
DateUtils
.
formatDate
(
new
Date
()));
content
.
put
(
"type"
,
"社群码导出"
);
SendNotifyDto
sendNotifyDto
=
new
SendNotifyDto
();
sendNotifyDto
.
setCreatedTime
(
new
Date
());
sendNotifyDto
.
setFromId
(
adviserId
);
sendNotifyDto
.
setToId
(
adviserId
);
sendNotifyDto
.
setNotifyContent
(
content
.
toJSONString
());
sendNotifyDto
.
setSystemCode
(
SystemCode
.
adviser
.
code
);
sendNotifyDto
.
setTypeCode
(
"qrcode_download"
);
sendNotifyDto
.
setResourceId
(
zipUrl
);
sendNotifyDto
.
setFileName
(
fileName
);
sendNotifyDto
.
setOriginType
(
NotifyOriginTypeEnum
.
BOOK_GROUP
.
value
);
try
{
messageBiz
.
sendLetter
(
sendNotifyDto
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"【站内信(消)】发送站内信.[sendLetter]:"
+
e
.
getMessage
(),
e
);
}
messageConsr
.
sendLetter
(
adviserId
,
adviserId
,
content
.
toJSONString
(),
SystemCode
.
adviser
.
code
,
"qrcode_download"
,
zipUrl
,
fileName
,
NotifyOriginTypeEnum
.
BOOK_GROUP
.
value
,
null
);
}
});
}
...
...
@@ -2404,5 +2396,124 @@ public class BookGroupBizImpl implements BookGroupBiz {
}
return
s
;
}
@Override
public
PageBeanNew
<
BookGroupAnalysisVO
>
listPageBookGroupAnalysis
(
BookGroupAnalysisParam
bookGroupAnalysisParam
)
{
List
<
Long
>
adviserIdList
=
new
ArrayList
<>();
if
(!
ListUtils
.
isEmpty
(
bookGroupAnalysisParam
.
getAdviserIds
()))
{
adviserIdList
.
addAll
(
bookGroupAnalysisParam
.
getAdviserIds
());
}
else
{
if
(!
ListUtils
.
isEmpty
(
bookGroupAnalysisParam
.
getAgentIds
()))
{
List
<
Long
>
agentIds
=
bookGroupAnalysisParam
.
getAgentIds
();
agentIds
.
forEach
(
agentId
->
{
List
<
Long
>
adviserIds
=
adviserConsr
.
getByAgentId
(
agentId
);
if
(!
ListUtils
.
isEmpty
(
adviserIds
))
{
adviserIdList
.
addAll
(
adviserIds
);
}
});
}
}
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
if
(!
ListUtils
.
isEmpty
(
bookGroupAnalysisParam
.
getBookIds
())){
paramMap
.
put
(
"bookIds"
,
bookGroupAnalysisParam
.
getBookIds
());
}
if
(!
ListUtils
.
isEmpty
(
adviserIdList
))
{
paramMap
.
put
(
"adviserIds"
,
adviserIdList
);
}
paramMap
.
put
(
"isFundSupport"
,
bookGroupAnalysisParam
.
getIsFundSupport
());
paramMap
.
put
(
"isCopyright"
,
bookGroupAnalysisParam
.
getIsCopyright
());
PageBeanNew
<
BookGroupAnalysisVO
>
pageBeanNew
=
bookGroupDao
.
listPageNew
(
new
PageParam
(
bookGroupAnalysisParam
.
getCurrentPage
(),
bookGroupAnalysisParam
.
getNumPerPage
()),
paramMap
,
"listPageBookGroupAnalysis"
);
if
(
null
==
pageBeanNew
||
ListUtils
.
isEmpty
(
pageBeanNew
.
getRecordList
()))
{
return
new
PageBeanNew
<>(
bookGroupAnalysisParam
.
getCurrentPage
(),
bookGroupAnalysisParam
.
getNumPerPage
(),
0
,
new
ArrayList
<>());
}
String
monthDate
=
bookGroupAnalysisParam
.
getMonthDate
();
//设置书刊分类名称
groupSet
.
setTempletName
(
pageBeanNew
.
getRecordList
());
//设置出版运营编辑名称
groupSet
.
setPartyInfo
(
pageBeanNew
.
getRecordList
());
//设置社群码扫码量
groupSet
.
setGroupScanCount
(
pageBeanNew
.
getRecordList
(),
monthDate
);
//设置微信群数据(分类数,群数,群人数,好友数,资源数)
groupSet
.
setGroupStatistic
(
pageBeanNew
.
getRecordList
(),
monthDate
);
//设置资源数据(浏览量,读者量,销售额,支付率,客单价)
groupSet
.
setResourceStatistic
(
pageBeanNew
.
getRecordList
(),
monthDate
);
return
pageBeanNew
;
}
@Override
public
void
exportBookGroupAnalysis
(
BookGroupAnalysisParam
bookGroupAnalysisParam
,
Long
partyId
)
{
ThreadPoolUtils
.
EXPORT_THREAD_POOL
.
execute
(()
->
{
List
<
Long
>
adviserIdList
=
new
ArrayList
<>();
if
(!
ListUtils
.
isEmpty
(
bookGroupAnalysisParam
.
getAdviserIds
()))
{
adviserIdList
.
addAll
(
bookGroupAnalysisParam
.
getAdviserIds
());
}
else
{
if
(!
ListUtils
.
isEmpty
(
bookGroupAnalysisParam
.
getAgentIds
()))
{
List
<
Long
>
agentIds
=
bookGroupAnalysisParam
.
getAgentIds
();
agentIds
.
forEach
(
agentId
->
{
List
<
Long
>
adviserIds
=
adviserConsr
.
getByAgentId
(
agentId
);
if
(!
ListUtils
.
isEmpty
(
adviserIds
))
{
adviserIdList
.
addAll
(
adviserIds
);
}
});
}
}
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"bookIds"
,
bookGroupAnalysisParam
.
getBookIds
());
if
(!
ListUtils
.
isEmpty
(
adviserIdList
))
{
paramMap
.
put
(
"adviserIds"
,
adviserIdList
);
}
paramMap
.
put
(
"isFundSupport"
,
bookGroupAnalysisParam
.
getIsFundSupport
());
paramMap
.
put
(
"isCopyright"
,
bookGroupAnalysisParam
.
getIsCopyright
());
List
<
BookGroupAnalysisVO
>
list
=
bookGroupDao
.
listPageBookGroupAnalysis
(
paramMap
);
if
(
ListUtils
.
isEmpty
(
list
))
{
return
;
}
String
monthDate
=
bookGroupAnalysisParam
.
getMonthDate
();
//设置书刊分类名称
groupSet
.
setTempletName
(
list
);
//设置出版运营编辑名称
groupSet
.
setPartyInfo
(
list
);
//设置社群码扫码量
groupSet
.
setGroupScanCount
(
list
,
monthDate
);
//设置微信群数据(分类数,群数,群人数,好友数,资源数)
groupSet
.
setGroupStatistic
(
list
,
monthDate
);
//设置资源数据(浏览量,读者量,销售额,支付率,客单价)
groupSet
.
setResourceStatistic
(
list
,
monthDate
);
Boolean
isSuccess
=
true
;
String
fileUrl
=
""
;
String
fileName
=
"社群书分析"
;
if
(!
StringUtil
.
isEmpty
(
monthDate
))
{
String
[]
dateStr
=
monthDate
.
split
(
"-"
);
fileName
=
dateStr
[
0
]
+
"年"
+
Integer
.
parseInt
(
dateStr
[
1
])
+
"月"
+
fileName
;
}
try
{
fileUrl
=
groupSet
.
fillBookGroupExcel
(
list
,
fileName
);
}
catch
(
Exception
e
)
{
isSuccess
=
false
;
LOGGER
.
error
(
"导出文件失败"
+
e
.
getMessage
(),
e
);
}
if
(
isSuccess
)
{
JSONObject
content
=
new
JSONObject
();
content
.
put
(
"commitTime"
,
DateUtils
.
formatDate
(
new
Date
()));
content
.
put
(
"type"
,
"社群书分析导出"
);
messageConsr
.
sendLetter
(
partyId
,
partyId
,
content
.
toJSONString
(),
SystemCode
.
pcloud
.
code
,
"book_download"
,
fileUrl
,
fileName
);
}
});
}
@Override
public
List
<
BookGroupKeywordResourceDTO
>
getKeyWordResourceByBookGroup
(
Long
bookGroupId
)
{
List
<
BookGroupKeywordResourceDTO
>
list
=
bookKeywordDao
.
getBookGroupResourceList
(
bookGroupId
);
return
list
;
}
@Override
public
List
<
Long
>
getQrcodeIdsByBookGroupId
(
Long
bookGroupId
)
{
List
<
Long
>
ids
=
groupQrcodeDao
.
getIdsByBookGroupId
(
bookGroupId
);
return
ids
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/AppClickRecordDao.java
View file @
2c4c9a24
...
...
@@ -47,4 +47,5 @@ public interface AppClickRecordDao extends BaseDao<AppClickRecord> {
* 获取资源点击数
*/
List
<
ResourcesStatisticVO
>
getClickStatistics
(
Long
bookGroupId
,
Long
classifyId
,
Long
qrcodeId
,
String
type
);
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/BookGroupCipherUserDao.java
View file @
2c4c9a24
...
...
@@ -30,4 +30,10 @@ public interface BookGroupCipherUserDao extends BaseDao<BookGroupCipherUser> {
* @return
*/
List
<
DayCountDTO
>
getBookGroupFriendsCountByDay
(
Long
bookGroupId
,
String
startTime
,
String
endTime
);
/**
* 根据时间查社群码好友数量
* @param bookGroupId
* @return
*/
public
Integer
getFriendsCountByBookGroupByTime
(
Long
bookGroupId
,
String
startTime
,
String
endTime
);
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/BookGroupClassifyDao.java
View file @
2c4c9a24
package
com
.
pcloud
.
book
.
group
.
dao
;
import
com.pcloud.book.group.dto.*
;
import
com.pcloud.book.group.dto.BookClassifyDTO
;
import
com.pcloud.book.group.dto.BookGroupStatisticDTO
;
import
com.pcloud.book.group.dto.ClassifyDTO
;
import
com.pcloud.book.group.dto.ClassifyKeywordDTO
;
import
com.pcloud.book.group.dto.ClickClassifyDTO
;
import
com.pcloud.book.group.dto.GroupClassifyQrcodeDTO
;
import
com.pcloud.book.group.dto.GroupNameAndMaxSeqDTO
;
import
com.pcloud.book.group.dto.GroupQrcodeBaseDTO
;
import
com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO
;
import
com.pcloud.book.group.entity.BookGroupClassify
;
import
com.pcloud.book.group.vo.BookGroupQrcodeStatisticVO
;
import
com.pcloud.book.group.vo.ClassifyNameVO
;
...
...
@@ -263,5 +271,6 @@ public interface BookGroupClassifyDao extends BaseDao<BookGroupClassify> {
List
<
ListClassifyVO
>
getClassifyIngoreDelete
(
Long
bookGroupId
);
List
<
BookGroupClassify
>
getListByBookGroupId
(
Long
bookGroupId
);
public
List
<
BookGroupClassify
>
getListByBookGroupId
(
Long
bookGroupId
);
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/BookGroupDao.java
View file @
2c4c9a24
...
...
@@ -7,6 +7,7 @@ import com.pcloud.book.group.dto.BookGroupDTO;
import
com.pcloud.book.group.dto.PersonalQrcodeDTO
;
import
com.pcloud.book.group.dto.QrcodeNameAndProIdDTO
;
import
com.pcloud.book.group.entity.BookGroup
;
import
com.pcloud.book.group.vo.BookGroupAnalysisVO
;
import
com.pcloud.common.core.dao.BaseDao
;
/**
...
...
@@ -196,4 +197,11 @@ public interface BookGroupDao extends BaseDao<BookGroup> {
* 更新入群方式
*/
void
updateJoinGroupType
(
Long
id
,
Integer
joinGroupType
);
/**
* 社群书分析
* @param paramMap
* @return
*/
List
<
BookGroupAnalysisVO
>
listPageBookGroupAnalysis
(
Map
<
String
,
Object
>
paramMap
);
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/GroupQrcodeDao.java
View file @
2c4c9a24
...
...
@@ -266,4 +266,11 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> {
List
<
GroupQrcode
>
getListByBookGroupIds
(
List
<
Long
>
bookGroupIds
);
Map
<
Long
,
GroupQrcodeInfo4Advertising
>
getWechatGroupInfoMap
(
List
<
Long
>
qrcodeIds
);
/**
* 根据社群书id查群ids
* @param bookGroupId
* @return
*/
List
<
Long
>
getIdsByBookGroupId
(
Long
bookGroupId
);
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/impl/AppClickRecordDaoImpl.java
View file @
2c4c9a24
...
...
@@ -9,6 +9,7 @@ import com.pcloud.book.group.vo.GroupScanTrendVO;
import
com.pcloud.book.group.vo.ResourceClickVO
;
import
com.pcloud.book.group.vo.ResourcesStatisticVO
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
...
...
@@ -79,4 +80,5 @@ public class AppClickRecordDaoImpl extends BaseDaoImpl<AppClickRecord> implement
map
.
put
(
"type"
,
type
);
return
this
.
getSqlSession
().
selectList
(
this
.
getStatement
(
"getClickStatistics"
),
map
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/impl/BookGroupCipherUserDaoImpl.java
View file @
2c4c9a24
...
...
@@ -36,4 +36,13 @@ public class BookGroupCipherUserDaoImpl extends BaseDaoImpl<BookGroupCipherUser>
map
.
put
(
"endTime"
,
endTime
);
return
getSessionTemplate
().
selectList
(
getStatement
(
"getBookGroupFriendsCountByDay"
),
map
);
}
@Override
public
Integer
getFriendsCountByBookGroupByTime
(
Long
bookGroupId
,
String
startTime
,
String
endTime
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"bookGroupId"
,
bookGroupId
);
map
.
put
(
"startTime"
,
startTime
);
map
.
put
(
"endTime"
,
endTime
);
return
getSessionTemplate
().
selectOne
(
getStatement
(
"getFriendsCountByBookGroupByTime"
),
map
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/impl/BookGroupClassifyDaoImpl.java
View file @
2c4c9a24
package
com
.
pcloud
.
book
.
group
.
dao
.
impl
;
import
com.pcloud.book.group.dao.BookGroupClassifyDao
;
import
com.pcloud.book.group.dto.*
;
import
com.pcloud.book.group.dto.BookClassifyDTO
;
import
com.pcloud.book.group.dto.BookGroupStatisticDTO
;
import
com.pcloud.book.group.dto.ClassifyDTO
;
import
com.pcloud.book.group.dto.ClassifyKeywordDTO
;
import
com.pcloud.book.group.dto.ClickClassifyDTO
;
import
com.pcloud.book.group.dto.GroupClassifyQrcodeDTO
;
import
com.pcloud.book.group.dto.GroupNameAndMaxSeqDTO
;
import
com.pcloud.book.group.dto.GroupQrcodeBaseDTO
;
import
com.pcloud.book.group.dto.ProAssocGroupAndUserNumberDTO
;
import
com.pcloud.book.group.entity.BookGroupClassify
;
import
com.pcloud.book.group.vo.BookGroupQrcodeStatisticVO
;
import
com.pcloud.book.group.vo.ClassifyNameVO
;
...
...
@@ -253,4 +261,5 @@ public class BookGroupClassifyDaoImpl extends BaseDaoImpl<BookGroupClassify> imp
public
List
<
BookGroupClassify
>
getListByBookGroupId
(
Long
bookGroupId
)
{
return
this
.
getSqlSession
().
selectList
(
this
.
getStatement
(
"getListByBookGroupId"
),
bookGroupId
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/impl/BookGroupDaoImpl.java
View file @
2c4c9a24
...
...
@@ -5,6 +5,7 @@ import com.pcloud.book.group.dto.BookGroupDTO;
import
com.pcloud.book.group.dto.PersonalQrcodeDTO
;
import
com.pcloud.book.group.dto.QrcodeNameAndProIdDTO
;
import
com.pcloud.book.group.entity.BookGroup
;
import
com.pcloud.book.group.vo.BookGroupAnalysisVO
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Repository
;
...
...
@@ -207,4 +208,9 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
paramMap
.
put
(
"joinGroupType"
,
joinGroupType
);
super
.
getSqlSession
().
update
(
getStatement
(
"updateJoinGroupType"
),
paramMap
);
}
@Override
public
List
<
BookGroupAnalysisVO
>
listPageBookGroupAnalysis
(
Map
<
String
,
Object
>
paramMap
)
{
return
getSessionTemplate
().
selectList
(
getStatement
(
"listPageBookGroupAnalysis"
),
paramMap
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/impl/GroupQrcodeDaoImpl.java
View file @
2c4c9a24
...
...
@@ -273,4 +273,8 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou
return
getSessionTemplate
().
selectList
(
getStatement
(
"listPageGroup4Brand"
),
map
);
}
@Override
public
List
<
Long
>
getIdsByBookGroupId
(
Long
bookGroupId
)
{
return
this
.
getSqlSession
().
selectList
(
this
.
getStatement
(
"getIdsByBookGroupId"
),
bookGroupId
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/facade/BookGroupFacade.java
View file @
2c4c9a24
...
...
@@ -13,6 +13,17 @@ import com.pcloud.book.group.vo.UpdateRankTypeVO;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.page.PageBean
;
import
com.pcloud.book.group.vo.BookGroupAnalysisParam
;
import
com.pcloud.book.group.vo.BookGroupAnalysisVO
;
import
com.pcloud.book.group.vo.GroupIncomeStaticParamVO
;
import
com.pcloud.book.group.vo.GroupScanTrendParamVO
;
import
com.pcloud.book.group.vo.GroupScanTrendVO
;
import
com.pcloud.book.group.vo.ListBookGroup4ChannelParamVO
;
import
com.pcloud.book.group.vo.ResourcesStatisticVO
;
import
com.pcloud.book.group.vo.UpdateRankTypeVO
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.page.PageBean
;
import
com.pcloud.common.page.PageBeanNew
;
import
com.pcloud.common.permission.PermissionException
;
...
...
@@ -33,6 +44,8 @@ import io.swagger.annotations.Api;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
/**
* Description 社群书群二维码接口
...
...
@@ -296,7 +309,7 @@ public interface BookGroupFacade {
@RequestParam
(
"bookGroupId"
)
Long
bookGroupId
)
throws
BizException
,
PermissionException
,
JsonParseException
;
@ApiOperation
(
"根据
分类
id获取个人二维码"
)
@ApiOperation
(
"根据
社群书
id获取个人二维码"
)
@GetMapping
(
"getOwnAltQrcodeInfoDTOByBookGroupId"
)
ResponseDto
<?>
getOwnAltQrcodeInfoDTOByBookGroupId
(
@CookieValue
(
"userInfo"
)
String
userInfo
,
...
...
@@ -431,4 +444,15 @@ public interface BookGroupFacade {
ResponseDto
<?>
getBookGroupCipher
(
@RequestHeader
(
"token"
)
String
token
)
throws
BizException
,
PermissionException
,
JsonParseException
;
@ApiOperation
(
value
=
"平台端-社群书分析"
,
httpMethod
=
"POST"
)
@PostMapping
(
"listPageBookGroupAnalysis"
)
public
ResponseDto
<
PageBeanNew
<
BookGroupAnalysisVO
>>
listPageBookGroupAnalysis
(
@RequestHeader
(
"token"
)
String
token
,
@RequestBody
@ApiParam
BookGroupAnalysisParam
bookGroupAnalysisParam
)
throws
PermissionException
;
@ApiOperation
(
value
=
"平台端-社群书分析-异步导出"
,
httpMethod
=
"POST"
)
@PostMapping
(
"exportBookGroupAnalysis"
)
public
ResponseDto
<?>
exportBookGroupAnalysis
(
@RequestHeader
(
"token"
)
String
token
,
@RequestBody
@ApiParam
BookGroupAnalysisParam
bookGroupAnalysisParam
)
throws
PermissionException
;
}
pcloud-service-book/src/main/java/com/pcloud/book/group/facade/impl/BookGroupFacadeImpl.java
View file @
2c4c9a24
...
...
@@ -18,6 +18,17 @@ import com.pcloud.book.group.vo.ResourcesStatisticVO;
import
com.pcloud.book.group.vo.TotalRescourceDataVO
;
import
com.pcloud.book.group.vo.UpdateRankTypeVO
;
import
com.pcloud.book.group.vo.WxGroupStatisticVO
;
import
com.pcloud.book.group.vo.BookGroupAnalysisParam
;
import
com.pcloud.book.group.vo.BookGroupAnalysisVO
;
import
com.pcloud.book.group.vo.GroupIncomeStaticParamVO
;
import
com.pcloud.book.group.vo.GroupScanTrendParamVO
;
import
com.pcloud.book.group.vo.GroupScanTrendVO
;
import
com.pcloud.book.group.vo.GroupStatisticVO
;
import
com.pcloud.book.group.vo.ListBookGroup4ChannelParamVO
;
import
com.pcloud.book.group.vo.ResourcesStatisticVO
;
import
com.pcloud.book.group.vo.TotalRescourceDataVO
;
import
com.pcloud.book.group.vo.UpdateRankTypeVO
;
import
com.pcloud.book.group.vo.WxGroupStatisticVO
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.page.PageBean
;
...
...
@@ -28,6 +39,8 @@ import com.pcloud.common.utils.SessionUtil;
import
com.pcloud.common.utils.cookie.Cookie
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.wechatgroup.message.enums.IsSystem
;
import
org.codehaus.jackson.JsonParseException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.CookieValue
;
...
...
@@ -45,6 +58,7 @@ import java.util.List;
import
java.util.Map
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
/**
* Description 社群书群二维码接口实现类
...
...
@@ -544,7 +558,6 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
Long
adviserId
=
(
Long
)
map
.
get
(
SessionUtil
.
PARTY_ID
);
Map
<
String
,
String
>
resultMap
=
bookGroupBiz
.
exportRescourceIncomeData
(
bookGroupId
,
adviserId
);
return
new
ResponseDto
<>(
resultMap
);
}
@Override
...
...
@@ -615,4 +628,32 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
return
new
ResponseDto
<>(
bookGroupBiz
.
getBookGroupCipher
());
}
@Override
@PostMapping
(
"listPageBookGroupAnalysis"
)
public
ResponseDto
<
PageBeanNew
<
BookGroupAnalysisVO
>>
listPageBookGroupAnalysis
(
@RequestHeader
(
"token"
)
String
token
,
@RequestBody
@ApiParam
BookGroupAnalysisParam
bookGroupAnalysisParam
)
throws
PermissionException
{
SessionUtil
.
getToken4Redis
(
token
);
if
(
null
==
bookGroupAnalysisParam
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"参数为空"
);
}
if
(
null
==
bookGroupAnalysisParam
.
getCurrentPage
()
||
null
==
bookGroupAnalysisParam
.
getNumPerPage
())
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_NULL
,
"缺少分页参数"
);
}
PageBeanNew
<
BookGroupAnalysisVO
>
pageBeanNew
=
bookGroupBiz
.
listPageBookGroupAnalysis
(
bookGroupAnalysisParam
);
return
new
ResponseDto
<>(
pageBeanNew
);
}
@Override
@PostMapping
(
"exportBookGroupAnalysis"
)
public
ResponseDto
<?>
exportBookGroupAnalysis
(
@RequestHeader
(
"token"
)
String
token
,
@RequestBody
@ApiParam
BookGroupAnalysisParam
bookGroupAnalysisParam
)
throws
PermissionException
{
Map
<
String
,
Object
>
map
=
SessionUtil
.
getToken4Redis
(
token
);
String
isSystem
=
(
String
)
map
.
get
(
SessionUtil
.
IS_SYSTEM
);
Long
partyId
=
(
Long
)
map
.
get
(
SessionUtil
.
PARTY_ID
);
if
(
IsSystem
.
NOT_SYSTEM
.
code
.
equals
(
isSystem
))
{
partyId
=
(
Long
)
map
.
get
(
SessionUtil
.
MEMBER_ID
);
}
bookGroupBiz
.
exportBookGroupAnalysis
(
bookGroupAnalysisParam
,
partyId
);
return
new
ResponseDto
<>();
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/service/impl/BookGroupServiceImpl.java
View file @
2c4c9a24
...
...
@@ -2,10 +2,10 @@ package com.pcloud.book.group.service.impl;
import
com.pcloud.book.group.biz.BookGroupBiz
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.BookGroupKeywordResourceDTO
;
import
com.pcloud.book.group.dto.GroupCipherDTO
;
import
com.pcloud.book.group.dto.GroupUseDTO
;
import
com.pcloud.book.group.dto.PersonalQrcodeDTO
;
import
com.pcloud.book.group.dto.QueryByBookAdviserDTO
;
import
com.pcloud.book.group.dto.ResourceBrowseParamDto
;
import
com.pcloud.book.group.service.BookGroupService
;
...
...
@@ -191,4 +191,18 @@ public class BookGroupServiceImpl implements BookGroupService {
}
@Override
@GetMapping
(
"getKeyWordResourceByBookGroup"
)
public
ResponseEntity
<
ResponseDto
<
List
<
BookGroupKeywordResourceDTO
>>>
getKeyWordResourceByBookGroup
(
@RequestParam
(
"bookGroupId"
)
Long
bookGroupId
)
{
List
<
BookGroupKeywordResourceDTO
>
list
=
bookGroupBiz
.
getKeyWordResourceByBookGroup
(
bookGroupId
);
return
ResponseHandleUtil
.
toResponse
(
list
);
}
@Override
@GetMapping
(
"getQrcodeIdsByBookGroupId"
)
public
ResponseEntity
<
ResponseDto
<
List
<
Long
>>>
getQrcodeIdsByBookGroupId
(
@RequestParam
(
"bookGroupId"
)
Long
bookGroupId
)
{
List
<
Long
>
qrcodeIds
=
bookGroupBiz
.
getQrcodeIdsByBookGroupId
(
bookGroupId
);
return
ResponseHandleUtil
.
toResponse
(
qrcodeIds
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/set/GroupSet.java
View file @
2c4c9a24
package
com
.
pcloud
.
book
.
group
.
set
;
import
com.pcloud.analysisengine.browse.dto.GroupBrowseStatisticVO
;
import
com.pcloud.appcenter.assist.dto.AssistTempletDTO
;
import
com.pcloud.book.consumer.analysisengine.BrowseRecordConsr
;
import
com.pcloud.book.consumer.app.AssistTempletConsr
;
import
com.pcloud.book.consumer.common.ExportConsr
;
import
com.pcloud.book.consumer.trade.TradeConsr
;
import
com.pcloud.book.consumer.user.AdviserConsr
;
import
com.pcloud.book.consumer.user.ChannelConsr
;
import
com.pcloud.book.consumer.wechatgroup.WechatGroupConsr
;
import
com.pcloud.book.group.dao.BookGroupCipherUserDao
;
import
com.pcloud.book.group.dao.BookGroupClassifyDao
;
import
com.pcloud.book.group.dto.BookGroupStatisticDTO
;
import
com.pcloud.book.group.dto.GroupTopicDTO
;
import
com.pcloud.book.group.vo.BookGroupAnalysisVO
;
import
com.pcloud.book.keywords.dao.BookKeywordDao
;
import
com.pcloud.book.keywords.dto.KeywordResourceDTO
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.core.constant.MQTopicProducer
;
import
com.pcloud.common.utils.DateUtils
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.facade.tradecenter.dto.ProductSaleDetailDto
;
import
com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto
;
import
com.pcloud.wechatgroup.group.dto.GroupUserCountDTO
;
import
org.apache.commons.collections.MapUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.amqp.core.AmqpTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
/**
* @描述:
* @作者:zhuyajie
...
...
@@ -21,6 +53,26 @@ public class GroupSet {
@Autowired
private
AmqpTemplate
amqpTemplate
;
@Autowired
private
AssistTempletConsr
assistTempletConsr
;
@Autowired
private
AdviserConsr
adviserConsr
;
@Autowired
private
ChannelConsr
channelConsr
;
@Autowired
private
WechatGroupConsr
wechatGroupConsr
;
@Autowired
private
BookGroupClassifyDao
bookGroupClassifyDao
;
@Autowired
private
BookKeywordDao
bookKeywordDao
;
@Autowired
private
ExportConsr
exportConsr
;
@Autowired
private
TradeConsr
tradeConsr
;
@Autowired
private
BookGroupCipherUserDao
bookGroupCipherUserDao
;
@Autowired
private
BrowseRecordConsr
browseRecordConsr
;
/**
* 群分类删除topic
...
...
@@ -37,4 +89,236 @@ public class GroupSet {
}
}
/**
* 设置书刊分类名称
* @param recordList
*/
@ParamLog
(
"设置书刊分类名称"
)
public
void
setTempletName
(
List
<
BookGroupAnalysisVO
>
recordList
)
{
if
(
ListUtils
.
isEmpty
(
recordList
))
{
return
;
}
List
<
Long
>
templetIds
=
new
ArrayList
<>();
recordList
.
forEach
(
bookGroupAnalysisVO
->
{
if
(
Objects
.
nonNull
(
bookGroupAnalysisVO
.
getTempletId
()))
{
templetIds
.
add
(
bookGroupAnalysisVO
.
getTempletId
());
}
if
(
Objects
.
nonNull
(
bookGroupAnalysisVO
.
getSecondTempletId
()))
{
templetIds
.
add
(
bookGroupAnalysisVO
.
getSecondTempletId
());
}
});
final
Map
<
Long
,
AssistTempletDTO
>
assistTempletIds
=
assistTempletConsr
.
mapByIds
(
templetIds
);
if
(
MapUtils
.
isEmpty
(
assistTempletIds
))
{
return
;
}
recordList
.
forEach
(
analysisVO
->
{
Long
secondTempletId
=
analysisVO
.
getSecondTempletId
();
Long
templetId
=
analysisVO
.
getTempletId
();
if
(
Objects
.
nonNull
(
secondTempletId
))
{
AssistTempletDTO
templetDTO
=
assistTempletIds
.
get
(
secondTempletId
);
analysisVO
.
setSecondTempletName
(
Optional
.
ofNullable
(
templetDTO
).
map
(
AssistTempletDTO:
:
getTempletName
).
orElse
(
null
));
}
if
(
Objects
.
nonNull
(
templetId
))
{
AssistTempletDTO
templetDTO
=
assistTempletIds
.
get
(
templetId
);
analysisVO
.
setTempletName
(
Optional
.
ofNullable
(
templetDTO
).
map
(
AssistTempletDTO:
:
getTempletName
).
orElse
(
null
));
}
});
}
/**
* 设置出版运营编辑名称
* @param recordList
*/
@ParamLog
(
"设置出版运营编辑名称"
)
public
void
setPartyInfo
(
List
<
BookGroupAnalysisVO
>
recordList
)
{
if
(
ListUtils
.
isEmpty
(
recordList
))
{
return
;
}
List
<
Long
>
adviserIds
=
recordList
.
stream
().
filter
(
s
->
s
.
getAdviserId
()
!=
null
).
map
(
BookGroupAnalysisVO:
:
getAdviserId
).
distinct
().
collect
(
Collectors
.
toList
());
List
<
Long
>
channelIds
=
recordList
.
stream
().
filter
(
s
->
s
.
getChannelId
()
!=
null
).
map
(
BookGroupAnalysisVO:
:
getChannelId
).
distinct
().
collect
(
Collectors
.
toList
());
Map
<
Long
,
AdviserBaseInfoDto
>
adviserBaseInfoDtoMap
=
adviserConsr
.
getAdviserId2AdviserInfoDtoMap
(
adviserIds
);
Map
<
Long
,
String
>
channelNameMap
=
channelConsr
.
getNamesByIdList
(
channelIds
);
recordList
.
forEach
(
bookGroupAnalysisVO
->
{
if
(!
MapUtils
.
isEmpty
(
adviserBaseInfoDtoMap
)
&&
adviserBaseInfoDtoMap
.
containsKey
(
bookGroupAnalysisVO
.
getAdviserId
()))
{
AdviserBaseInfoDto
adviserBaseInfoDto
=
adviserBaseInfoDtoMap
.
get
(
bookGroupAnalysisVO
.
getAdviserId
());
if
(
null
!=
adviserBaseInfoDto
)
{
bookGroupAnalysisVO
.
setAdviserName
(
adviserBaseInfoDto
.
getPartyName
());
bookGroupAnalysisVO
.
setAgentId
(
adviserBaseInfoDto
.
getAgentId
());
bookGroupAnalysisVO
.
setAgentName
(
adviserBaseInfoDto
.
getAgentName
());
}
}
if
(!
MapUtils
.
isEmpty
(
channelNameMap
)
&&
channelNameMap
.
containsKey
(
bookGroupAnalysisVO
.
getChannelId
()))
{
bookGroupAnalysisVO
.
setChannelName
(
channelNameMap
.
get
(
bookGroupAnalysisVO
.
getChannelId
()));
}
});
}
/**
* 设置社群码扫码量
* @param recordList
* @param monthDate
*/
@ParamLog
(
"设置社群码扫码量"
)
public
void
setGroupScanCount
(
List
<
BookGroupAnalysisVO
>
recordList
,
String
monthDate
)
{
if
(
ListUtils
.
isEmpty
(
recordList
))
{
return
;
}
List
<
Long
>
bookGroupIds
=
recordList
.
stream
().
filter
(
s
->
s
.
getBookGroupId
()
!=
null
).
map
(
BookGroupAnalysisVO:
:
getBookGroupId
).
distinct
().
collect
(
Collectors
.
toList
());
Map
<
Long
,
GroupUserCountDTO
>
userCountDTOMap
=
wechatGroupConsr
.
getScanCountByGroup
(
bookGroupIds
,
monthDate
);
if
(
MapUtils
.
isEmpty
(
userCountDTOMap
))
{
return
;
}
recordList
.
forEach
(
bookGroupAnalysisVO
->
{
GroupUserCountDTO
groupUserCountDTO
=
userCountDTOMap
.
get
(
bookGroupAnalysisVO
.
getBookGroupId
());
if
(
null
!=
groupUserCountDTO
)
{
bookGroupAnalysisVO
.
setScanCount
(
groupUserCountDTO
.
getCount
());
bookGroupAnalysisVO
.
setScanUserCount
(
groupUserCountDTO
.
getUserCount
());
}
});
}
/**
* 设置微信群数据(分类数,群数,群人数,累计进群人数,好友数,资源数)
* @param recordList
* @param monthDate
*/
public
void
setGroupStatistic
(
List
<
BookGroupAnalysisVO
>
recordList
,
String
monthDate
)
{
if
(
ListUtils
.
isEmpty
(
recordList
))
{
return
;
}
List
<
Long
>
bookGroupIds
=
recordList
.
stream
().
filter
(
s
->
s
.
getBookGroupId
()
!=
null
).
map
(
BookGroupAnalysisVO:
:
getBookGroupId
).
distinct
().
collect
(
Collectors
.
toList
());
if
(
ListUtils
.
isEmpty
(
bookGroupIds
))
{
return
;
}
String
startTime
=
null
;
String
endTime
=
null
;
if
(!
StringUtil
.
isEmpty
(
monthDate
))
{
startTime
=
monthDate
+
"-01"
;
endTime
=
DateUtils
.
formatDate
(
DateUtils
.
getMonthEnd
(
DateUtils
.
getDateByStr
(
startTime
)),
DateUtils
.
DATE_FORMAT_DATEONLY
);
}
//分类数,群数,群人数
Map
<
Long
,
BookGroupStatisticDTO
>
bookGroupStatisticDTOMap
=
bookGroupClassifyDao
.
getBookGroupStatistic
(
bookGroupIds
);
//社群码下资源数量(关键词及1v1配置资源)
Map
<
Long
,
KeywordResourceDTO
>
keywordResourceDTOMap
=
bookKeywordDao
.
getBookGroupResourceCount
(
bookGroupIds
);
//累计进群人数-按月
Map
<
Long
,
GroupUserCountDTO
>
userCountDTOMap
=
wechatGroupConsr
.
mapBookGroupJoinUserCount
(
bookGroupIds
,
monthDate
);
for
(
BookGroupAnalysisVO
bookGroupAnalysisVO
:
recordList
)
{
if
(!
MapUtils
.
isEmpty
(
bookGroupStatisticDTOMap
))
{
BookGroupStatisticDTO
bookGroupStatisticDTO
=
bookGroupStatisticDTOMap
.
get
(
bookGroupAnalysisVO
.
getBookGroupId
());
if
(
null
!=
bookGroupStatisticDTO
)
{
bookGroupAnalysisVO
.
setClassifyCount
(
bookGroupStatisticDTO
.
getClassifyCount
());
bookGroupAnalysisVO
.
setGroupCount
(
bookGroupStatisticDTO
.
getGroupNumber
());
bookGroupAnalysisVO
.
setUserNumber
(
bookGroupStatisticDTO
.
getUserNumber
());
}
}
if
(!
MapUtils
.
isEmpty
(
keywordResourceDTOMap
))
{
KeywordResourceDTO
resourceDTO
=
keywordResourceDTOMap
.
get
(
bookGroupAnalysisVO
.
getBookGroupId
());
if
(
null
!=
resourceDTO
)
{
bookGroupAnalysisVO
.
setResourceCount
(
resourceDTO
.
getCount
());
}
}
if
(!
MapUtils
.
isEmpty
(
userCountDTOMap
))
{
GroupUserCountDTO
userCountDTO
=
userCountDTOMap
.
get
(
bookGroupAnalysisVO
.
getBookGroupId
());
bookGroupAnalysisVO
.
setJoinUserCount
(
null
==
userCountDTO
?
0
:
userCountDTO
.
getUserCount
());
}
//好友数量-按月
Integer
friendsCount
=
bookGroupCipherUserDao
.
getFriendsCountByBookGroupByTime
(
bookGroupAnalysisVO
.
getBookGroupId
(),
startTime
,
endTime
);
bookGroupAnalysisVO
.
setFriendsCount
(
friendsCount
);
}
}
/**
* 设置资源数据(浏览量,读者量,销售额,支付率,客单价)
* @param recordList
* @param monthDate
*/
public
void
setResourceStatistic
(
List
<
BookGroupAnalysisVO
>
recordList
,
String
monthDate
)
{
List
<
Long
>
bookGroupIds
=
recordList
.
stream
().
filter
(
s
->
s
.
getBookGroupId
()
!=
null
).
map
(
BookGroupAnalysisVO:
:
getBookGroupId
).
distinct
().
collect
(
Collectors
.
toList
());
if
(
ListUtils
.
isEmpty
(
bookGroupIds
))
{
return
;
}
Map
<
Long
,
GroupBrowseStatisticVO
>
browseStatisticVOMap
=
browseRecordConsr
.
mapGroupBrowseStatistic
(
bookGroupIds
,
monthDate
);
Map
<
Long
,
ProductSaleDetailDto
>
saleDetailDtoMap
=
tradeConsr
.
getSaleInfo4Group
(
bookGroupIds
,
monthDate
);
for
(
BookGroupAnalysisVO
bookGroupAnalysisVO
:
recordList
)
{
Integer
browserCount
=
0
;
//读者量
Long
payCount
=
0L
;
//购买人数
//浏览量,读者量
if
(!
MapUtils
.
isEmpty
(
browseStatisticVOMap
))
{
GroupBrowseStatisticVO
statisticVO
=
browseStatisticVOMap
.
get
(
bookGroupAnalysisVO
.
getBookGroupId
());
bookGroupAnalysisVO
.
setBrowseCount
(
null
==
statisticVO
?
0
:
statisticVO
.
getBrowseCount
());
browserCount
=
null
==
statisticVO
?
0
:
statisticVO
.
getBrowserCount
();
bookGroupAnalysisVO
.
setBrowserCount
(
browserCount
);
}
//销售额,客单价
if
(!
MapUtils
.
isEmpty
(
saleDetailDtoMap
))
{
ProductSaleDetailDto
saleDetailDto
=
saleDetailDtoMap
.
get
(
bookGroupAnalysisVO
.
getBookGroupId
());
payCount
=
(
null
==
saleDetailDto
||
null
==
saleDetailDto
.
getPayCount
())
?
0L
:
saleDetailDto
.
getPayCount
();
//销售额
BigDecimal
saleMoney
=
(
null
==
saleDetailDto
||
null
==
saleDetailDto
.
getSaleMoney
())
?
BigDecimal
.
ZERO
:
BigDecimal
.
valueOf
(
saleDetailDto
.
getSaleMoney
());
//购买次数
Long
saleCount
=
(
null
==
saleDetailDto
||
null
==
saleDetailDto
.
getSaleCount
())
?
0L
:
saleDetailDto
.
getSaleCount
();
BigDecimal
avgSaleAmount
=
saleCount
.
equals
(
0L
)
?
BigDecimal
.
ZERO
:
new
BigDecimal
(
saleMoney
.
doubleValue
()
/
saleCount
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
);
bookGroupAnalysisVO
.
setSaleAmount
(
saleMoney
);
bookGroupAnalysisVO
.
setAvgSaleAmount
(
avgSaleAmount
);
}
//支付率(支付人数/读者量)
bookGroupAnalysisVO
.
setPayRate
(
browserCount
.
equals
(
0
)
?
BigDecimal
.
ZERO
:
new
BigDecimal
(
payCount
.
doubleValue
()
/
browserCount
).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
).
multiply
(
new
BigDecimal
(
100
)));
}
}
/**
* 社群书分析-导出表格
* @param list
* @param fileName
* @return
*/
public
String
fillBookGroupExcel
(
List
<
BookGroupAnalysisVO
>
list
,
String
fileName
)
{
String
[]
rowsName
=
{
"序号"
,
"图书名称"
,
"ISBN"
,
"书刊分类"
,
"创建时间"
,
"出版社名称"
,
"运营平台"
,
"编辑名称"
,
"是否基金书"
,
"扫码次数"
,
"扫码人数"
,
"获取资源方式"
,
"群分类数"
,
"添加客服好友数"
,
"微信群数"
,
"累计进群人数"
,
"资源数"
,
"浏览量"
,
"读者量"
,
"支付率"
,
"销售额"
,
"客单价"
,
"是否版权保护"
,
"社群码"
};
List
<
Object
[]>
dataList
=
new
ArrayList
<>();
Object
[]
objs
;
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
BookGroupAnalysisVO
analysisVO
=
list
.
get
(
i
);
objs
=
new
Object
[
rowsName
.
length
];
objs
[
0
]
=
i
+
1
;
objs
[
1
]
=
analysisVO
.
getBookName
();
objs
[
2
]
=
analysisVO
.
getIsbn
();
String
templetName
=
""
;
if
(!
StringUtil
.
isEmpty
(
analysisVO
.
getTempletName
()))
{
templetName
=
analysisVO
.
getTempletName
();
if
(!
StringUtil
.
isEmpty
(
analysisVO
.
getSecondTempletName
()))
{
templetName
=
templetName
+
"-"
+
analysisVO
.
getSecondTempletName
();
}
}
else
if
(!
StringUtil
.
isEmpty
(
analysisVO
.
getSecondTempletName
()))
{
templetName
=
analysisVO
.
getSecondTempletName
();
}
objs
[
3
]
=
templetName
;
objs
[
4
]
=
DateUtils
.
formatDate
(
analysisVO
.
getCreateTime
(),
DateUtils
.
DATE_FORMAT_DATETIME
);
objs
[
5
]
=
analysisVO
.
getAgentName
();
objs
[
6
]
=
analysisVO
.
getChannelName
();
objs
[
7
]
=
analysisVO
.
getAdviserName
();
objs
[
8
]
=
analysisVO
.
getIsFundSupport
()
?
"是"
:
"否"
;
objs
[
9
]
=
analysisVO
.
getScanCount
()
==
null
?
0
:
analysisVO
.
getScanCount
();
objs
[
10
]
=
analysisVO
.
getScanUserCount
()
==
null
?
0
:
analysisVO
.
getScanUserCount
();
objs
[
11
]
=
analysisVO
.
getJoinGroupType
()
==
2
?
"1V1客服机器人"
:
"普通微信群"
;
objs
[
12
]
=
analysisVO
.
getClassifyCount
()
==
null
?
0
:
analysisVO
.
getClassifyCount
();
objs
[
13
]
=
analysisVO
.
getFriendsCount
()
==
null
?
0
:
analysisVO
.
getFriendsCount
();
objs
[
14
]
=
analysisVO
.
getGroupCount
()
==
null
?
0
:
analysisVO
.
getGroupCount
();
objs
[
15
]
=
analysisVO
.
getJoinUserCount
()
==
null
?
0
:
analysisVO
.
getJoinUserCount
();
objs
[
16
]
=
analysisVO
.
getResourceCount
()
==
null
?
0
:
analysisVO
.
getResourceCount
();
objs
[
17
]
=
analysisVO
.
getBrowseCount
()
==
null
?
0
:
analysisVO
.
getBrowseCount
();
objs
[
18
]
=
analysisVO
.
getBrowserCount
()
==
null
?
0
:
analysisVO
.
getBrowserCount
();
objs
[
19
]
=
analysisVO
.
getPayRate
()
+
"%"
;
objs
[
20
]
=
analysisVO
.
getSaleAmount
();
objs
[
21
]
=
analysisVO
.
getAvgSaleAmount
();
objs
[
22
]
=
analysisVO
.
getIsCopyright
()
?
"是"
:
"否"
;
objs
[
23
]
=
analysisVO
.
getGroupQrcodeUrl
().
replace
(
"oss.5rs.me"
,
"file.5rs.me"
);
dataList
.
add
(
objs
);
}
String
fileUrl
=
exportConsr
.
exportExcel
(
fileName
,
rowsName
,
dataList
);
return
fileUrl
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/vo/BookGroupAnalysisParam.java
0 → 100644
View file @
2c4c9a24
package
com
.
pcloud
.
book
.
group
.
vo
;
import
java.util.List
;
/**
* @描述:查询参数
* @作者:zhuyajie
* @创建时间:9:59 2019/9/29
* @版本:1.0
*/
public
class
BookGroupAnalysisParam
{
/**
* 当前页
*/
private
Integer
currentPage
;
/**
*每页数量
*/
private
Integer
numPerPage
;
/**
*书id
*/
private
List
<
Long
>
bookIds
;
/**
*出版社id
*/
private
List
<
Long
>
agentIds
;
/**
*编辑id
*/
private
List
<
Long
>
adviserIds
;
/**
*统计月份
*/
private
String
monthDate
;
/**
*是否基金支持
*/
private
Boolean
isFundSupport
;
/**
*是否版权保护
*/
private
Boolean
isCopyright
;
public
Integer
getCurrentPage
()
{
return
currentPage
;
}
public
void
setCurrentPage
(
Integer
currentPage
)
{
this
.
currentPage
=
currentPage
;
}
public
Integer
getNumPerPage
()
{
return
numPerPage
;
}
public
void
setNumPerPage
(
Integer
numPerPage
)
{
this
.
numPerPage
=
numPerPage
;
}
public
List
<
Long
>
getBookIds
()
{
return
bookIds
;
}
public
void
setBookIds
(
List
<
Long
>
bookIds
)
{
this
.
bookIds
=
bookIds
;
}
public
List
<
Long
>
getAgentIds
()
{
return
agentIds
;
}
public
void
setAgentIds
(
List
<
Long
>
agentIds
)
{
this
.
agentIds
=
agentIds
;
}
public
List
<
Long
>
getAdviserIds
()
{
return
adviserIds
;
}
public
void
setAdviserIds
(
List
<
Long
>
adviserIds
)
{
this
.
adviserIds
=
adviserIds
;
}
public
String
getMonthDate
()
{
return
monthDate
;
}
public
void
setMonthDate
(
String
monthDate
)
{
this
.
monthDate
=
monthDate
;
}
public
Boolean
getIsFundSupport
()
{
return
isFundSupport
;
}
public
void
setIsFundSupport
(
Boolean
isFundSupport
)
{
this
.
isFundSupport
=
isFundSupport
;
}
public
Boolean
getIsCopyright
()
{
return
isCopyright
;
}
public
void
setIsCopyright
(
Boolean
isCopyright
)
{
this
.
isCopyright
=
isCopyright
;
}
@Override
public
String
toString
()
{
return
"BookGroupAnalysisParam{"
+
"currentPage="
+
currentPage
+
", numPerPage="
+
numPerPage
+
", bookIds="
+
bookIds
+
", agentIds="
+
agentIds
+
", adviserIds="
+
adviserIds
+
", monthDate='"
+
monthDate
+
'\''
+
", isFundSupport="
+
isFundSupport
+
", isCopyright="
+
isCopyright
+
'}'
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/vo/BookGroupAnalysisVO.java
0 → 100644
View file @
2c4c9a24
package
com
.
pcloud
.
book
.
group
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.pcloud.common.dto.BaseDto
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @描述:社群书分析-平台端
* @作者:zhuyajie
* @创建时间:9:07 2019/9/29
* @版本:1.0
*/
public
class
BookGroupAnalysisVO
extends
BaseDto
{
/**
* 社群码ID
*/
private
Long
bookGroupId
;
/**
* 社群码
*/
private
String
groupQrcodeUrl
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
createTime
;
/**
* 书籍标识
*/
private
Long
bookId
;
/**
* 书籍ISBN码
*/
private
String
isbn
;
/**
* 书籍名称
*/
private
String
bookName
;
/**
* 一级分类id
*/
private
Long
templetId
;
/**
* 一级分类名称
*/
private
String
templetName
;
/**
* 二级分类id
*/
private
Long
secondTempletId
;
/**
* 二级分类名称
*/
private
String
secondTempletName
;
/**
* 编辑标识
*/
private
Long
adviserId
;
/**
* 编辑名称
*/
private
String
adviserName
;
/**
* 出版ID
*/
private
Long
agentId
;
/**
* 出版社名称
*/
private
String
agentName
;
/**
* 渠道标识
*/
private
Long
channelId
;
/**
* 渠道名称
*/
private
String
channelName
;
/**
* 书刊是否有基金支持
*/
private
Boolean
isFundSupport
;
/**
* 是否版权保护
*/
private
Boolean
isCopyright
;
//社群码 微信群数据
/**
* 扫码次数
*/
private
Integer
scanCount
;
/**
* 扫码人数
*/
private
Integer
scanUserCount
;
/**
* 进群方式:1群二维码,2客服机器人
*/
private
Integer
joinGroupType
;
/**
* 群分类数量
*/
private
Integer
classifyCount
;
/**
* 群总人数
*/
private
Integer
userNumber
;
/**
* 累计进群人数
*/
private
Integer
joinUserCount
;
/**
* 群数量
*/
private
Integer
groupCount
;
/**
* 好友数量
*/
private
Integer
friendsCount
;
//配置资源数据
/**
* 配置资源个数
*/
private
Integer
resourceCount
;
/**
* 浏览量
*/
private
Integer
browseCount
;
/**
* 读者量
*/
private
Integer
browserCount
;
//资源销售数据
/**
* 销售额
*/
private
BigDecimal
saleAmount
;
/**
*支付率
*/
private
BigDecimal
payRate
;
/**
*客单价
*/
private
BigDecimal
avgSaleAmount
;
public
Long
getBookGroupId
()
{
return
bookGroupId
;
}
public
void
setBookGroupId
(
Long
bookGroupId
)
{
this
.
bookGroupId
=
bookGroupId
;
}
public
String
getGroupQrcodeUrl
()
{
return
groupQrcodeUrl
;
}
public
void
setGroupQrcodeUrl
(
String
groupQrcodeUrl
)
{
this
.
groupQrcodeUrl
=
groupQrcodeUrl
;
}
public
Date
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
}
public
Long
getBookId
()
{
return
bookId
;
}
public
void
setBookId
(
Long
bookId
)
{
this
.
bookId
=
bookId
;
}
public
String
getIsbn
()
{
return
isbn
;
}
public
void
setIsbn
(
String
isbn
)
{
this
.
isbn
=
isbn
;
}
public
String
getBookName
()
{
return
bookName
;
}
public
void
setBookName
(
String
bookName
)
{
this
.
bookName
=
bookName
;
}
public
Long
getTempletId
()
{
return
templetId
;
}
public
void
setTempletId
(
Long
templetId
)
{
this
.
templetId
=
templetId
;
}
public
String
getTempletName
()
{
return
templetName
;
}
public
void
setTempletName
(
String
templetName
)
{
this
.
templetName
=
templetName
;
}
public
Long
getSecondTempletId
()
{
return
secondTempletId
;
}
public
void
setSecondTempletId
(
Long
secondTempletId
)
{
this
.
secondTempletId
=
secondTempletId
;
}
public
String
getSecondTempletName
()
{
return
secondTempletName
;
}
public
void
setSecondTempletName
(
String
secondTempletName
)
{
this
.
secondTempletName
=
secondTempletName
;
}
public
Long
getAdviserId
()
{
return
adviserId
;
}
public
void
setAdviserId
(
Long
adviserId
)
{
this
.
adviserId
=
adviserId
;
}
public
String
getAdviserName
()
{
return
adviserName
;
}
public
void
setAdviserName
(
String
adviserName
)
{
this
.
adviserName
=
adviserName
;
}
public
Long
getAgentId
()
{
return
agentId
;
}
public
void
setAgentId
(
Long
agentId
)
{
this
.
agentId
=
agentId
;
}
public
String
getAgentName
()
{
return
agentName
;
}
public
void
setAgentName
(
String
agentName
)
{
this
.
agentName
=
agentName
;
}
public
Long
getChannelId
()
{
return
channelId
;
}
public
void
setChannelId
(
Long
channelId
)
{
this
.
channelId
=
channelId
;
}
public
String
getChannelName
()
{
return
channelName
;
}
public
void
setChannelName
(
String
channelName
)
{
this
.
channelName
=
channelName
;
}
public
Boolean
getIsFundSupport
()
{
return
isFundSupport
;
}
public
void
setIsFundSupport
(
Boolean
isFundSupport
)
{
this
.
isFundSupport
=
isFundSupport
;
}
public
Integer
getScanCount
()
{
return
scanCount
;
}
public
void
setScanCount
(
Integer
scanCount
)
{
this
.
scanCount
=
scanCount
;
}
public
Integer
getScanUserCount
()
{
return
scanUserCount
;
}
public
void
setScanUserCount
(
Integer
scanUserCount
)
{
this
.
scanUserCount
=
scanUserCount
;
}
public
Integer
getJoinGroupType
()
{
return
joinGroupType
;
}
public
void
setJoinGroupType
(
Integer
joinGroupType
)
{
this
.
joinGroupType
=
joinGroupType
;
}
public
Integer
getClassifyCount
()
{
return
classifyCount
;
}
public
void
setClassifyCount
(
Integer
classifyCount
)
{
this
.
classifyCount
=
classifyCount
;
}
public
Integer
getUserNumber
()
{
return
userNumber
;
}
public
void
setUserNumber
(
Integer
userNumber
)
{
this
.
userNumber
=
userNumber
;
}
public
Integer
getGroupCount
()
{
return
groupCount
;
}
public
void
setGroupCount
(
Integer
groupCount
)
{
this
.
groupCount
=
groupCount
;
}
public
Integer
getFriendsCount
()
{
return
friendsCount
;
}
public
void
setFriendsCount
(
Integer
friendsCount
)
{
this
.
friendsCount
=
friendsCount
;
}
public
Integer
getResourceCount
()
{
return
resourceCount
;
}
public
void
setResourceCount
(
Integer
resourceCount
)
{
this
.
resourceCount
=
resourceCount
;
}
public
Integer
getBrowseCount
()
{
return
browseCount
;
}
public
void
setBrowseCount
(
Integer
browseCount
)
{
this
.
browseCount
=
browseCount
;
}
public
Integer
getBrowserCount
()
{
return
browserCount
;
}
public
void
setBrowserCount
(
Integer
browserCount
)
{
this
.
browserCount
=
browserCount
;
}
public
BigDecimal
getSaleAmount
()
{
return
saleAmount
;
}
public
void
setSaleAmount
(
BigDecimal
saleAmount
)
{
this
.
saleAmount
=
saleAmount
;
}
public
BigDecimal
getPayRate
()
{
return
payRate
;
}
public
void
setPayRate
(
BigDecimal
payRate
)
{
this
.
payRate
=
payRate
;
}
public
BigDecimal
getAvgSaleAmount
()
{
return
avgSaleAmount
;
}
public
void
setAvgSaleAmount
(
BigDecimal
avgSaleAmount
)
{
this
.
avgSaleAmount
=
avgSaleAmount
;
}
public
Boolean
getIsCopyright
()
{
return
isCopyright
;
}
public
void
setIsCopyright
(
Boolean
isCopyright
)
{
this
.
isCopyright
=
isCopyright
;
}
public
Integer
getJoinUserCount
()
{
return
joinUserCount
;
}
public
void
setJoinUserCount
(
Integer
joinUserCount
)
{
this
.
joinUserCount
=
joinUserCount
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/keywords/dao/BookKeywordDao.java
View file @
2c4c9a24
package
com
.
pcloud
.
book
.
keywords
.
dao
;
import
com.pcloud.book.group.dto.BookGroupKeywordResourceDTO
;
import
com.pcloud.book.group.vo.SyncKeyworsVO
;
import
com.pcloud.book.keywords.dto.KeywordDTO
;
import
com.pcloud.book.keywords.dto.KeywordResourceDTO
;
import
com.pcloud.book.keywords.dto.ReplyKeywordDTO
;
import
com.pcloud.book.keywords.entity.BookKeyword
;
import
com.pcloud.book.keywords.vo.KeywordVO
;
...
...
@@ -9,6 +11,7 @@ import com.pcloud.book.keywords.vo.ListKeywordVO;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author lily
...
...
@@ -132,4 +135,19 @@ public interface BookKeywordDao extends BaseDao<BookKeyword> {
* 根据社群码id逻辑删除
*/
void
deleteByBookGroupIds
(
List
<
Long
>
bookGroupIds
);
/**
* 社群码下资源数量(关键词及1v1配置资源)
* @param bookGroupIds
* @return
*/
public
Map
<
Long
,
KeywordResourceDTO
>
getBookGroupResourceCount
(
List
<
Long
>
bookGroupIds
);
/**
* 社群码下资源列表(关键词及1v1配置资源)
* @param bookGroupId
* @return
*/
public
List
<
BookGroupKeywordResourceDTO
>
getBookGroupResourceList
(
Long
bookGroupId
);
}
pcloud-service-book/src/main/java/com/pcloud/book/keywords/dao/impl/BookKeywordDaoImpl.java
View file @
2c4c9a24
...
...
@@ -3,9 +3,11 @@ package com.pcloud.book.keywords.dao.impl;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.pcloud.book.group.dto.BookGroupKeywordResourceDTO
;
import
com.pcloud.book.group.vo.SyncKeyworsVO
;
import
com.pcloud.book.keywords.dao.BookKeywordDao
;
import
com.pcloud.book.keywords.dto.KeywordDTO
;
import
com.pcloud.book.keywords.dto.KeywordResourceDTO
;
import
com.pcloud.book.keywords.dto.ReplyKeywordDTO
;
import
com.pcloud.book.keywords.entity.BookKeyword
;
import
com.pcloud.book.keywords.vo.KeywordVO
;
...
...
@@ -169,4 +171,19 @@ public class BookKeywordDaoImpl extends BaseDaoImpl<BookKeyword> implements Book
public
void
deleteByBookGroupIds
(
List
<
Long
>
bookGroupIds
)
{
this
.
getSqlSession
().
update
(
this
.
getStatement
(
"deleteByBookGroupIds"
),
bookGroupIds
);
}
@Override
public
Map
<
Long
,
KeywordResourceDTO
>
getBookGroupResourceCount
(
List
<
Long
>
bookGroupIds
)
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
();
paramMap
.
put
(
"bookGroupIds"
,
bookGroupIds
);
return
this
.
getSqlSession
().
selectMap
(
this
.
getStatement
(
"getBookGroupResourceCount"
),
paramMap
,
"bookGroupId"
);
}
@Override
public
List
<
BookGroupKeywordResourceDTO
>
getBookGroupResourceList
(
Long
bookGroupId
)
{
Map
<
String
,
Object
>
paramMap
=
new
HashMap
();
paramMap
.
put
(
"bookGroupId"
,
bookGroupId
);
return
getSessionTemplate
().
selectList
(
getStatement
(
"getBookGroupResourceList"
),
paramMap
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/keywords/dto/KeywordResourceDTO.java
0 → 100644
View file @
2c4c9a24
package
com
.
pcloud
.
book
.
keywords
.
dto
;
/**
* @描述:社群码下资源数量
* @作者:zhuyajie
* @创建时间:17:22 2019/9/29
* @版本:1.0
*/
public
class
KeywordResourceDTO
{
/**
* 社群码id
*/
private
Long
bookGroupId
;
/**
* 数量
*/
private
Integer
count
;
public
Long
getBookGroupId
()
{
return
bookGroupId
;
}
public
void
setBookGroupId
(
Long
bookGroupId
)
{
this
.
bookGroupId
=
bookGroupId
;
}
public
Integer
getCount
()
{
return
count
;
}
public
void
setCount
(
Integer
count
)
{
this
.
count
=
count
;
}
@Override
public
String
toString
()
{
return
"KeywordResourceDTO{"
+
"bookGroupId="
+
bookGroupId
+
", count="
+
count
+
'}'
;
}
}
pcloud-service-book/src/main/resources/mapper/group/AppClickRecord.xml
View file @
2c4c9a24
...
...
@@ -170,4 +170,6 @@
AND t.serve_type = #{type}
</if>
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/group/BookGroupCipherUser.xml
View file @
2c4c9a24
...
...
@@ -86,4 +86,16 @@
create_time DESC,id DESC
</select>
<select
id=
"getFriendsCountByBookGroupByTime"
resultType=
"integer"
parameterType=
"map"
>
SELECT
COUNT(DISTINCT wx_user_id)
FROM
book_group_cipher_user
WHERE
book_group_id = #{bookGroupId}
<if
test=
"startTime != null and endTime != null"
>
AND create_time BETWEEN #{startTime} AND #{endTime}
</if>
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/group/BookGroupClassify.Mapper.xml
View file @
2c4c9a24
...
...
@@ -987,4 +987,5 @@
AND t.is_delete = 0
order by create_time asc
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/group/BookGroupMapper.xml
View file @
2c4c9a24
...
...
@@ -482,4 +482,83 @@
update_time=now()
where id=#{id}
</update>
<resultMap
id=
"BookGroupAnalysisVO"
type=
"com.pcloud.book.group.vo.BookGroupAnalysisVO"
>
<id
column=
"BOOK_GROUP_ID"
property=
"bookGroupId"
jdbcType=
"BIGINT"
/>
<result
column=
"group_qrcode_url"
property=
"groupQrcodeUrl"
jdbcType=
"VARCHAR"
/>
<result
column=
"BOOK_ID"
property=
"bookId"
jdbcType=
"BIGINT"
/>
<result
column=
"ISBN"
property=
"isbn"
jdbcType=
"VARCHAR"
/>
<result
column=
"BOOK_NAME"
property=
"bookName"
jdbcType=
"VARCHAR"
/>
<result
column=
"TEMPLET_ID"
property=
"templetId"
jdbcType=
"BIGINT"
/>
<result
column=
"SECOND_TEMPLET_ID"
property=
"secondTempletId"
jdbcType=
"BIGINT"
/>
<result
column=
"ADVISER_ID"
property=
"adviserId"
jdbcType=
"BIGINT"
/>
<result
column=
"CHANNEL_ID"
property=
"channelId"
jdbcType=
"BIGINT"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"is_fund_support"
property=
"isFundSupport"
jdbcType=
"BIT"
/>
<result
column=
"is_copyright"
property=
"isCopyright"
jdbcType=
"BIT"
/>
<result
column=
"join_group_type"
property=
"joinGroupType"
jdbcType=
"INTEGER"
/>
</resultMap>
<select
id=
"listPageBookGroupAnalysis"
parameterType=
"map"
resultMap=
"BookGroupAnalysisVO"
>
SELECT
G.id BOOK_GROUP_ID,
G.group_qrcode_url,
A.BOOK_ID,
B.ISBN,
B.BOOK_NAME,
A.TEMPLET_ID,
A.SECOND_TEMPLET_ID,
G.channel_id CHANNEL_ID,
G.create_user ADVISER_ID,
G.create_time,
IF (ISNULL(BF.BOOK_FUND_ID), 0, 1) is_fund_support,
IF (ISNULL(i.id), 0, 1) is_copyright,
G.join_group_type
FROM
book_group G
LEFT JOIN BOOK_ADVISER A ON G.BOOK_ID = A.BOOK_ID AND G.CHANNEL_ID = A.CHANNEL_ID AND G.CREATE_USER = A.ADVISER_ID
LEFT JOIN BOOK B ON A.BOOK_ID = B.BOOK_ID
LEFT JOIN BOOK_FUND BF ON BF.BOOK_ID = A.BOOK_ID AND BF.END_TIME
<![CDATA[ > ]]>
NOW() AND BF.START_TIME
<![CDATA[ < ]]>
NOW()
LEFT JOIN book_auth_info i ON G.book_id = i.book_id AND i.book_status = 1 AND i.is_group_book = 1
WHERE 1 = 1
AND G.is_delete = 0
AND A.BOOK_ID IS NOT NULL
AND (
A.BOOK_ADVISER_ID IS NULL
OR A.IS_DELETE = 0
)
AND (
B.BOOK_ID IS NULL
OR B.IS_DELETE = 0
)
<if
test=
"isFundSupport != null and isFundSupport == 1"
>
AND BF.BOOK_FUND_ID IS NOT NULL
</if>
<if
test=
"isFundSupport != null and isFundSupport == 0"
>
AND BF.BOOK_FUND_ID IS NULL
</if>
<if
test=
"isCopyright != null and isCopyright == 1"
>
AND i.id IS NOT NULL
</if>
<if
test=
"isCopyright != null and isCopyright == 0"
>
AND i.id IS NULL
</if>
<if
test=
"bookIds != null"
>
AND G.book_id IN
<foreach
collection=
"bookIds"
index=
"i"
item=
"item"
open=
"("
separator=
","
close=
")"
>
${item}
</foreach>
</if>
<if
test=
"adviserIds != null"
>
AND G.create_user IN
<foreach
collection=
"adviserIds"
index=
"i"
item=
"item"
open=
"("
separator=
","
close=
")"
>
${item}
</foreach>
</if>
GROUP BY
G.id
ORDER BY
G.create_time DESC,
G.id DESC
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/group/GroupQrcode.Mapper.xml
View file @
2c4c9a24
...
...
@@ -743,4 +743,14 @@
</foreach>
</select>
<select
id=
"getIdsByBookGroupId"
parameterType=
"long"
resultType=
"long"
>
SELECT
q.id
FROM
book_group_qrcode q
LEFT JOIN book_group_classify c ON q.classify_id = c.id
WHERE
c.book_group_id = #{bookGroupId}
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/keywords/BookKeyword.Mapper.xml
View file @
2c4c9a24
...
...
@@ -487,4 +487,68 @@
#{item}
</foreach>
</update>
<!--社群码下资源数量(关键词及1v1配置资源)-->
<select
id=
"getBookGroupResourceCount"
parameterType=
"map"
resultType=
"com.pcloud.book.keywords.dto.KeywordResourceDTO"
>
SELECT
COUNT(1) count,
a.book_group_id bookGroupId
FROM
(
SELECT
serve_id,
serve_type,
book_group_id
FROM
book_keyword b
JOIN keyword k ON b.keyword_id = k.id
WHERE
b.is_delete = 0
AND k.is_delete = 0
AND b.book_group_id IN
<foreach
collection=
"bookGroupIds"
index=
"index"
item=
"item"
open=
"("
separator=
","
close=
")"
>
${item}
</foreach>
AND k.serve_type IN ('APP', 'PRODUCT')
UNION
SELECT
serve_id,
serve_type,
book_group_id
FROM
book_group_serve
WHERE 1 = 1
AND book_group_id IN
<foreach
collection=
"bookGroupIds"
index=
"index"
item=
"item"
open=
"("
separator=
","
close=
")"
>
${item}
</foreach>
) AS a
GROUP BY
a.book_group_id
</select>
<!--社群码下资源列表(关键词及1v1配置资源)-->
<select
id=
"getBookGroupResourceList"
parameterType=
"map"
resultType=
"com.pcloud.book.group.dto.BookGroupKeywordResourceDTO"
>
SELECT
serve_id serveId,
serve_type serveType
FROM
book_keyword b
JOIN keyword k ON b.keyword_id = k.id
WHERE
b.is_delete = 0
AND k.is_delete = 0
AND b.book_group_id = #{bookGroupId}
AND k.serve_type IN ('APP', 'PRODUCT')
UNION
SELECT
serve_id serveId,
serve_type serveType
FROM
book_group_serve
WHERE
1 = 1
AND book_group_id = #{bookGroupId}
</select>
</mapper>
\ No newline at end of file
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