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
516b90be
Commit
516b90be
authored
Jun 17, 2019
by
阮思源
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
群资源数据统计
parent
2b767dae
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
1340 additions
and
7 deletions
+1340
-7
SettlementConsr.java
.../com/pcloud/book/consumer/settlement/SettlementConsr.java
+18
-0
TradeConsr.java
.../main/java/com/pcloud/book/consumer/trade/TradeConsr.java
+28
-0
AppClickRecordBiz.java
...ain/java/com/pcloud/book/group/biz/AppClickRecordBiz.java
+13
-0
BookGroupBiz.java
...src/main/java/com/pcloud/book/group/biz/BookGroupBiz.java
+12
-0
AppClickRecordBizImpl.java
...com/pcloud/book/group/biz/impl/AppClickRecordBizImpl.java
+53
-0
BookGroupBizImpl.java
...java/com/pcloud/book/group/biz/impl/BookGroupBizImpl.java
+128
-0
AppClickRecordDao.java
...ain/java/com/pcloud/book/group/dao/AppClickRecordDao.java
+14
-0
AppTouchRecordDao.java
...ain/java/com/pcloud/book/group/dao/AppTouchRecordDao.java
+7
-0
AppClickRecordDaoImpl.java
...com/pcloud/book/group/dao/impl/AppClickRecordDaoImpl.java
+28
-0
AppTouchRecordDaoImpl.java
...com/pcloud/book/group/dao/impl/AppTouchRecordDaoImpl.java
+15
-0
AppStatisticsDTO.java
...main/java/com/pcloud/book/group/dto/AppStatisticsDTO.java
+156
-0
AppClickRecord.java
...ain/java/com/pcloud/book/group/entity/AppClickRecord.java
+92
-0
AppTouchRecord.java
...ain/java/com/pcloud/book/group/entity/AppTouchRecord.java
+104
-0
TouchTypeEnum.java
.../main/java/com/pcloud/book/group/enums/TouchTypeEnum.java
+28
-0
AppClickRecordFacade.java
...va/com/pcloud/book/group/facade/AppClickRecordFacade.java
+21
-0
BookGroupFacade.java
...in/java/com/pcloud/book/group/facade/BookGroupFacade.java
+10
-0
AppClickRecordFacadeImpl.java
...loud/book/group/facade/impl/AppClickRecordFacadeImpl.java
+40
-0
BookGroupFacadeImpl.java
...om/pcloud/book/group/facade/impl/BookGroupFacadeImpl.java
+20
-0
BookKeywordBiz.java
...ain/java/com/pcloud/book/keywords/biz/BookKeywordBiz.java
+10
-0
BookGuideBizImpl.java
...a/com/pcloud/book/keywords/biz/impl/BookGuideBizImpl.java
+33
-3
BookKeywordBizImpl.java
...com/pcloud/book/keywords/biz/impl/BookKeywordBizImpl.java
+94
-1
BookKeywordRecordDao.java
...va/com/pcloud/book/keywords/dao/BookKeywordRecordDao.java
+21
-0
BookKeywordRecordDaoImpl.java
...loud/book/keywords/dao/impl/BookKeywordRecordDaoImpl.java
+22
-0
KeywordStatisticsDTO.java
...va/com/pcloud/book/keywords/dto/KeywordStatisticsDTO.java
+111
-0
BookKeywordFacade.java
...va/com/pcloud/book/keywords/facade/BookKeywordFacade.java
+9
-0
BookKeywordFacadeImpl.java
...loud/book/keywords/facade/impl/BookKeywordFacadeImpl.java
+22
-0
PushBizImpl.java
.../main/java/com/pcloud/book/push/biz/impl/PushBizImpl.java
+34
-3
AppClickRecord.xml
...e-book/src/main/resources/mapper/group/AppClickRecord.xml
+66
-0
AppTouchRecord.xml
...e-book/src/main/resources/mapper/group/AppTouchRecord.xml
+66
-0
BookKeyword.Mapper.xml
...src/main/resources/mapper/keywords/BookKeyword.Mapper.xml
+17
-0
BookKeywordRecord.Mapper.xml
...in/resources/mapper/keywords/BookKeywordRecord.Mapper.xml
+48
-0
No files found.
pcloud-service-book/src/main/java/com/pcloud/book/consumer/settlement/SettlementConsr.java
View file @
516b90be
package
com
.
pcloud
.
book
.
consumer
.
settlement
;
package
com
.
pcloud
.
book
.
consumer
.
settlement
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
com.pcloud.common.utils.ResponseHandleUtil
;
...
@@ -9,9 +10,11 @@ import com.pcloud.settlementcenter.record.service.SettlementService;
...
@@ -9,9 +10,11 @@ import com.pcloud.settlementcenter.record.service.SettlementService;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
@Component
(
"settlementConsr"
)
@Component
(
"settlementConsr"
)
...
@@ -37,4 +40,19 @@ public class SettlementConsr {
...
@@ -37,4 +40,19 @@ public class SettlementConsr {
}
}
return
null
;
return
null
;
}
}
@ParamLog
(
value
=
"根据条件获取收益"
,
isBefore
=
false
,
isAfterReturn
=
false
)
public
Map
<
Long
,
BigDecimal
>
getAdviserIncomeByCondition
(
List
<
Long
>
ids
,
String
type
,
Long
partyId
,
Long
groupQrcodeId
,
Long
bookGroupId
)
throws
BizException
{
Map
<
Long
,
BigDecimal
>
map
=
new
HashMap
<>();
if
(
ListUtils
.
isEmpty
(
ids
)
||
partyId
==
null
)
{
return
map
;
}
try
{
ResponseEntity
<
ResponseDto
<
Map
<
Long
,
BigDecimal
>>>
responseEntityP
=
settlementService
.
getAdviserIncomeByCondition
(
ids
,
type
,
partyId
,
groupQrcodeId
,
bookGroupId
);
map
=
ResponseHandleUtil
.
parseMap
(
responseEntityP
,
Long
.
class
,
BigDecimal
.
class
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"获取收益.[getAdviserIncomeByCondition]:"
+
e
.
getMessage
(),
e
);
}
return
map
;
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/consumer/trade/TradeConsr.java
View file @
516b90be
package
com
.
pcloud
.
book
.
consumer
.
trade
;
package
com
.
pcloud
.
book
.
consumer
.
trade
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
com.pcloud.facade.tradecenter.dto.GroupMoneyDto
;
import
com.pcloud.facade.tradecenter.dto.QrGroupBuyDetailDto
;
import
com.pcloud.facade.tradecenter.dto.QrGroupBuyDetailDto
;
import
com.pcloud.facade.tradecenter.dto.WechatGroupDto
;
import
com.pcloud.facade.tradecenter.service.OrderFormService
;
import
com.pcloud.facade.tradecenter.service.OrderFormService
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -41,4 +46,27 @@ public class TradeConsr {
...
@@ -41,4 +46,27 @@ public class TradeConsr {
}
}
return
null
;
return
null
;
}
}
/**
* 获取交易额
* @param wechatGroupDto
* @return
* @throws BizException
*/
public
Map
<
Long
,
GroupMoneyDto
>
getQrGroupSaleMoney
(
WechatGroupDto
wechatGroupDto
)
throws
BizException
{
Map
<
Long
,
GroupMoneyDto
>
map
=
new
HashMap
<>();
if
(
wechatGroupDto
==
null
)
{
return
map
;
}
try
{
ResponseEntity
<
ResponseDto
<
Map
<
Long
,
GroupMoneyDto
>>>
responseEntityP
=
orderFormService
.
getQrGroupSaleMoney
(
wechatGroupDto
);
map
=
ResponseHandleUtil
.
parseMap
(
responseEntityP
,
Long
.
class
,
GroupMoneyDto
.
class
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"获取交易额.[getQrGroupSaleMoney]:"
+
e
.
getMessage
(),
e
);
}
if
(
map
==
null
)
{
map
=
new
HashMap
<>();
}
return
map
;
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/biz/AppClickRecordBiz.java
0 → 100644
View file @
516b90be
package
com
.
pcloud
.
book
.
group
.
biz
;
import
com.pcloud.book.group.entity.AppClickRecord
;
public
interface
AppClickRecordBiz
{
/**
* 新增点击记录
* @param appClickRecord
* @return
*/
Long
createAppClickRecord
(
AppClickRecord
appClickRecord
);
}
pcloud-service-book/src/main/java/com/pcloud/book/group/biz/BookGroupBiz.java
View file @
516b90be
package
com
.
pcloud
.
book
.
group
.
biz
;
package
com
.
pcloud
.
book
.
group
.
biz
;
import
com.pcloud.book.book.dto.BookDto
;
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.BookGroupDTO
;
import
com.pcloud.book.group.dto.QrcodeNameAndProIdDTO
;
import
com.pcloud.book.group.dto.QrcodeNameAndProIdDTO
;
import
com.pcloud.book.group.entity.BookGroup
;
import
com.pcloud.book.group.entity.BookGroup
;
...
@@ -197,6 +198,17 @@ public interface BookGroupBiz {
...
@@ -197,6 +198,17 @@ public interface BookGroupBiz {
*/
*/
Boolean
isHaveQrcode
(
Long
bookId
,
Long
channelId
,
Long
adviserId
);
Boolean
isHaveQrcode
(
Long
bookId
,
Long
channelId
,
Long
adviserId
);
/**
* 获取应用作品统计
* @param currentPage
* @param numPerPage
* @param bookGroupId
* @param qrcodeId
* @return
*/
PageBeanNew
<
AppStatisticsDTO
>
getAppStatistics
(
Integer
currentPage
,
Integer
numPerPage
,
Long
bookGroupId
,
Long
qrcodeId
,
Long
partyId
);
/**
/**
* 社群码导出
* 社群码导出
* @param paramMap
* @param paramMap
...
...
pcloud-service-book/src/main/java/com/pcloud/book/group/biz/impl/AppClickRecordBizImpl.java
0 → 100644
View file @
516b90be
package
com
.
pcloud
.
book
.
group
.
biz
.
impl
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.group.biz.AppClickRecordBiz
;
import
com.pcloud.book.group.dao.AppClickRecordDao
;
import
com.pcloud.book.group.dao.GroupQrcodeDao
;
import
com.pcloud.book.group.entity.AppClickRecord
;
import
com.pcloud.book.group.entity.GroupQrcode
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.utils.string.StringUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @Description
* @Author ruansiyuan
* @Date 2019/5/30 11:58
**/
@Component
(
"appClickRecordBiz"
)
public
class
AppClickRecordBizImpl
implements
AppClickRecordBiz
{
@Autowired
private
AppClickRecordDao
appClickRecordDao
;
@Autowired
private
GroupQrcodeDao
groupQrcodeDao
;
@ParamLog
(
"新增应用作品点击记录"
)
@Override
public
Long
createAppClickRecord
(
AppClickRecord
appClickRecord
)
{
if
(
appClickRecord
.
getQrcodeId
()
==
null
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"群id不能为空"
);
}
if
(
appClickRecord
.
getClassifyId
()
==
null
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"分类id不能为空!"
);
}
if
(
appClickRecord
.
getBookGroupId
()
==
null
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"社群书id不能为空!"
);
}
if
(
appClickRecord
.
getServeId
()
==
null
)
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"应用id或作品id不能为空!"
);
}
if
(
StringUtil
.
isEmpty
(
appClickRecord
.
getServeType
()))
{
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"类型不能为空(APP或PRODUCT)!"
);
}
GroupQrcode
groupQrcode
=
groupQrcodeDao
.
getById
(
appClickRecord
.
getQrcodeId
());
if
(
groupQrcode
!=
null
)
{
appClickRecord
.
setQrcodeId
(
groupQrcode
.
getId
());
}
appClickRecordDao
.
insert
(
appClickRecord
);
return
appClickRecord
.
getId
();
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/biz/impl/BookGroupBizImpl.java
View file @
516b90be
...
@@ -7,11 +7,18 @@ import com.pcloud.book.book.biz.BookBiz;
...
@@ -7,11 +7,18 @@ import com.pcloud.book.book.biz.BookBiz;
import
com.pcloud.book.book.dao.BookDao
;
import
com.pcloud.book.book.dao.BookDao
;
import
com.pcloud.book.book.dto.BookDto
;
import
com.pcloud.book.book.dto.BookDto
;
import
com.pcloud.book.book.set.BookSet
;
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.channel.QrcodeSceneConsr
;
import
com.pcloud.book.consumer.resource.ProductConsr
;
import
com.pcloud.book.consumer.settlement.SettlementConsr
;
import
com.pcloud.book.consumer.trade.TradeConsr
;
import
com.pcloud.book.consumer.user.AdviserConsr
;
import
com.pcloud.book.consumer.user.AdviserConsr
;
import
com.pcloud.book.group.biz.BookGroupBiz
;
import
com.pcloud.book.group.biz.BookGroupBiz
;
import
com.pcloud.book.group.biz.BookGroupClassifyBiz
;
import
com.pcloud.book.group.biz.BookGroupClassifyBiz
;
import
com.pcloud.book.group.dao.AppClickRecordDao
;
import
com.pcloud.book.group.dao.AppTouchRecordDao
;
import
com.pcloud.book.group.dao.BookGroupDao
;
import
com.pcloud.book.group.dao.BookGroupDao
;
import
com.pcloud.book.group.dto.AppStatisticsDTO
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.BookGroupStatisticDTO
;
import
com.pcloud.book.group.dto.BookGroupStatisticDTO
;
import
com.pcloud.book.group.dto.QrcodeNameAndProIdDTO
;
import
com.pcloud.book.group.dto.QrcodeNameAndProIdDTO
;
...
@@ -35,8 +42,12 @@ import com.pcloud.common.utils.QrcodeUtils;
...
@@ -35,8 +42,12 @@ import com.pcloud.common.utils.QrcodeUtils;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.common.utils.zip.CompressUtils
;
import
com.pcloud.common.utils.zip.CompressUtils
;
import
com.pcloud.facade.tradecenter.dto.GroupMoneyDto
;
import
com.pcloud.facade.tradecenter.dto.WechatGroupDto
;
import
com.pcloud.labelcenter.label.service.LabelService
;
import
com.pcloud.labelcenter.label.service.LabelService
;
import
com.pcloud.resourcecenter.product.dto.AddAppProductParamDTO
;
import
com.pcloud.resourcecenter.product.dto.AddAppProductParamDTO
;
import
com.pcloud.resourcecenter.product.dto.ProductDto
;
import
com.pcloud.resourcecenter.product.dto.ProductTypeDto
;
import
com.pcloud.resourcecenter.product.dto.UpdateAppProductParamDTO
;
import
com.pcloud.resourcecenter.product.dto.UpdateAppProductParamDTO
;
import
com.pcloud.resourcecenter.product.entity.Product
;
import
com.pcloud.resourcecenter.product.entity.Product
;
import
com.pcloud.resourcecenter.product.service.ProductService
;
import
com.pcloud.resourcecenter.product.service.ProductService
;
...
@@ -99,6 +110,18 @@ public class BookGroupBizImpl implements BookGroupBiz {
...
@@ -99,6 +110,18 @@ public class BookGroupBizImpl implements BookGroupBiz {
@Autowired
@Autowired
private
QrcodeSceneConsr
qrcodeSceneConsr
;
private
QrcodeSceneConsr
qrcodeSceneConsr
;
@Autowired
@Autowired
private
AppTouchRecordDao
appTouchRecordDao
;
@Autowired
private
AppClickRecordDao
appClickRecordDao
;
@Autowired
private
SettlementConsr
settlementConsr
;
@Autowired
private
TradeConsr
tradeConsr
;
@Autowired
private
AppConsr
appConsr
;
@Autowired
private
ProductConsr
productConsr
;
@Autowired
private
MessageBiz
messageBiz
;
private
MessageBiz
messageBiz
;
...
@@ -492,6 +515,111 @@ public class BookGroupBizImpl implements BookGroupBiz {
...
@@ -492,6 +515,111 @@ public class BookGroupBizImpl implements BookGroupBiz {
}
}
}
}
@ParamLog
(
"获取应用统计"
)
@Override
public
PageBeanNew
<
AppStatisticsDTO
>
getAppStatistics
(
Integer
currentPage
,
Integer
numPerPage
,
Long
bookGroupId
,
Long
qrcodeId
,
Long
partyId
)
{
PageParam
pageParam
=
new
PageParam
(
currentPage
,
numPerPage
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"bookGroupId"
,
bookGroupId
);
map
.
put
(
"qrcodeId"
,
qrcodeId
);
PageBeanNew
<
AppStatisticsDTO
>
pageBeanNew
=
appTouchRecordDao
.
listPageNew
(
pageParam
,
map
,
"getAppTouchStatistics"
);
List
<
AppStatisticsDTO
>
appStatisticsDTOS
=
pageBeanNew
.
getRecordList
();
if
(
ListUtils
.
isEmpty
(
appStatisticsDTOS
))
{
return
pageBeanNew
;
}
List
<
Long
>
serveIds
=
appStatisticsDTOS
.
stream
().
filter
(
s
->
s
.
getServeId
()
!=
null
).
map
(
AppStatisticsDTO:
:
getServeId
).
collect
(
Collectors
.
toList
());
//获取点击次数
List
<
AppStatisticsDTO
>
appClickStatisticsDTOS
=
appClickRecordDao
.
getClickStatisticsByServeIds
(
serveIds
,
qrcodeId
,
bookGroupId
);
Map
<
Long
,
Integer
>
clickCountMap
=
new
HashMap
<>();
if
(!
ListUtils
.
isEmpty
(
appClickStatisticsDTOS
))
{
for
(
AppStatisticsDTO
in
:
appClickStatisticsDTOS
)
{
clickCountMap
.
put
(
in
.
getServeId
(),
in
.
getClickCount
());
}
}
List
<
Long
>
productIds
=
appStatisticsDTOS
.
stream
().
filter
(
s
->
s
.
getServeId
()
!=
null
&&
"PRODUCT"
.
equalsIgnoreCase
(
s
.
getServeType
())).
map
(
AppStatisticsDTO:
:
getServeId
).
collect
(
Collectors
.
toList
());
List
<
Long
>
appIds
=
appStatisticsDTOS
.
stream
().
filter
(
s
->
s
.
getServeId
()
!=
null
&&
"APP"
.
equalsIgnoreCase
(
s
.
getServeType
())).
map
(
AppStatisticsDTO:
:
getServeId
).
collect
(
Collectors
.
toList
());
//获取详情
Map
<
Long
,
AppDto
>
appDtoMap
=
appConsr
.
mapByIds
(
appIds
);
Map
<
Long
,
ProductDto
>
productDtoMap
=
productConsr
.
getProBasesByIds
(
productIds
);
//结算接口
Map
<
Long
,
BigDecimal
>
productIncomeMap
=
settlementConsr
.
getAdviserIncomeByCondition
(
productIds
,
"PRODUCT"
,
partyId
,
qrcodeId
,
bookGroupId
);
Map
<
Long
,
BigDecimal
>
appIncomeMap
=
settlementConsr
.
getAdviserIncomeByCondition
(
appIds
,
"APP"
,
partyId
,
qrcodeId
,
bookGroupId
);
//交易接口
WechatGroupDto
wechatGroupDtoP
=
new
WechatGroupDto
();
wechatGroupDtoP
.
setBookGroupId
(
bookGroupId
);
wechatGroupDtoP
.
setIds
(
productIds
);
wechatGroupDtoP
.
setPartyId
(
partyId
);
wechatGroupDtoP
.
setType
(
"PRODUCT"
);
wechatGroupDtoP
.
setQrcodeId
(
qrcodeId
);
WechatGroupDto
wechatGroupDtoA
=
new
WechatGroupDto
();
wechatGroupDtoA
.
setBookGroupId
(
bookGroupId
);
wechatGroupDtoA
.
setIds
(
appIds
);
wechatGroupDtoA
.
setPartyId
(
partyId
);
wechatGroupDtoA
.
setType
(
"APP"
);
Map
<
Long
,
GroupMoneyDto
>
productSaleMap
=
tradeConsr
.
getQrGroupSaleMoney
(
wechatGroupDtoP
);
Map
<
Long
,
GroupMoneyDto
>
appSaleMap
=
tradeConsr
.
getQrGroupSaleMoney
(
wechatGroupDtoA
);
for
(
AppStatisticsDTO
appStatisticsDTO
:
appStatisticsDTOS
)
{
Long
id
=
appStatisticsDTO
.
getServeId
();
String
type
=
appStatisticsDTO
.
getServeType
();
Integer
clickCount
=
clickCountMap
.
get
(
id
);
if
(
clickCount
==
null
)
{
clickCount
=
0
;
}
appStatisticsDTO
.
setClickCount
(
clickCount
);
Integer
buyCount
=
0
;
Double
incomeAmount
=
0
D
;
Double
saleAmount
=
0
D
;
if
(
"PRODUCT"
.
equalsIgnoreCase
(
type
))
{
if
(
productIncomeMap
.
get
(
id
)
!=
null
)
{
incomeAmount
=
productIncomeMap
.
get
(
id
).
doubleValue
();
}
appStatisticsDTO
.
setIncomeAmount
(
incomeAmount
);
if
(
productSaleMap
.
get
(
id
)
!=
null
)
{
saleAmount
=
productSaleMap
.
get
(
id
).
getSaleMoney
();
buyCount
=
productSaleMap
.
get
(
id
).
getSaleCount
().
intValue
();
}
appStatisticsDTO
.
setSaleAmount
(
saleAmount
);
appStatisticsDTO
.
setBuyCount
(
buyCount
);
if
(
productDtoMap
!=
null
&&
productDtoMap
.
get
(
id
)
!=
null
)
{
ProductDto
productDto
=
productDtoMap
.
get
(
id
);
appStatisticsDTO
.
setServeName
(
productDto
.
getProductName
());
appStatisticsDTO
.
setImage
(
productDto
.
getCoverImg
());
ProductTypeDto
productTypeDto
=
productDto
.
getProductTypeDto
();
if
(
productTypeDto
!=
null
)
{
appStatisticsDTO
.
setTypeName
(
productTypeDto
.
getTypeName
());
}
}
}
if
(
"APP"
.
equalsIgnoreCase
(
type
))
{
if
(
appIncomeMap
.
get
(
id
)
!=
null
)
{
incomeAmount
=
appIncomeMap
.
get
(
id
).
doubleValue
();
}
appStatisticsDTO
.
setIncomeAmount
(
incomeAmount
);
GroupMoneyDto
groupMoneyDtoApp
=
appSaleMap
.
get
(
id
);
if
(
groupMoneyDtoApp
!=
null
)
{
saleAmount
=
groupMoneyDtoApp
.
getSaleMoney
();
buyCount
=
groupMoneyDtoApp
.
getSaleCount
().
intValue
();
}
appStatisticsDTO
.
setSaleAmount
(
saleAmount
);
appStatisticsDTO
.
setBuyCount
(
buyCount
);
if
(
appDtoMap
!=
null
&&
appDtoMap
.
get
(
id
)
!=
null
)
{
AppDto
appDto
=
appDtoMap
.
get
(
id
);
appStatisticsDTO
.
setTypeName
(
appDto
.
getTypeName
());
appStatisticsDTO
.
setServeName
(
appDto
.
getTitle
());
appStatisticsDTO
.
setImage
(
appDto
.
getSquareImg
());
}
}
if
(
buyCount
==
null
||
buyCount
==
0
||
clickCount
==
null
||
clickCount
==
0
)
{
appStatisticsDTO
.
setBuyRate
(
0
D
);
}
else
{
appStatisticsDTO
.
setBuyRate
(
new
BigDecimal
(
buyCount
.
doubleValue
()
/
clickCount
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
return
pageBeanNew
;
}
@Override
@Override
public
void
exportGroupQrcode4Adviser
(
Map
<
String
,
Object
>
paramMap
,
Long
adviserId
)
{
public
void
exportGroupQrcode4Adviser
(
Map
<
String
,
Object
>
paramMap
,
Long
adviserId
)
{
EXECUTOR_SINGLE_SERVICE
.
execute
(()
->
{
EXECUTOR_SINGLE_SERVICE
.
execute
(()
->
{
...
...
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/AppClickRecordDao.java
0 → 100644
View file @
516b90be
package
com
.
pcloud
.
book
.
group
.
dao
;
import
com.pcloud.book.group.dto.AppStatisticsDTO
;
import
com.pcloud.book.group.entity.AppClickRecord
;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.List
;
public
interface
AppClickRecordDao
extends
BaseDao
<
AppClickRecord
>
{
/**
* 根据作品或应用id集合获取统计
*/
List
<
AppStatisticsDTO
>
getClickStatisticsByServeIds
(
List
<
Long
>
serveIds
,
Long
qrcodeId
,
Long
bookGroupId
);
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/AppTouchRecordDao.java
0 → 100644
View file @
516b90be
package
com
.
pcloud
.
book
.
group
.
dao
;
import
com.pcloud.book.group.entity.AppTouchRecord
;
import
com.pcloud.common.core.dao.BaseDao
;
public
interface
AppTouchRecordDao
extends
BaseDao
<
AppTouchRecord
>
{
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/impl/AppClickRecordDaoImpl.java
0 → 100644
View file @
516b90be
package
com
.
pcloud
.
book
.
group
.
dao
.
impl
;
import
com.pcloud.book.group.dao.AppClickRecordDao
;
import
com.pcloud.book.group.dto.AppStatisticsDTO
;
import
com.pcloud.book.group.entity.AppClickRecord
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @Description
* @Author ruansiyuan
* @Date 2019/5/29 17:43
**/
@Component
(
"appClickRecordDao"
)
public
class
AppClickRecordDaoImpl
extends
BaseDaoImpl
<
AppClickRecord
>
implements
AppClickRecordDao
{
@Override
public
List
<
AppStatisticsDTO
>
getClickStatisticsByServeIds
(
List
<
Long
>
serveIds
,
Long
qrcodeId
,
Long
bookGroupId
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"qrcodeId"
,
qrcodeId
);
map
.
put
(
"bookGroupId"
,
bookGroupId
);
map
.
put
(
"serveIds"
,
serveIds
);
return
this
.
getSqlSession
().
selectList
(
this
.
getStatement
(
"getClickStatisticsByServeIds"
),
map
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/impl/AppTouchRecordDaoImpl.java
0 → 100644
View file @
516b90be
package
com
.
pcloud
.
book
.
group
.
dao
.
impl
;
import
com.pcloud.book.group.dao.AppTouchRecordDao
;
import
com.pcloud.book.group.entity.AppTouchRecord
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
/**
* @Description
* @Author ruansiyuan
* @Date 2019/5/29 17:43
**/
@Component
(
"appTouchRecordDao"
)
public
class
AppTouchRecordDaoImpl
extends
BaseDaoImpl
<
AppTouchRecord
>
implements
AppTouchRecordDao
{
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dto/AppStatisticsDTO.java
0 → 100644
View file @
516b90be
package
com
.
pcloud
.
book
.
group
.
dto
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serializable
;
/**
* @Description
* @Author ruansiyuan
* @Date 2019/5/30 15:27
**/
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
public
class
AppStatisticsDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
6223419228204706366L
;
@ApiModelProperty
(
"应用或作品id"
)
private
Long
serveId
;
@ApiModelProperty
(
"应用或作品名称"
)
private
String
serveName
;
@ApiModelProperty
(
"类型"
)
private
String
serveType
;
@ApiModelProperty
(
"应用或作品类型名称"
)
private
String
typeName
;
@ApiModelProperty
(
"应用或作品图片"
)
private
String
image
;
@ApiModelProperty
(
"推送次数"
)
private
Integer
pushCount
;
@ApiModelProperty
(
"点击次数"
)
private
Integer
clickCount
;
@ApiModelProperty
(
"购买次数"
)
private
Integer
buyCount
;
@ApiModelProperty
(
"购买率"
)
private
Double
buyRate
;
@ApiModelProperty
(
"销售总额"
)
private
Double
saleAmount
;
@ApiModelProperty
(
"收益总额"
)
private
Double
incomeAmount
;
public
Long
getServeId
()
{
return
serveId
;
}
public
void
setServeId
(
Long
serveId
)
{
this
.
serveId
=
serveId
;
}
public
String
getServeName
()
{
return
serveName
;
}
public
void
setServeName
(
String
serveName
)
{
this
.
serveName
=
serveName
;
}
public
String
getServeType
()
{
return
serveType
;
}
public
void
setServeType
(
String
serveType
)
{
this
.
serveType
=
serveType
;
}
public
String
getTypeName
()
{
return
typeName
;
}
public
void
setTypeName
(
String
typeName
)
{
this
.
typeName
=
typeName
;
}
public
String
getImage
()
{
return
image
;
}
public
void
setImage
(
String
image
)
{
this
.
image
=
image
;
}
public
Integer
getPushCount
()
{
return
pushCount
;
}
public
void
setPushCount
(
Integer
pushCount
)
{
this
.
pushCount
=
pushCount
;
}
public
Integer
getClickCount
()
{
return
clickCount
;
}
public
void
setClickCount
(
Integer
clickCount
)
{
this
.
clickCount
=
clickCount
;
}
public
Integer
getBuyCount
()
{
return
buyCount
;
}
public
void
setBuyCount
(
Integer
buyCount
)
{
this
.
buyCount
=
buyCount
;
}
public
Double
getBuyRate
()
{
return
buyRate
;
}
public
void
setBuyRate
(
Double
buyRate
)
{
this
.
buyRate
=
buyRate
;
}
public
Double
getSaleAmount
()
{
return
saleAmount
;
}
public
void
setSaleAmount
(
Double
saleAmount
)
{
this
.
saleAmount
=
saleAmount
;
}
public
Double
getIncomeAmount
()
{
return
incomeAmount
;
}
public
void
setIncomeAmount
(
Double
incomeAmount
)
{
this
.
incomeAmount
=
incomeAmount
;
}
@Override
public
String
toString
()
{
return
"AppStatisticsDTO{"
+
"serveId="
+
serveId
+
", serveName='"
+
serveName
+
'\''
+
", serveType='"
+
serveType
+
'\''
+
", typeName='"
+
typeName
+
'\''
+
", image='"
+
image
+
'\''
+
", pushCount="
+
pushCount
+
", clickCount="
+
clickCount
+
", buyCount="
+
buyCount
+
", buyRate="
+
buyRate
+
", saleAmount="
+
saleAmount
+
", incomeAmount="
+
incomeAmount
+
'}'
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/entity/AppClickRecord.java
0 → 100644
View file @
516b90be
package
com
.
pcloud
.
book
.
group
.
entity
;
import
com.pcloud.common.entity.BaseEntity
;
import
io.swagger.annotations.ApiModelProperty
;
/**
* @Description
* @Author ruansiyuan
* @Date 2019/5/29 17:32
**/
public
class
AppClickRecord
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
2905228127427560635L
;
@ApiModelProperty
(
"社群书id"
)
private
Long
bookGroupId
;
@ApiModelProperty
(
"分类id"
)
private
Long
classifyId
;
@ApiModelProperty
(
"群id"
)
private
Long
qrcodeId
;
@ApiModelProperty
(
"微信群id"
)
private
String
weixinGroupId
;
@ApiModelProperty
(
"应用或作品id"
)
private
Long
serveId
;
@ApiModelProperty
(
"类型"
)
private
String
serveType
;
public
Long
getBookGroupId
()
{
return
bookGroupId
;
}
public
void
setBookGroupId
(
Long
bookGroupId
)
{
this
.
bookGroupId
=
bookGroupId
;
}
public
Long
getClassifyId
()
{
return
classifyId
;
}
public
void
setClassifyId
(
Long
classifyId
)
{
this
.
classifyId
=
classifyId
;
}
public
Long
getQrcodeId
()
{
return
qrcodeId
;
}
public
void
setQrcodeId
(
Long
qrcodeId
)
{
this
.
qrcodeId
=
qrcodeId
;
}
public
String
getWeixinGroupId
()
{
return
weixinGroupId
;
}
public
void
setWeixinGroupId
(
String
weixinGroupId
)
{
this
.
weixinGroupId
=
weixinGroupId
;
}
public
Long
getServeId
()
{
return
serveId
;
}
public
void
setServeId
(
Long
serveId
)
{
this
.
serveId
=
serveId
;
}
public
String
getServeType
()
{
return
serveType
;
}
public
void
setServeType
(
String
serveType
)
{
this
.
serveType
=
serveType
;
}
@Override
public
String
toString
()
{
return
"AppClickRecord{"
+
"bookGroupId="
+
bookGroupId
+
", classifyId="
+
classifyId
+
", qrcodeId="
+
qrcodeId
+
", weixinGroupId='"
+
weixinGroupId
+
'\''
+
", serveId="
+
serveId
+
", serveType='"
+
serveType
+
'\''
+
"} "
+
super
.
toString
();
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/entity/AppTouchRecord.java
0 → 100644
View file @
516b90be
package
com
.
pcloud
.
book
.
group
.
entity
;
import
com.pcloud.common.entity.BaseEntity
;
import
io.swagger.annotations.ApiModelProperty
;
/**
* @Description
* @Author ruansiyuan
* @Date 2019/5/29 17:32
**/
public
class
AppTouchRecord
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
2905228127427560635L
;
@ApiModelProperty
(
"社群书id"
)
private
Long
bookGroupId
;
@ApiModelProperty
(
"分类id"
)
private
Long
classifyId
;
@ApiModelProperty
(
"群id"
)
private
Long
qrcodeId
;
@ApiModelProperty
(
"微信群id"
)
private
String
weixinGroupId
;
@ApiModelProperty
(
"应用或作品id"
)
private
Long
serveId
;
@ApiModelProperty
(
"类型"
)
private
String
serveType
;
@ApiModelProperty
(
"触发类型:1欢迎语,2关键词,3群发"
)
private
Integer
touchType
;
public
Long
getBookGroupId
()
{
return
bookGroupId
;
}
public
void
setBookGroupId
(
Long
bookGroupId
)
{
this
.
bookGroupId
=
bookGroupId
;
}
public
Long
getClassifyId
()
{
return
classifyId
;
}
public
void
setClassifyId
(
Long
classifyId
)
{
this
.
classifyId
=
classifyId
;
}
public
Long
getQrcodeId
()
{
return
qrcodeId
;
}
public
void
setQrcodeId
(
Long
qrcodeId
)
{
this
.
qrcodeId
=
qrcodeId
;
}
public
String
getWeixinGroupId
()
{
return
weixinGroupId
;
}
public
void
setWeixinGroupId
(
String
weixinGroupId
)
{
this
.
weixinGroupId
=
weixinGroupId
;
}
public
Long
getServeId
()
{
return
serveId
;
}
public
void
setServeId
(
Long
serveId
)
{
this
.
serveId
=
serveId
;
}
public
String
getServeType
()
{
return
serveType
;
}
public
void
setServeType
(
String
serveType
)
{
this
.
serveType
=
serveType
;
}
public
Integer
getTouchType
()
{
return
touchType
;
}
public
void
setTouchType
(
Integer
touchType
)
{
this
.
touchType
=
touchType
;
}
@Override
public
String
toString
()
{
return
"AppTouchRecord{"
+
"bookGroupId="
+
bookGroupId
+
", classifyId="
+
classifyId
+
", qrcodeId="
+
qrcodeId
+
", weixinGroupId='"
+
weixinGroupId
+
'\''
+
", serveId="
+
serveId
+
", serveType='"
+
serveType
+
'\''
+
", touchType="
+
touchType
+
"} "
+
super
.
toString
();
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/enums/TouchTypeEnum.java
0 → 100644
View file @
516b90be
package
com
.
pcloud
.
book
.
group
.
enums
;
/**
* 触发类型
*/
public
enum
TouchTypeEnum
{
/**
* 欢迎语
*/
GUIDE
(
1
),
/**
* 关键词
*/
KEYWORD
(
2
),
/**
* 群发
*/
PUSH
(
3
);
public
final
Integer
value
;
TouchTypeEnum
(
Integer
value
)
{
this
.
value
=
value
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/facade/AppClickRecordFacade.java
0 → 100644
View file @
516b90be
package
com
.
pcloud
.
book
.
group
.
facade
;
import
com.pcloud.book.group.entity.AppClickRecord
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
@Api
(
description
=
"应用作品点击记录"
)
public
interface
AppClickRecordFacade
{
@ApiOperation
(
"新增应用作品点击记录"
)
@PostMapping
(
"createAppClickRecord"
)
ResponseDto
<?>
createAppClickRecord
(
@RequestBody
@ApiParam
(
"应用点击记录模型"
)
AppClickRecord
appClickRecord
)
throws
BizException
;
}
pcloud-service-book/src/main/java/com/pcloud/book/group/facade/BookGroupFacade.java
View file @
516b90be
...
@@ -186,6 +186,16 @@ public interface BookGroupFacade {
...
@@ -186,6 +186,16 @@ public interface BookGroupFacade {
@RequestMapping
(
value
=
"isSpecialAgent"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"isSpecialAgent"
,
method
=
RequestMethod
.
GET
)
ResponseDto
<
Boolean
>
isSpecialAgent
(
@RequestHeader
(
"token"
)
String
token
)
throws
BizException
,
PermissionException
,
JsonParseException
;
ResponseDto
<
Boolean
>
isSpecialAgent
(
@RequestHeader
(
"token"
)
String
token
)
throws
BizException
,
PermissionException
,
JsonParseException
;
@ApiOperation
(
"获取应用作品统计"
)
@GetMapping
(
"getAppStatistics"
)
ResponseDto
<?>
getAppStatistics
(
@RequestHeader
(
"token"
)
String
token
,
@RequestParam
(
"currentPage"
)
Integer
currentPage
,
@RequestParam
(
"numPerPage"
)
Integer
numPerPage
,
@RequestParam
(
"bookGroupId"
)
Long
bookGroupId
,
@RequestParam
(
value
=
"qrcodeId"
,
required
=
false
)
Long
qrcodeId
)
throws
BizException
,
PermissionException
,
JsonParseException
;
@ApiOperation
(
value
=
"导出社群码(编辑)"
,
httpMethod
=
"GET"
)
@ApiOperation
(
value
=
"导出社群码(编辑)"
,
httpMethod
=
"GET"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
...
...
pcloud-service-book/src/main/java/com/pcloud/book/group/facade/impl/AppClickRecordFacadeImpl.java
0 → 100644
View file @
516b90be
package
com
.
pcloud
.
book
.
group
.
facade
.
impl
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.group.biz.AppClickRecordBiz
;
import
com.pcloud.book.group.entity.AppClickRecord
;
import
com.pcloud.book.group.facade.AppClickRecordFacade
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.exceptions.BizException
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @Description
* @Author ruansiyuan
* @Date 2019/5/30 12:00
**/
@RestController
(
"appClickRecordFacade"
)
@RequestMapping
(
"appClickRecord"
)
public
class
AppClickRecordFacadeImpl
implements
AppClickRecordFacade
{
@Autowired
private
AppClickRecordBiz
appClickRecordBiz
;
@ApiOperation
(
"新增应用作品点击记录"
)
@PostMapping
(
"createAppClickRecord"
)
@Override
public
ResponseDto
<?>
createAppClickRecord
(
@RequestBody
@ApiParam
(
"应用点击记录模型"
)
AppClickRecord
appClickRecord
)
throws
BizException
{
if
(
appClickRecord
==
null
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"参数为空!"
);
}
return
new
ResponseDto
<>(
appClickRecordBiz
.
createAppClickRecord
(
appClickRecord
));
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/facade/impl/BookGroupFacadeImpl.java
View file @
516b90be
...
@@ -265,6 +265,26 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
...
@@ -265,6 +265,26 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
return
new
ResponseDto
<
Boolean
>(
bookGroupBiz
.
isSpecialAgent
(
agentId
));
return
new
ResponseDto
<
Boolean
>(
bookGroupBiz
.
isSpecialAgent
(
agentId
));
}
}
@ApiOperation
(
"获取应用作品统计"
)
@GetMapping
(
"getAppStatistics"
)
@Override
public
ResponseDto
<?>
getAppStatistics
(
@RequestHeader
(
"token"
)
String
token
,
@RequestParam
(
"currentPage"
)
Integer
currentPage
,
@RequestParam
(
"numPerPage"
)
Integer
numPerPage
,
@RequestParam
(
"bookGroupId"
)
Long
bookGroupId
,
@RequestParam
(
value
=
"qrcodeId"
,
required
=
false
)
Long
qrcodeId
)
throws
BizException
,
PermissionException
{
Long
partyId
=(
Long
)
SessionUtil
.
getVlaue
(
token
,
SessionUtil
.
PARTY_ID
);
if
(
currentPage
==
null
||
currentPage
<
0
||
numPerPage
==
null
||
numPerPage
<=
0
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"分页参数错误!"
);
}
if
(
bookGroupId
==
null
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"社群码id不能为空!"
);
}
return
new
ResponseDto
<>(
bookGroupBiz
.
getAppStatistics
(
currentPage
,
numPerPage
,
bookGroupId
,
qrcodeId
,
partyId
));
}
@Override
@Override
@ApiOperation
(
value
=
"导出社群码(编辑)"
,
httpMethod
=
"GET"
)
@ApiOperation
(
value
=
"导出社群码(编辑)"
,
httpMethod
=
"GET"
)
@RequestMapping
(
value
=
"exportGroupQrcode4Adviser"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"exportGroupQrcode4Adviser"
,
method
=
RequestMethod
.
GET
)
...
...
pcloud-service-book/src/main/java/com/pcloud/book/keywords/biz/BookKeywordBiz.java
View file @
516b90be
package
com
.
pcloud
.
book
.
keywords
.
biz
;
package
com
.
pcloud
.
book
.
keywords
.
biz
;
import
com.pcloud.book.keywords.dto.KeywordDTO
;
import
com.pcloud.book.keywords.dto.KeywordDTO
;
import
com.pcloud.book.keywords.dto.KeywordStatisticsDTO
;
import
com.pcloud.book.keywords.vo.KeywordVO
;
import
com.pcloud.book.keywords.vo.KeywordVO
;
import
com.pcloud.book.keywords.vo.ListKeywordParam
;
import
com.pcloud.book.keywords.vo.ListKeywordParam
;
import
com.pcloud.book.keywords.vo.ListKeywordVO
;
import
com.pcloud.book.keywords.vo.ListKeywordVO
;
...
@@ -72,4 +73,13 @@ public interface BookKeywordBiz {
...
@@ -72,4 +73,13 @@ public interface BookKeywordBiz {
*/
*/
void
sendKeywordMessage
(
String
content
,
String
weixinGroupId
,
String
userWxId
);
void
sendKeywordMessage
(
String
content
,
String
weixinGroupId
,
String
userWxId
);
/**
* 关键词统计
* @param currentPage
* @param numPerPage
* @param bookGroupId
* @param weixinGroupId
* @return
*/
PageBeanNew
<
KeywordStatisticsDTO
>
getKeywordStatistics
(
Integer
currentPage
,
Integer
numPerPage
,
Long
bookGroupId
,
String
weixinGroupId
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/keywords/biz/impl/BookGuideBizImpl.java
View file @
516b90be
...
@@ -9,9 +9,14 @@ import com.pcloud.book.consumer.resource.ProductConsr;
...
@@ -9,9 +9,14 @@ import com.pcloud.book.consumer.resource.ProductConsr;
import
com.pcloud.book.consumer.wechatgroup.WechatGroupConsr
;
import
com.pcloud.book.consumer.wechatgroup.WechatGroupConsr
;
import
com.pcloud.book.group.biz.BookGroupClassifyBiz
;
import
com.pcloud.book.group.biz.BookGroupClassifyBiz
;
import
com.pcloud.book.group.biz.GroupQrcodeBiz
;
import
com.pcloud.book.group.biz.GroupQrcodeBiz
;
import
com.pcloud.book.group.dao.AppTouchRecordDao
;
import
com.pcloud.book.group.dao.BookGroupDao
;
import
com.pcloud.book.group.dao.BookGroupDao
;
import
com.pcloud.book.group.dao.GroupQrcodeDao
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.GroupClassifyQrcodeDTO
;
import
com.pcloud.book.group.dto.GroupClassifyQrcodeDTO
;
import
com.pcloud.book.group.entity.AppTouchRecord
;
import
com.pcloud.book.group.entity.GroupQrcode
;
import
com.pcloud.book.group.enums.TouchTypeEnum
;
import
com.pcloud.book.group.tools.SendWeixinRequestTools
;
import
com.pcloud.book.group.tools.SendWeixinRequestTools
;
import
com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO
;
import
com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO
;
import
com.pcloud.book.keywords.biz.BookGuideBiz
;
import
com.pcloud.book.keywords.biz.BookGuideBiz
;
...
@@ -30,9 +35,6 @@ import com.pcloud.book.keywords.vo.UpdateGuideVO;
...
@@ -30,9 +35,6 @@ import com.pcloud.book.keywords.vo.UpdateGuideVO;
import
com.pcloud.channelcenter.wechat.dto.AccountSettingDto
;
import
com.pcloud.channelcenter.wechat.dto.AccountSettingDto
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.cache.redis.JedisClusterUtils
;
import
com.pcloud.common.utils.string.StringUtil
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.dao.DataIntegrityViolationException
;
import
org.springframework.dao.DataIntegrityViolationException
;
...
@@ -69,9 +71,13 @@ public class BookGuideBizImpl implements BookGuideBiz {
...
@@ -69,9 +71,13 @@ public class BookGuideBizImpl implements BookGuideBiz {
@Autowired
@Autowired
private
GroupQrcodeBiz
groupQrcodeBiz
;
private
GroupQrcodeBiz
groupQrcodeBiz
;
@Autowired
@Autowired
private
AppTouchRecordDao
appTouchRecordDao
;
@Autowired
private
BookClockCheck
bookClockCheck
;
private
BookClockCheck
bookClockCheck
;
@Autowired
@Autowired
private
BookClockKeywordDao
bookClockKeywordDao
;
private
BookClockKeywordDao
bookClockKeywordDao
;
@Autowired
private
GroupQrcodeDao
groupQrcodeDao
;
@Override
@Override
@ParamLog
(
"新增欢迎语"
)
@ParamLog
(
"新增欢迎语"
)
...
@@ -221,6 +227,8 @@ public class BookGuideBizImpl implements BookGuideBiz {
...
@@ -221,6 +227,8 @@ public class BookGuideBizImpl implements BookGuideBiz {
handleUrl
(
replyMessages
,
wechatInfo
,
classifyQrcodeInfo
);
handleUrl
(
replyMessages
,
wechatInfo
,
classifyQrcodeInfo
);
//推送消息
//推送消息
SendWeixinRequestTools
.
sendGuideMessage
(
replyMessages
,
robotId
,
weixinGroupId
);
SendWeixinRequestTools
.
sendGuideMessage
(
replyMessages
,
robotId
,
weixinGroupId
);
//新增欢迎语应用触发记录
addGuideAppTouchRecord
(
replyMessages
,
weixinGroupId
,
classifyQrcodeInfo
.
getBookGroupId
(),
classifyQrcodeInfo
.
getClassifyId
());
}
}
SendWeixinRequestTools
.
sendKeywordsInfo
(
keywords
,
robotId
,
weixinGroupId
);
SendWeixinRequestTools
.
sendKeywordsInfo
(
keywords
,
robotId
,
weixinGroupId
);
if
(
bookGuide
!=
null
&&
bookGuide
.
getIsRecommend
()
!=
null
&&
bookGuide
.
getIsRecommend
()
==
1
)
{
if
(
bookGuide
!=
null
&&
bookGuide
.
getIsRecommend
()
!=
null
&&
bookGuide
.
getIsRecommend
()
==
1
)
{
...
@@ -253,6 +261,28 @@ public class BookGuideBizImpl implements BookGuideBiz {
...
@@ -253,6 +261,28 @@ public class BookGuideBizImpl implements BookGuideBiz {
}
}
}
}
/**
* 新增欢迎语应用触发记录
*/
private
void
addGuideAppTouchRecord
(
List
<
ReplyMessageVO
>
replyMessages
,
String
weixinGroupId
,
Long
bookGroupId
,
Long
classifyId
)
{
for
(
ReplyMessageVO
replyMessageVO:
replyMessages
){
if
(
ReplyTypeEnum
.
APP
.
value
.
equals
(
replyMessageVO
.
getReplyType
())){
AppTouchRecord
appTouchRecord
=
new
AppTouchRecord
();
appTouchRecord
.
setServeId
(
replyMessageVO
.
getServeId
());
appTouchRecord
.
setServeType
(
replyMessageVO
.
getServeType
());
appTouchRecord
.
setTouchType
(
TouchTypeEnum
.
GUIDE
.
value
);
appTouchRecord
.
setBookGroupId
(
bookGroupId
);
appTouchRecord
.
setClassifyId
(
classifyId
);
GroupQrcode
groupQrcode
=
groupQrcodeDao
.
getGroupQrcodeByGroupId
(
weixinGroupId
);
if
(
groupQrcode
!=
null
)
{
appTouchRecord
.
setQrcodeId
(
groupQrcode
.
getId
());
}
appTouchRecord
.
setWeixinGroupId
(
weixinGroupId
);
appTouchRecordDao
.
insert
(
appTouchRecord
);
}
}
}
@ParamLog
(
"处理地址"
)
@ParamLog
(
"处理地址"
)
private
void
handleUrl
(
List
<
ReplyMessageVO
>
replyMessages
,
AccountSettingDto
accountSettingDto
,
GroupClassifyQrcodeDTO
groupClassifyQrcodeDTO
)
{
private
void
handleUrl
(
List
<
ReplyMessageVO
>
replyMessages
,
AccountSettingDto
accountSettingDto
,
GroupClassifyQrcodeDTO
groupClassifyQrcodeDTO
)
{
if
(
ListUtils
.
isEmpty
(
replyMessages
))
{
if
(
ListUtils
.
isEmpty
(
replyMessages
))
{
...
...
pcloud-service-book/src/main/java/com/pcloud/book/keywords/biz/impl/BookKeywordBizImpl.java
View file @
516b90be
...
@@ -5,15 +5,21 @@ import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
...
@@ -5,15 +5,21 @@ import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import
com.pcloud.book.consumer.resource.ProductConsr
;
import
com.pcloud.book.consumer.resource.ProductConsr
;
import
com.pcloud.book.consumer.wechatgroup.WechatGroupConsr
;
import
com.pcloud.book.consumer.wechatgroup.WechatGroupConsr
;
import
com.pcloud.book.group.biz.BookGroupClassifyBiz
;
import
com.pcloud.book.group.biz.BookGroupClassifyBiz
;
import
com.pcloud.book.group.dao.AppTouchRecordDao
;
import
com.pcloud.book.group.dao.BookGroupDao
;
import
com.pcloud.book.group.dao.BookGroupDao
;
import
com.pcloud.book.group.dao.GroupQrcodeDao
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.GroupClassifyQrcodeDTO
;
import
com.pcloud.book.group.dto.GroupClassifyQrcodeDTO
;
import
com.pcloud.book.group.entity.AppTouchRecord
;
import
com.pcloud.book.group.entity.GroupQrcode
;
import
com.pcloud.book.group.enums.TouchTypeEnum
;
import
com.pcloud.book.group.tools.SendWeixinRequestTools
;
import
com.pcloud.book.group.tools.SendWeixinRequestTools
;
import
com.pcloud.book.keywords.biz.BookKeywordBiz
;
import
com.pcloud.book.keywords.biz.BookKeywordBiz
;
import
com.pcloud.book.keywords.dao.BookKeywordDao
;
import
com.pcloud.book.keywords.dao.BookKeywordDao
;
import
com.pcloud.book.keywords.dao.BookKeywordRecordDao
;
import
com.pcloud.book.keywords.dao.BookKeywordRecordDao
;
import
com.pcloud.book.keywords.dao.KeywordDao
;
import
com.pcloud.book.keywords.dao.KeywordDao
;
import
com.pcloud.book.keywords.dto.KeywordDTO
;
import
com.pcloud.book.keywords.dto.KeywordDTO
;
import
com.pcloud.book.keywords.dto.KeywordStatisticsDTO
;
import
com.pcloud.book.keywords.dto.ReplyKeywordDTO
;
import
com.pcloud.book.keywords.dto.ReplyKeywordDTO
;
import
com.pcloud.book.keywords.entity.BookKeyword
;
import
com.pcloud.book.keywords.entity.BookKeyword
;
import
com.pcloud.book.keywords.entity.BookKeywordRecord
;
import
com.pcloud.book.keywords.entity.BookKeywordRecord
;
...
@@ -40,10 +46,13 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -40,10 +46,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
/**
* @author lily
* @author lily
...
@@ -67,6 +76,10 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
...
@@ -67,6 +76,10 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
private
BookKeywordRecordDao
bookKeywordRecordDao
;
private
BookKeywordRecordDao
bookKeywordRecordDao
;
@Autowired
@Autowired
private
ProductConsr
productConsr
;
private
ProductConsr
productConsr
;
@Autowired
private
AppTouchRecordDao
appTouchRecordDao
;
@Autowired
private
GroupQrcodeDao
groupQrcodeDao
;
@Override
@Override
@ParamLog
(
"新增关键词"
)
@ParamLog
(
"新增关键词"
)
...
@@ -222,10 +235,12 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
...
@@ -222,10 +235,12 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
}
else
{
}
else
{
JedisClusterUtils
.
setJson
(
"BOOK:KEYWORD:"
+
weixinGroupId
+
"-"
+
replyKeywordDTO
.
getKeywordId
(),
replyKeywordDTO
.
getKeywordId
(),
10
);
JedisClusterUtils
.
setJson
(
"BOOK:KEYWORD:"
+
weixinGroupId
+
"-"
+
replyKeywordDTO
.
getKeywordId
(),
replyKeywordDTO
.
getKeywordId
(),
10
);
insertBookKeywordRecord
(
classifyQrcodeInfo
,
replyKeywordDTO
.
getKeywordId
(),
userWxId
,
weixinGroupId
,
true
);
insertBookKeywordRecord
(
classifyQrcodeInfo
,
replyKeywordDTO
.
getKeywordId
(),
userWxId
,
weixinGroupId
,
true
);
}
}
//获取推送消息机器人
//获取推送消息机器人
String
robotId
=
wechatGroupConsr
.
getRobotIdByGroupId
(
weixinGroupId
);
String
robotId
=
wechatGroupConsr
.
getRobotIdByGroupId
(
weixinGroupId
);
SendWeixinRequestTools
.
sendKeywordMessage
(
replyKeywordDTO
,
robotId
,
weixinGroupId
);
SendWeixinRequestTools
.
sendKeywordMessage
(
replyKeywordDTO
,
robotId
,
weixinGroupId
);
//新增关键词触发记录
addKeywordAppTouchRecord
(
replyKeywordDTO
,
weixinGroupId
,
classifyQrcodeInfo
.
getClassifyId
(),
classifyQrcodeInfo
.
getBookGroupId
());
//第一推送关键词消息埋点
//第一推送关键词消息埋点
String
keywordsKey
=
"BOOK:FIRSTKEYWORD:"
+
DateUtils
.
getShortDateStr
()
+
"-"
+
weixinGroupId
;
String
keywordsKey
=
"BOOK:FIRSTKEYWORD:"
+
DateUtils
.
getShortDateStr
()
+
"-"
+
weixinGroupId
;
Boolean
isSend
=
JedisClusterUtils
.
getJson
(
keywordsKey
,
Boolean
.
class
);
Boolean
isSend
=
JedisClusterUtils
.
getJson
(
keywordsKey
,
Boolean
.
class
);
...
@@ -242,6 +257,29 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
...
@@ -242,6 +257,29 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
}
}
}
}
/**
* 关键词应用触发记录
*/
private
void
addKeywordAppTouchRecord
(
ReplyKeywordDTO
replyKeywordDTO
,
String
weixinGroupId
,
Long
classifyId
,
Long
bookGroupId
)
{
if
(
ReplyTypeEnum
.
APP
.
value
.
equals
(
replyKeywordDTO
.
getReplyType
()))
{
Keyword
keyword
=
keywordDao
.
getById
(
replyKeywordDTO
.
getKeywordId
());
if
(
keyword
!=
null
)
{
AppTouchRecord
appTouchRecord
=
new
AppTouchRecord
();
appTouchRecord
.
setServeId
(
keyword
.
getServeId
());
appTouchRecord
.
setServeType
(
keyword
.
getServeType
());
appTouchRecord
.
setTouchType
(
TouchTypeEnum
.
KEYWORD
.
value
);
appTouchRecord
.
setBookGroupId
(
bookGroupId
);
appTouchRecord
.
setClassifyId
(
classifyId
);
GroupQrcode
groupQrcode
=
groupQrcodeDao
.
getGroupQrcodeByGroupId
(
weixinGroupId
);
if
(
groupQrcode
!=
null
)
{
appTouchRecord
.
setQrcodeId
(
groupQrcode
.
getId
());
}
appTouchRecord
.
setWeixinGroupId
(
weixinGroupId
);
appTouchRecordDao
.
insert
(
appTouchRecord
);
}
}
}
private
void
insertBookKeywordRecord
(
GroupClassifyQrcodeDTO
classifyQrcodeInfo
,
Long
keywordId
,
String
userWxId
,
String
weixinGroupId
,
Boolean
isSend
)
{
private
void
insertBookKeywordRecord
(
GroupClassifyQrcodeDTO
classifyQrcodeInfo
,
Long
keywordId
,
String
userWxId
,
String
weixinGroupId
,
Boolean
isSend
)
{
BookKeywordRecord
bookKeywordRecord
=
new
BookKeywordRecord
();
BookKeywordRecord
bookKeywordRecord
=
new
BookKeywordRecord
();
BeanUtils
.
copyProperties
(
classifyQrcodeInfo
,
bookKeywordRecord
);
BeanUtils
.
copyProperties
(
classifyQrcodeInfo
,
bookKeywordRecord
);
...
@@ -251,4 +289,59 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
...
@@ -251,4 +289,59 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
bookKeywordRecord
.
setSend
(
isSend
);
bookKeywordRecord
.
setSend
(
isSend
);
bookKeywordRecordDao
.
insert
(
bookKeywordRecord
);
bookKeywordRecordDao
.
insert
(
bookKeywordRecord
);
}
}
@Override
public
PageBeanNew
<
KeywordStatisticsDTO
>
getKeywordStatistics
(
Integer
currentPage
,
Integer
numPerPage
,
Long
bookGroupId
,
String
weixinGroupId
)
{
PageParam
pageParam
=
new
PageParam
(
currentPage
,
numPerPage
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"bookGroupId"
,
bookGroupId
);
//分页获取关键词,创建时间,名称信息
PageBeanNew
<
KeywordStatisticsDTO
>
pageBeanNew
=
bookKeywordDao
.
listPageNew
(
pageParam
,
map
,
"getKeywordInfoByBookGroupId"
);
List
<
KeywordStatisticsDTO
>
keywordStatisticsDTOS
=
pageBeanNew
.
getRecordList
();
if
(
ListUtils
.
isEmpty
(
keywordStatisticsDTOS
))
{
return
pageBeanNew
;
}
List
<
Long
>
keywordIds
=
keywordStatisticsDTOS
.
stream
().
filter
(
s
->
s
.
getKeywordId
()
!=
null
).
map
(
KeywordStatisticsDTO:
:
getKeywordId
).
collect
(
Collectors
.
toList
());
//获取关键词累计触发次数,最近一次触发时间
List
<
KeywordStatisticsDTO
>
keywordStatisticsDTOSForOther
=
bookKeywordRecordDao
.
getKeywordStatistics
(
bookGroupId
,
weixinGroupId
,
keywordIds
);
Map
<
Long
,
KeywordStatisticsDTO
>
otherMap
=
new
HashMap
<>();
if
(!
ListUtils
.
isEmpty
(
keywordStatisticsDTOSForOther
))
{
for
(
KeywordStatisticsDTO
in
:
keywordStatisticsDTOSForOther
)
{
otherMap
.
put
(
in
.
getKeywordId
(),
in
);
}
}
//获取最近7天的触发次数
Date
startDate
=
DateUtils
.
addDay
(
new
Date
(),
-
7
);
List
<
KeywordStatisticsDTO
>
keywordStatisticsDTOSForTime
=
bookKeywordRecordDao
.
getKeywordStatisticsByTime
(
bookGroupId
,
weixinGroupId
,
keywordIds
,
startDate
);
Map
<
Long
,
Integer
>
weekTouchCountMap
=
new
HashMap
<>();
if
(!
ListUtils
.
isEmpty
(
keywordStatisticsDTOSForOther
))
{
for
(
KeywordStatisticsDTO
in
:
keywordStatisticsDTOSForTime
)
{
weekTouchCountMap
.
put
(
in
.
getKeywordId
(),
in
.
getWeekTouchCount
());
}
}
for
(
KeywordStatisticsDTO
keywordStatisticsDTO
:
keywordStatisticsDTOS
)
{
Long
keywordId
=
keywordStatisticsDTO
.
getKeywordId
();
KeywordStatisticsDTO
other
=
otherMap
.
get
(
keywordId
);
if
(
other
==
null
)
{
//如果记录表里面没有就填充0
keywordStatisticsDTO
.
setTouchCount
(
0
);
keywordStatisticsDTO
.
setWeekTouchCount
(
0
);
keywordStatisticsDTO
.
setAvgDayTouchCount
(
0
D
);
}
else
{
//计算,填充
keywordStatisticsDTO
.
setTouchCount
(
other
.
getTouchCount
());
keywordStatisticsDTO
.
setLastTouchTime
(
other
.
getLastTouchTime
());
keywordStatisticsDTO
.
setWeekTouchCount
(
weekTouchCountMap
.
get
(
keywordId
));
Date
createDate
=
keywordStatisticsDTO
.
getKeywordCreateDate
();
int
days
=
(
int
)
(
DateUtils
.
getDayEnd
(
new
Date
()).
getTime
()
-
DateUtils
.
getDayEnd
(
createDate
).
getTime
())
/
1000
/
60
/
60
/
24
;
if
(
days
<=
0
)
{
days
=
1
;
}
Double
avgTouchCount
=
(
double
)
keywordStatisticsDTO
.
getTouchCount
()
/
(
double
)
days
;
keywordStatisticsDTO
.
setAvgDayTouchCount
(
new
BigDecimal
(
avgTouchCount
).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
doubleValue
());
}
}
return
pageBeanNew
;
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/keywords/dao/BookKeywordRecordDao.java
View file @
516b90be
package
com
.
pcloud
.
book
.
keywords
.
dao
;
package
com
.
pcloud
.
book
.
keywords
.
dao
;
import
com.pcloud.book.keywords.dto.KeywordStatisticsDTO
;
import
com.pcloud.book.keywords.dto.KeywordUserCountDTO
;
import
com.pcloud.book.keywords.dto.KeywordUserCountDTO
;
import
com.pcloud.book.keywords.entity.BookKeywordRecord
;
import
com.pcloud.book.keywords.entity.BookKeywordRecord
;
import
com.pcloud.common.core.dao.BaseDao
;
import
com.pcloud.common.core.dao.BaseDao
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -18,4 +20,23 @@ public interface BookKeywordRecordDao extends BaseDao<BookKeywordRecord> {
...
@@ -18,4 +20,23 @@ public interface BookKeywordRecordDao extends BaseDao<BookKeywordRecord> {
* @Date:2019/5/15 16:42
* @Date:2019/5/15 16:42
*/
*/
Map
<
Long
,
KeywordUserCountDTO
>
listKeywordUseCount
(
List
<
Long
>
qrcodeIds
);
Map
<
Long
,
KeywordUserCountDTO
>
listKeywordUseCount
(
List
<
Long
>
qrcodeIds
);
/**
* 获得统计
* @param bookGroupId
* @param weixinGroupId
* @param keywordIds
* @return
*/
List
<
KeywordStatisticsDTO
>
getKeywordStatistics
(
Long
bookGroupId
,
String
weixinGroupId
,
List
<
Long
>
keywordIds
);
/**
* 根据时间获取触发次数
* @param bookGroupId
* @param weixinGroupId
* @param keywordIds
* @param startDate
* @return
*/
List
<
KeywordStatisticsDTO
>
getKeywordStatisticsByTime
(
Long
bookGroupId
,
String
weixinGroupId
,
List
<
Long
>
keywordIds
,
Date
startDate
);
}
}
pcloud-service-book/src/main/java/com/pcloud/book/keywords/dao/impl/BookKeywordRecordDaoImpl.java
View file @
516b90be
package
com
.
pcloud
.
book
.
keywords
.
dao
.
impl
;
package
com
.
pcloud
.
book
.
keywords
.
dao
.
impl
;
import
com.pcloud.book.keywords.dao.BookKeywordRecordDao
;
import
com.pcloud.book.keywords.dao.BookKeywordRecordDao
;
import
com.pcloud.book.keywords.dto.KeywordStatisticsDTO
;
import
com.pcloud.book.keywords.dto.KeywordUserCountDTO
;
import
com.pcloud.book.keywords.dto.KeywordUserCountDTO
;
import
com.pcloud.book.keywords.entity.BookKeywordRecord
;
import
com.pcloud.book.keywords.entity.BookKeywordRecord
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
com.pcloud.common.core.dao.BaseDaoImpl
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -20,4 +23,23 @@ public class BookKeywordRecordDaoImpl extends BaseDaoImpl<BookKeywordRecord> imp
...
@@ -20,4 +23,23 @@ public class BookKeywordRecordDaoImpl extends BaseDaoImpl<BookKeywordRecord> imp
public
Map
<
Long
,
KeywordUserCountDTO
>
listKeywordUseCount
(
List
<
Long
>
qrcodeIds
)
{
public
Map
<
Long
,
KeywordUserCountDTO
>
listKeywordUseCount
(
List
<
Long
>
qrcodeIds
)
{
return
this
.
getSqlSession
().
selectMap
(
this
.
getStatement
(
"listKeywordUseCount"
),
qrcodeIds
,
"qrcodeId"
);
return
this
.
getSqlSession
().
selectMap
(
this
.
getStatement
(
"listKeywordUseCount"
),
qrcodeIds
,
"qrcodeId"
);
}
}
@Override
public
List
<
KeywordStatisticsDTO
>
getKeywordStatistics
(
Long
bookGroupId
,
String
weixinGroupId
,
List
<
Long
>
keywordIds
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"bookGroupId"
,
bookGroupId
);
map
.
put
(
"weixinGroupId"
,
weixinGroupId
);
map
.
put
(
"keywordIds"
,
keywordIds
);
return
this
.
getSqlSession
().
selectList
(
this
.
getStatement
(
"getKeywordStatistics"
),
map
);
}
@Override
public
List
<
KeywordStatisticsDTO
>
getKeywordStatisticsByTime
(
Long
bookGroupId
,
String
weixinGroupId
,
List
<
Long
>
keywordIds
,
Date
startDate
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"bookGroupId"
,
bookGroupId
);
map
.
put
(
"weixinGroupId"
,
weixinGroupId
);
map
.
put
(
"keywordIds"
,
keywordIds
);
map
.
put
(
"startDate"
,
startDate
);
return
this
.
getSqlSession
().
selectList
(
this
.
getStatement
(
"getKeywordStatisticsByTime"
),
map
);
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/keywords/dto/KeywordStatisticsDTO.java
0 → 100644
View file @
516b90be
package
com
.
pcloud
.
book
.
keywords
.
dto
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
io.swagger.annotations.ApiModelProperty
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @Description
* @Author ruansiyuan
* @Date 2019/5/28 14:38
**/
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
public
class
KeywordStatisticsDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
1982118870769572480L
;
@ApiModelProperty
(
"关键词id"
)
private
Long
keywordId
;
@ApiModelProperty
(
"关键词"
)
private
String
keyword
;
@ApiModelProperty
(
"累计触发次数"
)
private
Integer
touchCount
;
@ApiModelProperty
(
"最近7天触发次数"
)
private
Integer
weekTouchCount
;
@ApiModelProperty
(
"日平均触发次数"
)
private
Double
avgDayTouchCount
;
@ApiModelProperty
(
"最近触发时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
lastTouchTime
;
@ApiModelProperty
(
"关键词创建时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
keywordCreateDate
;
public
Long
getKeywordId
()
{
return
keywordId
;
}
public
void
setKeywordId
(
Long
keywordId
)
{
this
.
keywordId
=
keywordId
;
}
public
String
getKeyword
()
{
return
keyword
;
}
public
void
setKeyword
(
String
keyword
)
{
this
.
keyword
=
keyword
;
}
public
Integer
getTouchCount
()
{
return
touchCount
;
}
public
void
setTouchCount
(
Integer
touchCount
)
{
this
.
touchCount
=
touchCount
;
}
public
Integer
getWeekTouchCount
()
{
return
weekTouchCount
;
}
public
void
setWeekTouchCount
(
Integer
weekTouchCount
)
{
this
.
weekTouchCount
=
weekTouchCount
;
}
public
Double
getAvgDayTouchCount
()
{
return
avgDayTouchCount
;
}
public
void
setAvgDayTouchCount
(
Double
avgDayTouchCount
)
{
this
.
avgDayTouchCount
=
avgDayTouchCount
;
}
public
Date
getLastTouchTime
()
{
return
lastTouchTime
;
}
public
void
setLastTouchTime
(
Date
lastTouchTime
)
{
this
.
lastTouchTime
=
lastTouchTime
;
}
public
Date
getKeywordCreateDate
()
{
return
keywordCreateDate
;
}
public
void
setKeywordCreateDate
(
Date
keywordCreateDate
)
{
this
.
keywordCreateDate
=
keywordCreateDate
;
}
@Override
public
String
toString
()
{
return
"KeywordStatisticsDTO{"
+
"keywordId="
+
keywordId
+
", keyword='"
+
keyword
+
'\''
+
", touchCount="
+
touchCount
+
", weekTouchCount="
+
weekTouchCount
+
", avgDayTouchCount="
+
avgDayTouchCount
+
", lastTouchTime="
+
lastTouchTime
+
", keywordCreateDate="
+
keywordCreateDate
+
'}'
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/keywords/facade/BookKeywordFacade.java
View file @
516b90be
...
@@ -96,5 +96,14 @@ public interface BookKeywordFacade {
...
@@ -96,5 +96,14 @@ public interface BookKeywordFacade {
ResponseDto
<
PageBeanNew
<
ListKeywordVO
>>
listKeywordsByClassify
(
@RequestHeader
(
"token"
)
String
token
,
@RequestBody
ListKeywordParam
listKeywordParam
)
ResponseDto
<
PageBeanNew
<
ListKeywordVO
>>
listKeywordsByClassify
(
@RequestHeader
(
"token"
)
String
token
,
@RequestBody
ListKeywordParam
listKeywordParam
)
throws
BizException
;
throws
BizException
;
@ApiOperation
(
"获取关键词统计列表"
)
@GetMapping
(
"getKeywordStatistics"
)
ResponseDto
<?>
getKeywordStatistics
(
@RequestHeader
(
"token"
)
String
token
,
@RequestParam
(
"currentPage"
)
Integer
currentPage
,
@RequestParam
(
"numPerPage"
)
Integer
numPerPage
,
@RequestParam
(
"bookGroupId"
)
Long
bookGroupId
,
@RequestParam
(
value
=
"weixinGroupId"
,
required
=
false
)
String
weixinGroupId
)
throws
BizException
,
PermissionException
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/keywords/facade/impl/BookKeywordFacadeImpl.java
View file @
516b90be
package
com
.
pcloud
.
book
.
keywords
.
facade
.
impl
;
package
com
.
pcloud
.
book
.
keywords
.
facade
.
impl
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.keywords.biz.BookKeywordBiz
;
import
com.pcloud.book.keywords.biz.BookKeywordBiz
;
import
com.pcloud.book.keywords.facade.BookKeywordFacade
;
import
com.pcloud.book.keywords.facade.BookKeywordFacade
;
import
com.pcloud.book.keywords.vo.KeywordVO
;
import
com.pcloud.book.keywords.vo.KeywordVO
;
...
@@ -14,6 +15,7 @@ import com.pcloud.common.page.PageBeanNew;
...
@@ -14,6 +15,7 @@ import com.pcloud.common.page.PageBeanNew;
import
com.pcloud.common.permission.PermissionException
;
import
com.pcloud.common.permission.PermissionException
;
import
com.pcloud.common.utils.SessionUtil
;
import
com.pcloud.common.utils.SessionUtil
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
...
@@ -87,4 +89,24 @@ public class BookKeywordFacadeImpl implements BookKeywordFacade {
...
@@ -87,4 +89,24 @@ public class BookKeywordFacadeImpl implements BookKeywordFacade {
PageBeanNew
<
ListKeywordVO
>
pageBeanNew
=
bookKeywordBiz
.
listKeywordsByClassify
(
listKeywordParam
);
PageBeanNew
<
ListKeywordVO
>
pageBeanNew
=
bookKeywordBiz
.
listKeywordsByClassify
(
listKeywordParam
);
return
new
ResponseDto
<>(
pageBeanNew
);
return
new
ResponseDto
<>(
pageBeanNew
);
}
}
@ApiOperation
(
"获取关键词统计列表"
)
@GetMapping
(
"getKeywordStatistics"
)
@Override
public
ResponseDto
<?>
getKeywordStatistics
(
@RequestHeader
(
"token"
)
String
token
,
@RequestParam
(
"currentPage"
)
Integer
currentPage
,
@RequestParam
(
"numPerPage"
)
Integer
numPerPage
,
@RequestParam
(
"bookGroupId"
)
Long
bookGroupId
,
@RequestParam
(
value
=
"weixinGroupId"
,
required
=
false
)
String
weixinGroupId
)
throws
BizException
,
PermissionException
{
SessionUtil
.
getVlaue
(
token
,
SessionUtil
.
PARTY_ID
);
if
(
currentPage
==
null
||
currentPage
<
0
||
numPerPage
==
null
||
numPerPage
<=
0
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"分页参数错误!"
);
}
if
(
bookGroupId
==
null
){
throw
new
BookBizException
(
BookBizException
.
PARAM_IS_ERROR
,
"社群码id不能为空!"
);
}
return
new
ResponseDto
<>(
bookKeywordBiz
.
getKeywordStatistics
(
currentPage
,
numPerPage
,
bookGroupId
,
weixinGroupId
));
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/push/biz/impl/PushBizImpl.java
View file @
516b90be
...
@@ -8,18 +8,19 @@ import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
...
@@ -8,18 +8,19 @@ import com.pcloud.book.consumer.channel.QrcodeSceneConsr;
import
com.pcloud.book.consumer.resource.ProductConsr
;
import
com.pcloud.book.consumer.resource.ProductConsr
;
import
com.pcloud.book.consumer.wechatgroup.WechatGroupConsr
;
import
com.pcloud.book.consumer.wechatgroup.WechatGroupConsr
;
import
com.pcloud.book.group.biz.BookGroupClassifyBiz
;
import
com.pcloud.book.group.biz.BookGroupClassifyBiz
;
import
com.pcloud.book.group.dao.AppTouchRecordDao
;
import
com.pcloud.book.group.dao.BookGroupClassifyDao
;
import
com.pcloud.book.group.dao.BookGroupClassifyDao
;
import
com.pcloud.book.group.dao.GroupQrcodeDao
;
import
com.pcloud.book.group.dao.GroupQrcodeDao
;
import
com.pcloud.book.group.dto.ClassifyDTO
;
import
com.pcloud.book.group.dto.ClassifyDTO
;
import
com.pcloud.book.group.dto.GroupClassifyQrcodeDTO
;
import
com.pcloud.book.group.dto.GroupClassifyQrcodeDTO
;
import
com.pcloud.book.group.entity.AppTouchRecord
;
import
com.pcloud.book.group.entity.GroupQrcode
;
import
com.pcloud.book.group.entity.GroupQrcode
;
import
com.pcloud.book.group.enums.TouchTypeEnum
;
import
com.pcloud.book.group.tools.SendWeixinRequestTools
;
import
com.pcloud.book.group.tools.SendWeixinRequestTools
;
import
com.pcloud.book.push.biz.PushBiz
;
import
com.pcloud.book.push.biz.PushBiz
;
import
com.pcloud.book.push.check.PushCheck
;
import
com.pcloud.book.push.check.PushCheck
;
import
com.pcloud.book.push.dao.*
;
import
com.pcloud.book.push.dao.*
;
import
com.pcloud.book.push.dto.PushDTO
;
import
com.pcloud.book.push.dto.*
;
import
com.pcloud.book.push.dto.PushGroupDTO
;
import
com.pcloud.book.push.dto.PushRecordDTO
;
import
com.pcloud.book.push.entity.*
;
import
com.pcloud.book.push.entity.*
;
import
com.pcloud.book.push.enums.ItemTypeEnum
;
import
com.pcloud.book.push.enums.ItemTypeEnum
;
import
com.pcloud.book.push.enums.PushStatusEnum
;
import
com.pcloud.book.push.enums.PushStatusEnum
;
...
@@ -88,6 +89,8 @@ public class PushBizImpl implements PushBiz {
...
@@ -88,6 +89,8 @@ public class PushBizImpl implements PushBiz {
private
QrcodeSceneConsr
qrcodeSceneConsr
;
private
QrcodeSceneConsr
qrcodeSceneConsr
;
@Autowired
@Autowired
private
BookGroupClassifyDao
bookGroupClassifyDao
;
private
BookGroupClassifyDao
bookGroupClassifyDao
;
@Autowired
private
AppTouchRecordDao
appTouchRecordDao
;
private
static
final
String
PUSH_SCHEDULE_PRE
=
"BOOK_GROUP_PUSH_"
;
private
static
final
String
PUSH_SCHEDULE_PRE
=
"BOOK_GROUP_PUSH_"
;
...
@@ -297,6 +300,8 @@ public class PushBizImpl implements PushBiz {
...
@@ -297,6 +300,8 @@ public class PushBizImpl implements PushBiz {
sendArticleMessageVO
.
setTitle
(
appDto
.
getTitle
());
sendArticleMessageVO
.
setTitle
(
appDto
.
getTitle
());
sendArticleMessageVO
.
setPushGroupRecordId
(
pushGroupRecordId
);
sendArticleMessageVO
.
setPushGroupRecordId
(
pushGroupRecordId
);
WxGroupSDK
.
sendArticleMessage
(
sendArticleMessageVO
);
WxGroupSDK
.
sendArticleMessage
(
sendArticleMessageVO
);
//新增群发应用作品触发记录
addPushAppTouchRecord
(
pushItem
,
groupId
,
classifyDTO
.
getId
(),
classifyDTO
.
getBookGroupId
());
}
}
}
}
if
(
pushItem
.
getProductId
()
!=
null
)
{
if
(
pushItem
.
getProductId
()
!=
null
)
{
...
@@ -316,6 +321,8 @@ public class PushBizImpl implements PushBiz {
...
@@ -316,6 +321,8 @@ public class PushBizImpl implements PushBiz {
sendArticleMessageVO
.
setTitle
(
productDto
.
getProductName
());
sendArticleMessageVO
.
setTitle
(
productDto
.
getProductName
());
sendArticleMessageVO
.
setPushGroupRecordId
(
pushGroupRecordId
);
sendArticleMessageVO
.
setPushGroupRecordId
(
pushGroupRecordId
);
WxGroupSDK
.
sendArticleMessage
(
sendArticleMessageVO
);
WxGroupSDK
.
sendArticleMessage
(
sendArticleMessageVO
);
//新增群发应用作品触发记录
addPushAppTouchRecord
(
pushItem
,
groupId
,
classifyDTO
.
getId
(),
classifyDTO
.
getBookGroupId
());
}
}
}
}
}
}
...
@@ -330,6 +337,30 @@ public class PushBizImpl implements PushBiz {
...
@@ -330,6 +337,30 @@ public class PushBizImpl implements PushBiz {
}
}
}
}
/**
* 新增群发应用作品触发记录
*/
private
void
addPushAppTouchRecord
(
PushItem
pushItem
,
String
weixinGroupId
,
Long
classifyId
,
Long
bookGroupId
)
{
AppTouchRecord
appTouchRecord
=
new
AppTouchRecord
();
if
(
pushItem
.
getAppId
()
!=
null
)
{
appTouchRecord
.
setServeId
(
pushItem
.
getAppId
());
appTouchRecord
.
setServeType
(
"APP"
);
}
if
(
pushItem
.
getProductId
()
!=
null
)
{
appTouchRecord
.
setServeId
(
pushItem
.
getProductId
());
appTouchRecord
.
setServeType
(
"PRODUCT"
);
}
appTouchRecord
.
setTouchType
(
TouchTypeEnum
.
PUSH
.
value
);
appTouchRecord
.
setBookGroupId
(
bookGroupId
);
appTouchRecord
.
setClassifyId
(
classifyId
);
GroupQrcode
groupQrcode
=
groupQrcodeDao
.
getGroupQrcodeByGroupId
(
weixinGroupId
);
if
(
groupQrcode
!=
null
)
{
appTouchRecord
.
setQrcodeId
(
groupQrcode
.
getId
());
}
appTouchRecord
.
setWeixinGroupId
(
weixinGroupId
);
appTouchRecordDao
.
insert
(
appTouchRecord
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@ParamLog
(
"更新群发"
)
@ParamLog
(
"更新群发"
)
@Override
@Override
...
...
pcloud-service-book/src/main/resources/mapper/group/AppClickRecord.xml
0 → 100644
View file @
516b90be
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper
namespace=
"com.pcloud.book.group.dao.impl.AppClickRecordDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.group.entity.AppClickRecord"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"book_group_id"
property=
"bookGroupId"
jdbcType=
"BIGINT"
/>
<result
column=
"classify_id"
property=
"classifyId"
jdbcType=
"BIGINT"
/>
<result
column=
"qrcode_id"
property=
"qrcodeId"
jdbcType=
"BIGINT"
/>
<result
column=
"weixin_group_id"
property=
"weixinGroupId"
jdbcType=
"VARCHAR"
/>
<result
column=
"serve_id"
property=
"serveId"
jdbcType=
"BIGINT"
/>
<result
column=
"serve_type"
property=
"serveType"
jdbcType=
"VARCHAR"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, book_group_id, classify_id, qrcode_id, weixin_group_id, serve_id, serve_type, create_time
</sql>
<insert
id=
"insert"
parameterType=
"com.pcloud.book.group.entity.AppTouchRecord"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into app_click_record
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
book_group_id,
classify_id,
qrcode_id,
weixin_group_id,
serve_id,
serve_type,
create_time
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
#{bookGroupId,jdbcType=BIGINT},
#{classifyId,jdbcType=BIGINT},
#{qrcodeId,jdbcType=BIGINT},
#{weixinGroupId,jdbcType=VARCHAR},
#{serveId,jdbcType=BIGINT},
#{serveType,jdbcType=VARCHAR},
NOW(),
</trim>
</insert>
<!--根据作品或应用id集合获取统计-->
<select
id=
"getClickStatisticsByServeIds"
parameterType=
"map"
resultType=
"com.pcloud.book.group.dto.AppStatisticsDTO"
>
SELECT
t.serve_id serveId,
count(1) clickCount
FROM
app_click_record t
WHERE
t.serve_id IN
<foreach
collection=
"serveIds"
index=
"index"
item=
"item"
close=
")"
open=
"("
separator=
","
>
#{item}
</foreach>
<if
test=
"bookGroupId!=null"
>
AND t.book_group_id = #{bookGroupId}
</if>
<if
test=
"qrcodeId!=null"
>
AND t.qrcode_id = #{qrcodeId}
</if>
GROUP BY
t.serve_id
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/group/AppTouchRecord.xml
0 → 100644
View file @
516b90be
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper
namespace=
"com.pcloud.book.group.dao.impl.AppTouchRecordDaoImpl"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pcloud.book.group.entity.AppTouchRecord"
>
<id
column=
"id"
property=
"id"
jdbcType=
"BIGINT"
/>
<result
column=
"book_group_id"
property=
"bookGroupId"
jdbcType=
"BIGINT"
/>
<result
column=
"classify_id"
property=
"classifyId"
jdbcType=
"BIGINT"
/>
<result
column=
"qrcode_id"
property=
"qrcodeId"
jdbcType=
"BIGINT"
/>
<result
column=
"weixin_group_id"
property=
"weixinGroupId"
jdbcType=
"VARCHAR"
/>
<result
column=
"serve_id"
property=
"serveId"
jdbcType=
"BIGINT"
/>
<result
column=
"serve_type"
property=
"serveType"
jdbcType=
"VARCHAR"
/>
<result
column=
"touch_type"
property=
"touchType"
jdbcType=
"INTEGER"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, book_group_id, classify_id, qrcode_id, weixin_group_id, serve_id, serve_type, touch_type, create_time
</sql>
<insert
id=
"insert"
parameterType=
"com.pcloud.book.group.entity.AppTouchRecord"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into app_touch_record
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
book_group_id,
classify_id,
qrcode_id,
weixin_group_id,
serve_id,
serve_type,
touch_type,
create_time
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
#{bookGroupId,jdbcType=BIGINT},
#{classifyId,jdbcType=BIGINT},
#{qrcodeId,jdbcType=BIGINT},
#{weixinGroupId,jdbcType=VARCHAR},
#{serveId,jdbcType=BIGINT},
#{serveType,jdbcType=VARCHAR},
#{touchType,jdbcType=INTEGER},
NOW(),
</trim>
</insert>
<!--获取应用统计数据-->
<select
id=
"getAppTouchStatistics"
parameterType=
"map"
resultType=
"com.pcloud.book.group.dto.AppStatisticsDTO"
>
SELECT
t.serve_id serveId,
t.serve_type serveType,
COUNT(1) pushCount
FROM
app_touch_record t
WHERE 1=1
<if
test=
"bookGroupId!=null"
>
AND t.book_group_id =#{bookGroupId}
</if>
<if
test=
"qrcodeId!=null"
>
AND t.qrcode_id =#{qrcodeId}
</if>
GROUP BY
t.serve_id
order by t.create_time desc
</select>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/keywords/BookKeyword.Mapper.xml
View file @
516b90be
...
@@ -194,4 +194,20 @@
...
@@ -194,4 +194,20 @@
AND book_group_id = #{bookGroupId}
AND book_group_id = #{bookGroupId}
</select>
</select>
<!--根据社群书id获取关键词统计-->
<select
id=
"getKeywordInfoByBookGroupId"
parameterType=
"map"
resultType=
"com.pcloud.book.keywords.dto.KeywordStatisticsDTO"
>
SELECT
t.keyword_id as keywordId,
t.create_time as keywordCreateDate,
t.is_warehouse as isWarehouse,
t.warehouse_id as warehouseId,
t2.keywords as keyword
FROM
book_keyword t
INNER JOIN keyword t2 on t.keyword_id=t2.id
WHERE
t.is_delete = 0
AND t.book_group_id = #{bookGroupId}
order by t.create_time desc
</select>
</mapper>
</mapper>
\ No newline at end of file
pcloud-service-book/src/main/resources/mapper/keywords/BookKeywordRecord.Mapper.xml
View file @
516b90be
...
@@ -54,4 +54,51 @@
...
@@ -54,4 +54,51 @@
weixin_qrcode_id
weixin_qrcode_id
</select>
</select>
<!--获得统计-->
<select
id=
"getKeywordStatistics"
parameterType=
"map"
resultType=
"com.pcloud.book.keywords.dto.KeywordStatisticsDTO"
>
SELECT
t.keyword_id keywordId,
COUNT(t.id) touchCount,
MAX(t.create_time) lastTouchTime
FROM
book_keyword_record t
WHERE
t.keyword_id IN
<foreach
collection=
"keywordIds"
separator=
","
open=
"("
close=
")"
item=
"item"
index=
"index"
>
#{item}
</foreach>
<if
test=
"bookGroupId!=null"
>
AND t.book_group_id = #{bookGroupId}
</if>
<if
test=
"weixinGroupId!=null"
>
AND t.weixin_group_id = #{weixinGroupId}
</if>
GROUP BY
t.keyword_id
</select>
<!--根据时间获取触发次数-->
<select
id=
"getKeywordStatisticsByTime"
parameterType=
"map"
resultType=
"com.pcloud.book.keywords.dto.KeywordStatisticsDTO"
>
SELECT
t.keyword_id keywordId,
COUNT(t.id) weekTouchCount
FROM
book_keyword_record t
WHERE
t.keyword_id IN
<foreach
collection=
"keywordIds"
separator=
","
open=
"("
close=
")"
item=
"item"
index=
"index"
>
#{item}
</foreach>
<if
test=
"bookGroupId!=null"
>
AND t.book_group_id = #{bookGroupId}
</if>
<if
test=
"weixinGroupId!=null"
>
AND t.weixin_group_id = #{weixinGroupId}
</if>
<if
test=
"startDate!=null"
>
AND t.create_time>#{startDate}
</if>
GROUP BY
t.keyword_id
</select>
</mapper>
</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