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
e04a0340
Commit
e04a0340
authored
Jan 30, 2021
by
田超
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/1004243' into 'master'
feat: [1004243] 本书服务阅读人数 See merge request rays/pcloud-book!1184
parents
efbf6613
aa62c7ab
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
139 additions
and
0 deletions
+139
-0
BookConstant.java
...main/java/com/pcloud/book/book/constant/BookConstant.java
+30
-0
AppletRecordBiz.java
...main/java/com/pcloud/book/applet/biz/AppletRecordBiz.java
+7
-0
AppletRecordBizImpl.java
.../com/pcloud/book/applet/biz/impl/AppletRecordBizImpl.java
+35
-0
ReadBookRecordDTO.java
...in/java/com/pcloud/book/applet/dto/ReadBookRecordDTO.java
+29
-0
AppletRecordFacade.java
...ava/com/pcloud/book/applet/facade/AppletRecordFacade.java
+12
-0
BookGroupBizImpl.java
...java/com/pcloud/book/group/biz/impl/BookGroupBizImpl.java
+22
-0
ThreadPoolUtils.java
...ain/java/com/pcloud/book/util/common/ThreadPoolUtils.java
+4
-0
No files found.
pcloud-facade-book/src/main/java/com/pcloud/book/book/constant/BookConstant.java
View file @
e04a0340
...
...
@@ -5,6 +5,7 @@ import com.google.common.collect.Maps;
import
com.pcloud.common.constant.CacheConstant
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Random
;
...
...
@@ -405,4 +406,33 @@ public class BookConstant {
public
static
final
String
JOB_NAME_BANNER_PUT_OFF
=
"BannerAutoPutOff"
;
public
static
final
Map
<
Integer
,
List
<
Integer
>>
READER_COUNT_MAP
=
new
HashMap
<
Integer
,
List
<
Integer
>>(){
{
put
(
1
,
Lists
.
newArrayList
(
20
,
137
));
put
(
2
,
Lists
.
newArrayList
(
20
,
137
));
put
(
3
,
Lists
.
newArrayList
(
20
,
137
));
put
(
4
,
Lists
.
newArrayList
(
20
,
137
));
put
(
5
,
Lists
.
newArrayList
(
20
,
137
));
put
(
6
,
Lists
.
newArrayList
(
335
,
970
));
put
(
7
,
Lists
.
newArrayList
(
480
,
2280
));
put
(
8
,
Lists
.
newArrayList
(
664
,
5091
));
put
(
9
,
Lists
.
newArrayList
(
1095
,
10859
));
put
(
10
,
Lists
.
newArrayList
(
992
,
15224
));
put
(
11
,
Lists
.
newArrayList
(
772
,
11455
));
put
(
12
,
Lists
.
newArrayList
(
1162
,
12907
));
put
(
13
,
Lists
.
newArrayList
(
687
,
11108
));
put
(
14
,
Lists
.
newArrayList
(
795
,
10891
));
put
(
15
,
Lists
.
newArrayList
(
1100
,
12153
));
put
(
16
,
Lists
.
newArrayList
(
890
,
11433
));
put
(
17
,
Lists
.
newArrayList
(
1336
,
9118
));
put
(
18
,
Lists
.
newArrayList
(
2448
,
11952
));
put
(
19
,
Lists
.
newArrayList
(
3106
,
14088
));
put
(
20
,
Lists
.
newArrayList
(
3179
,
14980
));
put
(
21
,
Lists
.
newArrayList
(
2249
,
12156
));
put
(
22
,
Lists
.
newArrayList
(
1050
,
7955
));
put
(
23
,
Lists
.
newArrayList
(
628
,
3280
));
put
(
0
,
Lists
.
newArrayList
(
890
,
2250
));
}
};
}
pcloud-service-book/src/main/java/com/pcloud/book/applet/biz/AppletRecordBiz.java
View file @
e04a0340
...
...
@@ -2,6 +2,7 @@ package com.pcloud.book.applet.biz;
import
com.pcloud.book.applet.dto.AppletAppOrProductDTO
;
import
com.pcloud.book.applet.dto.AppletRecordDTO
;
import
com.pcloud.book.applet.dto.ReadBookRecordDTO
;
import
com.pcloud.book.applet.entity.AppletRecord
;
import
com.pcloud.common.page.PageBeanNew
;
...
...
@@ -93,4 +94,10 @@ public interface AppletRecordBiz {
* 手动处理应用作品和资讯的typeCode
*/
void
HandleTypeCode
();
/**
* 新增用户阅读记录
* @param readBookRecordDTO
*/
void
addReadBookRecord
(
ReadBookRecordDTO
readBookRecordDTO
);
}
pcloud-service-book/src/main/java/com/pcloud/book/applet/biz/impl/AppletRecordBizImpl.java
View file @
e04a0340
...
...
@@ -6,6 +6,7 @@ import cn.hutool.core.date.DatePattern;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
com.google.common.collect.Lists
;
import
com.pcloud.appcenter.app.dto.AppDto
;
import
com.pcloud.book.applet.biz.AppletBooklistBiz
;
...
...
@@ -22,11 +23,13 @@ import com.pcloud.book.applet.dto.AppletOuterBooklistDTO;
import
com.pcloud.book.applet.dto.AppletRecordDTO
;
import
com.pcloud.book.applet.dto.AppletUserBookcaseDTO
;
import
com.pcloud.book.applet.dto.BookDTO4Booklist
;
import
com.pcloud.book.applet.dto.ReadBookRecordDTO
;
import
com.pcloud.book.applet.entity.AppletRecord
;
import
com.pcloud.book.applet.entity.AppletRecordDayServe
;
import
com.pcloud.book.applet.entity.AppletRecordServe
;
import
com.pcloud.book.applet.enums.AppletRecordTypeEnum
;
import
com.pcloud.book.base.exception.BookBizException
;
import
com.pcloud.book.book.constant.BookConstant
;
import
com.pcloud.book.consumer.app.AppConsr
;
import
com.pcloud.book.consumer.channel.QrcodeSceneConsr
;
import
com.pcloud.book.consumer.resource.ProductConsr
;
...
...
@@ -37,9 +40,11 @@ import com.pcloud.book.group.tools.SendWeixinRequestTools;
import
com.pcloud.book.rightsSetting.biz.RightsSettingBiz
;
import
com.pcloud.book.skill.biz.PcloudGroupActivityBiz
;
import
com.pcloud.book.applet.dto.GroupActivity4AppletDTO
;
import
com.pcloud.book.skill.remind.RedisTool
;
import
com.pcloud.book.util.common.ThreadPoolUtils
;
import
com.pcloud.channelcenter.wechat.dto.AccountSettingDto
;
import
com.pcloud.common.core.aspect.ParamLog
;
import
com.pcloud.common.core.mybatis.cache.redis.RedisCache
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.page.PageBeanNew
;
import
com.pcloud.common.page.PageParam
;
...
...
@@ -47,6 +52,7 @@ import com.pcloud.common.utils.BeanUtils;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.NumberUtil
;
import
com.pcloud.common.utils.cache.redis.JedisClusterUtils
;
import
com.pcloud.common.utils.cache.redis.RedisSessionUtils
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.readercenter.common.enums.YesOrNoNumEnum
;
import
com.pcloud.resourcecenter.product.dto.ProductDto
;
...
...
@@ -68,6 +74,8 @@ import java.util.concurrent.ExecutionException;
import
java.util.concurrent.Future
;
import
java.util.stream.Collectors
;
import
static
com
.
pcloud
.
book
.
book
.
constant
.
BookConstant
.
READER_COUNT_MAP
;
/**
* (AppletRecord)表服务实现类
*
...
...
@@ -338,6 +346,33 @@ public class AppletRecordBizImpl implements AppletRecordBiz {
}
}
@Override
@ParamLog
(
"新增用户阅读本书服务记录"
)
public
void
addReadBookRecord
(
ReadBookRecordDTO
readBookRecordDTO
)
{
ThreadPoolUtils
.
BOOK_READ_RECORD
.
execute
(()
->
{
Long
bookId
=
readBookRecordDTO
.
getBookId
();
Long
channelId
=
readBookRecordDTO
.
getChannelId
();
Long
adviserId
=
readBookRecordDTO
.
getAdviserId
();
String
redisKey4Random
=
"BOOK:READER_COUNT:"
+
bookId
+
":"
+
channelId
+
":"
+
adviserId
;
String
redisKey4Set
=
"BOOK:READER_SET:"
+
bookId
+
":"
+
channelId
+
":"
+
adviserId
;
Integer
readerCount
=
null
;
if
(
JedisClusterUtils
.
exists
(
redisKey4Random
))
{
JedisClusterUtils
.
expire
(
redisKey4Random
,
BookConstant
.
BOOK_CACHE_SECOUND
);
}
else
{
List
<
Integer
>
readerCountList
=
READER_COUNT_MAP
.
get
(
DateUtil
.
hour
(
new
Date
(),
Boolean
.
TRUE
));
readerCount
=
RandomUtil
.
randomInt
(
readerCountList
.
get
(
0
),
readerCountList
.
get
(
1
));
JedisClusterUtils
.
set
(
redisKey4Random
,
readerCount
.
toString
(),
BookConstant
.
BOOK_CACHE_SECOUND
);
}
if
(
Objects
.
equals
(
YesOrNoNumEnum
.
YES
.
getValue
(),
readBookRecordDTO
.
getRecordType
()))
{
JedisClusterUtils
.
sadd
(
redisKey4Set
,
readBookRecordDTO
.
getWechatUserId
().
toString
());
JedisClusterUtils
.
expire
(
redisKey4Set
,
BookConstant
.
BOOK_CACHE_SECOUND
);
}
else
if
(
Objects
.
equals
(
YesOrNoNumEnum
.
NO
.
getValue
(),
readBookRecordDTO
.
getRecordType
()))
{
JedisClusterUtils
.
srem
(
redisKey4Set
,
readBookRecordDTO
.
getWechatUserId
().
toString
());
JedisClusterUtils
.
expire
(
redisKey4Set
,
BookConstant
.
BOOK_CACHE_SECOUND
);
}
});
}
private
void
HandleTypeCode4ListDay
(
List
<
AppletRecordDTO
>
recordList
)
{
fillTypeCode
(
recordList
);
appletRecordDayServeDao
.
batchUpdate
(
recordList
);
...
...
pcloud-service-book/src/main/java/com/pcloud/book/applet/dto/ReadBookRecordDTO.java
0 → 100644
View file @
e04a0340
package
com
.
pcloud
.
book
.
applet
.
dto
;
import
lombok.Data
;
@Data
public
class
ReadBookRecordDTO
{
/**
* 书刊id
*/
private
Long
bookId
;
/**
* 渠道id
*/
private
Long
channelId
;
/**
* 编辑id
*/
private
Long
adviserId
;
/**
* 记录类型 1进入 0 离开
*/
private
Integer
recordType
;
/**
* 用户id
*/
private
Long
wechatUserId
;
}
pcloud-service-book/src/main/java/com/pcloud/book/applet/facade/AppletRecordFacade.java
View file @
e04a0340
...
...
@@ -2,6 +2,7 @@ package com.pcloud.book.applet.facade;
import
com.pcloud.book.applet.biz.AppletRecordBiz
;
import
com.pcloud.book.applet.dto.AppletRecordDTO
;
import
com.pcloud.book.applet.dto.ReadBookRecordDTO
;
import
com.pcloud.book.applet.entity.AppletRecord
;
import
com.pcloud.book.applet.vo.AppletRecordQueryVO
;
import
com.pcloud.book.base.exception.BookBizException
;
...
...
@@ -117,5 +118,15 @@ public class AppletRecordFacade {
return
new
ResponseDto
<>();
}
@ApiOperation
(
"本书服务页阅读记录"
)
@RequestMapping
(
value
=
"addReadBookRecord"
,
method
=
RequestMethod
.
POST
)
public
ResponseDto
<?>
addReadBookRecord
(
@CookieValue
(
"userInfo"
)
String
userInfo
,
@RequestBody
ReadBookRecordDTO
readBookRecordDTO
){
Long
wechatUserId
=
Cookie
.
getId
(
userInfo
,
Cookie
.
_WECHAT_USER_ID
);
readBookRecordDTO
.
setWechatUserId
(
wechatUserId
);
appletRecordBiz
.
addReadBookRecord
(
readBookRecordDTO
);
return
new
ResponseDto
<>();
}
}
\ No newline at end of file
pcloud-service-book/src/main/java/com/pcloud/book/group/biz/impl/BookGroupBizImpl.java
View file @
e04a0340
package
com
.
pcloud
.
book
.
group
.
biz
.
impl
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
...
...
@@ -223,6 +224,7 @@ import com.pcloud.common.page.PageParam;
import
com.pcloud.common.utils.BeanUtils
;
import
com.pcloud.common.utils.DateUtils
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.NumberUtil
;
import
com.pcloud.common.utils.QrcodeUtils
;
import
com.pcloud.common.utils.ResponseHandleUtil
;
import
com.pcloud.common.utils.UUIDUitl
;
...
...
@@ -316,6 +318,8 @@ import cn.hutool.core.util.StrUtil;
import
cn.hutool.core.util.ZipUtil
;
import
lombok.SneakyThrows
;
import
static
com
.
pcloud
.
book
.
book
.
constant
.
BookConstant
.
READER_COUNT_MAP
;
/**
* Description 社群书群二维码业务逻辑层接口实现类 Created by PENG on 2019/4/17.
*/
...
...
@@ -5531,6 +5535,24 @@ public class BookGroupBizImpl implements BookGroupBiz {
/* List<BookServeDTO> serveDTOList = this.getBookAndBookGroupServeIds(adviserId, bookId, channelId);
this.removeCanNotBuy(serveDTOList);
map.put("resourceCount", ListUtils.isEmpty(serveDTOList) ? 0 : serveDTOList.size());*/
//获取本书阅读人数
String
redisKey4Random
=
"BOOK:READER_COUNT:"
+
bookId
+
":"
+
channelId
+
":"
+
adviserId
;
String
redisKey4Set
=
"BOOK:READER_SET:"
+
bookId
+
":"
+
channelId
+
":"
+
adviserId
;
String
readerCountStr
=
JedisClusterUtils
.
get
(
redisKey4Random
);
Integer
readerCount4Random
=
null
;
Integer
readerCount4Set
=
null
;
if
(
null
!=
readerCountStr
&&
NumberUtil
.
isNumber
(
readerCountStr
))
{
readerCount4Random
=
Integer
.
valueOf
(
readerCountStr
);
}
else
{
List
<
Integer
>
readerCountList
=
READER_COUNT_MAP
.
get
(
DateUtil
.
hour
(
new
Date
(),
Boolean
.
TRUE
));
readerCount4Random
=
RandomUtil
.
randomInt
(
readerCountList
.
get
(
0
),
readerCountList
.
get
(
1
));
}
if
(
JedisClusterUtils
.
exists
(
redisKey4Set
))
{
readerCount4Set
=
JedisClusterUtils
.
scard
(
redisKey4Set
).
intValue
();
}
else
{
readerCount4Set
=
0
;
}
map
.
put
(
"readerCount"
,
readerCount4Random
+
readerCount4Set
);
return
map
;
}
...
...
pcloud-service-book/src/main/java/com/pcloud/book/util/common/ThreadPoolUtils.java
View file @
e04a0340
...
...
@@ -68,4 +68,8 @@ public class ThreadPoolUtils {
public
static
final
ExecutorService
APPLET_RECORD
=
new
ThreadPoolExecutor
(
8
,
8
,
0L
,
TimeUnit
.
SECONDS
,
new
LinkedBlockingQueue
<>(),
new
ThreadFactoryBuilder
().
setNameFormat
(
"applet_record-%d"
).
build
(),
new
ThreadPoolExecutor
.
CallerRunsPolicy
());
public
static
final
ExecutorService
BOOK_READ_RECORD
=
new
ThreadPoolExecutor
(
8
,
8
,
0L
,
TimeUnit
.
SECONDS
,
new
LinkedBlockingQueue
<>(),
new
ThreadFactoryBuilder
().
setNameFormat
(
"book_read_record-%d"
).
build
(),
new
ThreadPoolExecutor
.
CallerRunsPolicy
());
}
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