Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
push-message
Project
Project
Details
Activity
Releases
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
liucheng
push-message
Commits
3d5df9aa
Commit
3d5df9aa
authored
Jan 25, 2022
by
renandong
🇨🇳
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1,判断更新处理数据不为空
2,每次最大处理数,如果缓存没有则取本地,如果缓存于本地不一致则取本地并替换缓存
parent
2606f9a2
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
57 additions
and
35 deletions
+57
-35
MenuService.java
src/main/java/com/weface/component/MenuService.java
+0
-3
UserTagsTask.java
src/main/java/com/weface/task/UserTagsTask.java
+57
-32
No files found.
src/main/java/com/weface/component/MenuService.java
View file @
3d5df9aa
...
@@ -88,7 +88,6 @@ public class MenuService {
...
@@ -88,7 +88,6 @@ public class MenuService {
String
kk_sh_token
=
"kk_sh_token"
;
String
kk_sh_token
=
"kk_sh_token"
;
try
{
try
{
String
authToken
=
GeTuiUtils
.
getAuthToken
(
kk_sh_token
);
String
authToken
=
GeTuiUtils
.
getAuthToken
(
kk_sh_token
);
System
.
out
.
println
(
"==============="
+
authToken
);
//将token以及用户ID封装调用画像查询接口
//将token以及用户ID封装调用画像查询接口
String
result
=
GeTuiUtils
.
queryTagKKSH
(
gidList
,
authToken
);
String
result
=
GeTuiUtils
.
queryTagKKSH
(
gidList
,
authToken
);
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
result
);
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
result
);
...
@@ -104,7 +103,6 @@ public class MenuService {
...
@@ -104,7 +103,6 @@ public class MenuService {
all
.
put
(
"error_code"
,
0
);
all
.
put
(
"error_code"
,
0
);
}
}
return
all
;
return
all
;
//如果以上步骤无法走通则直接返回。并修改标识符终止循环
}
else
{
}
else
{
log
.
error
(
"返回值内不包含需要解析的数据"
+
jsonObject
.
toJSONString
());
log
.
error
(
"返回值内不包含需要解析的数据"
+
jsonObject
.
toJSONString
());
}
}
...
@@ -134,7 +132,6 @@ public class MenuService {
...
@@ -134,7 +132,6 @@ public class MenuService {
if
(
jsonObject
.
containsKey
(
"userTag"
))
{
if
(
jsonObject
.
containsKey
(
"userTag"
))
{
JSONArray
userTag
=
jsonObject
.
getJSONArray
(
"userTag"
);
JSONArray
userTag
=
jsonObject
.
getJSONArray
(
"userTag"
);
return
getUserTagByTag
(
userTag
,
2
,
tags
);
return
getUserTagByTag
(
userTag
,
2
,
tags
);
//如果以上步骤无法走通则直接返回。并修改标识符终止循环
}
else
{
}
else
{
log
.
error
(
"返回值内不包含需要解析的数据"
+
jsonObject
.
toJSONString
());
log
.
error
(
"返回值内不包含需要解析的数据"
+
jsonObject
.
toJSONString
());
}
}
...
...
src/main/java/com/weface/task/UserTagsTask.java
View file @
3d5df9aa
...
@@ -55,7 +55,7 @@ public class UserTagsTask {
...
@@ -55,7 +55,7 @@ public class UserTagsTask {
/**
/**
* 更新用户标签
* 更新用户标签
*/
*/
@Scheduled
(
cron
=
"0
20 11
* * ?"
)
@Scheduled
(
cron
=
"0
0 23
* * ?"
)
public
void
updateUserTags
()
{
public
void
updateUserTags
()
{
try
{
try
{
//获取每次处理的id起始值
//获取每次处理的id起始值
...
@@ -65,11 +65,18 @@ public class UserTagsTask {
...
@@ -65,11 +65,18 @@ public class UserTagsTask {
}
}
int
id
=
Integer
.
parseInt
(
userId
);
int
id
=
Integer
.
parseInt
(
userId
);
//获取每次处理最大数
//获取
缓存内
每次处理最大数
String
pushSize
=
RedisUtil
.
StringOps
.
get
(
"push_max_size"
);
String
pushSize
=
RedisUtil
.
StringOps
.
get
(
"push_max_size"
);
//如果缓存没有则取配置文件中的
if
(
StringUtils
.
isBlank
(
pushSize
))
{
if
(
StringUtils
.
isBlank
(
pushSize
))
{
RedisUtil
.
StringOps
.
set
(
"push_max_size"
,
pushMaxSize
);
RedisUtil
.
StringOps
.
set
(
"push_max_size"
,
pushMaxSize
);
pushSize
=
pushMaxSize
;
pushSize
=
pushMaxSize
;
}
else
{
//如果缓存和配置文件不一致则使用配置文件数值替换缓存
if
(!
pushMaxSize
.
equals
(
pushSize
))
{
RedisUtil
.
StringOps
.
set
(
"push_max_size"
,
pushMaxSize
);
pushSize
=
pushMaxSize
;
}
}
}
int
max
=
Integer
.
parseInt
(
pushSize
);
int
max
=
Integer
.
parseInt
(
pushSize
);
...
@@ -77,51 +84,69 @@ public class UserTagsTask {
...
@@ -77,51 +84,69 @@ public class UserTagsTask {
List
<
UserMenusEntity
>
userMenusList
=
new
ArrayList
<>();
List
<
UserMenusEntity
>
userMenusList
=
new
ArrayList
<>();
//获取标签列表
//获取标签列表
List
<
MenuTagsEntity
>
tags
=
menuTagsService
.
list
();
List
<
MenuTagsEntity
>
tags
=
menuTagsService
.
list
();
//获取小于起始值,且更新时间为当前时间用户信息
//获取小于起始值,且更新时间为当前时间用户信息
List
<
UserTagEntity
>
beforeUser
=
userTagService
.
findUserByTodayAndIdBefore
(
id
);
List
<
UserTagEntity
>
beforeUser
=
userTagService
.
findUserByTodayAndIdBefore
(
id
);
//过滤用户gid
//如果每次更新数据为空则全部设置为新增
List
<
String
>
beforeGid
=
beforeUser
.
stream
().
map
(
UserTagEntity:
:
getGid
).
distinct
().
collect
(
Collectors
.
toList
());
if
(
CollUtil
.
isEmpty
(
beforeUser
))
{
List
<
UserMenusEntity
>
afterTag
=
getAfterTag
(
id
,
max
,
tags
);
//获取更新总数量
if
(
afterTag
!=
null
)
{
int
size
=
beforeGid
.
size
();
userMenusList
.
addAll
(
afterTag
);
//如果更新数量大于总量,截取每次处理总量的更新用户信息
}
if
(
size
>
max
)
{
beforeGid
=
beforeGid
.
subList
(
0
,
max
-
1
);
}
else
{
}
else
{
//最大处理数减去当天更新处理数,得到剩余处理数,获取起始值后的新增的用户信息
//过滤用户gid
List
<
UserTagEntity
>
afterUser
=
userTagService
.
findUserByIdAfter
(
Integer
.
parseInt
(
userId
),
max
-
size
);
List
<
String
>
beforeGid
=
beforeUser
.
stream
().
map
(
UserTagEntity:
:
getGid
).
distinct
().
collect
(
Collectors
.
toList
());
//如果当天新增数不为空
//获取更新总数量
if
(
CollUtil
.
isNotEmpty
(
afterUser
))
{
int
size
=
beforeGid
.
size
();
//获取用户最后一条信息
//如果更新数量大于总量,截取每次处理总量的更新用户信息
UserTagEntity
afterUserInfo
=
afterUser
.
get
(
afterUser
.
size
()
-
1
);
if
(
size
>
max
)
{
//并覆盖起始值
beforeGid
=
beforeGid
.
subList
(
0
,
max
-
1
);
RedisUtil
.
StringOps
.
set
(
"user_tag_id"
,
String
.
valueOf
(
afterUserInfo
.
getId
()));
}
else
{
//过滤用户gid
List
<
UserMenusEntity
>
afterTag
=
getAfterTag
(
id
,
max
-
size
,
tags
);
List
<
String
>
afterGid
=
afterUser
.
stream
().
map
(
UserTagEntity:
:
getGid
).
distinct
().
collect
(
Collectors
.
toList
());
if
(
afterTag
!=
null
)
{
//调用个像接口获取新增用户标签
List
<
UserMenusEntity
>
afterTag
=
getUserTag
(
afterGid
,
afterUser
,
tags
);
if
(
CollUtil
.
isNotEmpty
(
afterTag
))
{
userMenusList
.
addAll
(
afterTag
);
userMenusList
.
addAll
(
afterTag
);
}
}
}
}
}
//调用个像接口获取更新用户标签
//调用个像接口获取更新用户标签
List
<
UserMenusEntity
>
beforeTag
=
getUserTag
(
beforeGid
,
beforeUser
,
tags
);
List
<
UserMenusEntity
>
beforeTag
=
getUserTag
(
beforeGid
,
beforeUser
,
tags
);
if
(
CollUtil
.
isNotEmpty
(
beforeTag
))
{
if
(
CollUtil
.
isNotEmpty
(
beforeTag
))
{
userMenusList
.
addAll
(
beforeTag
);
userMenusList
.
addAll
(
beforeTag
);
}
}
}
//批量插入用户标签信息
//批量插入用户标签信息
userMenusService
.
batchInsert
(
userMenusList
);
userMenusService
.
batchInsert
(
userMenusList
);
log
.
error
(
"执行结束{}"
,
asyncServiceExecutor
.
getPoolSize
(
));
log
.
info
(
"执行结束,当前最新id{}"
,
RedisUtil
.
StringOps
.
get
(
"user_tag_id"
));
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
log
.
error
(
"执行定时更新标签任务失败!"
);
log
.
error
(
"执行定时更新标签任务失败!"
);
}
}
}
}
/**
* 处理新增用户标签
*
* @param userId 用户id
* @param limit 处理条数
* @param tags 标签信息
* @return 标签信息
* @throws InterruptedException 网络异常
*/
private
List
<
UserMenusEntity
>
getAfterTag
(
Integer
userId
,
Integer
limit
,
List
<
MenuTagsEntity
>
tags
)
throws
InterruptedException
{
//最大处理数减去当天更新处理数,得到剩余处理数,获取起始值后的新增的用户信息
List
<
UserTagEntity
>
afterUser
=
userTagService
.
findUserByIdAfter
(
userId
,
limit
);
//如果当天新增数不为空
if
(
CollUtil
.
isNotEmpty
(
afterUser
))
{
//获取用户最后一条信息
UserTagEntity
afterUserInfo
=
afterUser
.
get
(
afterUser
.
size
()
-
1
);
//并覆盖起始值
RedisUtil
.
StringOps
.
set
(
"user_tag_id"
,
String
.
valueOf
(
afterUserInfo
.
getId
()));
//过滤用户gid
List
<
String
>
afterGid
=
afterUser
.
stream
().
map
(
UserTagEntity:
:
getGid
).
distinct
().
collect
(
Collectors
.
toList
());
//调用个像接口获取新增用户标签
return
getUserTag
(
afterGid
,
afterUser
,
tags
);
}
return
null
;
}
/**
/**
* 获取个像用户标签信息
* 获取个像用户标签信息
*
*
...
...
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