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
6acec12c
Commit
6acec12c
authored
Jul 14, 2020
by
朱亚洁
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:[1003195]小程序书刊列表排序优先级优化
parent
592a43e3
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
105 additions
and
7 deletions
+105
-7
AdvertisingSpaceServiceImpl.java
...advertising/service/impl/AdvertisingSpaceServiceImpl.java
+5
-0
BrowseRecordConsr.java
...cloud/book/consumer/analysisengine/BrowseRecordConsr.java
+3
-0
TradeConsr.java
.../main/java/com/pcloud/book/consumer/trade/TradeConsr.java
+22
-0
ESBookAndAdviserBizImpl.java
.../com/pcloud/book/es/biz/impl/ESBookAndAdviserBizImpl.java
+57
-5
ESBookAndAdviser.java
...main/java/com/pcloud/book/es/entity/ESBookAndAdviser.java
+10
-0
Book.Mapper.xml
...rvice-book/src/main/resources/mapper/book/Book.Mapper.xml
+8
-2
No files found.
pcloud-service-book/src/main/java/com/pcloud/book/advertising/service/impl/AdvertisingSpaceServiceImpl.java
View file @
6acec12c
...
...
@@ -6,6 +6,7 @@ import com.pcloud.book.advertising.biz.GroupTagBiz;
import
com.pcloud.book.advertising.biz.LinkRevertBiz
;
import
com.pcloud.book.advertising.dto.BrandDataDTO4Channel
;
import
com.pcloud.book.advertising.service.AdvertisingSpaceService
;
import
com.pcloud.book.es.biz.ESBookAndAdviserBiz
;
import
com.pcloud.book.group.service.BookGroupService
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.dto.ResponseDto
;
...
...
@@ -49,6 +50,8 @@ public class AdvertisingSpaceServiceImpl implements AdvertisingSpaceService {
private
BookGroupService
bookGroupService
;
@Autowired
private
AdvertisingBrandDataBiz
advertisingBrandDataBiz
;
@Autowired
private
ESBookAndAdviserBiz
esBookAndAdviserBiz
;
/**
* 每日凌晨计算昨日广告位收益
...
...
@@ -61,6 +64,8 @@ public class AdvertisingSpaceServiceImpl implements AdvertisingSpaceService {
linkRevertBiz
.
addYesterdaySendStatistic
();
//新增读者数量
bookGroupService
.
addUserCount4RightsSetting
();
//es书刊数据统计
esBookAndAdviserBiz
.
addAllBookAndAdviserToES
();
}
@ApiOperation
(
"发送广告计划"
)
...
...
pcloud-service-book/src/main/java/com/pcloud/book/consumer/analysisengine/BrowseRecordConsr.java
View file @
6acec12c
...
...
@@ -99,6 +99,9 @@ public class BrowseRecordConsr {
List
<
Long
>
bookIds
)
{
LOGGER
.
info
(
"【分析引擎(消)】图书的:扫描量、读者量、浏览量,<START>.[adviserIds]="
+
adviserIds
+
"channelIds="
+
channelIds
+
"bookIds="
+
bookIds
);
if
(
ListUtils
.
isEmpty
(
bookIds
)){
return
new
HashMap
<>();
}
Map
<
String
,
List
<
Long
>>
bookAdviserChannelIdMap
=
new
HashMap
<>();
bookAdviserChannelIdMap
.
put
(
"adviserIds"
,
adviserIds
);
bookAdviserChannelIdMap
.
put
(
"channelIds"
,
channelIds
);
...
...
pcloud-service-book/src/main/java/com/pcloud/book/consumer/trade/TradeConsr.java
View file @
6acec12c
package
com
.
pcloud
.
book
.
consumer
.
trade
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.common.core.aspect.ParamLog
;
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.BookGroupSaleSearchDto
;
import
com.pcloud.facade.tradecenter.dto.BookIncomeQueryVo
;
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.IncomeBackDto
;
import
com.pcloud.facade.tradecenter.dto.OrderSearchDto
;
import
com.pcloud.facade.tradecenter.dto.ProductSaleDetailDto
;
import
com.pcloud.facade.tradecenter.dto.QrGroupBuyDetailDto
;
...
...
@@ -221,4 +224,23 @@ public class TradeConsr {
}
return
null
;
}
@ParamLog
(
"获取图书收益"
)
public
Map
<
String
,
IncomeBackDto
>
getBookIncome
(
List
<
BookIncomeQueryVo
>
bookIncomeQueryVos
,
String
date
)
throws
BizException
{
Map
<
String
,
IncomeBackDto
>
incomeMap
=
null
;
if
(
ListUtils
.
isEmpty
(
bookIncomeQueryVos
)){
return
incomeMap
;
}
try
{
ResponseEntity
<
ResponseDto
<
Map
<
String
,
IncomeBackDto
>>>
responseTemp
=
orderFormService
.
getBookIncome
(
bookIncomeQueryVos
,
date
);
incomeMap
=
ResponseHandleUtil
.
parseMapResponse
(
responseTemp
,
String
.
class
,
IncomeBackDto
.
class
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"[消TRADECENTER.orderFormService.getBookIncome]出现异常,信息为:"
+
e
.
getMessage
(),
e
);
throw
new
BookBizException
(
BookBizException
.
ERROR
,
"ERROR TRADECENTER"
);
}
if
(
incomeMap
==
null
)
{
return
new
HashMap
<
String
,
IncomeBackDto
>();
}
return
incomeMap
;
}
}
pcloud-service-book/src/main/java/com/pcloud/book/es/biz/impl/ESBookAndAdviserBizImpl.java
View file @
6acec12c
package
com
.
pcloud
.
book
.
es
.
biz
.
impl
;
import
com.pcloud.analysisengine.browse.dto.BrowseCacheRecordDto
;
import
com.pcloud.book.applet.biz.AppletUserBookcaseBiz
;
import
com.pcloud.book.book.constant.BookConstant
;
import
com.pcloud.book.book.dao.BookDao
;
import
com.pcloud.book.consumer.analysisengine.BrowseRecordConsr
;
import
com.pcloud.book.consumer.channel.QrcodeSceneConsr
;
import
com.pcloud.book.consumer.trade.TradeConsr
;
import
com.pcloud.book.es.biz.ESBookAndAdviserBiz
;
import
com.pcloud.book.es.entity.ESBookAndAdviser
;
import
com.pcloud.book.es.repository.BookAndAdviserRepository
;
...
...
@@ -14,6 +17,8 @@ import com.pcloud.book.util.properties.BookProps;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.facade.tradecenter.dto.BookIncomeQueryVo
;
import
com.pcloud.facade.tradecenter.dto.IncomeBackDto
;
import
org.apache.commons.collections.MapUtils
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
...
...
@@ -27,10 +32,14 @@ import org.springframework.data.domain.Sort;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.Set
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -55,6 +64,10 @@ public class ESBookAndAdviserBizImpl implements ESBookAndAdviserBiz {
private
QrcodeSceneConsr
qrcodeSceneConsr
;
@Autowired
private
BookGroupBiz
bookGroupBiz
;
@Autowired
private
BrowseRecordConsr
browseRecordConsr
;
@Autowired
private
TradeConsr
tradeConsr
;
@ParamLog
(
"导入全部book和bookAdviser"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
@@ -86,17 +99,37 @@ public class ESBookAndAdviserBizImpl implements ESBookAndAdviserBiz {
private
void
fillInfo
(
List
<
ESBookAndAdviser
>
list
,
List
<
Long
>
bookIds
){
//书刊访问量
Map
<
String
,
Integer
>
userCountMap
=
appletUserBookcaseBiz
.
mapBookUserCountList
(
bookIds
);
//
Map<String, Integer> userCountMap = appletUserBookcaseBiz.mapBookUserCountList(bookIds);
//书刊资源数量(二维码)
Map
<
String
,
Integer
>
resourceCountMap
=
qrcodeSceneConsr
.
mapServeCount4Applet
(
bookIds
);
//书刊资源数量(社群书)
Map
<
String
,
Integer
>
bookGroupResourceCountMap
=
bookGroupBiz
.
mapServeCount4Applet
(
bookIds
);
Set
<
Long
>
searchBookIds
=
new
HashSet
<>();
Set
<
Long
>
channelIds
=
new
HashSet
<>();
Set
<
Long
>
adviserIds
=
new
HashSet
<>();
List
<
BookIncomeQueryVo
>
bookIncomeQueryVos
=
new
ArrayList
<
BookIncomeQueryVo
>();
for
(
ESBookAndAdviser
esBookAndAdviser
:
list
){
if
(
esBookAndAdviser
.
getIsFundSupport
()==
1
){
//统计基金书数据
searchBookIds
.
add
(
Long
.
valueOf
(
esBookAndAdviser
.
getBookId
()));
channelIds
.
add
(
Long
.
valueOf
(
esBookAndAdviser
.
getChannelId
()));
adviserIds
.
add
(
Long
.
valueOf
(
esBookAndAdviser
.
getAdviserId
()));
BookIncomeQueryVo
bookIncomeQueryVo
=
new
BookIncomeQueryVo
();
bookIncomeQueryVo
.
setBookId
(
Long
.
valueOf
(
esBookAndAdviser
.
getBookId
()));
bookIncomeQueryVo
.
setChannelId
(
Long
.
valueOf
(
esBookAndAdviser
.
getChannelId
()));
bookIncomeQueryVo
.
setAdviserId
(
Long
.
valueOf
(
esBookAndAdviser
.
getAdviserId
()));
bookIncomeQueryVos
.
add
(
bookIncomeQueryVo
);
}
}
//书刊扫码量浏览量
Map
<
String
,
BrowseCacheRecordDto
>
bookSvUvPvMap
=
browseRecordConsr
.
getBookSvUvPv
(
new
ArrayList
<>(
adviserIds
),
new
ArrayList
<>(
channelIds
),
new
ArrayList
<>(
searchBookIds
));
// 获取书刊累计收益(销售额)
Map
<
String
,
IncomeBackDto
>
bookIncomeMap
=
tradeConsr
.
getBookIncome
(
bookIncomeQueryVos
,
null
);
for
(
ESBookAndAdviser
bookAndAdviser
:
list
){
String
key
=
bookAndAdviser
.
getBookId
()
+
"-"
+
bookAndAdviser
.
getAdviserId
()
+
"-"
+
bookAndAdviser
.
getChannelId
();
Integer
resourceCount
=
0
;
if
(!
MapUtils
.
isEmpty
(
userCountMap
)
&&
userCountMap
.
containsKey
(
key
)){
bookAndAdviser
.
setBookUserCount
(
userCountMap
.
get
(
key
));
}
//
if (!MapUtils.isEmpty(userCountMap) && userCountMap.containsKey(key)){
//
bookAndAdviser.setBookUserCount(userCountMap.get(key));
//
}
if
(!
MapUtils
.
isEmpty
(
resourceCountMap
)
&&
resourceCountMap
.
containsKey
(
key
)){
resourceCount
=
resourceCountMap
.
get
(
key
);
}
...
...
@@ -104,6 +137,24 @@ public class ESBookAndAdviserBizImpl implements ESBookAndAdviserBiz {
resourceCount
=
resourceCount
+
bookGroupResourceCountMap
.
get
(
key
);
}
bookAndAdviser
.
setResourceCount
(
resourceCount
);
//统计基金书数据
BigDecimal
fundBookValue
=
BigDecimal
.
ZERO
;
if
(
bookAndAdviser
.
getIsFundSupport
()==
1
)
{
Long
scanCount
=
0L
;
Long
browseCounts
=
0L
;
if
(!
MapUtils
.
isEmpty
(
bookSvUvPvMap
)
&&
bookSvUvPvMap
.
containsKey
(
key
)){
BrowseCacheRecordDto
browseCacheRecordDto
=
bookSvUvPvMap
.
get
(
key
);
scanCount
=
browseCacheRecordDto
.
getScanCount
()
==
null
?
0L
:
browseCacheRecordDto
.
getScanCount
();
browseCounts
=
browseCacheRecordDto
.
getBrowseCounts
()==
null
?
0L
:
browseCacheRecordDto
.
getBrowseCounts
();
}
BigDecimal
income
=
BigDecimal
.
ZERO
;
IncomeBackDto
incomeBack
=
bookIncomeMap
.
get
(
bookAndAdviser
.
getBookId
()+
"_"
+
bookAndAdviser
.
getChannelId
()+
"_"
+
bookAndAdviser
.
getAdviserId
());
if
(
null
!=
incomeBack
){
income
=
incomeBack
.
getIncome
()==
null
?
new
BigDecimal
(
0
):
incomeBack
.
getIncome
();
}
fundBookValue
=
income
.
multiply
(
new
BigDecimal
(
10
)).
add
(
new
BigDecimal
(
scanCount
*
3
)).
add
(
new
BigDecimal
(
browseCounts
));
}
bookAndAdviser
.
setFundBookValue
(
fundBookValue
==
null
?
BigDecimal
.
ZERO
:
fundBookValue
);
}
}
...
...
@@ -231,7 +282,8 @@ public class ESBookAndAdviserBizImpl implements ESBookAndAdviserBiz {
}
else
if
(!
ListUtils
.
isEmpty
(
graLabelIds
)
||
!
ListUtils
.
isEmpty
(
subLabelIds
))
{
boolQueryBuilder
.
must
(
must1
);
}
Sort
sort
=
new
Sort
(
Sort
.
Direction
.
DESC
,
"bookUserCount"
,
"resourceCount"
,
"isAdviserBook"
,
"lastModifiedDate"
,
"bookId"
);
//基金书
Sort
sort
=
new
Sort
(
Sort
.
Direction
.
DESC
,
"isFundSupport"
,
"fundBookValue"
,
"resourceCount"
,
"isAdviserBook"
,
"lastModifiedDate"
,
"bookId"
);
PageRequest
pageRequest
=
new
PageRequest
(
currentPage
,
numPerPage
,
sort
);
Page
<
ESBookAndAdviser
>
search
=
bookAndAdviserRepository
.
search
(
boolQueryBuilder
,
pageRequest
);
return
search
;
...
...
pcloud-service-book/src/main/java/com/pcloud/book/es/entity/ESBookAndAdviser.java
View file @
6acec12c
...
...
@@ -11,6 +11,7 @@ import org.springframework.data.elasticsearch.annotations.FieldIndex;
import
org.springframework.data.elasticsearch.annotations.FieldType
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
...
...
@@ -136,4 +137,13 @@ public class ESBookAndAdviser {
* 书刊资源数量
*/
private
Integer
resourceCount
;
/**
* 是否基金支持
*/
private
Integer
isFundSupport
;
/**
* 基金书访问量公式(GMV*10+扫码*3+浏览量)
*/
private
BigDecimal
fundBookValue
;
}
pcloud-service-book/src/main/resources/mapper/book/Book.Mapper.xml
View file @
6acec12c
...
...
@@ -2284,11 +2284,14 @@
IF(A.VER_LABEL_ID is NULL, 0, A.VER_LABEL_ID) verLabelId,
IF(A.vol_label_id is NULL, 0, A.vol_label_id) volLabelId,
G.id bookGroupId,
G.join_group_type joinGroupType
G.join_group_type joinGroupType,
IF((BF.BOOK_FUND_ID>0 OR f.IS_FREEZE = 1),1,0) isFundSupport
FROM
BOOK B
LEFT JOIN BOOK_ADVISER A ON A.BOOK_ID = B.BOOK_ID and A.IS_MAIN_EDITOR=1
LEFT JOIN book_group G on G.BOOK_ID = A.BOOK_ID AND G.CHANNEL_ID = A.CHANNEL_ID AND G.CREATE_USER = A.ADVISER_ID AND G.IS_DELETE = 0
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_freeze f ON B.BOOK_ID = f.BOOK_ID
WHERE B.BOOK_ID>#{maxId}
GROUP BY B.BOOK_ID
limit #{offset}
...
...
@@ -2317,11 +2320,14 @@
IF(A.VER_LABEL_ID is NULL, 0, A.VER_LABEL_ID) verLabelId,
IF(A.vol_label_id is NULL, 0, A.vol_label_id) volLabelId,
G.id bookGroupId,
G.join_group_type joinGroupType
G.join_group_type joinGroupType,
IF((BF.BOOK_FUND_ID>0 OR f.IS_FREEZE = 1),1,0) isFundSupport
FROM
BOOK B
LEFT JOIN BOOK_ADVISER A ON A.BOOK_ID = B.BOOK_ID and A.IS_MAIN_EDITOR=1
LEFT JOIN book_group G on G.BOOK_ID = A.BOOK_ID AND G.CHANNEL_ID = A.CHANNEL_ID AND G.CREATE_USER = A.ADVISER_ID AND G.IS_DELETE = 0
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_freeze f ON B.BOOK_ID = f.BOOK_ID
WHERE B.BOOK_ID in
<foreach
collection=
"bookIds"
index=
"i"
item=
"item"
open=
"("
separator=
","
close=
")"
>
${item}
...
...
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