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
b677322f
Commit
b677322f
authored
Feb 24, 2021
by
桂前礼
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: [1004334] 在编辑端应用工具,优先展示书刊高频应用
parent
2a3e411b
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
249 additions
and
0 deletions
+249
-0
BookConstant.java
...main/java/com/pcloud/book/book/constant/BookConstant.java
+5
-0
BookApplication.java
...e-book/src/main/java/com/pcloud/book/BookApplication.java
+2
-0
QrcodeSceneConsr.java
...va/com/pcloud/book/consumer/channel/QrcodeSceneConsr.java
+12
-0
BookGroupBiz.java
...src/main/java/com/pcloud/book/group/biz/BookGroupBiz.java
+3
-0
BookGroupBizImpl.java
...java/com/pcloud/book/group/biz/impl/BookGroupBizImpl.java
+100
-0
BookGroupDao.java
...src/main/java/com/pcloud/book/group/dao/BookGroupDao.java
+5
-0
BookGroupDaoImpl.java
...java/com/pcloud/book/group/dao/impl/BookGroupDaoImpl.java
+11
-0
HotAppDTO.java
...ok/src/main/java/com/pcloud/book/group/dto/HotAppDTO.java
+16
-0
BookGroupFacade.java
...in/java/com/pcloud/book/group/facade/BookGroupFacade.java
+6
-0
BookGroupFacadeImpl.java
...om/pcloud/book/group/facade/impl/BookGroupFacadeImpl.java
+20
-0
HotAppScheduled.java
...java/com/pcloud/book/group/scheduled/HotAppScheduled.java
+29
-0
BookGroupMapper.xml
...-book/src/main/resources/mapper/group/BookGroupMapper.xml
+40
-0
No files found.
pcloud-facade-book/src/main/java/com/pcloud/book/book/constant/BookConstant.java
View file @
b677322f
...
@@ -157,6 +157,11 @@ public class BookConstant {
...
@@ -157,6 +157,11 @@ public class BookConstant {
public
static
final
Integer
zero
=
0
;
public
static
final
Integer
zero
=
0
;
/**
/**
* 热门应用信息
*/
public
static
final
String
BOOK_HOT_APP
=
"BOOK_CHANNEL:HOT_APP_TOP_5_KEY:"
;
/**
* 微信群默认头像
* 微信群默认头像
*/
*/
public
static
final
List
<
String
>
DEFAULT_HEADURL
=
Arrays
.
asList
(
public
static
final
List
<
String
>
DEFAULT_HEADURL
=
Arrays
.
asList
(
...
...
pcloud-service-book/src/main/java/com/pcloud/book/BookApplication.java
View file @
b677322f
...
@@ -21,6 +21,7 @@ import org.springframework.context.annotation.Bean;
...
@@ -21,6 +21,7 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.PropertySource
;
import
org.springframework.context.annotation.PropertySource
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
springfox.documentation.builders.ApiInfoBuilder
;
import
springfox.documentation.builders.ApiInfoBuilder
;
import
springfox.documentation.builders.PathSelectors
;
import
springfox.documentation.builders.PathSelectors
;
import
springfox.documentation.builders.RequestHandlerSelectors
;
import
springfox.documentation.builders.RequestHandlerSelectors
;
...
@@ -41,6 +42,7 @@ import java.util.Map;
...
@@ -41,6 +42,7 @@ import java.util.Map;
@PropertySource
({
"classpath:properties/book.properties"
,
"classpath:public_system.properties"
})
@PropertySource
({
"classpath:properties/book.properties"
,
"classpath:public_system.properties"
})
@Configuration
@Configuration
@EnableSwagger2
@EnableSwagger2
@EnableScheduling
@MapperScan
(
basePackages
=
{
"com.pcloud.book.*.mapper"
},
sqlSessionFactoryRef
=
"sqlSessionFactory"
)
@MapperScan
(
basePackages
=
{
"com.pcloud.book.*.mapper"
},
sqlSessionFactoryRef
=
"sqlSessionFactory"
)
public
class
BookApplication
{
public
class
BookApplication
{
...
...
pcloud-service-book/src/main/java/com/pcloud/book/consumer/channel/QrcodeSceneConsr.java
View file @
b677322f
...
@@ -20,6 +20,7 @@ import com.pcloud.channelcenter.wechat.dto.ListIsInBookParam;
...
@@ -20,6 +20,7 @@ import com.pcloud.channelcenter.wechat.dto.ListIsInBookParam;
import
com.pcloud.channelcenter.wechat.service.AccountSettingService
;
import
com.pcloud.channelcenter.wechat.service.AccountSettingService
;
import
com.pcloud.channelcenter.wechat.service.MessageService
;
import
com.pcloud.channelcenter.wechat.service.MessageService
;
import
com.pcloud.channelcenter.wechat.vo.BookServeVO
;
import
com.pcloud.channelcenter.wechat.vo.BookServeVO
;
import
com.pcloud.channelcenter.qrcode.dto.AppTypeUseCount
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.core.constant.SystemCode
;
import
com.pcloud.common.core.constant.SystemCode
;
import
com.pcloud.common.dto.ResponseDto
;
import
com.pcloud.common.dto.ResponseDto
;
...
@@ -467,4 +468,15 @@ public class QrcodeSceneConsr {
...
@@ -467,4 +468,15 @@ public class QrcodeSceneConsr {
}
}
return
list
;
return
list
;
}
}
@ParamLog
(
"获取公众号码热门应用"
)
public
List
<
AppTypeUseCount
>
listAppTypeCount
(){
List
<
AppTypeUseCount
>
list
=
new
ArrayList
<>();
try
{
list
=
ResponseHandleUtil
.
parseList
(
qrcodeSceneService
.
listAppTypeCount
(),
AppTypeUseCount
.
class
);
}
catch
(
Exception
e
){
LOGGER
.
error
(
"【获取公众号码热门应用】 请求失败,<ERROR>.[listAppTypeCount]:{}"
,
e
.
getMessage
(),
e
);
}
return
list
;
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/biz/BookGroupBiz.java
View file @
b677322f
...
@@ -27,6 +27,7 @@ import com.pcloud.book.group.dto.GroupCipherDTO;
...
@@ -27,6 +27,7 @@ import com.pcloud.book.group.dto.GroupCipherDTO;
import
com.pcloud.book.group.dto.GroupQrcodeDTO
;
import
com.pcloud.book.group.dto.GroupQrcodeDTO
;
import
com.pcloud.book.group.dto.GroupStoreMyPayDto
;
import
com.pcloud.book.group.dto.GroupStoreMyPayDto
;
import
com.pcloud.book.group.dto.GroupUseDTO
;
import
com.pcloud.book.group.dto.GroupUseDTO
;
import
com.pcloud.book.group.dto.HotAppDTO
;
import
com.pcloud.book.group.dto.JoinGroupCipherDTO
;
import
com.pcloud.book.group.dto.JoinGroupCipherDTO
;
import
com.pcloud.book.group.dto.LabelUserCountDTO
;
import
com.pcloud.book.group.dto.LabelUserCountDTO
;
import
com.pcloud.book.group.dto.LargeTempletDTO
;
import
com.pcloud.book.group.dto.LargeTempletDTO
;
...
@@ -1040,4 +1041,6 @@ public interface BookGroupBiz {
...
@@ -1040,4 +1041,6 @@ public interface BookGroupBiz {
BookAppletSceneDTO
getOneBookAppletBySceneIds
(
List
<
Long
>
sceneIds
);
BookAppletSceneDTO
getOneBookAppletBySceneIds
(
List
<
Long
>
sceneIds
);
Long
getRightsSettingId4Book
(
Long
adviserId
,
Long
channelId
,
Long
bookId
);
Long
getRightsSettingId4Book
(
Long
adviserId
,
Long
channelId
,
Long
bookId
);
List
<
HotAppDTO
>
listHotApp
();
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/biz/impl/BookGroupBizImpl.java
View file @
b677322f
package
com
.
pcloud
.
book
.
group
.
biz
.
impl
;
package
com
.
pcloud
.
book
.
group
.
biz
.
impl
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
...
@@ -9,6 +10,7 @@ import com.google.common.collect.Maps;
...
@@ -9,6 +10,7 @@ import com.google.common.collect.Maps;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.pcloud.analysisengine.browse.dto.GroupBrowseStatisticVO
;
import
com.pcloud.analysisengine.browse.dto.GroupBrowseStatisticVO
;
import
com.pcloud.appcenter.app.dto.AppDto
;
import
com.pcloud.appcenter.app.dto.AppDto
;
import
com.pcloud.appcenter.app.dto.AppTypeDto
;
import
com.pcloud.appcenter.assist.dto.AssistTempletDTO
;
import
com.pcloud.appcenter.assist.dto.AssistTempletDTO
;
import
com.pcloud.appcenter.base.dto.AppPriceCacheDTO
;
import
com.pcloud.appcenter.base.dto.AppPriceCacheDTO
;
import
com.pcloud.appcenter.cache.service.AppPriceCacheService
;
import
com.pcloud.appcenter.cache.service.AppPriceCacheService
;
...
@@ -73,6 +75,7 @@ import com.pcloud.book.group.dao.CopyCipherRecordDao;
...
@@ -73,6 +75,7 @@ import com.pcloud.book.group.dao.CopyCipherRecordDao;
import
com.pcloud.book.group.dao.GroupQrcodeDao
;
import
com.pcloud.book.group.dao.GroupQrcodeDao
;
import
com.pcloud.book.group.dao.GroupQrcodeStyleDao
;
import
com.pcloud.book.group.dao.GroupQrcodeStyleDao
;
import
com.pcloud.book.group.dao.JoinGroupCipherDao
;
import
com.pcloud.book.group.dao.JoinGroupCipherDao
;
import
com.pcloud.book.group.dto.HotAppDTO
;
import
com.pcloud.book.group.mapper.MpServiceMappingMapper
;
import
com.pcloud.book.group.mapper.MpServiceMappingMapper
;
import
com.pcloud.book.group.dao.PushBookGroupUpdateDao
;
import
com.pcloud.book.group.dao.PushBookGroupUpdateDao
;
import
com.pcloud.book.group.dao.TempletRelevanceDao
;
import
com.pcloud.book.group.dao.TempletRelevanceDao
;
...
@@ -201,6 +204,7 @@ import com.pcloud.channelcenter.base.constants.ChannelConstants;
...
@@ -201,6 +204,7 @@ import com.pcloud.channelcenter.base.constants.ChannelConstants;
import
com.pcloud.channelcenter.base.constants.ChannelEnum
;
import
com.pcloud.channelcenter.base.constants.ChannelEnum
;
import
com.pcloud.channelcenter.base.constants.MessageFromTypeEnum
;
import
com.pcloud.channelcenter.base.constants.MessageFromTypeEnum
;
import
com.pcloud.channelcenter.base.exceptions.ChannelBizException
;
import
com.pcloud.channelcenter.base.exceptions.ChannelBizException
;
import
com.pcloud.channelcenter.qrcode.dto.AppTypeUseCount
;
import
com.pcloud.channelcenter.qrcode.dto.GroupQrcodeVO
;
import
com.pcloud.channelcenter.qrcode.dto.GroupQrcodeVO
;
import
com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto
;
import
com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto
;
import
com.pcloud.channelcenter.wechat.dto.AccountSettingDto
;
import
com.pcloud.channelcenter.wechat.dto.AccountSettingDto
;
...
@@ -307,12 +311,14 @@ import java.util.Optional;
...
@@ -307,12 +311,14 @@ import java.util.Optional;
import
java.util.Random
;
import
java.util.Random
;
import
java.util.Set
;
import
java.util.Set
;
import
java.util.concurrent.Callable
;
import
java.util.concurrent.Callable
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.ExecutionException
;
import
java.util.concurrent.ExecutionException
;
import
java.util.concurrent.FutureTask
;
import
java.util.concurrent.FutureTask
;
import
java.util.Set
;
import
java.util.Set
;
import
java.util.concurrent.LinkedBlockingQueue
;
import
java.util.concurrent.LinkedBlockingQueue
;
import
java.util.concurrent.ThreadPoolExecutor
;
import
java.util.concurrent.ThreadPoolExecutor
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.StrUtil
;
...
@@ -6511,4 +6517,98 @@ public class BookGroupBizImpl implements BookGroupBiz {
...
@@ -6511,4 +6517,98 @@ public class BookGroupBizImpl implements BookGroupBiz {
return
Optional
.
ofNullable
(
rightsSettingDto
).
map
(
RightsSettingDto:
:
getId
).
orElse
(
bookBiz
.
getDefaultRightsSettingId
());
return
Optional
.
ofNullable
(
rightsSettingDto
).
map
(
RightsSettingDto:
:
getId
).
orElse
(
bookBiz
.
getDefaultRightsSettingId
());
}
}
@Override
public
List
<
HotAppDTO
>
listHotApp
()
{
String
cacheKey
=
BookConstant
.
BOOK_HOT_APP
+
DateUtil
.
format
(
new
Date
(),
DatePattern
.
NORM_DATE_FORMAT
);
if
(
JedisClusterUtils
.
exists
(
cacheKey
))
{
String
json
=
JedisClusterUtils
.
get
(
cacheKey
);
if
(
StrUtil
.
isNotBlank
(
json
)){
List
<
HotAppDTO
>
list
=
new
ArrayList
<>();
try
{
list
=
JSONObject
.
parseArray
(
json
,
HotAppDTO
.
class
);
}
catch
(
Exception
e
){
LOGGER
.
warn
(
"[listHotApp]json转换失败 json:{}"
,
json
,
e
);
}
if
(
CollUtil
.
isNotEmpty
(
list
))
return
list
.
stream
().
sorted
(
Comparator
.
comparing
(
HotAppDTO:
:
getCount
).
reversed
()).
limit
(
5
).
collect
(
Collectors
.
toList
());;
}
}
String
cacheKeyOld
=
BookConstant
.
BOOK_HOT_APP
+
DateUtil
.
format
(
DateUtil
.
yesterday
(),
DatePattern
.
NORM_DATE_FORMAT
);
// 存在旧数据 计算应用热度值作为增长数据
boolean
hasOldData
=
JedisClusterUtils
.
exists
(
cacheKeyOld
);
Map
<
String
,
Integer
>
oldMap
=
new
HashMap
<>();
if
(
hasOldData
)
{
String
oldJson
=
JedisClusterUtils
.
get
(
cacheKeyOld
);
if
(
StrUtil
.
isNotBlank
(
oldJson
)){
List
<
HotAppDTO
>
dtoList
=
new
ArrayList
<>();
try
{
dtoList
=
JSONObject
.
parseArray
(
oldJson
,
HotAppDTO
.
class
);
}
catch
(
Exception
e
){
hasOldData
=
false
;
LOGGER
.
warn
(
"[listHotApp]json转换失败 oldJson:{}"
,
oldJson
,
e
);
}
oldMap
=
Optional
.
ofNullable
(
dtoList
.
stream
().
filter
(
x
->
Objects
.
nonNull
(
x
)
&&
Objects
.
nonNull
(
x
.
getTypeCode
()))
.
collect
(
Collectors
.
toMap
(
HotAppDTO:
:
getTypeCode
,
HotAppDTO:
:
getCount
))).
orElse
(
new
HashMap
<>());
}
}
// 不存在旧数据则 直接查询旧数据
CompletableFuture
<
Map
<
String
,
AppTypeUseCount
>>
channel
=
CompletableFuture
.
supplyAsync
(()
->
{
List
<
AppTypeUseCount
>
counts
=
qrcodeSceneConsr
.
listAppTypeCount
();
return
counts
.
stream
().
filter
(
x
->
Objects
.
nonNull
(
x
)
&&
Objects
.
nonNull
(
x
.
getTypeCode
()))
.
collect
(
Collectors
.
toMap
(
AppTypeUseCount:
:
getTypeCode
,
t
->
t
));
});
CompletableFuture
<
Map
<
String
,
Integer
>>
bookCount
=
CompletableFuture
.
supplyAsync
(()
->
{
List
<
HotAppDTO
>
hotAppDTOS
=
Optional
.
ofNullable
(
bookGroupDao
.
listHotApp
()).
orElse
(
new
ArrayList
<>());
return
hotAppDTOS
.
stream
().
filter
(
x
->
Objects
.
nonNull
(
x
)
&&
Objects
.
nonNull
(
x
.
getTypeCode
()))
.
collect
(
Collectors
.
toMap
(
HotAppDTO:
:
getTypeCode
,
HotAppDTO:
:
getCount
));
});
CompletableFuture
<
Map
<
String
,
Integer
>>
bookIncrement
=
CompletableFuture
.
supplyAsync
(()
->
{
List
<
HotAppDTO
>
hotAppDTOS
=
Optional
.
ofNullable
(
bookGroupDao
.
listHotAppIncrement
()).
orElse
(
new
ArrayList
<>());
return
hotAppDTOS
.
stream
().
filter
(
x
->
Objects
.
nonNull
(
x
)
&&
Objects
.
nonNull
(
x
.
getTypeCode
()))
.
collect
(
Collectors
.
toMap
(
HotAppDTO:
:
getTypeCode
,
HotAppDTO:
:
getIncrement
));
});
CompletableFuture
<
Map
<
String
,
AppTypeDto
>>
appInfo
=
CompletableFuture
.
supplyAsync
(()
->
appConsr
.
listAllCode
());
// 聚合
CompletableFuture
<
Void
>
completableFuture
=
CompletableFuture
.
allOf
(
channel
,
bookCount
,
bookIncrement
,
appInfo
);
try
{
completableFuture
.
get
();
Map
<
String
,
AppTypeUseCount
>
channelMap
=
Optional
.
ofNullable
(
channel
.
get
()).
orElse
(
new
HashMap
<>());
Map
<
String
,
Integer
>
bookCountMap
=
Optional
.
ofNullable
(
bookCount
.
get
()).
orElse
(
new
HashMap
<>());
Map
<
String
,
Integer
>
bookIncrementMap
=
Optional
.
ofNullable
(
bookIncrement
.
get
()).
orElse
(
new
HashMap
<>());
Map
<
String
,
AppTypeDto
>
appInfoMap
=
Optional
.
ofNullable
(
appInfo
.
get
()).
orElse
(
new
HashMap
<>());
List
<
HotAppDTO
>
hotAppDTOS
=
new
ArrayList
<>();
if
(
appInfoMap
.
isEmpty
())
return
hotAppDTOS
;
for
(
String
key
:
appInfoMap
.
keySet
())
{
if
(
Objects
.
isNull
(
key
))
continue
;
HotAppDTO
hotAppDTO
=
new
HotAppDTO
();
hotAppDTO
.
setTypeName
(
Optional
.
ofNullable
(
appInfoMap
.
get
(
key
)).
map
(
AppTypeDto:
:
getTypeName
).
orElse
(
""
));
hotAppDTO
.
setTypeCode
(
key
);
hotAppDTO
.
setCount
(
Optional
.
ofNullable
(
channelMap
.
get
(
key
)).
map
(
AppTypeUseCount:
:
getCount
).
orElse
(
0
)
+
Optional
.
ofNullable
(
bookCountMap
.
get
(
key
)).
orElse
(
0
)
);
if
(
hasOldData
){
hotAppDTO
.
setIncrement
(
hotAppDTO
.
getCount
()
-
Optional
.
ofNullable
(
oldMap
.
get
(
key
)).
orElse
(
0
));
}
else
{
hotAppDTO
.
setIncrement
(
Optional
.
ofNullable
(
channelMap
.
get
(
key
)).
map
(
AppTypeUseCount:
:
getIncrement
).
orElse
(
0
)
+
Optional
.
ofNullable
(
bookIncrementMap
.
get
(
key
)).
orElse
(
0
)
);
}
hotAppDTOS
.
add
(
hotAppDTO
);
}
JedisClusterUtils
.
set
(
cacheKey
,
JSONObject
.
toJSONString
(
hotAppDTOS
),
48
*
60
*
60
);
return
hotAppDTOS
.
stream
().
sorted
(
Comparator
.
comparing
(
HotAppDTO:
:
getCount
).
reversed
()).
limit
(
5
).
collect
(
Collectors
.
toList
());
}
catch
(
InterruptedException
|
ExecutionException
e
)
{
LOGGER
.
warn
(
"listHotApp 查询热门APP信息失败"
);
}
return
new
ArrayList
<>();
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/BookGroupDao.java
View file @
b677322f
...
@@ -3,6 +3,7 @@ package com.pcloud.book.group.dao;
...
@@ -3,6 +3,7 @@ package com.pcloud.book.group.dao;
import
com.pcloud.book.group.dto.AgentStatisticsInfoDTO
;
import
com.pcloud.book.group.dto.AgentStatisticsInfoDTO
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.BookGroupStatistic4AgentDTO
;
import
com.pcloud.book.group.dto.BookGroupStatistic4AgentDTO
;
import
com.pcloud.book.group.dto.HotAppDTO
;
import
com.pcloud.book.group.dto.PersonalQrcodeDTO
;
import
com.pcloud.book.group.dto.PersonalQrcodeDTO
;
import
com.pcloud.book.group.dto.QrcodeNameAndProIdDTO
;
import
com.pcloud.book.group.dto.QrcodeNameAndProIdDTO
;
import
com.pcloud.book.group.dto.TopAgentBookGroupDTO
;
import
com.pcloud.book.group.dto.TopAgentBookGroupDTO
;
...
@@ -377,4 +378,8 @@ public interface BookGroupDao extends BaseDao<BookGroup> {
...
@@ -377,4 +378,8 @@ public interface BookGroupDao extends BaseDao<BookGroup> {
List
<
String
>
getWxUserInAgents
(
List
<
Long
>
agentIds
);
List
<
String
>
getWxUserInAgents
(
List
<
Long
>
agentIds
);
List
<
Long
>
getBookGroupIdInAgents
(
List
<
Long
>
agentIds
);
List
<
Long
>
getBookGroupIdInAgents
(
List
<
Long
>
agentIds
);
List
<
HotAppDTO
>
listHotApp
();
List
<
HotAppDTO
>
listHotAppIncrement
();
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dao/impl/BookGroupDaoImpl.java
View file @
b677322f
...
@@ -4,6 +4,7 @@ import com.pcloud.book.group.dao.BookGroupDao;
...
@@ -4,6 +4,7 @@ import com.pcloud.book.group.dao.BookGroupDao;
import
com.pcloud.book.group.dto.AgentStatisticsInfoDTO
;
import
com.pcloud.book.group.dto.AgentStatisticsInfoDTO
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.BookGroupStatistic4AgentDTO
;
import
com.pcloud.book.group.dto.BookGroupStatistic4AgentDTO
;
import
com.pcloud.book.group.dto.HotAppDTO
;
import
com.pcloud.book.group.dto.PersonalQrcodeDTO
;
import
com.pcloud.book.group.dto.PersonalQrcodeDTO
;
import
com.pcloud.book.group.dto.QrcodeNameAndProIdDTO
;
import
com.pcloud.book.group.dto.QrcodeNameAndProIdDTO
;
import
com.pcloud.book.group.dto.TopAgentBookGroupDTO
;
import
com.pcloud.book.group.dto.TopAgentBookGroupDTO
;
...
@@ -494,4 +495,14 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
...
@@ -494,4 +495,14 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
paramMap
.
put
(
"agentIds"
,
agentIds
);
paramMap
.
put
(
"agentIds"
,
agentIds
);
return
super
.
getSqlSession
().
selectList
(
getStatement
(
"getBookGroupIdInAgents"
),
paramMap
);
return
super
.
getSqlSession
().
selectList
(
getStatement
(
"getBookGroupIdInAgents"
),
paramMap
);
}
}
@Override
public
List
<
HotAppDTO
>
listHotApp
()
{
return
getSqlSession
().
selectList
(
getStatement
(
"listHotApp"
));
}
@Override
public
List
<
HotAppDTO
>
listHotAppIncrement
()
{
return
getSqlSession
().
selectList
(
getStatement
(
"listHotAppIncrement"
));
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/dto/HotAppDTO.java
0 → 100644
View file @
b677322f
package
com
.
pcloud
.
book
.
group
.
dto
;
import
lombok.Data
;
@Data
public
class
HotAppDTO
{
private
String
typeName
;
private
String
typeCode
;
private
Integer
count
;
private
Integer
increment
;
}
pcloud-service-book/src/main/java/com/pcloud/book/group/facade/BookGroupFacade.java
View file @
b677322f
...
@@ -5,6 +5,7 @@ import com.pcloud.book.group.dto.BookAppletSceneDTO;
...
@@ -5,6 +5,7 @@ import com.pcloud.book.group.dto.BookAppletSceneDTO;
import
com.pcloud.book.group.dto.BookGroupCreateDTO
;
import
com.pcloud.book.group.dto.BookGroupCreateDTO
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.ChangeQrCodeTypeDto
;
import
com.pcloud.book.group.dto.ChangeQrCodeTypeDto
;
import
com.pcloud.book.group.dto.HotAppDTO
;
import
com.pcloud.book.group.dto.SelfBookGroupStParamDTO
;
import
com.pcloud.book.group.dto.SelfBookGroupStParamDTO
;
import
com.pcloud.book.group.dto.UserSelectParamDTO
;
import
com.pcloud.book.group.dto.UserSelectParamDTO
;
import
com.pcloud.book.group.entity.BookGroup
;
import
com.pcloud.book.group.entity.BookGroup
;
...
@@ -818,4 +819,9 @@ public interface BookGroupFacade {
...
@@ -818,4 +819,9 @@ public interface BookGroupFacade {
@ApiOperation
(
"书刊创建RAYS码-支持1对多"
)
@ApiOperation
(
"书刊创建RAYS码-支持1对多"
)
@PostMapping
(
"createBookGroup"
)
@PostMapping
(
"createBookGroup"
)
ResponseDto
<?>
createBookGroup
(
@RequestHeader
(
"token"
)
String
token
,
@RequestBody
@Validated
BookGroupCreateDTO
bookGroupCreateDTO
);
ResponseDto
<?>
createBookGroup
(
@RequestHeader
(
"token"
)
String
token
,
@RequestBody
@Validated
BookGroupCreateDTO
bookGroupCreateDTO
);
@ApiOperation
(
"获取热门应用"
)
@GetMapping
(
"/listHotApp"
)
ResponseDto
<
List
<
HotAppDTO
>>
listHotApp
();
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/facade/impl/BookGroupFacadeImpl.java
View file @
b677322f
package
com
.
pcloud
.
book
.
group
.
facade
.
impl
;
package
com
.
pcloud
.
book
.
group
.
facade
.
impl
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.core.map.MapUtil
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.book.constant.BookConstant
;
import
com.pcloud.book.book.dto.MapResourceTotalCountDTO
;
import
com.pcloud.book.book.dto.MapResourceTotalCountDTO
;
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
;
...
@@ -12,6 +15,7 @@ import com.pcloud.book.group.dto.BookGroupCreateDTO;
...
@@ -12,6 +15,7 @@ import com.pcloud.book.group.dto.BookGroupCreateDTO;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.BookGroupDTO
;
import
com.pcloud.book.group.dto.ChangeQrCodeTypeDto
;
import
com.pcloud.book.group.dto.ChangeQrCodeTypeDto
;
import
com.pcloud.book.group.dto.GroupStoreMyPayDto
;
import
com.pcloud.book.group.dto.GroupStoreMyPayDto
;
import
com.pcloud.book.group.dto.HotAppDTO
;
import
com.pcloud.book.group.dto.SelfBookGroupStParamDTO
;
import
com.pcloud.book.group.dto.SelfBookGroupStParamDTO
;
import
com.pcloud.book.group.dto.UserSelectParamDTO
;
import
com.pcloud.book.group.dto.UserSelectParamDTO
;
import
com.pcloud.book.group.entity.BookGroup
;
import
com.pcloud.book.group.entity.BookGroup
;
...
@@ -45,6 +49,7 @@ import com.pcloud.common.page.PageBeanNew;
...
@@ -45,6 +49,7 @@ import com.pcloud.common.page.PageBeanNew;
import
com.pcloud.common.page.PageParam
;
import
com.pcloud.common.page.PageParam
;
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
com.pcloud.common.utils.cache.redis.JedisClusterUtils
;
import
com.pcloud.common.utils.cookie.Cookie
;
import
com.pcloud.common.utils.cookie.Cookie
;
import
com.pcloud.common.utils.nginx.NginxUtils
;
import
com.pcloud.common.utils.nginx.NginxUtils
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.common.utils.string.StringUtil
;
...
@@ -71,6 +76,7 @@ import org.springframework.web.multipart.MultipartFile;
...
@@ -71,6 +76,7 @@ import org.springframework.web.multipart.MultipartFile;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
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
;
...
@@ -1364,4 +1370,18 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
...
@@ -1364,4 +1370,18 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
bookGroupCreateDTO
.
setAdviserId
(
adviserId
);
bookGroupCreateDTO
.
setAdviserId
(
adviserId
);
return
new
ResponseDto
<>(
bookGroupBiz
.
createBookGroup
(
bookGroupCreateDTO
));
return
new
ResponseDto
<>(
bookGroupBiz
.
createBookGroup
(
bookGroupCreateDTO
));
}
}
@Override
@GetMapping
(
"/listHotApp"
)
public
ResponseDto
<
List
<
HotAppDTO
>>
listHotApp
()
{
return
new
ResponseDto
<>(
bookGroupBiz
.
listHotApp
());
}
@GetMapping
(
"/testListHotApp"
)
public
void
testListHotApp
(){
if
(
JedisClusterUtils
.
exists
(
BookConstant
.
BOOK_HOT_APP
+
DateUtil
.
format
(
DateUtil
.
yesterday
(),
DatePattern
.
NORM_DATE_FORMAT
)))
return
;
JedisClusterUtils
.
set
(
BookConstant
.
BOOK_HOT_APP
+
DateUtil
.
format
(
DateUtil
.
yesterday
(),
DatePattern
.
NORM_DATE_FORMAT
),
"[{\"count\":32,\"increment\":0,\"typeCode\":\"MATCH_LISTEN\",\"typeName\":\"配套听力\"},{\"count\":209,\"increment\":0,\"typeCode\":\"VIDEO\",\"typeName\":\"视频\"},{\"count\":16,\"increment\":0,\"typeCode\":\"COURSE_WARE\",\"typeName\":\"课件\"},{\"count\":13,\"increment\":0,\"typeCode\":\"WORD_DICTATION\",\"typeName\":\"生词听写\"},{\"count\":81,\"increment\":0,\"typeCode\":\"AUDIO\",\"typeName\":\"音频\"},{\"count\":19,\"increment\":0,\"typeCode\":\"SPECIAL\",\"typeName\":\"专题拓展\"},{\"count\":9,\"increment\":0,\"typeCode\":\"STROKE_ORDER\",\"typeName\":\"笔顺动图\"},{\"count\":17,\"increment\":0,\"typeCode\":\"WISH\",\"typeName\":\"愿望单\"},{\"count\":13,\"increment\":0,\"typeCode\":\"QA\",\"typeName\":\"专家咨询\"},{\"count\":20,\"increment\":0,\"typeCode\":\"IMAGE\",\"typeName\":\"高清大图\"},{\"count\":3,\"increment\":0,\"typeCode\":\"INTERACT\",\"typeName\":\"签到互动墙\"},{\"count\":12,\"increment\":0,\"typeCode\":\"SUBJECTNOTE\",\"typeName\":\"错题本\"},{\"count\":0,\"increment\":0,\"typeCode\":\"ENROLL\",\"typeName\":\"编创赛报名\"},{\"count\":4,\"increment\":0,\"typeCode\":\"LISTEN\",\"typeName\":\"听力音频\"},{\"count\":18,\"increment\":0,\"typeCode\":\"ZSCORE\",\"typeName\":\"查弱项\"},{\"count\":12,\"increment\":0,\"typeCode\":\"AUDIO_MAGIC\",\"typeName\":\"伴读魔法箱\"},{\"count\":10,\"increment\":0,\"typeCode\":\"EF\",\"typeName\":\"专题问答\"},{\"count\":85,\"increment\":0,\"typeCode\":\"TEST\",\"typeName\":\"趣味测试\"},{\"count\":49,\"increment\":6,\"typeCode\":\"CLOCK\",\"typeName\":\"打卡\"},{\"count\":2,\"increment\":0,\"typeCode\":\"NAIRE\",\"typeName\":\"读者反馈\"},{\"count\":44,\"increment\":0,\"typeCode\":\"LIVE_TIMETABLE\",\"typeName\":\"直播课\"},{\"count\":17,\"increment\":0,\"typeCode\":\"ARTICLE_READING\",\"typeName\":\"课文诵读\"},{\"count\":15,\"increment\":0,\"typeCode\":\"VOTE\",\"typeName\":\"投票\"},{\"count\":11,\"increment\":0,\"typeCode\":\"EBOOK\",\"typeName\":\"热门电子书\"},{\"count\":12,\"increment\":0,\"typeCode\":\"TEST_PAPER\",\"typeName\":\"试卷\"},{\"count\":27,\"increment\":0,\"typeCode\":\"RECITE_WORD\",\"typeName\":\"背单词\"},{\"count\":9,\"increment\":0,\"typeCode\":\"BM\",\"typeName\":\"活动报名\"},{\"count\":55,\"increment\":1,\"typeCode\":\"FLAG\",\"typeName\":\"立Flag\"},{\"count\":15,\"increment\":0,\"typeCode\":\"MEMBER\",\"typeName\":\"开通会员\"},{\"count\":7,\"increment\":0,\"typeCode\":\"BOOKCARD\",\"typeName\":\"读书卡片\"},{\"count\":5,\"increment\":0,\"typeCode\":\"TUTOR\",\"typeName\":\"名师辅导\"},{\"count\":21,\"increment\":0,\"typeCode\":\"GROUP\",\"typeName\":\"读者交流圈\"},{\"count\":33,\"increment\":1,\"typeCode\":\"PDF\",\"typeName\":\"图文\"},{\"count\":35,\"increment\":1,\"typeCode\":\"TEACH_RESOURCE\",\"typeName\":\"教辅资料包\"},{\"count\":8,\"increment\":0,\"typeCode\":\"VOICE_MSG\",\"typeName\":\"作者留言\"},{\"count\":39,\"increment\":1,\"typeCode\":\"ITEM_BANK\",\"typeName\":\"在线题库\"},{\"count\":4,\"increment\":0,\"typeCode\":\"KK\",\"typeName\":\"扫扫看\"},{\"count\":100,\"increment\":1,\"typeCode\":\"ANSWER\",\"typeName\":\"答案\"},{\"count\":20,\"increment\":0,\"typeCode\":\"DRAW\",\"typeName\":\"抽奖\"},{\"count\":11,\"increment\":0,\"typeCode\":\"PBSTORY\",\"typeName\":\"绘本伴读\"},{\"count\":3,\"increment\":2,\"typeCode\":\"FOREIGN_READ\",\"typeName\":\"外刊阅读\"},{\"count\":56,\"increment\":0,\"typeCode\":\"ARTICLE\",\"typeName\":\"精品文章\"},{\"count\":27,\"increment\":0,\"typeCode\":\"COLD_KNOWLEDGE\",\"typeName\":\"冷知识\"},{\"count\":14,\"increment\":0,\"typeCode\":\"BOOK\",\"typeName\":\"资源合集\"},{\"count\":19,\"increment\":1,\"typeCode\":\"TICKET\",\"typeName\":\"准考证\"},{\"count\":17,\"increment\":0,\"typeCode\":\"ENGLISH_WALKMAN\",\"typeName\":\"英语随声听\"},{\"count\":18,\"increment\":0,\"typeCode\":\"ORAL_EVALUATION\",\"typeName\":\"口语评测\"},{\"count\":1,\"increment\":0,\"typeCode\":\"ACTIVITY\",\"typeName\":\"分享互动\"},{\"count\":12,\"increment\":0,\"typeCode\":\"BOOK_CLICK\",\"typeName\":\"点读书\"}]"
);
JedisClusterUtils
.
del
(
BookConstant
.
BOOK_HOT_APP
+
DateUtil
.
format
(
new
Date
(),
DatePattern
.
NORM_DATE_FORMAT
));
}
}
}
pcloud-service-book/src/main/java/com/pcloud/book/group/scheduled/HotAppScheduled.java
0 → 100644
View file @
b677322f
package
com
.
pcloud
.
book
.
group
.
scheduled
;
import
com.alibaba.fastjson.JSONObject
;
import
com.pcloud.book.group.biz.BookGroupBiz
;
import
com.pcloud.book.group.dto.HotAppDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
@Slf4j
@Component
public
class
HotAppScheduled
{
@Autowired
private
BookGroupBiz
bookGroupBiz
;
/**
* 每天凌晨1点更新热门应用数据
*/
@Scheduled
(
cron
=
"0 0 1 * * ?"
)
public
void
intiHotApp
()
{
List
<
HotAppDTO
>
hotAppDTOS
=
bookGroupBiz
.
listHotApp
();
log
.
info
(
"每天凌晨1点更新热门应用数据 hotAppDTOS:{}"
,
JSONObject
.
toJSONString
(
hotAppDTOS
));
}
}
pcloud-service-book/src/main/resources/mapper/group/BookGroupMapper.xml
View file @
b677322f
...
@@ -1214,4 +1214,44 @@
...
@@ -1214,4 +1214,44 @@
#{item}
#{item}
</foreach>
</foreach>
</select>
</select>
<select
id=
"listHotApp"
resultType=
"com.pcloud.book.group.dto.HotAppDTO"
>
SELECT
type_code typeCode,
count( 0 ) count
FROM
`book_group_serve` a
RIGHT JOIN book_group b ON a.book_group_id = b.id
WHERE
b.is_delete = 0
AND serve_type = 'APP'
AND ISNULL( type_code )= 0
AND LENGTH(
TRIM( type_code ))> 0
AND b.create_time BETWEEN DATE_SUB(DATE_FORMAT(CURDATE(),'%Y-%m-%d %H:%i:%s'),INTERVAL 3 MONTH) AND DATE_FORMAT(CURDATE(),'%Y-%m-%d %H:%i:%s')
GROUP BY
type_code
ORDER BY
count DESC
</select>
<select
id=
"listHotAppIncrement"
resultType=
"com.pcloud.book.group.dto.HotAppDTO"
>
SELECT
type_code typeCode,
count( 0 ) increment
FROM
`book_group_serve` a
RIGHT JOIN book_group b ON a.book_group_id = b.id
WHERE
b.is_delete = 0
AND serve_type = 'APP'
AND ISNULL( type_code )= 0
AND LENGTH(
TRIM( type_code ))> 0
AND b.create_time BETWEEN DATE_SUB(DATE_FORMAT(CURDATE(),'%Y-%m-%d %H:%i:%s'),INTERVAL 1 DAY) AND DATE_FORMAT(CURDATE(),'%Y-%m-%d %H:%i:%s')
GROUP BY
type_code
ORDER BY
increment DESC
</select>
</mapper>
</mapper>
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