Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
haoban-manage3.0
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
haoban3.0
haoban-manage3.0
Commits
f13c402e
Commit
f13c402e
authored
Aug 13, 2023
by
徐高华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
同步好友优化
parent
8caf0632
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
116 additions
and
54 deletions
+116
-54
DealSyncOperationApiService.java
...aoban/manage/api/service/DealSyncOperationApiService.java
+1
-0
PreDealService.java
...com/gic/haoban/manage/service/service/PreDealService.java
+1
-0
PreDealServiceImpl.java
...aoban/manage/service/service/impl/PreDealServiceImpl.java
+8
-1
DealSyncOperationApiServiceImpl.java
...ice/service/out/impl/DealSyncOperationApiServiceImpl.java
+104
-4
FriendSyncNewOperation.java
...an/manage/service/task/friend/FriendSyncNewOperation.java
+1
-23
SelfFriendSyncNewOperation.java
...anage/service/task/friend/SelfFriendSyncNewOperation.java
+1
-26
No files found.
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/DealSyncOperationApiService.java
View file @
f13c402e
...
@@ -211,4 +211,5 @@ public interface DealSyncOperationApiService {
...
@@ -211,4 +211,5 @@ public interface DealSyncOperationApiService {
void
dealTagTask
(
String
wxEnterpriseId
,
String
enterpriseId
,
List
<
String
>
tagIds
,
String
taskId
);
void
dealTagTask
(
String
wxEnterpriseId
,
String
enterpriseId
,
List
<
String
>
tagIds
,
String
taskId
);
void
taskStatusTimer
(
String
params
)
;
void
taskStatusTimer
(
String
params
)
;
void
staffTaskStatusTimer
(
String
params
)
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/PreDealService.java
View file @
f13c402e
...
@@ -200,5 +200,6 @@ public interface PreDealService {
...
@@ -200,5 +200,6 @@ public interface PreDealService {
public
List
<
String
>
listReDataIdByPDataId
(
String
taskId
,
String
pDataId
,
Integer
dataType
);
public
List
<
String
>
listReDataIdByPDataId
(
String
taskId
,
String
pDataId
,
Integer
dataType
);
public
void
addTaskStatusCache
(
String
taskId
)
;
public
void
addTaskStatusCache
(
String
taskId
)
;
public
void
addTaskStaffStatusCache
(
String
taskId
,
String
staffId
,
int
type
)
;
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/PreDealServiceImpl.java
View file @
f13c402e
...
@@ -32,6 +32,7 @@ import java.util.List;
...
@@ -32,6 +32,7 @@ import java.util.List;
public
class
PreDealServiceImpl
implements
PreDealService
{
public
class
PreDealServiceImpl
implements
PreDealService
{
public
static
final
String
HAOBAN_TASK_ID_SET_CACHE
=
"haobanTaskSyncIdSetCache"
;
public
static
final
String
HAOBAN_TASK_ID_SET_CACHE
=
"haobanTaskSyncIdSetCache"
;
public
static
final
String
HAOBAN_TASK_STAFF_ID_SET_CACHE
=
"haobanTaskStaffSyncIdSetCache"
;
@Autowired
@Autowired
private
PreDealLogMapper
preDealLogMapper
;
private
PreDealLogMapper
preDealLogMapper
;
...
@@ -188,9 +189,15 @@ public class PreDealServiceImpl implements PreDealService {
...
@@ -188,9 +189,15 @@ public class PreDealServiceImpl implements PreDealService {
public
List
<
String
>
listReDataIdByPDataId
(
String
taskId
,
String
pDataId
,
Integer
dataType
)
{
public
List
<
String
>
listReDataIdByPDataId
(
String
taskId
,
String
pDataId
,
Integer
dataType
)
{
return
preDealLogMapper
.
listReDataIdByPDataId
(
taskId
,
pDataId
,
dataType
);
return
preDealLogMapper
.
listReDataIdByPDataId
(
taskId
,
pDataId
,
dataType
);
}
}
@Override
public
void
addTaskStatusCache
(
String
taskId
){
public
void
addTaskStatusCache
(
String
taskId
){
RSet
<
String
>
set
=
RedisUtil
.
getRedisClient
().
getSet
(
HAOBAN_TASK_ID_SET_CACHE
);
RSet
<
String
>
set
=
RedisUtil
.
getRedisClient
().
getSet
(
HAOBAN_TASK_ID_SET_CACHE
);
set
.
add
(
taskId
)
;
set
.
add
(
taskId
)
;
}
}
@Override
public
void
addTaskStaffStatusCache
(
String
taskId
,
String
staffId
,
int
type
)
{
String
key
=
taskId
+
"#"
+
staffId
+
"#"
+
type
;
RSet
<
String
>
set
=
RedisUtil
.
getRedisClient
().
getSet
(
HAOBAN_TASK_STAFF_ID_SET_CACHE
);
set
.
add
(
key
)
;
}
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/DealSyncOperationApiServiceImpl.java
View file @
f13c402e
...
@@ -808,9 +808,7 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
...
@@ -808,9 +808,7 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
/**
/**
* 定时修改任务状态
* 定时修改任务状态
* @param params
*/
*/
@Override
@Override
public
void
taskStatusTimer
(
String
params
)
{
public
void
taskStatusTimer
(
String
params
)
{
try
{
try
{
...
@@ -825,8 +823,13 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
...
@@ -825,8 +823,13 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
it
.
remove
();
it
.
remove
();
continue
;
continue
;
}
}
// 刷新整个企业好友
if
(
task
.
getCreateTime
().
getTime
()+
1000
*
60
*
60
*
24
<
System
.
currentTimeMillis
())
{
if
(
task
.
getTaskType
()==
SyncTaskTypeEnum
.
FRIEND_WX_ENTEPRISE
.
getType
())
{
logger
.
info
(
"超过一天taskId={}"
,
taskId
);
it
.
remove
();
continue
;
}
if
(
task
.
getTaskType
()==
SyncTaskTypeEnum
.
FRIEND_WX_ENTEPRISE
.
getType
()
||
task
.
getTaskType
()==
SyncTaskTypeEnum
.
FRIEND_SINGLE
.
getType
()
||
task
.
getTaskType
()==
SyncTaskTypeEnum
.
FRIEND_STORE
.
getType
())
{
boolean
flag
=
this
.
updateTaskStatus
(
taskId
);
boolean
flag
=
this
.
updateTaskStatus
(
taskId
);
if
(
flag
)
{
if
(
flag
)
{
it
.
remove
();
it
.
remove
();
...
@@ -839,9 +842,49 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
...
@@ -839,9 +842,49 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
}
}
}
}
@Override
public
void
staffTaskStatusTimer
(
String
params
)
{
try
{
RSet
<
String
>
set
=
RedisUtil
.
getRedisClient
().
getSet
(
PreDealServiceImpl
.
HAOBAN_TASK_STAFF_ID_SET_CACHE
);
logger
.
info
(
"处理好办任务状态={}"
,
set
);
Iterator
<
String
>
it
=
set
.
iterator
()
;
while
(
it
.
hasNext
())
{
String
v
=
it
.
next
()
;
String
[]
arr
=
v
.
split
(
"#"
)
;
if
(
arr
.
length
!=
3
)
{
logger
.
info
(
"异常{},{}"
,
v
);
it
.
remove
();
continue
;
}
String
taskId
=
arr
[
0
]
;
String
staffId
=
arr
[
1
]
;
int
type
=
Integer
.
valueOf
(
arr
[
2
])
;
TabHaobanSyncTask
task
=
syncTaskService
.
getSyncTask
(
taskId
);
if
(
null
==
task
)
{
logger
.
info
(
"任务不存在taskId={}"
,
taskId
);
it
.
remove
();
continue
;
}
if
(
task
.
getCreateTime
().
getTime
()+
1000
*
60
*
60
*
24
<
System
.
currentTimeMillis
())
{
logger
.
info
(
"超过一天taskId={},{}"
,
taskId
,
staffId
);
it
.
remove
();
continue
;
}
boolean
flag
=
this
.
updateStaffTaskStatus
(
taskId
,
staffId
,
type
)
;
if
(
flag
)
{
it
.
remove
();
}
}
logger
.
info
(
"处理好办任务状态定时完成"
);
}
catch
(
Exception
e
)
{
logger
.
warn
(
e
.
toString
(),
e
);
}
}
private
boolean
updateTaskStatus
(
String
taskId
)
{
private
boolean
updateTaskStatus
(
String
taskId
)
{
boolean
b
=
preDealService
.
checkFriendTask
(
taskId
,
PreDealTypeEnum
.
friend_clerk
.
getVal
());
boolean
b
=
preDealService
.
checkFriendTask
(
taskId
,
PreDealTypeEnum
.
friend_clerk
.
getVal
());
if
(!
b
)
{
if
(!
b
)
{
logger
.
info
(
"更新task状态,还未完成"
);
return
false
;
return
false
;
}
}
logger
.
info
(
"好友同步成功:{}"
,
taskId
);
logger
.
info
(
"好友同步成功:{}"
,
taskId
);
...
@@ -859,4 +902,61 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
...
@@ -859,4 +902,61 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
}
}
return
true
;
return
true
;
}
}
private
boolean
updateStaffTaskStatus
(
String
taskId
,
String
stffId
,
int
type
)
{
if
(
type
==
7
)
{
boolean
b
=
preDealService
.
checkFriendTaskByPDataId
(
taskId
,
stffId
,
PreDealTypeEnum
.
self_friend
.
getVal
());
if
(!
b
)
{
logger
.
info
(
"校验直接返回"
);
return
false
;
}
logger
.
info
(
"同步第三方好友开始:{},{}"
,
taskId
,
stffId
);
String
key
=
"haoban_sync_self_friend_task_"
+
taskId
+
":"
+
stffId
;
String
lockKey
=
"haoban_sync_self_friend_task_lock_"
+
taskId
+
":"
+
stffId
;
RedisUtil
.
lock
(
lockKey
,
3L
);
Object
hasDealCheck
=
RedisUtil
.
getCache
(
key
);
if
(
hasDealCheck
!=
null
)
{
logger
.
info
(
"重复提交处理第三方好友:{}"
,
stffId
);
RedisUtil
.
unlock
(
lockKey
);
return
false
;
}
RedisUtil
.
setCache
(
key
,
stffId
,
30L
,
TimeUnit
.
SECONDS
);
List
<
String
>
dataIds
=
preDealService
.
listReDataIdByPDataId
(
taskId
,
stffId
,
PreDealTypeEnum
.
friend
.
getVal
());
if
(
CollectionUtils
.
isEmpty
(
dataIds
))
{
logger
.
info
(
"第三方的数据为空"
);
//更新父级别
preDealService
.
updateStatusByDataId
(
taskId
,
stffId
,
PreDealTypeEnum
.
friend_clerk
.
getVal
(),
PreDealStatusEnum
.
computed
.
getVal
(),
"成功"
);
}
else
{
dealDepartmentToMq
(
taskId
,
new
HashSet
<>(
dataIds
),
SyncTaskStatusEnum
.
friend_sync
);
}
RedisUtil
.
unlock
(
lockKey
);
}
if
(
type
==
8
)
{
boolean
b
=
preDealService
.
checkFriendTaskByPDataId
(
taskId
,
stffId
,
PreDealTypeEnum
.
friend
.
getVal
());
if
(!
b
)
{
return
false
;
}
String
staffLockKey
=
DealSyncOperationApiServiceImpl
.
FRIEND_LOCK
+
stffId
;
RedisUtil
.
delCache
(
staffLockKey
);
logger
.
info
(
"同步第三方好友结束:{},{},{}"
,
taskId
,
stffId
,
staffLockKey
);
String
key
=
"haoban_sync_third_friend_task_"
+
taskId
+
":"
+
stffId
;
String
lockKey
=
"haoban_sync_third_friend_task_lock_"
+
taskId
+
":"
+
stffId
;
RedisUtil
.
lock
(
lockKey
,
3L
);
Object
hasDealCheck
=
RedisUtil
.
getCache
(
key
);
if
(
hasDealCheck
!=
null
)
{
logger
.
info
(
"重复提交结束第三方好友:{}"
,
stffId
);
RedisUtil
.
unlock
(
lockKey
);
return
false
;
}
RedisUtil
.
setCache
(
key
,
stffId
,
30L
,
TimeUnit
.
SECONDS
);
TabHaobanPreDealLog
preDealLog
=
preDealService
.
getByDataId
(
taskId
,
stffId
,
PreDealTypeEnum
.
friend_clerk
.
getVal
(),
PreDealStatusEnum
.
dealing
.
getVal
());
if
(
preDealLog
!=
null
)
{
preDealService
.
updateStatusByDataId
(
taskId
,
stffId
,
PreDealTypeEnum
.
friend_clerk
.
getVal
(),
PreDealStatusEnum
.
computed
.
getVal
(),
"成功"
);
}
RedisUtil
.
unlock
(
lockKey
);
}
return
true
;
}
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/friend/FriendSyncNewOperation.java
View file @
f13c402e
...
@@ -170,29 +170,7 @@ public class FriendSyncNewOperation implements BaseSyncOperation {
...
@@ -170,29 +170,7 @@ public class FriendSyncNewOperation implements BaseSyncOperation {
* @param pDataId
* @param pDataId
*/
*/
public
void
checkDepartmentTask
(
String
taskId
,
String
pDataId
)
{
public
void
checkDepartmentTask
(
String
taskId
,
String
pDataId
)
{
boolean
b
=
preDealService
.
checkFriendTaskByPDataId
(
taskId
,
pDataId
,
PreDealTypeEnum
.
friend
.
getVal
());
this
.
preDealService
.
addTaskStaffStatusCache
(
taskId
,
pDataId
,
8
);
if
(!
b
)
{
return
;
}
String
staffLockKey
=
DealSyncOperationApiServiceImpl
.
FRIEND_LOCK
+
pDataId
;
RedisUtil
.
delCache
(
staffLockKey
);
logger
.
info
(
"同步第三方好友结束:{},{},{}"
,
taskId
,
pDataId
,
staffLockKey
);
String
key
=
"haoban_sync_third_friend_task_"
+
taskId
+
":"
+
pDataId
;
String
lockKey
=
"haoban_sync_third_friend_task_lock_"
+
taskId
+
":"
+
pDataId
;
RedisUtil
.
lock
(
lockKey
,
3L
);
Object
hasDealCheck
=
RedisUtil
.
getCache
(
key
);
if
(
hasDealCheck
!=
null
)
{
logger
.
info
(
"重复提交结束第三方好友:{}"
,
pDataId
);
RedisUtil
.
unlock
(
lockKey
);
return
;
}
RedisUtil
.
setCache
(
key
,
pDataId
,
30L
,
TimeUnit
.
SECONDS
);
TabHaobanPreDealLog
preDealLog
=
preDealService
.
getByDataId
(
taskId
,
pDataId
,
PreDealTypeEnum
.
friend_clerk
.
getVal
(),
PreDealStatusEnum
.
dealing
.
getVal
());
if
(
preDealLog
!=
null
)
{
preDealService
.
updateStatusByDataId
(
taskId
,
pDataId
,
PreDealTypeEnum
.
friend_clerk
.
getVal
(),
PreDealStatusEnum
.
computed
.
getVal
(),
"成功"
);
}
RedisUtil
.
unlock
(
lockKey
);
}
}
@Override
@Override
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/task/friend/SelfFriendSyncNewOperation.java
View file @
f13c402e
...
@@ -154,32 +154,7 @@ public class SelfFriendSyncNewOperation implements BaseSyncOperation {
...
@@ -154,32 +154,7 @@ public class SelfFriendSyncNewOperation implements BaseSyncOperation {
* @param pDataId
* @param pDataId
*/
*/
public
void
checkDepartmentTask
(
String
taskId
,
String
pDataId
)
{
public
void
checkDepartmentTask
(
String
taskId
,
String
pDataId
)
{
//校验是否都已经处理完成
this
.
preDealService
.
addTaskStaffStatusCache
(
taskId
,
pDataId
,
7
);
boolean
b
=
preDealService
.
checkFriendTaskByPDataId
(
taskId
,
pDataId
,
PreDealTypeEnum
.
self_friend
.
getVal
());
if
(!
b
)
{
logger
.
info
(
"校验直接返回"
);
return
;
}
logger
.
info
(
"同步第三方好友开始:{},{}"
,
taskId
,
pDataId
);
String
key
=
"haoban_sync_self_friend_task_"
+
taskId
+
":"
+
pDataId
;
String
lockKey
=
"haoban_sync_self_friend_task_lock_"
+
taskId
+
":"
+
pDataId
;
RedisUtil
.
lock
(
lockKey
,
3L
);
Object
hasDealCheck
=
RedisUtil
.
getCache
(
key
);
if
(
hasDealCheck
!=
null
)
{
logger
.
info
(
"重复提交处理第三方好友:{}"
,
pDataId
);
RedisUtil
.
unlock
(
lockKey
);
return
;
}
RedisUtil
.
setCache
(
key
,
pDataId
,
30L
,
TimeUnit
.
SECONDS
);
List
<
String
>
dataIds
=
preDealService
.
listReDataIdByPDataId
(
taskId
,
pDataId
,
PreDealTypeEnum
.
friend
.
getVal
());
if
(
CollectionUtils
.
isEmpty
(
dataIds
))
{
logger
.
info
(
"第三方的数据为空"
);
//更新父级别
preDealService
.
updateStatusByDataId
(
taskId
,
pDataId
,
PreDealTypeEnum
.
friend_clerk
.
getVal
(),
PreDealStatusEnum
.
computed
.
getVal
(),
"成功"
);
}
else
{
dealDepartmentToMq
(
taskId
,
new
HashSet
<>(
dataIds
),
SyncTaskStatusEnum
.
friend_sync
);
}
RedisUtil
.
unlock
(
lockKey
);
}
}
@Override
@Override
...
...
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