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
a621d903
Commit
a621d903
authored
Aug 29, 2022
by
徐高华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wx_user_id调整
parent
c002d98b
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
1772 additions
and
1933 deletions
+1772
-1933
TestController.java
...gic/haoban/manage/web/controller/test/TestController.java
+1
-2
HandoverExternalMapper.java
...ban/manage/service/dao/mapper/HandoverExternalMapper.java
+0
-19
ClerkMainStoreRelatedServiceImpl.java
...ervice/service/impl/ClerkMainStoreRelatedServiceImpl.java
+1
-1
DealSyncOperationApiServiceImpl.java
...ice/service/out/impl/DealSyncOperationApiServiceImpl.java
+788
-794
QywxTagApiServiceImpl.java
...anage/service/service/out/impl/QywxTagApiServiceImpl.java
+965
-965
StaffApiServiceImpl.java
.../manage/service/service/out/impl/StaffApiServiceImpl.java
+3
-0
HmLinkApiServiceImpl.java
...age/service/service/out/impl/hm/HmLinkApiServiceImpl.java
+10
-6
HandoverExternalMapper.xml
...vice/src/main/resources/mapper/HandoverExternalMapper.xml
+1
-146
ClerkController.java
...com/gic/haoban/manage/web/controller/ClerkController.java
+3
-0
No files found.
haoban-manage3-operation-web/src/main/java/com/gic/haoban/manage/web/controller/test/TestController.java
View file @
a621d903
...
@@ -155,11 +155,10 @@ public class TestController extends WebBaseController {
...
@@ -155,11 +155,10 @@ public class TestController extends WebBaseController {
continue
;
continue
;
}
}
String
wxEnterpriseId
=
staff
.
getWxEnterpriseId
();
String
wxEnterpriseId
=
staff
.
getWxEnterpriseId
();
String
wxUserId
=
staff
.
getWxUserId
();
String
taskName
=
"刷新企业微信好友("
+
staff
.
getStaffName
()
+
")"
;
String
taskName
=
"刷新企业微信好友("
+
staff
.
getStaffName
()
+
")"
;
String
taskId
=
dealSyncOperationApiService
.
createWxFriendTaskSingle
(
staff
.
getWxEnterpriseId
(),
taskName
,
staffId
,
staff
.
getStaffName
(),
SyncTaskTypeEnum
.
FRIEND_SINGLE
.
getType
());
String
taskId
=
dealSyncOperationApiService
.
createWxFriendTaskSingle
(
staff
.
getWxEnterpriseId
(),
taskName
,
staffId
,
staff
.
getStaffName
(),
SyncTaskTypeEnum
.
FRIEND_SINGLE
.
getType
());
if
(
StringUtils
.
isNotBlank
(
taskId
))
{
if
(
StringUtils
.
isNotBlank
(
taskId
))
{
dealSyncOperationApiService
.
dealWxFriendClerkSingle
(
taskId
,
wxUser
Id
,
staffId
,
wxEnterpriseId
);
dealSyncOperationApiService
.
dealWxFriendClerkSingle
(
taskId
,
staff
Id
,
staffId
,
wxEnterpriseId
);
}
}
}
}
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
return
resultResponse
(
HaoBanErrCode
.
ERR_1
);
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/HandoverExternalMapper.java
View file @
a621d903
...
@@ -9,21 +9,6 @@ import java.util.List;
...
@@ -9,21 +9,6 @@ import java.util.List;
@Mapper
@Mapper
public
interface
HandoverExternalMapper
{
public
interface
HandoverExternalMapper
{
/**
*/
int
deleteByPrimaryKey
(
String
handoverExternalId
);
/**
*/
int
insert
(
TabHandoverExternal
record
);
/**
*/
int
insertSelective
(
TabHandoverExternal
record
);
/**
*/
TabHandoverExternal
selectByPrimaryKey
(
String
handoverExternalId
);
/**
/**
*/
*/
...
@@ -31,10 +16,6 @@ public interface HandoverExternalMapper {
...
@@ -31,10 +16,6 @@ public interface HandoverExternalMapper {
/**
/**
*/
*/
int
updateByPrimaryKey
(
TabHandoverExternal
record
);
/**
*/
int
insertBatch
(
@Param
(
"list"
)
List
<
TabHandoverExternal
>
list
);
int
insertBatch
(
@Param
(
"list"
)
List
<
TabHandoverExternal
>
list
);
/**
/**
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/ClerkMainStoreRelatedServiceImpl.java
View file @
a621d903
...
@@ -72,7 +72,7 @@ public class ClerkMainStoreRelatedServiceImpl implements ClerkMainStoreRelatedSe
...
@@ -72,7 +72,7 @@ public class ClerkMainStoreRelatedServiceImpl implements ClerkMainStoreRelatedSe
logger
.
info
(
"刷新好友失败或正在刷新:{},{}"
,
staffId
,
storeId
);
logger
.
info
(
"刷新好友失败或正在刷新:{},{}"
,
staffId
,
storeId
);
return
;
return
;
}
}
dealSyncOperationApiService
.
dealWxFriendClerkSingle
(
taskId
,
staff
.
getWxUserId
()
,
staffId
,
wxEnterpriseId
);
dealSyncOperationApiService
.
dealWxFriendClerkSingle
(
taskId
,
staff
Id
,
staffId
,
wxEnterpriseId
);
logger
.
info
(
"任务id:{}"
,
taskId
);
logger
.
info
(
"任务id:{}"
,
taskId
);
}
}
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/DealSyncOperationApiServiceImpl.java
View file @
a621d903
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
out
.
impl
;
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
out
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.Page
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.clerk.api.dto.ClerkDTO
;
import
com.gic.clerk.api.service.ClerkService
;
import
com.gic.clerk.api.service.ClerkService
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.commons.util.ToolUtil
;
import
com.gic.commons.util.ToolUtil
;
import
com.gic.enterprise.api.dto.StoreDTO
;
import
com.gic.enterprise.api.dto.StoreDTO
;
import
com.gic.enterprise.api.dto.StoreGroupDTO
;
import
com.gic.enterprise.api.dto.StoreGroupDTO
;
import
com.gic.enterprise.api.service.StoreGroupService
;
import
com.gic.enterprise.api.service.StoreGroupService
;
import
com.gic.enterprise.api.service.StoreService
;
import
com.gic.enterprise.api.service.StoreService
;
import
com.gic.haoban.base.api.common.BasePageInfo
;
import
com.gic.haoban.base.api.common.BasePageInfo
;
import
com.gic.haoban.common.utils.EntityUtil
;
import
com.gic.haoban.common.utils.EntityUtil
;
import
com.gic.haoban.manage.api.dto.*
;
import
com.gic.haoban.manage.api.dto.*
;
import
com.gic.haoban.manage.api.enums.*
;
import
com.gic.haoban.manage.api.enums.*
;
import
com.gic.haoban.manage.api.service.DealSyncOperationApiService
;
import
com.gic.haoban.manage.api.service.DealSyncOperationApiService
;
import
com.gic.haoban.manage.service.dao.mapper.StaffMapper
;
import
com.gic.haoban.manage.service.dao.mapper.StaffMapper
;
import
com.gic.haoban.manage.service.entity.*
;
import
com.gic.haoban.manage.service.entity.*
;
import
com.gic.haoban.manage.service.service.*
;
import
com.gic.haoban.manage.service.service.*
;
import
com.gic.haoban.manage.service.task.BaseSyncOperation
;
import
com.gic.haoban.manage.service.task.BaseSyncOperation
;
import
com.gic.mq.sdk.GicMQClient
;
import
com.gic.mq.sdk.GicMQClient
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.wechat.api.service.qywx.QywxDepartmentApiService
;
import
com.gic.wechat.api.service.qywx.QywxDepartmentApiService
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.time.DateUtils
;
import
org.apache.commons.lang3.time.DateUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
* Created 2020/4/9.
* Created 2020/4/9.
*
*
* @author hua
* @author hua
*/
*/
@Service
@Service
public
class
DealSyncOperationApiServiceImpl
implements
DealSyncOperationApiService
{
public
class
DealSyncOperationApiServiceImpl
implements
DealSyncOperationApiService
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
DealSyncOperationApiServiceImpl
.
class
);
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
DealSyncOperationApiServiceImpl
.
class
);
@Autowired
@Autowired
private
DepartmentService
departmentService
;
private
DepartmentService
departmentService
;
@Autowired
@Autowired
private
StoreGroupService
storeGroupService
;
private
StoreGroupService
storeGroupService
;
@Autowired
@Autowired
private
PreDealService
preDealService
;
private
PreDealService
preDealService
;
@Autowired
@Autowired
private
SyncTaskService
syncTaskService
;
private
SyncTaskService
syncTaskService
;
@Autowired
@Autowired
private
StoreService
storeService
;
private
StoreService
storeService
;
@Autowired
@Autowired
private
Map
<
String
,
BaseSyncOperation
>
operationMap
;
private
Map
<
String
,
BaseSyncOperation
>
operationMap
;
@Autowired
@Autowired
private
StaffService
staffService
;
private
StaffService
staffService
;
@Autowired
@Autowired
private
StaffMapper
staffMapper
;
private
StaffMapper
staffMapper
;
@Autowired
@Autowired
private
StaffDepartmentRelatedService
staffDepartmentRelatedService
;
private
StaffDepartmentRelatedService
staffDepartmentRelatedService
;
@Autowired
@Autowired
private
ClerkService
clerkService
;
private
ClerkService
clerkService
;
@Autowired
@Autowired
private
QywxDepartmentApiService
qywxDepartmentApiService
;
private
QywxDepartmentApiService
qywxDepartmentApiService
;
@Autowired
@Autowired
private
WxEnterpriseService
wxEnterpriseService
;
private
WxEnterpriseService
wxEnterpriseService
;
@Autowired
@Autowired
private
StaffClerkRelationService
staffClerkRelationService
;
private
StaffClerkRelationService
staffClerkRelationService
;
@Autowired
@Autowired
private
SecretSettingService
secretSettingService
;
private
SecretSettingService
secretSettingService
;
@Autowired
private
static
final
String
LOCK_KEY
=
"sync_wx_lock_"
;
private
ClerkMainStoreRelatedService
clerkMainStoreRelatedService
;
private
static
final
String
LOCK_SUCCESS_KEY
=
"sync_wx_success_lock_"
;
private
static
final
String
LOCK_KEY
=
"sync_wx_lock_"
;
private
static
final
String
FRIEND_LOCK
=
"haoban_fresh_wx_friend_lock_"
;
private
static
final
String
LOCK_SUCCESS_KEY
=
"sync_wx_success_lock_"
;
private
static
final
String
FRIEND_TAG_LOCK
=
"haoban_sync_tag_lock_"
;
private
static
final
String
FRIEND_LOCK
=
"haoban_fresh_wx_friend_lock_"
;
@Override
private
static
final
String
FRIEND_TAG_LOCK
=
"haoban_sync_tag_lock_"
;
public
void
departmentDealMq
(
String
params
)
{
DealParamMqDTO
dealParamMqDTO
=
JSONObject
.
parseObject
(
params
,
DealParamMqDTO
.
class
);
@Override
TabHaobanPreDealLog
dataPre
=
preDealService
.
getByDataId
(
dealParamMqDTO
.
getTaskId
(),
dealParamMqDTO
.
getData
(),
dealParamMqDTO
.
getType
()
-
1
,
PreDealStatusEnum
.
all
.
getVal
());
public
void
departmentDealMq
(
String
params
)
{
logger
.
info
(
"好办同步处理mq处理开始:{},dataPre={}"
,
params
,
JSON
.
toJSONString
(
dataPre
));
DealParamMqDTO
dealParamMqDTO
=
JSONObject
.
parseObject
(
params
,
DealParamMqDTO
.
class
);
if
(
dataPre
==
null
)
{
TabHaobanPreDealLog
dataPre
=
preDealService
.
getByDataId
(
dealParamMqDTO
.
getTaskId
(),
dealParamMqDTO
.
getData
(),
dealParamMqDTO
.
getType
()
-
1
,
PreDealStatusEnum
.
all
.
getVal
());
return
;
logger
.
info
(
"好办同步处理mq处理开始:{},dataPre={}"
,
params
,
JSON
.
toJSONString
(
dataPre
));
}
if
(
dataPre
==
null
)
{
Integer
dataType
=
dataPre
.
getDataType
();
return
;
logger
.
info
(
"同步类型,dataType:{}"
,
dataType
);
}
if
(
dataType
.
equals
(
PreDealTypeEnum
.
dept
.
getVal
()))
{
Integer
dataType
=
dataPre
.
getDataType
();
logger
.
info
(
"0 部门处理:{}"
,
params
);
logger
.
info
(
"同步类型,dataType:{}"
,
dataType
);
operationMap
.
get
(
"qywxDeptSyncOperation"
).
dealSingleByMq
(
dealParamMqDTO
,
dataPre
);
if
(
dataType
.
equals
(
PreDealTypeEnum
.
dept
.
getVal
()))
{
}
else
if
(
dataType
.
equals
(
PreDealTypeEnum
.
clerk
.
getVal
()))
{
logger
.
info
(
"0 部门处理:{}"
,
params
);
logger
.
info
(
"2 成员处理:{}"
,
params
);
operationMap
.
get
(
"qywxDeptSyncOperation"
).
dealSingleByMq
(
dealParamMqDTO
,
dataPre
);
operationMap
.
get
(
"qywxStaffSyncOperation"
).
dealSingleByMq
(
dealParamMqDTO
,
dataPre
);
}
else
if
(
dataType
.
equals
(
PreDealTypeEnum
.
clerk
.
getVal
()))
{
}
else
if
(
dataType
.
equals
(
PreDealTypeEnum
.
friend_clerk
.
getVal
()))
{
logger
.
info
(
"2 成员处理:{}"
,
params
);
logger
.
info
(
"6 好友导购处理:{}"
,
params
);
operationMap
.
get
(
"qywxStaffSyncOperation"
).
dealSingleByMq
(
dealParamMqDTO
,
dataPre
);
operationMap
.
get
(
"friendClerkSyncNewOperation"
).
dealSingleByMq
(
dealParamMqDTO
,
dataPre
);
}
else
if
(
dataType
.
equals
(
PreDealTypeEnum
.
friend_clerk
.
getVal
()))
{
}
else
if
(
dataType
.
equals
(
PreDealTypeEnum
.
friend
.
getVal
()))
{
logger
.
info
(
"6 好友导购处理:{}"
,
params
);
logger
.
info
(
"8 第三方好友处理:{}"
,
params
);
operationMap
.
get
(
"friendClerkSyncNewOperation"
).
dealSingleByMq
(
dealParamMqDTO
,
dataPre
);
operationMap
.
get
(
"friendSyncNewOperation"
).
dealSingleByMq
(
dealParamMqDTO
,
dataPre
);
}
else
if
(
dataType
.
equals
(
PreDealTypeEnum
.
friend
.
getVal
()))
{
}
else
if
(
dataType
.
equals
(
PreDealTypeEnum
.
self_friend
.
getVal
()))
{
logger
.
info
(
"8 第三方好友处理:{}"
,
params
);
logger
.
info
(
"7 自建好友处理:{}"
,
params
);
operationMap
.
get
(
"friendSyncNewOperation"
).
dealSingleByMq
(
dealParamMqDTO
,
dataPre
);
operationMap
.
get
(
"selfFriendSyncNewOperation"
).
dealSingleByMq
(
dealParamMqDTO
,
dataPre
);
}
else
if
(
dataType
.
equals
(
PreDealTypeEnum
.
self_friend
.
getVal
()))
{
}
else
if
(
dataType
.
equals
(
PreDealTypeEnum
.
tag
.
getVal
()))
{
logger
.
info
(
"7 自建好友处理:{}"
,
params
);
logger
.
info
(
"10 会员标签处理:{}"
,
params
);
operationMap
.
get
(
"selfFriendSyncNewOperation"
).
dealSingleByMq
(
dealParamMqDTO
,
dataPre
);
operationMap
.
get
(
"friendTagSyncOperation"
).
dealSingleByMq
(
dealParamMqDTO
,
dataPre
);
}
else
if
(
dataType
.
equals
(
PreDealTypeEnum
.
tag
.
getVal
()))
{
}
else
if
(
dataType
.
equals
(
PreDealTypeEnum
.
tag_member
.
getVal
()))
{
logger
.
info
(
"10 会员标签处理:{}"
,
params
);
logger
.
info
(
"11 会员标签处理标签项:{}"
,
params
);
operationMap
.
get
(
"friendTagSyncOperation"
).
dealSingleByMq
(
dealParamMqDTO
,
dataPre
);
operationMap
.
get
(
"friendMemberTagSyncOperation"
).
dealSingleByMq
(
dealParamMqDTO
,
dataPre
);
}
else
if
(
dataType
.
equals
(
PreDealTypeEnum
.
tag_member
.
getVal
()))
{
}
else
{
logger
.
info
(
"11 会员标签处理标签项:{}"
,
params
);
logger
.
info
(
"不是正常数据类型:{}"
,
params
);
operationMap
.
get
(
"friendMemberTagSyncOperation"
).
dealSingleByMq
(
dealParamMqDTO
,
dataPre
);
}
}
else
{
}
logger
.
info
(
"不是正常数据类型:{}"
,
params
);
}
}
@Override
public
void
dealDepartment
(
String
taskId
,
String
wxEnterpriseId
,
List
<
SyncSingleDealDTO
>
addList
,
List
<
SyncSingleDealDTO
>
editList
)
{
@Override
public
void
dealDepartment
(
String
taskId
,
String
wxEnterpriseId
logger
.
info
(
"初始开始:{}"
,
taskId
);
,
List
<
SyncSingleDealDTO
>
addList
,
List
<
SyncSingleDealDTO
>
editList
)
{
//处理修改
dealEidtSync
(
editList
);
logger
.
info
(
"初始开始:{}"
,
taskId
);
//处理修改
if
(
CollectionUtils
.
isEmpty
(
addList
))
{
dealEidtSync
(
editList
);
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
compute
.
getVal
());
unlockTask
(
wxEnterpriseId
);
if
(
CollectionUtils
.
isEmpty
(
addList
))
{
return
;
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
compute
.
getVal
());
}
unlockTask
(
wxEnterpriseId
);
logger
.
info
(
"处理分组信息开始:{}"
,
taskId
);
return
;
dealAddSync
(
taskId
,
wxEnterpriseId
,
addList
);
}
logger
.
info
(
"处理分组信息开始:{}"
,
taskId
);
//加入队列处理
dealAddSync
(
taskId
,
wxEnterpriseId
,
addList
);
logger
.
info
(
"初始化到队列:{}"
,
taskId
);
dealDepartmentInit
(
taskId
,
wxEnterpriseId
,
addList
);
//加入队列处理
logger
.
info
(
"初始化到队列:{}"
,
taskId
);
}
dealDepartmentInit
(
taskId
,
wxEnterpriseId
,
addList
);
@Override
}
public
void
reDealDepartment
(
String
taskId
,
int
dataType
)
{
logger
.
info
(
"开始重新同步:{}"
,
taskId
);
@Override
TabHaobanSyncTask
task
=
syncTaskService
.
getSyncTask
(
taskId
);
public
void
reDealDepartment
(
String
taskId
,
int
dataType
)
{
if
(
null
==
task
)
{
logger
.
info
(
"开始重新同步:{}"
,
taskId
);
logger
.
info
(
"任务不存在!{}"
,
taskId
);
TabHaobanSyncTask
task
=
syncTaskService
.
getSyncTask
(
taskId
);
return
;
if
(
null
==
task
)
{
}
logger
.
info
(
"任务不存在!{}"
,
taskId
);
if
((!
task
.
getStatusFlag
().
equals
(
SyncTaskStatusEnum
.
exception_close
.
getVal
()))
&&
return
;
(!
task
.
getStatusFlag
().
equals
(
SyncTaskStatusEnum
.
exception_compute
.
getVal
())))
{
}
logger
.
info
(
"任务不在没有在异常状态!{}"
,
taskId
);
if
((!
task
.
getStatusFlag
().
equals
(
SyncTaskStatusEnum
.
exception_close
.
getVal
()))
&&
return
;
(!
task
.
getStatusFlag
().
equals
(
SyncTaskStatusEnum
.
exception_compute
.
getVal
())))
{
}
logger
.
info
(
"任务不在没有在异常状态!{}"
,
taskId
);
return
;
int
groupErrCount
=
preDealService
.
countExcepAndPreByTaskId
(
taskId
,
PreDealTypeEnum
.
dept
.
getVal
());
}
int
storeErrCount
=
preDealService
.
countExcepAndPreByTaskId
(
taskId
,
PreDealTypeEnum
.
store
.
getVal
());
List
<
TabHaobanPreDealLog
>
list
=
null
;
int
groupErrCount
=
preDealService
.
countExcepAndPreByTaskId
(
taskId
,
PreDealTypeEnum
.
dept
.
getVal
());
if
(
dataType
==
-
1
)
{
int
storeErrCount
=
preDealService
.
countExcepAndPreByTaskId
(
taskId
,
PreDealTypeEnum
.
store
.
getVal
());
if
(
groupErrCount
>
0
)
{
List
<
TabHaobanPreDealLog
>
list
=
null
;
dataType
=
PreDealTypeEnum
.
dept
.
getVal
();
if
(
dataType
==
-
1
)
{
list
=
preDealService
.
queryDepartRebuildDealLog
(
taskId
);
if
(
groupErrCount
>
0
)
{
}
else
if
(
storeErrCount
>
0
)
{
dataType
=
PreDealTypeEnum
.
dept
.
getVal
();
dataType
=
PreDealTypeEnum
.
store
.
getVal
();
list
=
preDealService
.
queryDepartRebuildDealLog
(
taskId
);
list
=
preDealService
.
listRebuildByTaskId
(
taskId
,
dataType
);
}
else
if
(
storeErrCount
>
0
)
{
}
else
{
dataType
=
PreDealTypeEnum
.
store
.
getVal
();
dataType
=
PreDealTypeEnum
.
clerk
.
getVal
();
list
=
preDealService
.
listRebuildByTaskId
(
taskId
,
dataType
);
list
=
preDealService
.
listRebuildByTaskId
(
taskId
,
dataType
);
}
else
{
}
dataType
=
PreDealTypeEnum
.
clerk
.
getVal
();
}
list
=
preDealService
.
listRebuildByTaskId
(
taskId
,
dataType
);
if
(
CollectionUtils
.
isEmpty
(
list
))
{
}
unlockTask
(
task
.
getWxEnterpriseId
());
}
return
;
if
(
CollectionUtils
.
isEmpty
(
list
))
{
}
unlockTask
(
task
.
getWxEnterpriseId
());
Set
<
String
>
midList
=
list
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toSet
());
return
;
//根据类型获取状态
}
SyncTaskStatusEnum
syncTaskStatusEnum
=
(
dataType
==
PreDealTypeEnum
.
dept
.
getVal
()
?
SyncTaskStatusEnum
.
group_sync
Set
<
String
>
midList
=
list
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toSet
());
:
(
dataType
==
PreDealTypeEnum
.
store
.
getVal
()
?
SyncTaskStatusEnum
.
store_sync
:
SyncTaskStatusEnum
.
clerk_sync
));
//根据类型获取状态
logger
.
info
(
"处理开始:类型:{}"
,
syncTaskStatusEnum
.
getVal
());
SyncTaskStatusEnum
syncTaskStatusEnum
=
(
dataType
==
PreDealTypeEnum
.
dept
.
getVal
()
?
SyncTaskStatusEnum
.
group_sync
//处理预处理数据
:
(
dataType
==
PreDealTypeEnum
.
store
.
getVal
()
?
SyncTaskStatusEnum
.
store_sync
:
SyncTaskStatusEnum
.
clerk_sync
));
preDealService
.
updateExceptionToPre
(
taskId
);
logger
.
info
(
"处理开始:类型:{}"
,
syncTaskStatusEnum
.
getVal
());
dealDepartmentToMq
(
taskId
,
midList
,
syncTaskStatusEnum
);
//处理预处理数据
}
preDealService
.
updateExceptionToPre
(
taskId
);
dealDepartmentToMq
(
taskId
,
midList
,
syncTaskStatusEnum
);
}
private
String
createBaseTask
(
String
wxEnterpriseId
,
String
taskName
,
String
userId
,
String
desc
,
int
taskType
)
{
String
key
=
"sync_create_task_"
+
wxEnterpriseId
;
RedisUtil
.
lock
(
key
,
10L
);
private
String
createBaseTask
(
String
wxEnterpriseId
,
String
taskName
,
String
userId
,
String
desc
,
int
taskType
)
{
String
taskLock
=
getTaskLock
(
wxEnterpriseId
);
String
key
=
"sync_create_task_"
+
wxEnterpriseId
;
if
(
StringUtils
.
isNotBlank
(
taskLock
))
{
RedisUtil
.
lock
(
key
,
10L
);
logger
.
info
(
"【同步锁】taskLock={}"
,
taskLock
);
String
taskLock
=
getTaskLock
(
wxEnterpriseId
);
RedisUtil
.
unlock
(
key
);
if
(
StringUtils
.
isNotBlank
(
taskLock
))
{
return
null
;
logger
.
info
(
"【同步锁】taskLock={}"
,
taskLock
);
}
RedisUtil
.
unlock
(
key
);
TabHaobanSyncTask
tabHaobanSyncTask
=
new
TabHaobanSyncTask
();
return
null
;
tabHaobanSyncTask
.
setAddUser
(
userId
);
}
tabHaobanSyncTask
.
setTaskName
(
taskName
);
TabHaobanSyncTask
tabHaobanSyncTask
=
new
TabHaobanSyncTask
();
tabHaobanSyncTask
.
setTaskDesc
(
desc
);
tabHaobanSyncTask
.
setAddUser
(
userId
);
tabHaobanSyncTask
.
setWxEnterpriseId
(
wxEnterpriseId
);
tabHaobanSyncTask
.
setTaskName
(
taskName
);
tabHaobanSyncTask
.
setStatusFlag
(
SyncTaskStatusEnum
.
init
.
getVal
());
tabHaobanSyncTask
.
setTaskDesc
(
desc
);
tabHaobanSyncTask
.
setTaskId
(
ToolUtil
.
randomUUID
());
tabHaobanSyncTask
.
setWxEnterpriseId
(
wxEnterpriseId
);
tabHaobanSyncTask
.
setTaskType
(
taskType
);
tabHaobanSyncTask
.
setStatusFlag
(
SyncTaskStatusEnum
.
init
.
getVal
());
syncTaskService
.
createTask
(
tabHaobanSyncTask
);
tabHaobanSyncTask
.
setTaskId
(
ToolUtil
.
randomUUID
());
lockTask
(
wxEnterpriseId
,
tabHaobanSyncTask
.
getTaskId
());
tabHaobanSyncTask
.
setTaskType
(
taskType
);
RedisUtil
.
unlock
(
key
);
syncTaskService
.
createTask
(
tabHaobanSyncTask
);
return
tabHaobanSyncTask
.
getTaskId
();
lockTask
(
wxEnterpriseId
,
tabHaobanSyncTask
.
getTaskId
());
RedisUtil
.
unlock
(
key
);
}
return
tabHaobanSyncTask
.
getTaskId
();
@Override
}
public
String
createTask
(
String
wxEnterpriseId
,
String
taskName
,
String
userId
,
String
desc
)
{
return
createBaseTask
(
wxEnterpriseId
,
taskName
,
userId
,
desc
,
0
);
@Override
public
String
createTask
(
String
wxEnterpriseId
,
String
taskName
,
String
userId
,
String
desc
)
{
}
return
createBaseTask
(
wxEnterpriseId
,
taskName
,
userId
,
desc
,
0
);
@Override
}
public
String
createQywxTask
(
String
wxEnterpriseId
,
String
taskName
,
String
userId
,
String
desc
)
{
return
createBaseTask
(
wxEnterpriseId
,
taskName
,
userId
,
desc
,
SyncTaskTypeEnum
.
QYWX_CONTACT
.
getType
());
@Override
public
String
createQywxTask
(
String
wxEnterpriseId
,
String
taskName
,
String
userId
,
String
desc
)
{
}
return
createBaseTask
(
wxEnterpriseId
,
taskName
,
userId
,
desc
,
SyncTaskTypeEnum
.
QYWX_CONTACT
.
getType
());
}
/**
* 处理修改数据
*
/**
* @param editList
* 处理修改数据
*/
*
private
void
dealEidtSync
(
List
<
SyncSingleDealDTO
>
editList
)
{
* @param editList
if
(
CollectionUtils
.
isEmpty
(
editList
))
{
*/
return
;
private
void
dealEidtSync
(
List
<
SyncSingleDealDTO
>
editList
)
{
}
if
(
CollectionUtils
.
isEmpty
(
editList
))
{
//先处理修改的
return
;
editList
.
forEach
(
syncSingleDealDTO
->
{
}
TabHaobanDepartment
department
=
departmentService
.
selectById
(
syncSingleDealDTO
.
getDepartmentId
());
//先处理修改的
if
(!
department
.
getParentDepartmentId
().
equals
(
syncSingleDealDTO
.
getParentDepartmentId
()))
{
editList
.
forEach
(
syncSingleDealDTO
->
{
department
.
setParentDepartmentId
(
syncSingleDealDTO
.
getParentDepartmentId
());
TabHaobanDepartment
department
=
departmentService
.
selectById
(
syncSingleDealDTO
.
getDepartmentId
());
departmentService
.
edit
(
EntityUtil
.
changeEntityByJSON
(
DepartmentDTO
.
class
,
department
));
if
(!
department
.
getParentDepartmentId
().
equals
(
syncSingleDealDTO
.
getParentDepartmentId
()))
{
}
department
.
setParentDepartmentId
(
syncSingleDealDTO
.
getParentDepartmentId
());
});
departmentService
.
edit
(
EntityUtil
.
changeEntityByJSON
(
DepartmentDTO
.
class
,
department
));
}
}
});
/**
}
* 执行新增同步
*
/**
* @param taskId
* 执行新增同步
* @param wxEnterpriseId
*
* @param addList
* @param taskId
*/
* @param wxEnterpriseId
private
void
dealAddSync
(
String
taskId
,
String
wxEnterpriseId
,
List
<
SyncSingleDealDTO
>
addList
)
{
* @param addList
*/
Map
<
String
,
String
>
pMap
=
addList
.
stream
().
collect
(
Collectors
.
toMap
(
SyncSingleDealDTO:
:
getRelatedId
,
SyncSingleDealDTO:
:
getParentDepartmentId
));
private
void
dealAddSync
(
String
taskId
,
String
wxEnterpriseId
,
List
<
SyncSingleDealDTO
>
addList
)
{
//获取企业与分组map
Map
<
String
,
List
<
String
>>
eidListMap
=
addList
.
stream
().
filter
(
dto
->
{
Map
<
String
,
String
>
pMap
=
addList
.
stream
().
collect
(
Collectors
.
toMap
(
SyncSingleDealDTO:
:
getRelatedId
,
SyncSingleDealDTO:
:
getParentDepartmentId
));
String
departmentId
=
dto
.
getDepartmentId
();
//获取企业与分组map
TabHaobanDepartment
department
=
departmentService
.
selectById
(
departmentId
);
Map
<
String
,
List
<
String
>>
eidListMap
=
addList
.
stream
().
filter
(
dto
->
{
if
(
department
!=
null
)
{
String
departmentId
=
dto
.
getDepartmentId
();
return
false
;
TabHaobanDepartment
department
=
departmentService
.
selectById
(
departmentId
);
}
if
(
department
!=
null
)
{
Integer
storeFlag
=
dto
.
getStoreFlag
();
return
false
;
return
!
storeFlag
.
equals
(
1
);
}
}).
collect
(
Collectors
.
groupingBy
(
SyncSingleDealDTO:
:
getEnterpriseId
Integer
storeFlag
=
dto
.
getStoreFlag
();
,
Collectors
.
mapping
(
SyncSingleDealDTO:
:
getRelatedId
,
Collectors
.
toList
())));
return
!
storeFlag
.
equals
(
1
);
}).
collect
(
Collectors
.
groupingBy
(
SyncSingleDealDTO:
:
getEnterpriseId
//放入预处理表
,
Collectors
.
mapping
(
SyncSingleDealDTO:
:
getRelatedId
,
Collectors
.
toList
())));
eidListMap
.
forEach
((
k
,
v
)
->
{
//获取所有分组列表
//放入预处理表
List
<
StoreGroupDTO
>
groupDTOList
=
storeGroupService
.
listStoreGroupAndChildren
(
v
.
toArray
(
new
String
[]{}),
k
);
eidListMap
.
forEach
((
k
,
v
)
->
{
List
<
String
>
hasKey
=
new
ArrayList
<>();
//获取所有分组列表
List
<
TabHaobanPreDealLog
>
dealList
=
groupDTOList
.
stream
().
filter
(
dto
->
{
List
<
StoreGroupDTO
>
groupDTOList
=
storeGroupService
.
listStoreGroupAndChildren
(
v
.
toArray
(
new
String
[]{}),
k
);
return
!
hasKey
.
contains
(
dto
.
getStoreGroupId
());
List
<
String
>
hasKey
=
new
ArrayList
<>();
}).
map
(
storeGroupDTO
->
{
List
<
TabHaobanPreDealLog
>
dealList
=
groupDTOList
.
stream
().
filter
(
dto
->
{
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
return
!
hasKey
.
contains
(
dto
.
getStoreGroupId
());
dealLog
.
setDataId
(
storeGroupDTO
.
getStoreGroupId
());
}).
map
(
storeGroupDTO
->
{
if
(
pMap
.
containsKey
(
storeGroupDTO
.
getStoreGroupId
()))
{
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setpDataId
(
pMap
.
get
(
storeGroupDTO
.
getStoreGroupId
()));
dealLog
.
setDataId
(
storeGroupDTO
.
getStoreGroupId
());
}
else
{
if
(
pMap
.
containsKey
(
storeGroupDTO
.
getStoreGroupId
()))
{
dealLog
.
setpDataId
(
storeGroupDTO
.
getParentGroupId
());
dealLog
.
setpDataId
(
pMap
.
get
(
storeGroupDTO
.
getStoreGroupId
()));
}
}
else
{
dealLog
.
setDataType
(
PreDealTypeEnum
.
dept
.
getVal
());
dealLog
.
setpDataId
(
storeGroupDTO
.
getParentGroupId
());
dealLog
.
setStatusFlag
(
0
);
}
dealLog
.
setTaskId
(
taskId
);
dealLog
.
setDataType
(
PreDealTypeEnum
.
dept
.
getVal
());
dealLog
.
setEnterpriseId
(
storeGroupDTO
.
getEnterpriseId
());
dealLog
.
setStatusFlag
(
0
);
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
dealLog
.
setTaskId
(
taskId
);
return
dealLog
;
dealLog
.
setEnterpriseId
(
storeGroupDTO
.
getEnterpriseId
());
}).
collect
(
Collectors
.
toList
());
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
return
dealLog
;
preDealService
.
insert
(
dealList
);
}).
collect
(
Collectors
.
toList
());
});
preDealService
.
insert
(
dealList
);
//处理门店信息
});
List
<
TabHaobanPreDealLog
>
storeList
=
addList
.
stream
().
filter
(
dto
->
{
return
dto
.
getStoreFlag
()
==
1
;
//处理门店信息
}).
map
(
dto
->
{
List
<
TabHaobanPreDealLog
>
storeList
=
addList
.
stream
().
filter
(
dto
->
{
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
return
dto
.
getStoreFlag
()
==
1
;
dealLog
.
setDataId
(
dto
.
getRelatedId
());
}).
map
(
dto
->
{
dealLog
.
setpDataId
(
dto
.
getParentDepartmentId
());
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setDataType
(
1
);
dealLog
.
setDataId
(
dto
.
getRelatedId
());
dealLog
.
setStatusFlag
(
0
);
dealLog
.
setpDataId
(
dto
.
getParentDepartmentId
());
dealLog
.
setEnterpriseId
(
dto
.
getEnterpriseId
());
dealLog
.
setDataType
(
1
);
dealLog
.
setTaskId
(
taskId
);
dealLog
.
setStatusFlag
(
0
);
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
dealLog
.
setEnterpriseId
(
dto
.
getEnterpriseId
());
return
dealLog
;
dealLog
.
setTaskId
(
taskId
);
}).
collect
(
Collectors
.
toList
());
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
return
dealLog
;
preDealService
.
insert
(
storeList
);
}).
collect
(
Collectors
.
toList
());
}
preDealService
.
insert
(
storeList
);
/**
}
* 初始化部门
*
/**
* @param taskId
* 初始化部门
* @param wxEnterpriseId
*
* @param addList
* @param taskId
*/
* @param wxEnterpriseId
private
void
dealDepartmentInit
(
String
taskId
,
String
wxEnterpriseId
,
List
<
SyncSingleDealDTO
>
addList
)
{
* @param addList
Set
<
String
>
addListMid
=
addList
.
stream
().
filter
(
dto
->
dto
.
getStoreFlag
().
equals
(
0
)).
map
(
dto
->
dto
.
getRelatedId
()).
collect
(
Collectors
.
toSet
());
*/
if
(
CollectionUtils
.
isNotEmpty
(
addListMid
))
{
private
void
dealDepartmentInit
(
String
taskId
,
String
wxEnterpriseId
,
List
<
SyncSingleDealDTO
>
addList
)
{
dealDepartmentToMq
(
taskId
,
addListMid
,
SyncTaskStatusEnum
.
group_sync
);
Set
<
String
>
addListMid
=
addList
.
stream
().
filter
(
dto
->
dto
.
getStoreFlag
().
equals
(
0
)).
map
(
dto
->
dto
.
getRelatedId
()).
collect
(
Collectors
.
toSet
());
}
else
{
if
(
CollectionUtils
.
isNotEmpty
(
addListMid
))
{
addListMid
=
addList
.
stream
().
filter
(
dto
->
dto
.
getStoreFlag
().
equals
(
1
)).
map
(
dto
->
dto
.
getRelatedId
()).
collect
(
Collectors
.
toSet
());
dealDepartmentToMq
(
taskId
,
addListMid
,
SyncTaskStatusEnum
.
group_sync
);
dealDepartmentToMq
(
taskId
,
addListMid
,
SyncTaskStatusEnum
.
store_sync
);
}
else
{
}
addListMid
=
addList
.
stream
().
filter
(
dto
->
dto
.
getStoreFlag
().
equals
(
1
)).
map
(
dto
->
dto
.
getRelatedId
()).
collect
(
Collectors
.
toSet
());
}
dealDepartmentToMq
(
taskId
,
addListMid
,
SyncTaskStatusEnum
.
store_sync
);
}
/**
}
* 放入mq处理部门数据
*
/**
* @param taskId
* 放入mq处理部门数据
* @param dealList
*
*/
* @param taskId
private
void
dealDepartmentToMq
(
String
taskId
,
Set
<
String
>
dealList
,
SyncTaskStatusEnum
syncTaskStatusEnum
)
{
* @param dealList
//预处理分组任务
*/
syncTaskService
.
updateTaskStatus
(
taskId
,
syncTaskStatusEnum
.
getVal
());
private
void
dealDepartmentToMq
(
String
taskId
,
Set
<
String
>
dealList
,
SyncTaskStatusEnum
syncTaskStatusEnum
)
{
List
<
String
>
listRet
=
dealList
.
stream
().
map
(
relationId
->
{
//预处理分组任务
DealParamMqDTO
dealParamMqDTO
=
new
DealParamMqDTO
();
syncTaskService
.
updateTaskStatus
(
taskId
,
syncTaskStatusEnum
.
getVal
());
dealParamMqDTO
.
setTaskId
(
taskId
);
List
<
String
>
listRet
=
dealList
.
stream
().
map
(
relationId
->
{
dealParamMqDTO
.
setData
(
relationId
);
DealParamMqDTO
dealParamMqDTO
=
new
DealParamMqDTO
();
dealParamMqDTO
.
setType
(
syncTaskStatusEnum
.
getVal
());
dealParamMqDTO
.
setTaskId
(
taskId
);
return
JSONObject
.
toJSONString
(
dealParamMqDTO
);
dealParamMqDTO
.
setData
(
relationId
);
}).
collect
(
Collectors
.
toList
());
dealParamMqDTO
.
setType
(
syncTaskStatusEnum
.
getVal
());
return
JSONObject
.
toJSONString
(
dealParamMqDTO
);
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
}).
collect
(
Collectors
.
toList
());
try
{
clientInstance
.
sendBatchMessages
(
"departmentSyncDealMq"
,
listRet
);
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
}
catch
(
Exception
e
)
{
try
{
logger
.
info
(
"发送失败:{},{}"
,
taskId
,
JSONObject
.
toJSONString
(
listRet
));
clientInstance
.
sendBatchMessages
(
"departmentSyncDealMq"
,
listRet
);
e
.
printStackTrace
();
}
catch
(
Exception
e
)
{
}
logger
.
info
(
"发送失败:{},{}"
,
taskId
,
JSONObject
.
toJSONString
(
listRet
));
}
e
.
printStackTrace
();
}
}
public
String
lockTask
(
String
wxEnterpriseId
,
String
taskId
)
{
String
key
=
LOCK_KEY
+
wxEnterpriseId
;
Object
cache
=
RedisUtil
.
getCache
(
key
);
public
String
lockTask
(
String
wxEnterpriseId
,
String
taskId
)
{
if
(
null
==
cache
)
{
String
key
=
LOCK_KEY
+
wxEnterpriseId
;
RedisUtil
.
setCache
(
key
,
taskId
,
5L
,
TimeUnit
.
DAYS
);
Object
cache
=
RedisUtil
.
getCache
(
key
);
return
taskId
;
if
(
null
==
cache
)
{
}
RedisUtil
.
setCache
(
key
,
taskId
,
5L
,
TimeUnit
.
DAYS
);
return
null
;
return
taskId
;
}
}
return
null
;
@Override
}
public
boolean
closeTask
(
String
wxEnterpriseId
)
{
String
taskId
=
getTaskLock
(
wxEnterpriseId
);
@Override
if
(
taskId
!=
null
)
{
public
boolean
closeTask
(
String
wxEnterpriseId
)
{
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
exception_close
.
getVal
());
String
taskId
=
getTaskLock
(
wxEnterpriseId
);
unlockTask
(
wxEnterpriseId
);
if
(
taskId
!=
null
)
{
}
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
exception_close
.
getVal
());
return
true
;
unlockTask
(
wxEnterpriseId
);
}
}
return
true
;
@Override
}
public
void
unlockTask
(
String
wxEnterpriseId
)
{
String
key
=
LOCK_KEY
+
wxEnterpriseId
;
@Override
String
taskId
=
(
String
)
RedisUtil
.
getCache
(
key
);
public
void
unlockTask
(
String
wxEnterpriseId
)
{
if
(
StringUtils
.
isNotBlank
(
taskId
))
{
String
key
=
LOCK_KEY
+
wxEnterpriseId
;
TabHaobanSyncTask
syncTask
=
syncTaskService
.
getSyncTask
(
taskId
);
String
taskId
=
(
String
)
RedisUtil
.
getCache
(
key
);
if
(
syncTask
.
getStatusFlag
().
equals
(
SyncTaskStatusEnum
.
compute
.
getVal
()))
{
if
(
StringUtils
.
isNotBlank
(
taskId
))
{
String
sKey
=
LOCK_SUCCESS_KEY
+
wxEnterpriseId
;
TabHaobanSyncTask
syncTask
=
syncTaskService
.
getSyncTask
(
taskId
);
RedisUtil
.
setCache
(
sKey
,
taskId
);
if
(
syncTask
.
getStatusFlag
().
equals
(
SyncTaskStatusEnum
.
compute
.
getVal
()))
{
}
String
sKey
=
LOCK_SUCCESS_KEY
+
wxEnterpriseId
;
}
RedisUtil
.
setCache
(
sKey
,
taskId
);
RedisUtil
.
delCache
(
key
);
}
}
}
RedisUtil
.
delCache
(
key
);
@Override
}
public
String
getTaskLock
(
String
wxEnterpriseId
)
{
String
key
=
LOCK_KEY
+
wxEnterpriseId
;
@Override
return
(
String
)
RedisUtil
.
getCache
(
key
);
public
String
getTaskLock
(
String
wxEnterpriseId
)
{
}
String
key
=
LOCK_KEY
+
wxEnterpriseId
;
return
(
String
)
RedisUtil
.
getCache
(
key
);
@Override
}
public
SyncCheckDTO
getTaskCheck
(
String
wxEnterpriseId
)
{
String
taskId
=
getTaskLock
(
wxEnterpriseId
);
@Override
SyncCheckDTO
syncCheckDTO
=
new
SyncCheckDTO
();
public
SyncCheckDTO
getTaskCheck
(
String
wxEnterpriseId
)
{
String
sKey
=
LOCK_SUCCESS_KEY
+
wxEnterpriseId
;
String
taskId
=
getTaskLock
(
wxEnterpriseId
);
if
(
null
==
taskId
)
{
SyncCheckDTO
syncCheckDTO
=
new
SyncCheckDTO
();
taskId
=
(
String
)
RedisUtil
.
getCache
(
sKey
);
String
sKey
=
LOCK_SUCCESS_KEY
+
wxEnterpriseId
;
RedisUtil
.
delCache
(
sKey
);
if
(
null
==
taskId
)
{
}
taskId
=
(
String
)
RedisUtil
.
getCache
(
sKey
);
if
(
null
==
taskId
)
{
RedisUtil
.
delCache
(
sKey
);
return
syncCheckDTO
;
}
}
if
(
null
==
taskId
)
{
TabHaobanSyncTask
syncTask
=
syncTaskService
.
getSyncTask
(
taskId
);
return
syncCheckDTO
;
syncCheckDTO
.
setSyncStatus
(
syncTask
.
getStatusFlag
());
}
TabHaobanSyncTask
syncTask
=
syncTaskService
.
getSyncTask
(
taskId
);
PreDealLogInfoDTO
dealLogInfoDTO
=
preDealService
.
getLastPreDataByTaskId
(
taskId
);
syncCheckDTO
.
setSyncStatus
(
syncTask
.
getStatusFlag
());
if
(
dealLogInfoDTO
==
null
)
{
RedisUtil
.
delCache
(
sKey
);
PreDealLogInfoDTO
dealLogInfoDTO
=
preDealService
.
getLastPreDataByTaskId
(
taskId
);
return
syncCheckDTO
;
if
(
dealLogInfoDTO
==
null
)
{
}
RedisUtil
.
delCache
(
sKey
);
//30分钟内没执行就重试 并在一天内
return
syncCheckDTO
;
Date
date
=
DateUtils
.
addMinutes
(
new
Date
(),
-
30
);
}
Date
dayDate
=
DateUtils
.
addDays
(
new
Date
(),
-
1
);
//30分钟内没执行就重试 并在一天内
Date
date
=
DateUtils
.
addMinutes
(
new
Date
(),
-
30
);
if
(
dealLogInfoDTO
!=
null
&&
dealLogInfoDTO
.
getUpdateTime
()
!=
null
Date
dayDate
=
DateUtils
.
addDays
(
new
Date
(),
-
1
);
&&
dealLogInfoDTO
.
getCreateTime
()
!=
null
&&
dealLogInfoDTO
.
getUpdateTime
().
before
(
date
)
if
(
dealLogInfoDTO
!=
null
&&
dealLogInfoDTO
.
getUpdateTime
()
!=
null
&&
syncTask
.
getUpdateTime
().
before
(
date
)
&&
dealLogInfoDTO
.
getCreateTime
()
!=
null
&&
syncTask
.
getCreateTime
().
after
(
dayDate
))
{
&&
dealLogInfoDTO
.
getUpdateTime
().
before
(
date
)
logger
.
info
(
"重试:{}"
,
taskId
);
&&
syncTask
.
getUpdateTime
().
before
(
date
)
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
exception_close
.
getVal
());
&&
syncTask
.
getCreateTime
().
after
(
dayDate
))
{
reDealDepartment
(
taskId
,
-
1
);
logger
.
info
(
"重试:{}"
,
taskId
);
return
syncCheckDTO
;
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
exception_close
.
getVal
());
}
reDealDepartment
(
taskId
,
-
1
);
return
syncCheckDTO
;
}
int
totalCount
=
preDealService
.
countByTaskId
(
taskId
,
-
1
,
-
1
);
int
groupErrCount
=
preDealService
.
countByTaskId
(
taskId
,
PreDealTypeEnum
.
dept
.
getVal
(),
PreDealStatusEnum
.
exception
.
getVal
());
int
storeErrCount
=
preDealService
.
countByTaskId
(
taskId
,
PreDealTypeEnum
.
store
.
getVal
(),
PreDealStatusEnum
.
exception
.
getVal
());
int
totalCount
=
preDealService
.
countByTaskId
(
taskId
,
-
1
,
-
1
);
int
clerkErrCount
=
preDealService
.
countByTaskId
(
taskId
,
PreDealTypeEnum
.
clerk
.
getVal
(),
PreDealStatusEnum
.
exception
.
getVal
());
int
groupErrCount
=
preDealService
.
countByTaskId
(
taskId
,
PreDealTypeEnum
.
dept
.
getVal
(),
PreDealStatusEnum
.
exception
.
getVal
());
int
preCount
=
preDealService
.
countByTaskId
(
taskId
,
-
1
,
PreDealStatusEnum
.
pre
.
getVal
());
int
storeErrCount
=
preDealService
.
countByTaskId
(
taskId
,
PreDealTypeEnum
.
store
.
getVal
(),
PreDealStatusEnum
.
exception
.
getVal
());
int
clerkErrCount
=
preDealService
.
countByTaskId
(
taskId
,
PreDealTypeEnum
.
clerk
.
getVal
(),
PreDealStatusEnum
.
exception
.
getVal
());
syncCheckDTO
.
setTotalDeal
(
totalCount
);
int
preCount
=
preDealService
.
countByTaskId
(
taskId
,
-
1
,
PreDealStatusEnum
.
pre
.
getVal
());
syncCheckDTO
.
setGroupErrCount
(
groupErrCount
);
syncCheckDTO
.
setStoreErrCount
(
storeErrCount
);
syncCheckDTO
.
setTotalDeal
(
totalCount
);
syncCheckDTO
.
setStaffErrCount
(
clerkErrCount
);
syncCheckDTO
.
setGroupErrCount
(
groupErrCount
);
syncCheckDTO
.
setHasDeal
(
totalCount
-
preCount
);
syncCheckDTO
.
setStoreErrCount
(
storeErrCount
);
return
syncCheckDTO
;
syncCheckDTO
.
setStaffErrCount
(
clerkErrCount
);
}
syncCheckDTO
.
setHasDeal
(
totalCount
-
preCount
);
return
syncCheckDTO
;
@Override
}
public
Page
<
SyncTaskDTO
>
listSyncTask
(
String
wxEnterpriseId
,
BasePageInfo
pageInfo
)
{
Page
<
SyncTaskDTO
>
page
=
syncTaskService
.
listTaskPage
(
wxEnterpriseId
,
pageInfo
);
@Override
if
(
CollectionUtils
.
isEmpty
(
page
.
getResult
()))
{
public
Page
<
SyncTaskDTO
>
listSyncTask
(
String
wxEnterpriseId
,
BasePageInfo
pageInfo
)
{
return
page
;
Page
<
SyncTaskDTO
>
page
=
syncTaskService
.
listTaskPage
(
wxEnterpriseId
,
pageInfo
);
}
if
(
CollectionUtils
.
isEmpty
(
page
.
getResult
()))
{
List
<
SyncTaskDTO
>
result
=
page
.
getResult
();
return
page
;
for
(
SyncTaskDTO
dto
:
result
)
{
}
String
addUser
=
dto
.
getAddUser
();
List
<
SyncTaskDTO
>
result
=
page
.
getResult
();
TabHaobanStaff
haobanStaff
=
staffService
.
selectById
(
addUser
);
for
(
SyncTaskDTO
dto
:
result
)
{
if
(
null
!=
haobanStaff
)
{
String
addUser
=
dto
.
getAddUser
();
dto
.
setUserName
(
haobanStaff
.
getStaffName
());
TabHaobanStaff
haobanStaff
=
staffService
.
selectById
(
addUser
);
}
else
{
if
(
null
!=
haobanStaff
)
{
dto
.
setUserName
(
"系统管理员"
);
dto
.
setUserName
(
haobanStaff
.
getStaffName
());
}
}
else
{
}
dto
.
setUserName
(
"系统管理员"
);
return
page
;
}
}
}
return
page
;
@Override
}
public
Page
<
PreDealLogInfoDTO
>
listSyncTaskDetail
(
String
wxEnterpriseId
,
String
taskId
,
BasePageInfo
pageInfo
)
{
TabHaobanSyncTask
syncTask
=
syncTaskService
.
getSyncTask
(
taskId
);
@Override
Page
<
PreDealLogInfoDTO
>
page
=
preDealService
.
listExceptionByTaskId
(
taskId
,
pageInfo
);
public
Page
<
PreDealLogInfoDTO
>
listSyncTaskDetail
(
String
wxEnterpriseId
,
String
taskId
,
BasePageInfo
pageInfo
)
{
if
(
CollectionUtils
.
isEmpty
(
page
.
getResult
()))
{
TabHaobanSyncTask
syncTask
=
syncTaskService
.
getSyncTask
(
taskId
);
return
page
;
Page
<
PreDealLogInfoDTO
>
page
=
preDealService
.
listExceptionByTaskId
(
taskId
,
pageInfo
);
}
if
(
CollectionUtils
.
isEmpty
(
page
.
getResult
()))
{
//gic同步微信
return
page
;
if
(
syncTask
.
getTaskType
().
equals
(
0
))
{
}
List
<
PreDealLogInfoDTO
>
result
=
page
.
getResult
();
//gic同步微信
for
(
PreDealLogInfoDTO
dto
:
result
)
{
if
(
syncTask
.
getTaskType
().
equals
(
0
))
{
if
(
dto
.
getDataType
().
equals
(
PreDealTypeEnum
.
dept
.
getVal
()))
{
List
<
PreDealLogInfoDTO
>
result
=
page
.
getResult
();
StoreGroupDTO
midGroup
=
storeGroupService
.
getStoreGroupById
(
dto
.
getDataId
());
for
(
PreDealLogInfoDTO
dto
:
result
)
{
if
(
midGroup
!=
null
)
{
if
(
dto
.
getDataType
().
equals
(
PreDealTypeEnum
.
dept
.
getVal
()))
{
dto
.
setDataName
(
midGroup
.
getStoreGroupName
());
StoreGroupDTO
midGroup
=
storeGroupService
.
getStoreGroupById
(
dto
.
getDataId
());
dto
.
setChainName
(
midGroup
.
getStoreGroupNameLevel
());
if
(
midGroup
!=
null
)
{
}
dto
.
setDataName
(
midGroup
.
getStoreGroupName
());
}
else
if
(
dto
.
getDataType
().
equals
(
PreDealTypeEnum
.
store
.
getVal
()))
{
dto
.
setChainName
(
midGroup
.
getStoreGroupNameLevel
());
StoreDTO
store
=
storeService
.
getStore
(
dto
.
getDataId
());
}
if
(
null
!=
store
)
{
}
else
if
(
dto
.
getDataType
().
equals
(
PreDealTypeEnum
.
store
.
getVal
()))
{
dto
.
setDataName
(
store
.
getStoreName
());
StoreDTO
store
=
storeService
.
getStore
(
dto
.
getDataId
());
dto
.
setChainName
(
store
.
getStoreGroupName
());
if
(
null
!=
store
)
{
dto
.
setDataCode
(
store
.
getStoreCode
());
dto
.
setDataName
(
store
.
getStoreName
());
}
dto
.
setChainName
(
store
.
getStoreGroupName
());
}
else
if
(
dto
.
getDataType
().
equals
(
PreDealTypeEnum
.
clerk
.
getVal
()))
{
dto
.
setDataCode
(
store
.
getStoreCode
());
ClerkDTO
clerkDTO
=
clerkService
.
getClerkByClerkId
(
dto
.
getDataId
());
}
if
(
null
!=
clerkDTO
)
{
}
else
if
(
dto
.
getDataType
().
equals
(
PreDealTypeEnum
.
clerk
.
getVal
()))
{
dto
.
setDataName
(
clerkDTO
.
getClerkName
());
ClerkDTO
clerkDTO
=
clerkService
.
getClerkByClerkId
(
dto
.
getDataId
());
dto
.
setChainName
(
clerkDTO
.
getStoreName
());
if
(
null
!=
clerkDTO
)
{
dto
.
setDataCode
(
clerkDTO
.
getClerkCode
());
dto
.
setDataName
(
clerkDTO
.
getClerkName
());
}
dto
.
setChainName
(
clerkDTO
.
getStoreName
());
}
dto
.
setDataCode
(
clerkDTO
.
getClerkCode
());
}
}
}
else
if
(
syncTask
.
getTaskType
().
equals
(
2
))
{
}
List
<
PreDealLogInfoDTO
>
result
=
page
.
getResult
();
}
for
(
PreDealLogInfoDTO
dto
:
result
)
{
}
else
if
(
syncTask
.
getTaskType
().
equals
(
2
))
{
dto
.
setDataCode
(
dto
.
getDataId
());
List
<
PreDealLogInfoDTO
>
result
=
page
.
getResult
();
TabHaobanStaff
staff
=
staffService
.
selectByUserIdAndEnterpriseId
(
dto
.
getpDataId
(),
wxEnterpriseId
);
for
(
PreDealLogInfoDTO
dto
:
result
)
{
if
(
staff
!=
null
)
{
dto
.
setDataCode
(
dto
.
getDataId
());
dto
.
setDataName
(
staff
.
getStaffName
());
TabHaobanStaff
staff
=
staffService
.
selectByUserIdAndEnterpriseId
(
dto
.
getpDataId
(),
wxEnterpriseId
);
}
if
(
staff
!=
null
)
{
}
dto
.
setDataName
(
staff
.
getStaffName
());
}
else
{
}
List
<
PreDealLogInfoDTO
>
result
=
page
.
getResult
();
}
for
(
PreDealLogInfoDTO
dto
:
result
)
{
}
else
{
dto
.
setDataCode
(
dto
.
getDataId
());
List
<
PreDealLogInfoDTO
>
result
=
page
.
getResult
();
dto
.
setDataName
(
dto
.
getDataContent
());
for
(
PreDealLogInfoDTO
dto
:
result
)
{
}
dto
.
setDataCode
(
dto
.
getDataId
());
}
dto
.
setDataName
(
dto
.
getDataContent
());
return
page
;
}
}
}
return
page
;
}
@Override
public
String
dealQywxDepartment
(
String
taskId
,
String
wxEnterpriseId
)
{
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
@Override
SecretSettingDTO
secretSetting
=
secretSettingService
.
getSecretSetting
(
qwDTO
.
getWxEnterpriseId
(),
SecretTypeEnum
.
CUSTOMIZED_APP
.
getVal
());
public
String
dealQywxDepartment
(
String
taskId
,
String
wxEnterpriseId
)
{
if
(
null
==
secretSetting
||
secretSetting
.
getCheckFlag
()
==
0
)
{
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
logger
.
info
(
"没有配置secret"
);
SecretSettingDTO
secretSetting
=
secretSettingService
.
getSecretSetting
(
qwDTO
.
getWxEnterpriseId
(),
SecretTypeEnum
.
CUSTOMIZED_APP
.
getVal
());
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
exception_close
.
getVal
());
if
(
null
==
secretSetting
||
secretSetting
.
getCheckFlag
()
==
0
)
{
unlockTask
(
wxEnterpriseId
);
logger
.
info
(
"没有配置secret"
);
return
"没有配置secret"
;
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
exception_close
.
getVal
());
}
unlockTask
(
wxEnterpriseId
);
List
<
com
.
gic
.
wechat
.
api
.
dto
.
qywx
.
DepartmentDTO
>
list
=
qywxDepartmentApiService
.
listSelfDepartment
(
qwDTO
.
getThirdCorpid
(),
secretSetting
.
getSecretVal
(),
1
);
return
"没有配置secret"
;
if
(
CollectionUtils
.
isEmpty
(
list
))
{
}
logger
.
info
(
"没有数据同步"
);
List
<
com
.
gic
.
wechat
.
api
.
dto
.
qywx
.
DepartmentDTO
>
list
=
qywxDepartmentApiService
.
listSelfDepartment
(
qwDTO
.
getThirdCorpid
(),
secretSetting
.
getSecretVal
(),
1
);
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
exception_close
.
getVal
());
if
(
CollectionUtils
.
isEmpty
(
list
))
{
unlockTask
(
wxEnterpriseId
);
logger
.
info
(
"没有数据同步"
);
return
"没有数据同步或权限没设置全部"
;
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
exception_close
.
getVal
());
}
unlockTask
(
wxEnterpriseId
);
List
<
TabHaobanPreDealLog
>
dealLogList
=
list
.
stream
().
map
(
dto
->
{
return
"没有数据同步或权限没设置全部"
;
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
}
dealLog
.
setDataId
(
dto
.
getId
().
toString
());
List
<
TabHaobanPreDealLog
>
dealLogList
=
list
.
stream
().
map
(
dto
->
{
dealLog
.
setpDataId
(
dto
.
getParentid
().
toString
());
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setDataType
(
0
);
dealLog
.
setDataId
(
dto
.
getId
().
toString
());
dealLog
.
setStatusFlag
(
0
);
dealLog
.
setpDataId
(
dto
.
getParentid
().
toString
());
dealLog
.
setTaskId
(
taskId
);
dealLog
.
setDataType
(
0
);
dealLog
.
setDataContent
(
JSONObject
.
toJSONString
(
dto
));
dealLog
.
setStatusFlag
(
0
);
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
dealLog
.
setTaskId
(
taskId
);
return
dealLog
;
dealLog
.
setDataContent
(
JSONObject
.
toJSONString
(
dto
));
}).
collect
(
Collectors
.
toList
());
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
return
dealLog
;
preDealService
.
insert
(
dealLogList
);
}).
collect
(
Collectors
.
toList
());
HashSet
<
String
>
hashSet
=
new
HashSet
<>();
hashSet
.
add
(
"1"
);
preDealService
.
insert
(
dealLogList
);
dealDepartmentToMq
(
taskId
,
hashSet
,
SyncTaskStatusEnum
.
group_sync
);
HashSet
<
String
>
hashSet
=
new
HashSet
<>();
return
null
;
hashSet
.
add
(
"1"
);
}
dealDepartmentToMq
(
taskId
,
hashSet
,
SyncTaskStatusEnum
.
group_sync
);
return
null
;
}
@Override
public
void
cleanDiffrence
(
String
wxEnterpriseId
,
String
taskId
)
{
List
<
TabHaobanPreDealLog
>
groupList
=
preDealService
.
listByTaskId
(
taskId
,
PreDealTypeEnum
.
dept
.
getVal
(),
PreDealStatusEnum
.
computed
.
getVal
());
@Override
List
<
TabHaobanPreDealLog
>
clerkList
=
preDealService
.
listByTaskId
(
taskId
,
PreDealTypeEnum
.
clerk
.
getVal
(),
PreDealStatusEnum
.
computed
.
getVal
());
public
void
cleanDiffrence
(
String
wxEnterpriseId
,
String
taskId
)
{
List
<
TabHaobanPreDealLog
>
groupList
=
preDealService
.
listByTaskId
(
taskId
,
PreDealTypeEnum
.
dept
.
getVal
(),
PreDealStatusEnum
.
computed
.
getVal
());
//清空staff
List
<
TabHaobanPreDealLog
>
clerkList
=
preDealService
.
listByTaskId
(
taskId
,
PreDealTypeEnum
.
clerk
.
getVal
(),
PreDealStatusEnum
.
computed
.
getVal
());
if
(
CollectionUtils
.
isNotEmpty
(
clerkList
))
{
List
<
String
>
clerkIds
=
clerkList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toList
());
//清空staff
List
<
StaffDTO
>
retLists
=
staffService
.
listByUserIdsAndWxEnterpriseId
(
clerkIds
,
wxEnterpriseId
);
if
(
CollectionUtils
.
isNotEmpty
(
clerkList
))
{
List
<
String
>
staffIds
=
retLists
.
stream
().
map
(
StaffDTO:
:
getStaffId
).
collect
(
Collectors
.
toList
());
List
<
String
>
clerkIds
=
clerkList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
staffIds
))
{
List
<
StaffDTO
>
retLists
=
staffService
.
listByUserIdsAndWxEnterpriseId
(
clerkIds
,
wxEnterpriseId
);
List
<
String
>
delStaffIds
=
staffService
.
listDelUserStaffId
(
wxEnterpriseId
,
staffIds
);
List
<
String
>
staffIds
=
retLists
.
stream
().
map
(
StaffDTO:
:
getStaffId
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
delStaffIds
))
{
if
(
CollectionUtils
.
isNotEmpty
(
staffIds
))
{
logger
.
info
(
"没有要删除的用户:{}--{}"
,
wxEnterpriseId
,
taskId
);
List
<
String
>
delStaffIds
=
staffService
.
listDelUserStaffId
(
wxEnterpriseId
,
staffIds
);
}
else
{
if
(
CollectionUtils
.
isEmpty
(
delStaffIds
))
{
staffClerkRelationService
.
cleanStaffClerk
(
wxEnterpriseId
,
delStaffIds
);
logger
.
info
(
"没有要删除的用户:{}--{}"
,
wxEnterpriseId
,
taskId
);
staffService
.
cleanStaff
(
wxEnterpriseId
,
delStaffIds
);
}
else
{
staffDepartmentRelatedService
.
cleanStaffDepartment
(
wxEnterpriseId
,
delStaffIds
);
staffClerkRelationService
.
cleanStaffClerk
(
wxEnterpriseId
,
delStaffIds
);
}
staffService
.
cleanStaff
(
wxEnterpriseId
,
delStaffIds
);
}
staffDepartmentRelatedService
.
cleanStaffDepartment
(
wxEnterpriseId
,
delStaffIds
);
}
}
}
//清空cleak
}
if
(
CollectionUtils
.
isNotEmpty
(
groupList
))
{
List
<
String
>
groupIdList
=
groupList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toList
());
//清空cleak
departmentService
.
cleanDepartment
(
wxEnterpriseId
,
groupIdList
);
if
(
CollectionUtils
.
isNotEmpty
(
groupList
))
{
}
List
<
String
>
groupIdList
=
groupList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toList
());
departmentService
.
cleanDepartment
(
wxEnterpriseId
,
groupIdList
);
RedisUtil
.
delLocalCache
(
"department-list-cache-"
+
wxEnterpriseId
);
}
}
RedisUtil
.
delLocalCache
(
"department-list-cache-"
+
wxEnterpriseId
);
}
@Override
public
String
createWxFriendTask
(
String
wxEnterpriseId
,
String
taskName
,
String
staffId
,
String
desc
)
{
TabHaobanSyncTask
tabHaobanSyncTask
=
new
TabHaobanSyncTask
();
@Override
tabHaobanSyncTask
.
setAddUser
(
staffId
);
public
String
createWxFriendTask
(
String
wxEnterpriseId
,
String
taskName
,
String
staffId
,
String
desc
)
{
tabHaobanSyncTask
.
setTaskName
(
taskName
);
TabHaobanSyncTask
tabHaobanSyncTask
=
new
TabHaobanSyncTask
();
tabHaobanSyncTask
.
setTaskDesc
(
desc
);
tabHaobanSyncTask
.
setAddUser
(
staffId
);
tabHaobanSyncTask
.
setWxEnterpriseId
(
wxEnterpriseId
);
tabHaobanSyncTask
.
setTaskName
(
taskName
);
tabHaobanSyncTask
.
setStatusFlag
(
SyncTaskStatusEnum
.
init
.
getVal
());
tabHaobanSyncTask
.
setTaskDesc
(
desc
);
tabHaobanSyncTask
.
setTaskId
(
ToolUtil
.
randomUUID
());
tabHaobanSyncTask
.
setWxEnterpriseId
(
wxEnterpriseId
);
tabHaobanSyncTask
.
setTaskType
(
2
);
tabHaobanSyncTask
.
setStatusFlag
(
SyncTaskStatusEnum
.
init
.
getVal
());
syncTaskService
.
createTask
(
tabHaobanSyncTask
);
tabHaobanSyncTask
.
setTaskId
(
ToolUtil
.
randomUUID
());
lockTask
(
wxEnterpriseId
,
tabHaobanSyncTask
.
getTaskId
());
tabHaobanSyncTask
.
setTaskType
(
2
);
return
tabHaobanSyncTask
.
getTaskId
();
syncTaskService
.
createTask
(
tabHaobanSyncTask
);
}
lockTask
(
wxEnterpriseId
,
tabHaobanSyncTask
.
getTaskId
());
return
tabHaobanSyncTask
.
getTaskId
();
@Override
}
public
void
dealWxFriendClerk
(
String
taskId
,
String
wxEnterpriseId
)
{
List
<
TabHaobanStaff
>
list
=
this
.
staffMapper
.
listByWxEnterpriseId
(
wxEnterpriseId
)
;
@Override
List
<
TabHaobanPreDealLog
>
dealLogList
=
list
.
stream
().
map
(
dto
->
{
public
void
dealWxFriendClerk
(
String
taskId
,
String
wxEnterpriseId
)
{
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
//List<TabHaobanStaffClerkRelation> relationList = staffClerkRelationService.listByWxEnterpriseId(wxEnterpriseId);
dealLog
.
setDataId
(
dto
.
getStaffId
());
List
<
TabHaobanStaff
>
list
=
this
.
staffMapper
.
listByWxEnterpriseId
(
wxEnterpriseId
)
;
dealLog
.
setpDataId
(
dto
.
getStaffId
());
List
<
TabHaobanClerkMainStoreRelated
>
mainStoreList
=
clerkMainStoreRelatedService
.
listByWxEnterpriseId
(
wxEnterpriseId
);
dealLog
.
setDataType
(
PreDealTypeEnum
.
friend_clerk
.
getVal
());
Map
<
String
,
TabHaobanClerkMainStoreRelated
>
map
=
mainStoreList
.
stream
().
collect
(
Collectors
.
toMap
(
TabHaobanClerkMainStoreRelated:
:
getStaffId
,
s
->
s
));
dealLog
.
setStatusFlag
(
0
);
List
<
TabHaobanPreDealLog
>
dealLogList
=
list
.
stream
().
map
(
dto
->
{
dealLog
.
setTaskId
(
taskId
);
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setDataContent
(
JSONObject
.
toJSONString
(
dto
));
dealLog
.
setDataId
(
dto
.
getWxUserId
());
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
dealLog
.
setpDataId
(
dto
.
getStaffId
());
return
dealLog
;
dealLog
.
setDataType
(
PreDealTypeEnum
.
friend_clerk
.
getVal
());
}).
collect
(
Collectors
.
toList
());
dealLog
.
setStatusFlag
(
0
);
dealLog
.
setTaskId
(
taskId
);
preDealService
.
insert
(
dealLogList
);
dealLog
.
setDataContent
(
JSONObject
.
toJSONString
(
dto
));
HashSet
<
String
>
hashSet
=
(
HashSet
<
String
>)
dealLogList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toSet
());
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
dealFriendToMq
(
taskId
,
hashSet
,
SyncTaskStatusEnum
.
friend_clerk_sync
);
return
dealLog
;
}
}).
collect
(
Collectors
.
toList
());
@Override
preDealService
.
insert
(
dealLogList
);
public
String
createWxFriendTaskSingle
(
String
wxEnterpriseId
,
String
taskName
,
String
staffId
,
String
staffName
,
int
syncTaskType
)
{
HashSet
<
String
>
hashSet
=
(
HashSet
<
String
>)
dealLogList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toSet
());
String
lockKey
=
FRIEND_LOCK
+
"_lock_"
+
staffId
;
dealFriendToMq
(
taskId
,
hashSet
,
SyncTaskStatusEnum
.
friend_clerk_sync
);
String
staffLockKey
=
FRIEND_LOCK
+
staffId
;
}
RedisUtil
.
lock
(
lockKey
,
2L
);
@Override
Object
cache
=
RedisUtil
.
getCache
(
staffLockKey
);
public
String
createWxFriendTaskSingle
(
String
wxEnterpriseId
,
String
taskName
,
String
staffId
,
String
staffName
,
int
syncTaskType
)
{
if
(
null
!=
cache
)
{
String
lockKey
=
FRIEND_LOCK
+
"_lock_"
+
staffId
;
RedisUtil
.
unlock
(
lockKey
);
String
staffLockKey
=
FRIEND_LOCK
+
staffId
;
logger
.
info
(
"限制此操作,lockKey={}"
,
staffLockKey
);
RedisUtil
.
lock
(
lockKey
,
2L
);
return
null
;
}
Object
cache
=
RedisUtil
.
getCache
(
staffLockKey
);
TabHaobanSyncTask
tabHaobanSyncTask
=
new
TabHaobanSyncTask
();
if
(
null
!=
cache
)
{
tabHaobanSyncTask
.
setAddUser
(
staffId
);
RedisUtil
.
unlock
(
lockKey
);
tabHaobanSyncTask
.
setTaskName
(
SyncTaskTypeEnum
.
getTaskName
(
syncTaskType
));
logger
.
info
(
"限制此操作,lockKey={}"
,
staffLockKey
);
tabHaobanSyncTask
.
setTaskDesc
(
staffName
);
return
null
;
tabHaobanSyncTask
.
setWxEnterpriseId
(
wxEnterpriseId
);
}
tabHaobanSyncTask
.
setStatusFlag
(
SyncTaskStatusEnum
.
init
.
getVal
());
TabHaobanSyncTask
tabHaobanSyncTask
=
new
TabHaobanSyncTask
();
tabHaobanSyncTask
.
setTaskId
(
ToolUtil
.
randomUUID
());
tabHaobanSyncTask
.
setAddUser
(
staffId
);
tabHaobanSyncTask
.
setTaskType
(
syncTaskType
);
tabHaobanSyncTask
.
setTaskName
(
SyncTaskTypeEnum
.
getTaskName
(
syncTaskType
));
syncTaskService
.
createTask
(
tabHaobanSyncTask
);
tabHaobanSyncTask
.
setTaskDesc
(
staffName
);
RedisUtil
.
setCache
(
staffLockKey
,
tabHaobanSyncTask
.
getTaskId
(),
1L
,
TimeUnit
.
HOURS
);
tabHaobanSyncTask
.
setWxEnterpriseId
(
wxEnterpriseId
);
RedisUtil
.
unlock
(
lockKey
);
tabHaobanSyncTask
.
setStatusFlag
(
SyncTaskStatusEnum
.
init
.
getVal
());
return
tabHaobanSyncTask
.
getTaskId
();
tabHaobanSyncTask
.
setTaskId
(
ToolUtil
.
randomUUID
());
}
tabHaobanSyncTask
.
setTaskType
(
syncTaskType
);
syncTaskService
.
createTask
(
tabHaobanSyncTask
);
RedisUtil
.
setCache
(
staffLockKey
,
tabHaobanSyncTask
.
getTaskId
(),
1L
,
TimeUnit
.
HOURS
);
@Override
RedisUtil
.
unlock
(
lockKey
);
public
void
dealWxFriendClerkSingle
(
String
taskId
,
String
wxUserId
,
String
staffId
,
String
wxEnterpriseId
)
{
return
tabHaobanSyncTask
.
getTaskId
();
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
}
// 改成使用staffid
dealLog
.
setDataId
(
staffId
);
dealLog
.
setpDataId
(
staffId
);
@Override
dealLog
.
setDataType
(
PreDealTypeEnum
.
friend_clerk
.
getVal
());
public
void
dealWxFriendClerkSingle
(
String
taskId
,
String
wxUserId
,
String
staffId
,
String
wxEnterpriseId
)
{
dealLog
.
setStatusFlag
(
0
);
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setTaskId
(
taskId
);
// 改成使用staffid
dealLog
.
setDataContent
(
"刷新"
+
staffId
);
dealLog
.
setDataId
(
staffId
);
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
dealLog
.
setpDataId
(
staffId
);
List
<
TabHaobanPreDealLog
>
dealLogList
=
new
ArrayList
<
TabHaobanPreDealLog
>();
dealLog
.
setDataType
(
PreDealTypeEnum
.
friend_clerk
.
getVal
());
dealLogList
.
add
(
dealLog
);
dealLog
.
setStatusFlag
(
0
);
preDealService
.
insert
(
dealLogList
);
dealLog
.
setTaskId
(
taskId
);
HashSet
<
String
>
hashSet
=
(
HashSet
<
String
>)
dealLogList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toSet
());
dealLog
.
setDataContent
(
"刷新"
+
staffId
);
dealDepartmentToMq
(
taskId
,
hashSet
,
SyncTaskStatusEnum
.
friend_clerk_sync
);
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
}
List
<
TabHaobanPreDealLog
>
dealLogList
=
new
ArrayList
<
TabHaobanPreDealLog
>();
dealLogList
.
add
(
dealLog
);
@Override
preDealService
.
insert
(
dealLogList
);
public
void
dealWxFriendStore
(
String
taskId
,
String
storeId
,
String
wxEnterpriseId
)
{
HashSet
<
String
>
hashSet
=
(
HashSet
<
String
>)
dealLogList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toSet
());
List
<
StaffClerkRelationDTO
>
clerkRelationDTOS
=
staffClerkRelationService
.
listBindByStoreId
(
wxEnterpriseId
,
storeId
);
dealDepartmentToMq
(
taskId
,
hashSet
,
SyncTaskStatusEnum
.
friend_clerk_sync
);
if
(
CollectionUtils
.
isEmpty
(
clerkRelationDTOS
))
{
}
logger
.
info
(
"没有要刷新的:{},{}"
,
wxEnterpriseId
,
storeId
);
return
;
@Override
}
public
void
dealWxFriendStore
(
String
taskId
,
String
storeId
,
String
wxEnterpriseId
)
{
logger
.
info
(
"查询到需要刷新的导购={},storeId={}"
,
clerkRelationDTOS
.
size
(),
storeId
);
List
<
StaffClerkRelationDTO
>
clerkRelationDTOS
=
staffClerkRelationService
.
listBindByStoreId
(
wxEnterpriseId
,
storeId
);
List
<
TabHaobanPreDealLog
>
dealLogList
=
clerkRelationDTOS
.
stream
().
map
(
dto
->
{
if
(
CollectionUtils
.
isEmpty
(
clerkRelationDTOS
))
{
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
logger
.
info
(
"没有要刷新的:{},{}"
,
wxEnterpriseId
,
storeId
);
dealLog
.
setDataId
(
dto
.
getStaffId
());
return
;
dealLog
.
setpDataId
(
dto
.
getStaffId
());
}
dealLog
.
setDataType
(
PreDealTypeEnum
.
friend_clerk
.
getVal
());
logger
.
info
(
"查询到需要刷新的导购={},storeId={}"
,
clerkRelationDTOS
.
size
(),
storeId
);
dealLog
.
setStatusFlag
(
0
);
List
<
TabHaobanPreDealLog
>
dealLogList
=
clerkRelationDTOS
.
stream
().
map
(
dto
->
{
dealLog
.
setTaskId
(
taskId
);
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
dealLog
.
setDataId
(
dto
.
getStaffId
());
return
dealLog
;
dealLog
.
setpDataId
(
dto
.
getStaffId
());
}).
collect
(
Collectors
.
toList
());
dealLog
.
setDataType
(
PreDealTypeEnum
.
friend_clerk
.
getVal
());
preDealService
.
insert
(
dealLogList
);
dealLog
.
setStatusFlag
(
0
);
Set
<
String
>
hashSet
=
dealLogList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toSet
());
dealLog
.
setTaskId
(
taskId
);
dealDepartmentToMq
(
taskId
,
hashSet
,
SyncTaskStatusEnum
.
friend_clerk_sync
);
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
}
return
dealLog
;
}).
collect
(
Collectors
.
toList
());
@Override
preDealService
.
insert
(
dealLogList
);
public
void
quartWxFriendClerk
(
String
res
)
{
Set
<
String
>
hashSet
=
dealLogList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toSet
());
List
<
TabHaobanSyncTask
>
taskList
=
syncTaskService
.
listTaskByType
(
2
);
dealDepartmentToMq
(
taskId
,
hashSet
,
SyncTaskStatusEnum
.
friend_clerk_sync
);
if
(
CollectionUtils
.
isNotEmpty
(
taskList
))
{
}
for
(
TabHaobanSyncTask
tabHaobanSyncTask
:
taskList
)
{
dealWxFriendClerk
(
tabHaobanSyncTask
.
getTaskId
(),
tabHaobanSyncTask
.
getWxEnterpriseId
());
@Override
}
public
void
quartWxFriendClerk
(
String
res
)
{
}
List
<
TabHaobanSyncTask
>
taskList
=
syncTaskService
.
listTaskByType
(
2
);
}
if
(
CollectionUtils
.
isNotEmpty
(
taskList
))
{
for
(
TabHaobanSyncTask
tabHaobanSyncTask
:
taskList
)
{
/**
dealWxFriendClerk
(
tabHaobanSyncTask
.
getTaskId
(),
tabHaobanSyncTask
.
getWxEnterpriseId
());
* 放入mq处理部门数据
}
*
}
* @param taskId
}
* @param dealList
*/
/**
private
void
dealFriendToMq
(
String
taskId
,
Set
<
String
>
dealList
,
SyncTaskStatusEnum
syncTaskStatusEnum
)
{
* 放入mq处理部门数据
//预处理分组任务
*
syncTaskService
.
updateTaskStatus
(
taskId
,
syncTaskStatusEnum
.
getVal
());
* @param taskId
List
<
String
>
listRet
=
dealList
.
stream
().
map
(
relationId
->
{
* @param dealList
DealParamMqDTO
dealParamMqDTO
=
new
DealParamMqDTO
();
*/
dealParamMqDTO
.
setTaskId
(
taskId
);
private
void
dealFriendToMq
(
String
taskId
,
Set
<
String
>
dealList
,
SyncTaskStatusEnum
syncTaskStatusEnum
)
{
dealParamMqDTO
.
setData
(
relationId
);
//预处理分组任务
dealParamMqDTO
.
setType
(
syncTaskStatusEnum
.
getVal
());
syncTaskService
.
updateTaskStatus
(
taskId
,
syncTaskStatusEnum
.
getVal
());
return
JSONObject
.
toJSONString
(
dealParamMqDTO
);
List
<
String
>
listRet
=
dealList
.
stream
().
map
(
relationId
->
{
}).
collect
(
Collectors
.
toList
());
DealParamMqDTO
dealParamMqDTO
=
new
DealParamMqDTO
();
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
dealParamMqDTO
.
setTaskId
(
taskId
);
try
{
dealParamMqDTO
.
setData
(
relationId
);
clientInstance
.
sendBatchMessages
(
"friendSyncDealMq"
,
listRet
);
dealParamMqDTO
.
setType
(
syncTaskStatusEnum
.
getVal
());
}
catch
(
Exception
e
)
{
return
JSONObject
.
toJSONString
(
dealParamMqDTO
);
logger
.
info
(
"发送失败:{},{}"
,
taskId
,
JSONObject
.
toJSONString
(
listRet
),
e
);
}).
collect
(
Collectors
.
toList
());
}
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
}
try
{
clientInstance
.
sendBatchMessages
(
"friendSyncDealMq"
,
listRet
);
@Override
}
catch
(
Exception
e
)
{
public
boolean
getFreshFriendSyncTask
(
String
wxEnterpriseId
,
String
staffId
)
{
logger
.
info
(
"发送失败:{},{}"
,
taskId
,
JSONObject
.
toJSONString
(
listRet
),
e
);
String
staffLockKey
=
FRIEND_LOCK
+
staffId
;
}
Object
cache
=
RedisUtil
.
getCache
(
staffLockKey
);
}
return
null
!=
cache
;
}
@Override
public
boolean
getFreshFriendSyncTask
(
String
wxEnterpriseId
,
String
staffId
)
{
@Override
String
staffLockKey
=
FRIEND_LOCK
+
staffId
;
public
String
createTagTask
(
String
wxEnterpriseId
,
String
addUser
,
String
memberTagId
)
{
Object
cache
=
RedisUtil
.
getCache
(
staffLockKey
);
String
lockKey
=
FRIEND_TAG_LOCK
+
"_lock_"
+
memberTagId
;
return
null
!=
cache
;
String
staffLockKey
=
FRIEND_TAG_LOCK
+
memberTagId
;
}
RedisUtil
.
lock
(
lockKey
,
2L
);
@Override
Object
cache
=
RedisUtil
.
getCache
(
staffLockKey
);
public
String
createTagTask
(
String
wxEnterpriseId
,
String
addUser
,
String
memberTagId
)
{
if
(
null
!=
cache
)
{
String
lockKey
=
FRIEND_TAG_LOCK
+
"_lock_"
+
memberTagId
;
RedisUtil
.
unlock
(
lockKey
);
String
staffLockKey
=
FRIEND_TAG_LOCK
+
memberTagId
;
return
null
;
RedisUtil
.
lock
(
lockKey
,
2L
);
}
TabHaobanSyncTask
tabHaobanSyncTask
=
new
TabHaobanSyncTask
();
Object
cache
=
RedisUtil
.
getCache
(
staffLockKey
);
tabHaobanSyncTask
.
setAddUser
(
addUser
);
if
(
null
!=
cache
)
{
tabHaobanSyncTask
.
setTaskName
(
SyncTaskTypeEnum
.
MEMBER_TAG
.
getTaskName
());
RedisUtil
.
unlock
(
lockKey
);
tabHaobanSyncTask
.
setTaskDesc
(
memberTagId
);
return
null
;
tabHaobanSyncTask
.
setWxEnterpriseId
(
wxEnterpriseId
);
}
tabHaobanSyncTask
.
setStatusFlag
(
SyncTaskStatusEnum
.
init
.
getVal
());
TabHaobanSyncTask
tabHaobanSyncTask
=
new
TabHaobanSyncTask
();
tabHaobanSyncTask
.
setTaskId
(
ToolUtil
.
randomUUID
());
tabHaobanSyncTask
.
setAddUser
(
addUser
);
tabHaobanSyncTask
.
setTaskType
(
SyncTaskTypeEnum
.
MEMBER_TAG
.
getType
());
tabHaobanSyncTask
.
setTaskName
(
SyncTaskTypeEnum
.
MEMBER_TAG
.
getTaskName
());
syncTaskService
.
createTask
(
tabHaobanSyncTask
);
tabHaobanSyncTask
.
setTaskDesc
(
memberTagId
);
RedisUtil
.
setCache
(
staffLockKey
,
tabHaobanSyncTask
.
getTaskId
(),
1L
,
TimeUnit
.
HOURS
);
tabHaobanSyncTask
.
setWxEnterpriseId
(
wxEnterpriseId
);
RedisUtil
.
unlock
(
lockKey
);
tabHaobanSyncTask
.
setStatusFlag
(
SyncTaskStatusEnum
.
init
.
getVal
());
return
tabHaobanSyncTask
.
getTaskId
();
tabHaobanSyncTask
.
setTaskId
(
ToolUtil
.
randomUUID
());
}
tabHaobanSyncTask
.
setTaskType
(
SyncTaskTypeEnum
.
MEMBER_TAG
.
getType
());
syncTaskService
.
createTask
(
tabHaobanSyncTask
);
@Override
RedisUtil
.
setCache
(
staffLockKey
,
tabHaobanSyncTask
.
getTaskId
(),
1L
,
TimeUnit
.
HOURS
);
public
void
dealTagTask
(
String
wxEnterpriseId
,
String
enterpriseId
,
List
<
String
>
tagIds
,
String
taskId
)
{
RedisUtil
.
unlock
(
lockKey
);
TabHaobanSyncTask
syncTask
=
syncTaskService
.
getSyncTask
(
taskId
);
return
tabHaobanSyncTask
.
getTaskId
();
if
(
CollectionUtils
.
isEmpty
(
tagIds
))
{
}
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
compute
.
getVal
());
return
;
@Override
}
public
void
dealTagTask
(
String
wxEnterpriseId
,
String
enterpriseId
,
List
<
String
>
tagIds
,
String
taskId
)
{
List
<
TabHaobanPreDealLog
>
dealLogList
=
tagIds
.
stream
().
map
(
tagId
->
{
TabHaobanSyncTask
syncTask
=
syncTaskService
.
getSyncTask
(
taskId
);
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
if
(
CollectionUtils
.
isEmpty
(
tagIds
))
{
dealLog
.
setDataId
(
tagId
);
syncTaskService
.
updateTaskStatus
(
taskId
,
SyncTaskStatusEnum
.
compute
.
getVal
());
dealLog
.
setpDataId
(
syncTask
.
getTaskDesc
());
return
;
dealLog
.
setDataType
(
PreDealTypeEnum
.
friend_clerk
.
getVal
());
}
dealLog
.
setStatusFlag
(
0
);
List
<
TabHaobanPreDealLog
>
dealLogList
=
tagIds
.
stream
().
map
(
tagId
->
{
dealLog
.
setTaskId
(
taskId
);
TabHaobanPreDealLog
dealLog
=
new
TabHaobanPreDealLog
();
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
dealLog
.
setDataId
(
tagId
);
return
dealLog
;
dealLog
.
setpDataId
(
syncTask
.
getTaskDesc
());
}).
collect
(
Collectors
.
toList
());
dealLog
.
setDataType
(
PreDealTypeEnum
.
friend_clerk
.
getVal
());
preDealService
.
insert
(
dealLogList
);
dealLog
.
setStatusFlag
(
0
);
Set
<
String
>
hashSet
=
dealLogList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toSet
());
dealLog
.
setTaskId
(
taskId
);
dealDepartmentToMq
(
taskId
,
hashSet
,
SyncTaskStatusEnum
.
tag
);
dealLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
}
return
dealLog
;
}
}).
collect
(
Collectors
.
toList
());
preDealService
.
insert
(
dealLogList
);
Set
<
String
>
hashSet
=
dealLogList
.
stream
().
map
(
TabHaobanPreDealLog:
:
getDataId
).
collect
(
Collectors
.
toSet
());
dealDepartmentToMq
(
taskId
,
hashSet
,
SyncTaskStatusEnum
.
tag
);
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/QywxTagApiServiceImpl.java
View file @
a621d903
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
out
.
impl
;
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
out
.
impl
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.convert.Convert
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.commons.util.ToolUtil
;
import
com.gic.commons.util.ToolUtil
;
import
com.gic.haoban.app.customer.enums.QywxTaskStatusEnum
;
import
com.gic.haoban.app.customer.enums.QywxTaskStatusEnum
;
import
com.gic.haoban.app.customer.service.api.service.QywxTagSyncApiService
;
import
com.gic.haoban.app.customer.service.api.service.QywxTagSyncApiService
;
import
com.gic.haoban.base.api.common.ServiceResponse
;
import
com.gic.haoban.base.api.common.ServiceResponse
;
import
com.gic.haoban.common.utils.EntityUtil
;
import
com.gic.haoban.common.utils.EntityUtil
;
import
com.gic.haoban.manage.api.dto.*
;
import
com.gic.haoban.manage.api.dto.*
;
import
com.gic.haoban.manage.api.enums.QywxTagRelationSyncFlagEnum
;
import
com.gic.haoban.manage.api.enums.QywxTagRelationSyncFlagEnum
;
import
com.gic.haoban.manage.api.enums.QywxTagRelationTypeEnum
;
import
com.gic.haoban.manage.api.enums.QywxTagRelationTypeEnum
;
import
com.gic.haoban.manage.api.service.QywxTagApiService
;
import
com.gic.haoban.manage.api.service.QywxTagApiService
;
import
com.gic.haoban.manage.service.config.Config
;
import
com.gic.haoban.manage.service.config.Config
;
import
com.gic.haoban.manage.service.entity.*
;
import
com.gic.haoban.manage.service.entity.*
;
import
com.gic.haoban.manage.service.pojo.QywxSyncTagFormatPojo
;
import
com.gic.haoban.manage.service.pojo.QywxSyncTagFormatPojo
;
import
com.gic.haoban.manage.service.service.ExternalClerkRelatedService
;
import
com.gic.haoban.manage.service.service.ExternalClerkRelatedService
;
import
com.gic.haoban.manage.service.service.QywxTagService
;
import
com.gic.haoban.manage.service.service.QywxTagService
;
import
com.gic.haoban.manage.service.service.StaffService
;
import
com.gic.haoban.manage.service.service.StaffService
;
import
com.gic.haoban.manage.service.service.WxEnterpriseService
;
import
com.gic.haoban.manage.service.service.WxEnterpriseService
;
import
com.gic.member.api.dto.MemberTagDTO
;
import
com.gic.member.api.dto.MemberTagDTO
;
import
com.gic.member.api.service.MemberTagService
;
import
com.gic.member.api.service.MemberTagService
;
import
com.gic.member.tag.api.dto.MemberTagItemDTO
;
import
com.gic.member.tag.api.dto.MemberTagItemDTO
;
import
com.gic.member.tag.api.service.MemberTagItemApiService
;
import
com.gic.member.tag.api.service.MemberTagItemApiService
;
import
com.gic.mq.sdk.GicMQClient
;
import
com.gic.mq.sdk.GicMQClient
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.wechat.api.dto.qywx.QywxTagDTO
;
import
com.gic.wechat.api.dto.qywx.QywxTagDTO
;
import
com.gic.wechat.api.dto.qywx.QywxTagGroupDTO
;
import
com.gic.wechat.api.dto.qywx.QywxTagGroupDTO
;
import
com.gic.wechat.api.dto.qywx.response.QywxGetCorpTagListDTO
;
import
com.gic.wechat.api.dto.qywx.response.QywxGetCorpTagListDTO
;
import
com.gic.wechat.api.dto.qywx.response.QywxResponseDTO
;
import
com.gic.wechat.api.dto.qywx.response.QywxResponseDTO
;
import
com.gic.wechat.api.service.qywx.QywxSuiteApiService
;
import
com.gic.wechat.api.service.qywx.QywxSuiteApiService
;
import
com.gic.wechat.api.service.qywx.QywxUserApiService
;
import
com.gic.wechat.api.service.qywx.QywxUserApiService
;
import
com.google.common.collect.Sets
;
import
com.google.common.collect.Sets
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.MapUtils
;
import
org.apache.commons.collections.MapUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.tuple.Pair
;
import
org.apache.commons.lang3.tuple.Pair
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
static
org
.
slf4j
.
LoggerFactory
.
getLogger
;
import
static
org
.
slf4j
.
LoggerFactory
.
getLogger
;
/**
/**
* Created 2021/6/21.
* Created 2021/6/21.
*
*
* @author hua
* @author hua
*/
*/
@Service
@Service
public
class
QywxTagApiServiceImpl
implements
QywxTagApiService
{
public
class
QywxTagApiServiceImpl
implements
QywxTagApiService
{
private
static
final
Logger
logger
=
getLogger
(
QywxTagApiServiceImpl
.
class
);
private
static
final
Logger
logger
=
getLogger
(
QywxTagApiServiceImpl
.
class
);
/**
/**
* 限制次数
* 限制次数
*/
*/
private
static
final
Integer
MAX_TIMES
=
3
;
private
static
final
Integer
MAX_TIMES
=
3
;
@Autowired
@Autowired
private
QywxSuiteApiService
qywxSuiteApiService
;
private
QywxSuiteApiService
qywxSuiteApiService
;
@Autowired
@Autowired
private
Config
config
;
private
Config
config
;
@Autowired
@Autowired
private
WxEnterpriseService
wxEnterpriseService
;
private
WxEnterpriseService
wxEnterpriseService
;
@Autowired
@Autowired
private
QywxTagService
qywxTagService
;
private
QywxTagService
qywxTagService
;
@Autowired
@Autowired
private
QywxUserApiService
qywxUserApiService
;
private
QywxUserApiService
qywxUserApiService
;
@Autowired
@Autowired
private
ExternalClerkRelatedService
externalClerkRelatedService
;
private
ExternalClerkRelatedService
externalClerkRelatedService
;
@Autowired
@Autowired
private
MemberTagService
memberTagService
;
private
MemberTagService
memberTagService
;
@Autowired
@Autowired
private
QywxTagSyncApiService
qywxTagSyncApiService
;
private
QywxTagSyncApiService
qywxTagSyncApiService
;
@Autowired
@Autowired
private
MemberTagItemApiService
memberTagItemApiService
;
private
MemberTagItemApiService
memberTagItemApiService
;
@Autowired
@Autowired
private
StaffService
staffService
;
private
StaffService
staffService
;
@Override
@Override
public
void
pullQywxTag
(
String
wxEnterpriseId
)
{
public
void
pullQywxTag
(
String
wxEnterpriseId
)
{
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
if
(
null
==
qwDTO
)
{
if
(
null
==
qwDTO
)
{
logger
.
info
(
"企业标签所在企业不存在"
);
logger
.
info
(
"企业标签所在企业不存在"
);
return
;
return
;
}
}
QywxGetCorpTagListDTO
corpTagListResp
=
qywxSuiteApiService
.
getCorpTagList
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
null
,
-
1
);
QywxGetCorpTagListDTO
corpTagListResp
=
qywxSuiteApiService
.
getCorpTagList
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
null
,
-
1
);
if
(
corpTagListResp
.
getErrcode
()
!=
0
)
{
if
(
corpTagListResp
.
getErrcode
()
!=
0
)
{
logger
.
info
(
"企业微信标签有问题:{}"
,
wxEnterpriseId
);
logger
.
info
(
"企业微信标签有问题:{}"
,
wxEnterpriseId
);
return
;
return
;
}
}
//拉取保存所有标签
//拉取保存所有标签
List
<
QywxTagGroupDTO
>
tagGroup
=
corpTagListResp
.
getTagGroup
();
List
<
QywxTagGroupDTO
>
tagGroup
=
corpTagListResp
.
getTagGroup
();
for
(
QywxTagGroupDTO
groupDTO
:
tagGroup
)
{
for
(
QywxTagGroupDTO
groupDTO
:
tagGroup
)
{
qywxTagService
.
saveQywxTagByQywxGroupKey
(
wxEnterpriseId
,
groupDTO
);
qywxTagService
.
saveQywxTagByQywxGroupKey
(
wxEnterpriseId
,
groupDTO
);
}
}
}
}
@Override
@Override
public
ServiceResponse
syncTagToQywx
(
String
wxEnterpriseId
,
String
enterpriseId
,
QywxTagInfoDTO
infoDTO
,
List
<
QywxTagItemDTO
>
items
)
{
public
ServiceResponse
syncTagToQywx
(
String
wxEnterpriseId
,
String
enterpriseId
,
QywxTagInfoDTO
infoDTO
,
List
<
QywxTagItemDTO
>
items
)
{
ServiceResponse
ret
=
new
ServiceResponse
();
ServiceResponse
ret
=
new
ServiceResponse
();
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
//调用企业微信接口保存
//调用企业微信接口保存
QywxGetCorpTagListDTO
resp
=
this
.
saveQywxTag
(
qwDTO
.
getThirdCorpid
(),
infoDTO
,
items
);
QywxGetCorpTagListDTO
resp
=
this
.
saveQywxTag
(
qwDTO
.
getThirdCorpid
(),
infoDTO
,
items
);
if
(
resp
.
getErrcode
()
!=
0
&&
CollectionUtils
.
isEmpty
(
resp
.
getTagGroup
()))
{
if
(
resp
.
getErrcode
()
!=
0
&&
CollectionUtils
.
isEmpty
(
resp
.
getTagGroup
()))
{
logger
.
info
(
"同步失败:{}"
,
JSONObject
.
toJSONString
(
resp
));
logger
.
info
(
"同步失败:{}"
,
JSONObject
.
toJSONString
(
resp
));
ret
.
setCode
(
resp
.
getErrcode
());
ret
.
setCode
(
resp
.
getErrcode
());
ret
.
setMessage
(
resp
.
getErrmsg
());
ret
.
setMessage
(
resp
.
getErrmsg
());
return
ret
;
return
ret
;
}
}
//拉取保存所有标签
//拉取保存所有标签
List
<
QywxTagGroupDTO
>
tagGroup
=
resp
.
getTagGroup
();
List
<
QywxTagGroupDTO
>
tagGroup
=
resp
.
getTagGroup
();
QywxTagGroupDTO
groupDTO
=
tagGroup
.
get
(
0
);
QywxTagGroupDTO
groupDTO
=
tagGroup
.
get
(
0
);
//保存企业微信标签信息
//保存企业微信标签信息
Pair
<
TabQywxTag
,
List
<
TabQywxTagItem
>>
savePair
=
qywxTagService
.
saveQywxTagByQywxGroupKey
(
wxEnterpriseId
,
groupDTO
);
Pair
<
TabQywxTag
,
List
<
TabQywxTagItem
>>
savePair
=
qywxTagService
.
saveQywxTagByQywxGroupKey
(
wxEnterpriseId
,
groupDTO
);
if
(
null
==
savePair
)
{
if
(
null
==
savePair
)
{
logger
.
info
(
"保存失败:{}"
,
JSONObject
.
toJSONString
(
groupDTO
));
logger
.
info
(
"保存失败:{}"
,
JSONObject
.
toJSONString
(
groupDTO
));
ret
.
setCode
(
1
);
ret
.
setCode
(
1
);
ret
.
setMessage
(
"保存企业微信标签失败"
);
ret
.
setMessage
(
"保存企业微信标签失败"
);
return
ret
;
return
ret
;
}
}
//保存关联关系
//保存关联关系
saveRelation
(
wxEnterpriseId
,
enterpriseId
,
infoDTO
,
items
,
savePair
);
saveRelation
(
wxEnterpriseId
,
enterpriseId
,
infoDTO
,
items
,
savePair
);
return
ret
;
return
ret
;
}
}
/**
/**
* 保存标签的关联关系
* 保存标签的关联关系
*
*
* @param wxEnterpriseId
* @param wxEnterpriseId
* @param enterpriseId
* @param enterpriseId
* @param infoDTO
* @param infoDTO
*/
*/
private
void
saveRelation
(
String
wxEnterpriseId
,
String
enterpriseId
,
QywxTagInfoDTO
infoDTO
,
List
<
QywxTagItemDTO
>
items
,
Pair
<
TabQywxTag
,
List
<
TabQywxTagItem
>>
localQywxTagPair
)
{
private
void
saveRelation
(
String
wxEnterpriseId
,
String
enterpriseId
,
QywxTagInfoDTO
infoDTO
,
List
<
QywxTagItemDTO
>
items
,
Pair
<
TabQywxTag
,
List
<
TabQywxTagItem
>>
localQywxTagPair
)
{
Map
<
String
,
QywxTagItemDTO
>
orgMap
=
items
.
stream
().
collect
(
Collectors
.
toMap
(
item
->
item
.
getQywxTagName
(),
dto
->
dto
));
Map
<
String
,
QywxTagItemDTO
>
orgMap
=
items
.
stream
().
collect
(
Collectors
.
toMap
(
item
->
item
.
getQywxTagName
(),
dto
->
dto
));
//设置关联关系
//设置关联关系
TabQywxTag
groupKey
=
localQywxTagPair
.
getKey
();
TabQywxTag
groupKey
=
localQywxTagPair
.
getKey
();
List
<
TabQywxTagItem
>
tabQywxTagItems
=
localQywxTagPair
.
getRight
();
List
<
TabQywxTagItem
>
tabQywxTagItems
=
localQywxTagPair
.
getRight
();
List
<
TabQywxTagRelation
>
saveRelationList
=
new
ArrayList
<>();
List
<
TabQywxTagRelation
>
saveRelationList
=
new
ArrayList
<>();
//如果存在qywxGroupKey 说明已经创建过了
//如果存在qywxGroupKey 说明已经创建过了
if
(
StringUtils
.
isBlank
(
infoDTO
.
getQywxGroupKey
()))
{
if
(
StringUtils
.
isBlank
(
infoDTO
.
getQywxGroupKey
()))
{
TabQywxTagRelation
groupRelation
=
new
TabQywxTagRelation
();
TabQywxTagRelation
groupRelation
=
new
TabQywxTagRelation
();
groupRelation
.
setEnterpriseId
(
enterpriseId
);
groupRelation
.
setEnterpriseId
(
enterpriseId
);
groupRelation
.
setMemberTagId
(
infoDTO
.
getMemberTagId
());
groupRelation
.
setMemberTagId
(
infoDTO
.
getMemberTagId
());
groupRelation
.
setQywxTagId
(
groupKey
.
getQywxTagId
());
groupRelation
.
setQywxTagId
(
groupKey
.
getQywxTagId
());
groupRelation
.
setRelationType
(
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getType
());
groupRelation
.
setRelationType
(
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getType
());
groupRelation
.
setStatusFlag
(
1
);
groupRelation
.
setStatusFlag
(
1
);
groupRelation
.
setSyncFlag
(
QywxTagRelationSyncFlagEnum
.
PRE
.
getType
());
groupRelation
.
setSyncFlag
(
QywxTagRelationSyncFlagEnum
.
PRE
.
getType
());
groupRelation
.
setQywxTagRelationId
(
ToolUtil
.
randomUUID
());
groupRelation
.
setQywxTagRelationId
(
ToolUtil
.
randomUUID
());
groupRelation
.
setWxEnterpriseId
(
wxEnterpriseId
);
groupRelation
.
setWxEnterpriseId
(
wxEnterpriseId
);
saveRelationList
.
add
(
groupRelation
);
saveRelationList
.
add
(
groupRelation
);
}
}
List
<
TabQywxTagRelation
>
itemList
=
tabQywxTagItems
.
stream
().
map
(
tab
->
{
List
<
TabQywxTagRelation
>
itemList
=
tabQywxTagItems
.
stream
().
map
(
tab
->
{
QywxTagItemDTO
orgItem
=
orgMap
.
get
(
tab
.
getQywxTagName
());
QywxTagItemDTO
orgItem
=
orgMap
.
get
(
tab
.
getQywxTagName
());
TabQywxTagRelation
itemRelation
=
new
TabQywxTagRelation
();
TabQywxTagRelation
itemRelation
=
new
TabQywxTagRelation
();
itemRelation
.
setWxEnterpriseId
(
wxEnterpriseId
);
itemRelation
.
setWxEnterpriseId
(
wxEnterpriseId
);
itemRelation
.
setQywxTagRelationId
(
ToolUtil
.
randomUUID
());
itemRelation
.
setQywxTagRelationId
(
ToolUtil
.
randomUUID
());
itemRelation
.
setSyncFlag
(
QywxTagRelationSyncFlagEnum
.
PRE
.
getType
());
itemRelation
.
setSyncFlag
(
QywxTagRelationSyncFlagEnum
.
PRE
.
getType
());
itemRelation
.
setStatusFlag
(
1
);
itemRelation
.
setStatusFlag
(
1
);
itemRelation
.
setRelationType
(
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getType
());
itemRelation
.
setRelationType
(
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getType
());
itemRelation
.
setQywxTagId
(
groupKey
.
getQywxTagId
());
itemRelation
.
setQywxTagId
(
groupKey
.
getQywxTagId
());
itemRelation
.
setMemberTagId
(
infoDTO
.
getMemberTagId
());
itemRelation
.
setMemberTagId
(
infoDTO
.
getMemberTagId
());
itemRelation
.
setEnterpriseId
(
enterpriseId
);
itemRelation
.
setEnterpriseId
(
enterpriseId
);
itemRelation
.
setQywxTagItemId
(
tab
.
getQywxTagItemId
());
itemRelation
.
setQywxTagItemId
(
tab
.
getQywxTagItemId
());
itemRelation
.
setTagItemId
(
orgItem
.
getQywxTagKey
());
itemRelation
.
setTagItemId
(
orgItem
.
getQywxTagKey
());
return
itemRelation
;
return
itemRelation
;
}).
collect
(
Collectors
.
toList
());
}).
collect
(
Collectors
.
toList
());
saveRelationList
.
addAll
(
itemList
);
saveRelationList
.
addAll
(
itemList
);
qywxTagService
.
saveQywxRelation
(
saveRelationList
);
qywxTagService
.
saveQywxRelation
(
saveRelationList
);
}
}
/**
/**
* 调用企业微信接口 保存标签
* 调用企业微信接口 保存标签
*
*
* @param wxEnterpriseDTO
* @param wxEnterpriseDTO
* @param infoDTO
* @param infoDTO
* @param items
* @param items
* @return
* @return
*/
*/
private
QywxGetCorpTagListDTO
saveQywxTag
(
String
corpid
,
QywxTagInfoDTO
infoDTO
,
List
<
QywxTagItemDTO
>
items
)
{
private
QywxGetCorpTagListDTO
saveQywxTag
(
String
corpid
,
QywxTagInfoDTO
infoDTO
,
List
<
QywxTagItemDTO
>
items
)
{
QywxTagGroupDTO
qywxTagGroupDTO
=
new
QywxTagGroupDTO
();
QywxTagGroupDTO
qywxTagGroupDTO
=
new
QywxTagGroupDTO
();
qywxTagGroupDTO
.
setGroupName
(
"GIC"
+
infoDTO
.
getQywxGroupName
());
qywxTagGroupDTO
.
setGroupName
(
"GIC"
+
infoDTO
.
getQywxGroupName
());
qywxTagGroupDTO
.
setOrder
(
infoDTO
.
getOrder
());
qywxTagGroupDTO
.
setOrder
(
infoDTO
.
getOrder
());
qywxTagGroupDTO
.
setGroupId
(
infoDTO
.
getQywxGroupKey
());
qywxTagGroupDTO
.
setGroupId
(
infoDTO
.
getQywxGroupKey
());
List
<
QywxTagDTO
>
tagItems
=
items
.
stream
().
map
(
item
->
{
List
<
QywxTagDTO
>
tagItems
=
items
.
stream
().
map
(
item
->
{
QywxTagDTO
qywxTagDTO
=
new
QywxTagDTO
();
QywxTagDTO
qywxTagDTO
=
new
QywxTagDTO
();
qywxTagDTO
.
setName
(
item
.
getQywxTagName
());
qywxTagDTO
.
setName
(
item
.
getQywxTagName
());
qywxTagDTO
.
setOrder
(
item
.
getOrder
());
qywxTagDTO
.
setOrder
(
item
.
getOrder
());
return
qywxTagDTO
;
return
qywxTagDTO
;
}).
collect
(
Collectors
.
toList
());
}).
collect
(
Collectors
.
toList
());
qywxTagGroupDTO
.
setTag
(
tagItems
);
qywxTagGroupDTO
.
setTag
(
tagItems
);
return
qywxSuiteApiService
.
saveCorpTag
(
corpid
,
config
.
getWxSuiteid
(),
qywxTagGroupDTO
);
return
qywxSuiteApiService
.
saveCorpTag
(
corpid
,
config
.
getWxSuiteid
(),
qywxTagGroupDTO
);
}
}
@Override
@Override
public
ServiceResponse
closeSync
(
String
wxEnterpriseId
,
String
memberTagId
)
{
public
ServiceResponse
closeSync
(
String
wxEnterpriseId
,
String
memberTagId
)
{
ServiceResponse
resp
=
new
ServiceResponse
();
ServiceResponse
resp
=
new
ServiceResponse
();
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
List
<
TabQywxTagRelation
>
tagRelations
=
qywxTagService
.
listQywxTagRelationByMemberTagId
(
wxEnterpriseId
,
memberTagId
);
List
<
TabQywxTagRelation
>
tagRelations
=
qywxTagService
.
listQywxTagRelationByMemberTagId
(
wxEnterpriseId
,
memberTagId
);
if
(
CollectionUtils
.
isEmpty
(
tagRelations
))
{
if
(
CollectionUtils
.
isEmpty
(
tagRelations
))
{
return
resp
;
return
resp
;
}
}
TabQywxTag
tabQywxTag
=
qywxTagService
.
getQywxTagByQywxTagId
(
wxEnterpriseId
,
tagRelations
.
get
(
0
).
getQywxTagId
());
TabQywxTag
tabQywxTag
=
qywxTagService
.
getQywxTagByQywxTagId
(
wxEnterpriseId
,
tagRelations
.
get
(
0
).
getQywxTagId
());
//关闭同步
//关闭同步
qywxTagService
.
closeSync
(
wxEnterpriseId
,
memberTagId
);
qywxTagService
.
closeSync
(
wxEnterpriseId
,
memberTagId
);
List
<
String
>
delIds
=
new
ArrayList
<>();
List
<
String
>
delIds
=
new
ArrayList
<>();
delIds
.
add
(
tabQywxTag
.
getQywxGroupKey
());
delIds
.
add
(
tabQywxTag
.
getQywxGroupKey
());
QywxResponseDTO
responseDTO
=
qywxSuiteApiService
.
delCorpTag
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
delIds
,
0
);
QywxResponseDTO
responseDTO
=
qywxSuiteApiService
.
delCorpTag
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
delIds
,
0
);
logger
.
info
(
"关闭同步:{}"
,
JSONObject
.
toJSONString
(
responseDTO
));
logger
.
info
(
"关闭同步:{}"
,
JSONObject
.
toJSONString
(
responseDTO
));
if
(
responseDTO
.
getErrcode
()
!=
0
)
{
if
(
responseDTO
.
getErrcode
()
!=
0
)
{
resp
.
setMessage
(
responseDTO
.
getErrmsg
());
resp
.
setMessage
(
responseDTO
.
getErrmsg
());
resp
.
setCode
(
responseDTO
.
getErrcode
());
resp
.
setCode
(
responseDTO
.
getErrcode
());
return
resp
;
return
resp
;
}
}
qywxTagService
.
delQywxTag
(
tabQywxTag
.
getQywxGroupKey
(),
wxEnterpriseId
);
qywxTagService
.
delQywxTag
(
tabQywxTag
.
getQywxGroupKey
(),
wxEnterpriseId
);
return
resp
;
return
resp
;
}
}
@Override
@Override
public
ServiceResponse
delGicTagItem
(
String
wxEnterpriseId
,
String
tagItemId
)
{
public
ServiceResponse
delGicTagItem
(
String
wxEnterpriseId
,
String
tagItemId
)
{
ServiceResponse
resp
=
new
ServiceResponse
();
ServiceResponse
resp
=
new
ServiceResponse
();
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
TabQywxTagRelation
qywxTagRelation
=
qywxTagService
.
getQywxTagRelationByTagItemId
(
wxEnterpriseId
,
tagItemId
);
TabQywxTagRelation
qywxTagRelation
=
qywxTagService
.
getQywxTagRelationByTagItemId
(
wxEnterpriseId
,
tagItemId
);
if
(
null
==
qywxTagRelation
)
{
if
(
null
==
qywxTagRelation
)
{
resp
.
setMessage
(
"没有同步,无需删除"
);
resp
.
setMessage
(
"没有同步,无需删除"
);
return
resp
;
return
resp
;
}
}
TabQywxTagItem
qywxTagItem
=
qywxTagService
.
getQywxTagItemById
(
wxEnterpriseId
,
qywxTagRelation
.
getQywxTagItemId
());
TabQywxTagItem
qywxTagItem
=
qywxTagService
.
getQywxTagItemById
(
wxEnterpriseId
,
qywxTagRelation
.
getQywxTagItemId
());
List
<
String
>
delIds
=
new
ArrayList
<>();
List
<
String
>
delIds
=
new
ArrayList
<>();
delIds
.
add
(
qywxTagItem
.
getQywxTagKey
());
delIds
.
add
(
qywxTagItem
.
getQywxTagKey
());
QywxResponseDTO
responseDTO
=
qywxSuiteApiService
.
delCorpTag
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
delIds
,
1
);
QywxResponseDTO
responseDTO
=
qywxSuiteApiService
.
delCorpTag
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
delIds
,
1
);
logger
.
info
(
"删除标签项:{}"
,
JSONObject
.
toJSONString
(
responseDTO
));
logger
.
info
(
"删除标签项:{}"
,
JSONObject
.
toJSONString
(
responseDTO
));
if
(
responseDTO
.
getErrcode
()
!=
0
)
{
if
(
responseDTO
.
getErrcode
()
!=
0
)
{
resp
.
setMessage
(
responseDTO
.
getErrmsg
());
resp
.
setMessage
(
responseDTO
.
getErrmsg
());
resp
.
setCode
(
responseDTO
.
getErrcode
());
resp
.
setCode
(
responseDTO
.
getErrcode
());
return
resp
;
return
resp
;
}
}
//删除标签项 以及同步关系
//删除标签项 以及同步关系
qywxTagService
.
delQywxTagItemById
(
wxEnterpriseId
,
qywxTagItem
.
getQywxTagItemId
());
qywxTagService
.
delQywxTagItemById
(
wxEnterpriseId
,
qywxTagItem
.
getQywxTagItemId
());
qywxTagService
.
changeTagRelationStatus
(
qywxTagRelation
.
getQywxTagRelationId
(),
0
);
qywxTagService
.
changeTagRelationStatus
(
qywxTagRelation
.
getQywxTagRelationId
(),
0
);
return
resp
;
return
resp
;
}
}
@Override
@Override
public
List
<
QywxTagRelationDTO
>
listAllByWxEnterpriseId
(
String
wxEnterpriseId
)
{
public
List
<
QywxTagRelationDTO
>
listAllByWxEnterpriseId
(
String
wxEnterpriseId
)
{
List
<
TabQywxTagRelation
>
ret
=
qywxTagService
.
listAllQywxRelation
(
wxEnterpriseId
);
List
<
TabQywxTagRelation
>
ret
=
qywxTagService
.
listAllQywxRelation
(
wxEnterpriseId
);
return
EntityUtil
.
changeEntityListByJSON
(
QywxTagRelationDTO
.
class
,
ret
);
return
EntityUtil
.
changeEntityListByJSON
(
QywxTagRelationDTO
.
class
,
ret
);
}
}
@Override
@Override
public
void
addQywxTag
(
QywxTagCallbackDTO
callbackDTO
)
{
public
void
addQywxTag
(
QywxTagCallbackDTO
callbackDTO
)
{
logger
.
info
(
"企业微信新增标签回调:{}"
,
JSONObject
.
toJSONString
(
callbackDTO
));
logger
.
info
(
"企业微信新增标签回调:{}"
,
JSONObject
.
toJSONString
(
callbackDTO
));
if
(!
config
.
getWxSuiteid
().
equals
(
callbackDTO
.
getSuiteId
()))
{
if
(!
config
.
getWxSuiteid
().
equals
(
callbackDTO
.
getSuiteId
()))
{
logger
.
info
(
"非第三方回调"
);
logger
.
info
(
"非第三方回调"
);
return
;
return
;
}
}
TabHaobanWxEnterprise
wxEnterpriseDto
=
wxEnterpriseService
.
getEnterpriseBycorpId
(
callbackDTO
.
getAuthCorpId
());
TabHaobanWxEnterprise
wxEnterpriseDto
=
wxEnterpriseService
.
getEnterpriseBycorpId
(
callbackDTO
.
getAuthCorpId
());
if
(
null
==
wxEnterpriseDto
)
{
if
(
null
==
wxEnterpriseDto
)
{
logger
.
info
(
"企业不存在:{}"
,
callbackDTO
.
getAuthCorpId
());
logger
.
info
(
"企业不存在:{}"
,
callbackDTO
.
getAuthCorpId
());
return
;
return
;
}
}
QywxTagRelationTypeEnum
relationTypeEnum
=
QywxTagRelationTypeEnum
.
getByTagType
(
callbackDTO
.
getTagType
());
QywxTagRelationTypeEnum
relationTypeEnum
=
QywxTagRelationTypeEnum
.
getByTagType
(
callbackDTO
.
getTagType
());
if
(
relationTypeEnum
==
null
)
{
if
(
relationTypeEnum
==
null
)
{
logger
.
error
(
"未找到对应关系,{}"
,
callbackDTO
.
getTagType
());
logger
.
error
(
"未找到对应关系,{}"
,
callbackDTO
.
getTagType
());
return
;
return
;
}
}
String
wxEnterpriseId
=
wxEnterpriseDto
.
getWxEnterpriseId
()
;
String
wxEnterpriseId
=
wxEnterpriseDto
.
getWxEnterpriseId
()
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
//标签组
//标签组
if
(
Objects
.
equals
(
relationTypeEnum
.
getTagType
(),
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getTagType
()))
{
if
(
Objects
.
equals
(
relationTypeEnum
.
getTagType
(),
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getTagType
()))
{
logger
.
info
(
"新增标签组无需操作:{}"
,
callbackDTO
.
getTagId
());
logger
.
info
(
"新增标签组无需操作:{}"
,
callbackDTO
.
getTagId
());
List
<
String
>
ids
=
new
ArrayList
<>();
List
<
String
>
ids
=
new
ArrayList
<>();
ids
.
add
(
callbackDTO
.
getTagId
());
ids
.
add
(
callbackDTO
.
getTagId
());
QywxGetCorpTagListDTO
tagDetail
=
qywxSuiteApiService
.
getCorpTagList
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
ids
,
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getType
());
QywxGetCorpTagListDTO
tagDetail
=
qywxSuiteApiService
.
getCorpTagList
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
ids
,
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getType
());
if
(
tagDetail
.
getErrcode
()
!=
0
)
{
if
(
tagDetail
.
getErrcode
()
!=
0
)
{
logger
.
info
(
"没有关联,无需操作:{}"
,
JSONObject
.
toJSONString
(
tagDetail
));
logger
.
info
(
"没有关联,无需操作:{}"
,
JSONObject
.
toJSONString
(
tagDetail
));
return
;
return
;
}
}
QywxTagGroupDTO
qywxTagGroupDTO
=
tagDetail
.
getTagGroup
().
get
(
0
);
QywxTagGroupDTO
qywxTagGroupDTO
=
tagDetail
.
getTagGroup
().
get
(
0
);
//保存标签项
//保存标签项
qywxTagService
.
saveQywxTagByQywxGroupKey
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
qywxTagGroupDTO
);
qywxTagService
.
saveQywxTagByQywxGroupKey
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
qywxTagGroupDTO
);
//标签项
//标签项
}
else
if
(
Objects
.
equals
(
relationTypeEnum
.
getTagType
(),
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getTagType
()))
{
}
else
if
(
Objects
.
equals
(
relationTypeEnum
.
getTagType
(),
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getTagType
()))
{
//查找对应的标签组 如果标签组关联了
//查找对应的标签组 如果标签组关联了
List
<
String
>
ids
=
new
ArrayList
<>();
List
<
String
>
ids
=
new
ArrayList
<>();
ids
.
add
(
callbackDTO
.
getTagId
());
ids
.
add
(
callbackDTO
.
getTagId
());
QywxGetCorpTagListDTO
tagDetail
=
qywxSuiteApiService
.
getCorpTagList
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
ids
,
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getType
());
QywxGetCorpTagListDTO
tagDetail
=
qywxSuiteApiService
.
getCorpTagList
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
ids
,
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getType
());
if
(
tagDetail
.
getErrcode
()
!=
0
)
{
if
(
tagDetail
.
getErrcode
()
!=
0
)
{
logger
.
info
(
"查询失败,无需操作:{}"
,
JSONObject
.
toJSONString
(
tagDetail
));
logger
.
info
(
"查询失败,无需操作:{}"
,
JSONObject
.
toJSONString
(
tagDetail
));
return
;
return
;
}
}
if
(
CollectionUtils
.
isEmpty
(
tagDetail
.
getTagGroup
()))
{
if
(
CollectionUtils
.
isEmpty
(
tagDetail
.
getTagGroup
()))
{
logger
.
info
(
"标签组不存在:{}"
,
JSONObject
.
toJSONString
(
tagDetail
));
logger
.
info
(
"标签组不存在:{}"
,
JSONObject
.
toJSONString
(
tagDetail
));
return
;
return
;
}
}
QywxTagGroupDTO
qywxTagGroupDTO
=
tagDetail
.
getTagGroup
().
get
(
0
);
QywxTagGroupDTO
qywxTagGroupDTO
=
tagDetail
.
getTagGroup
().
get
(
0
);
//保存标签项
//保存标签项
qywxTagService
.
saveQywxTagByQywxGroupKey
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
qywxTagGroupDTO
);
qywxTagService
.
saveQywxTagByQywxGroupKey
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
qywxTagGroupDTO
);
}
}
}
}
@Override
@Override
public
void
delQywxTag
(
QywxTagCallbackDTO
callbackDTO
)
{
public
void
delQywxTag
(
QywxTagCallbackDTO
callbackDTO
)
{
logger
.
info
(
"企业微信删除标签回调:{}"
,
JSONObject
.
toJSONString
(
callbackDTO
));
logger
.
info
(
"企业微信删除标签回调:{}"
,
JSONObject
.
toJSONString
(
callbackDTO
));
if
(!
config
.
getWxSuiteid
().
equals
(
callbackDTO
.
getSuiteId
()))
{
if
(!
config
.
getWxSuiteid
().
equals
(
callbackDTO
.
getSuiteId
()))
{
logger
.
info
(
"非第三方回调"
);
logger
.
info
(
"非第三方回调"
);
return
;
return
;
}
}
TabHaobanWxEnterprise
wxEnterpriseDto
=
wxEnterpriseService
.
getEnterpriseBycorpId
(
callbackDTO
.
getAuthCorpId
());
TabHaobanWxEnterprise
wxEnterpriseDto
=
wxEnterpriseService
.
getEnterpriseBycorpId
(
callbackDTO
.
getAuthCorpId
());
if
(
null
==
wxEnterpriseDto
)
{
if
(
null
==
wxEnterpriseDto
)
{
logger
.
info
(
"企业不存在:{}"
,
callbackDTO
.
getAuthCorpId
());
logger
.
info
(
"企业不存在:{}"
,
callbackDTO
.
getAuthCorpId
());
return
;
return
;
}
}
QywxTagRelationTypeEnum
relationTypeEnum
=
QywxTagRelationTypeEnum
.
getByTagType
(
callbackDTO
.
getTagType
());
QywxTagRelationTypeEnum
relationTypeEnum
=
QywxTagRelationTypeEnum
.
getByTagType
(
callbackDTO
.
getTagType
());
if
(
relationTypeEnum
==
null
)
{
if
(
relationTypeEnum
==
null
)
{
logger
.
error
(
"未找到对应关系,{}"
,
callbackDTO
.
getTagType
());
logger
.
error
(
"未找到对应关系,{}"
,
callbackDTO
.
getTagType
());
return
;
return
;
}
}
//标签组
//标签组
if
(
Objects
.
equals
(
relationTypeEnum
.
getTagType
(),
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getTagType
()))
{
if
(
Objects
.
equals
(
relationTypeEnum
.
getTagType
(),
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getTagType
()))
{
TabQywxTag
qywxGroupKey
=
qywxTagService
.
getQywxTagByQywxGroupKey
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
callbackDTO
.
getTagId
());
TabQywxTag
qywxGroupKey
=
qywxTagService
.
getQywxTagByQywxGroupKey
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
callbackDTO
.
getTagId
());
if
(
null
==
qywxGroupKey
)
{
if
(
null
==
qywxGroupKey
)
{
logger
.
info
(
"原型不存在,不需要处理"
);
logger
.
info
(
"原型不存在,不需要处理"
);
return
;
return
;
}
}
List
<
TabQywxTagRelation
>
relations
=
qywxTagService
.
listQywxTagRelationByQywxTagId
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
qywxGroupKey
.
getQywxTagId
());
List
<
TabQywxTagRelation
>
relations
=
qywxTagService
.
listQywxTagRelationByQywxTagId
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
qywxGroupKey
.
getQywxTagId
());
//没有同步的关系 删除保存企业微信标签
//没有同步的关系 删除保存企业微信标签
if
(
CollectionUtils
.
isEmpty
(
relations
))
{
if
(
CollectionUtils
.
isEmpty
(
relations
))
{
logger
.
info
(
"删除保存的企业微信标签"
);
logger
.
info
(
"删除保存的企业微信标签"
);
qywxTagService
.
delQywxTag
(
callbackDTO
.
getTagId
(),
wxEnterpriseDto
.
getWxEnterpriseId
());
qywxTagService
.
delQywxTag
(
callbackDTO
.
getTagId
(),
wxEnterpriseDto
.
getWxEnterpriseId
());
return
;
return
;
}
}
TabQywxTagRelation
relation
=
relations
.
stream
().
findFirst
().
get
();
TabQywxTagRelation
relation
=
relations
.
stream
().
findFirst
().
get
();
logger
.
info
(
"删除标签组 关闭同步:{}"
,
relation
.
getMemberTagId
());
logger
.
info
(
"删除标签组 关闭同步:{}"
,
relation
.
getMemberTagId
());
//删除同步 关闭同步
//删除同步 关闭同步
qywxTagService
.
closeSync
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
relation
.
getMemberTagId
());
qywxTagService
.
closeSync
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
relation
.
getMemberTagId
());
qywxTagService
.
delQywxTag
(
callbackDTO
.
getTagId
(),
wxEnterpriseDto
.
getWxEnterpriseId
());
qywxTagService
.
delQywxTag
(
callbackDTO
.
getTagId
(),
wxEnterpriseDto
.
getWxEnterpriseId
());
saveCloseTask
(
qywxGroupKey
.
getQywxGroupName
().
substring
(
3
),
"-1"
,
relation
.
getWxEnterpriseId
(),
relation
.
getEnterpriseId
());
saveCloseTask
(
qywxGroupKey
.
getQywxGroupName
().
substring
(
3
),
"-1"
,
relation
.
getWxEnterpriseId
(),
relation
.
getEnterpriseId
());
//标签项
//标签项
}
else
if
(
Objects
.
equals
(
relationTypeEnum
.
getTagType
(),
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getTagType
()))
{
}
else
if
(
Objects
.
equals
(
relationTypeEnum
.
getTagType
(),
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getTagType
()))
{
TabQywxTagRelation
qywxTagRelation
=
qywxTagService
.
getQywxTagRelationByQywxKey
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
callbackDTO
.
getTagId
(),
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getType
());
TabQywxTagRelation
qywxTagRelation
=
qywxTagService
.
getQywxTagRelationByQywxKey
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
callbackDTO
.
getTagId
(),
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getType
());
if
(
null
==
qywxTagRelation
)
{
if
(
null
==
qywxTagRelation
)
{
logger
.
info
(
"没有关联,无需操作"
);
logger
.
info
(
"没有关联,无需操作"
);
qywxTagService
.
delQywxTagItemById
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
qywxTagRelation
.
getQywxTagItemId
());
qywxTagService
.
delQywxTagItemById
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
qywxTagRelation
.
getQywxTagItemId
());
return
;
return
;
}
}
logger
.
info
(
"删除标签 关闭同步:{}"
,
qywxTagRelation
.
getMemberTagId
());
logger
.
info
(
"删除标签 关闭同步:{}"
,
qywxTagRelation
.
getMemberTagId
());
//删除同步 关闭同步
//删除同步 关闭同步
this
.
closeSync
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
qywxTagRelation
.
getMemberTagId
());
this
.
closeSync
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
qywxTagRelation
.
getMemberTagId
());
TabQywxTag
tabQywxTag
=
qywxTagService
.
getQywxTagByQywxTagId
(
qywxTagRelation
.
getWxEnterpriseId
(),
qywxTagRelation
.
getQywxTagId
());
TabQywxTag
tabQywxTag
=
qywxTagService
.
getQywxTagByQywxTagId
(
qywxTagRelation
.
getWxEnterpriseId
(),
qywxTagRelation
.
getQywxTagId
());
saveCloseTask
(
tabQywxTag
.
getQywxGroupName
(),
"-1"
,
qywxTagRelation
.
getWxEnterpriseId
(),
qywxTagRelation
.
getEnterpriseId
());
saveCloseTask
(
tabQywxTag
.
getQywxGroupName
(),
"-1"
,
qywxTagRelation
.
getWxEnterpriseId
(),
qywxTagRelation
.
getEnterpriseId
());
}
}
}
}
private
void
saveCloseTask
(
String
tagName
,
String
staffId
,
String
wxEnterpriseId
,
String
enterpriseId
)
{
private
void
saveCloseTask
(
String
tagName
,
String
staffId
,
String
wxEnterpriseId
,
String
enterpriseId
)
{
String
content
=
tagName
+
"-关闭标签同步成功"
;
String
content
=
tagName
+
"-关闭标签同步成功"
;
qywxTagSyncApiService
.
saveCloseTask
(
staffId
,
wxEnterpriseId
,
enterpriseId
,
content
,
QywxTaskStatusEnum
.
ALL_SUCCESS
.
getType
());
qywxTagSyncApiService
.
saveCloseTask
(
staffId
,
wxEnterpriseId
,
enterpriseId
,
content
,
QywxTaskStatusEnum
.
ALL_SUCCESS
.
getType
());
}
}
@Override
@Override
public
void
editQywxTag
(
QywxTagCallbackDTO
callbackDTO
)
{
public
void
editQywxTag
(
QywxTagCallbackDTO
callbackDTO
)
{
logger
.
info
(
"企业微信修改标签回调:{}"
,
JSONObject
.
toJSONString
(
callbackDTO
));
logger
.
info
(
"企业微信修改标签回调:{}"
,
JSONObject
.
toJSONString
(
callbackDTO
));
if
(!
config
.
getWxSuiteid
().
equals
(
callbackDTO
.
getSuiteId
()))
{
if
(!
config
.
getWxSuiteid
().
equals
(
callbackDTO
.
getSuiteId
()))
{
logger
.
info
(
"非第三方回调"
);
logger
.
info
(
"非第三方回调"
);
return
;
return
;
}
}
TabHaobanWxEnterprise
wxEnterpriseDto
=
wxEnterpriseService
.
getEnterpriseBycorpId
(
callbackDTO
.
getAuthCorpId
());
TabHaobanWxEnterprise
wxEnterpriseDto
=
wxEnterpriseService
.
getEnterpriseBycorpId
(
callbackDTO
.
getAuthCorpId
());
if
(
null
==
wxEnterpriseDto
)
{
if
(
null
==
wxEnterpriseDto
)
{
logger
.
info
(
"企业不存在:{}"
,
callbackDTO
.
getAuthCorpId
());
logger
.
info
(
"企业不存在:{}"
,
callbackDTO
.
getAuthCorpId
());
return
;
return
;
}
}
QywxTagRelationTypeEnum
relationTypeEnum
=
QywxTagRelationTypeEnum
.
getByTagType
(
callbackDTO
.
getTagType
());
QywxTagRelationTypeEnum
relationTypeEnum
=
QywxTagRelationTypeEnum
.
getByTagType
(
callbackDTO
.
getTagType
());
if
(
relationTypeEnum
==
null
)
{
if
(
relationTypeEnum
==
null
)
{
logger
.
error
(
"未找到对应关系,{}"
,
callbackDTO
.
getTagType
());
logger
.
error
(
"未找到对应关系,{}"
,
callbackDTO
.
getTagType
());
return
;
return
;
}
}
String
wxEnterpriseId
=
wxEnterpriseDto
.
getWxEnterpriseId
()
;
String
wxEnterpriseId
=
wxEnterpriseDto
.
getWxEnterpriseId
()
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
//标签组
//标签组
if
(
Objects
.
equals
(
relationTypeEnum
.
getTagType
(),
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getTagType
()))
{
if
(
Objects
.
equals
(
relationTypeEnum
.
getTagType
(),
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getTagType
()))
{
//判断是否存在关联 存在需要同步回去
//判断是否存在关联 存在需要同步回去
TabQywxTagRelation
relaton
=
qywxTagService
.
getQywxTagRelationByQywxKey
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
callbackDTO
.
getTagId
(),
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getType
());
TabQywxTagRelation
relaton
=
qywxTagService
.
getQywxTagRelationByQywxKey
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
callbackDTO
.
getTagId
(),
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getType
());
if
(
null
==
relaton
)
{
if
(
null
==
relaton
)
{
logger
.
info
(
"原型不存在,不需要处理"
);
logger
.
info
(
"原型不存在,不需要处理"
);
return
;
return
;
}
}
//名称同步回去
//名称同步回去
TabQywxTag
qywxGroupKey
=
qywxTagService
.
getQywxTagByQywxGroupKey
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
callbackDTO
.
getTagId
());
TabQywxTag
qywxGroupKey
=
qywxTagService
.
getQywxTagByQywxGroupKey
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
callbackDTO
.
getTagId
());
QywxTagDTO
qywxTagDTO
=
new
QywxTagDTO
();
QywxTagDTO
qywxTagDTO
=
new
QywxTagDTO
();
qywxTagDTO
.
setId
(
callbackDTO
.
getTagId
());
qywxTagDTO
.
setId
(
callbackDTO
.
getTagId
());
qywxTagDTO
.
setName
(
qywxGroupKey
.
getQywxGroupName
());
qywxTagDTO
.
setName
(
qywxGroupKey
.
getQywxGroupName
());
qywxTagDTO
.
setOrder
(
qywxGroupKey
.
getOrder
());
qywxTagDTO
.
setOrder
(
qywxGroupKey
.
getOrder
());
qywxSuiteApiService
.
editCorpTagNameOrOrder
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
qywxTagDTO
);
qywxSuiteApiService
.
editCorpTagNameOrOrder
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
qywxTagDTO
);
//标签项
//标签项
}
else
if
(
Objects
.
equals
(
relationTypeEnum
.
getTagType
(),
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getTagType
()))
{
}
else
if
(
Objects
.
equals
(
relationTypeEnum
.
getTagType
(),
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getTagType
()))
{
TabQywxTagItem
qywxTagItem
=
qywxTagService
.
getQywxTagItemByQywxItemKey
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
callbackDTO
.
getTagId
());
TabQywxTagItem
qywxTagItem
=
qywxTagService
.
getQywxTagItemByQywxItemKey
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
callbackDTO
.
getTagId
());
if
(
null
==
qywxTagItem
)
{
if
(
null
==
qywxTagItem
)
{
logger
.
info
(
"没有关联,无需操作"
);
logger
.
info
(
"没有关联,无需操作"
);
return
;
return
;
}
}
List
<
TabQywxTagRelation
>
relations
=
qywxTagService
.
listQywxTagRelationByQywxTagId
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
qywxTagItem
.
getQywxTagId
());
List
<
TabQywxTagRelation
>
relations
=
qywxTagService
.
listQywxTagRelationByQywxTagId
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
qywxTagItem
.
getQywxTagId
());
if
(
CollectionUtils
.
isEmpty
(
relations
))
{
if
(
CollectionUtils
.
isEmpty
(
relations
))
{
logger
.
info
(
"直接删除标签项"
);
logger
.
info
(
"直接删除标签项"
);
qywxTagService
.
delQywxTagItemById
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
qywxTagItem
.
getQywxTagItemId
());
qywxTagService
.
delQywxTagItemById
(
wxEnterpriseDto
.
getWxEnterpriseId
(),
qywxTagItem
.
getQywxTagItemId
());
return
;
return
;
}
}
//名称同步回去
//名称同步回去
QywxTagDTO
qywxTagDTO
=
new
QywxTagDTO
();
QywxTagDTO
qywxTagDTO
=
new
QywxTagDTO
();
qywxTagDTO
.
setId
(
callbackDTO
.
getTagId
());
qywxTagDTO
.
setId
(
callbackDTO
.
getTagId
());
qywxTagDTO
.
setName
(
qywxTagItem
.
getQywxTagName
());
qywxTagDTO
.
setName
(
qywxTagItem
.
getQywxTagName
());
qywxTagDTO
.
setOrder
(
qywxTagItem
.
getOrder
());
qywxTagDTO
.
setOrder
(
qywxTagItem
.
getOrder
());
qywxSuiteApiService
.
editCorpTagNameOrOrder
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
qywxTagDTO
);
qywxSuiteApiService
.
editCorpTagNameOrOrder
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
qywxTagDTO
);
}
}
}
}
@Override
@Override
public
ServiceResponse
syncFriendTagToQywxByExternalUserId
(
String
wxEnterpriseId
,
String
enterpriseId
,
String
externalUserId
,
List
<
String
>
tagItemIds
)
{
public
ServiceResponse
syncFriendTagToQywxByExternalUserId
(
String
wxEnterpriseId
,
String
enterpriseId
,
String
externalUserId
,
List
<
String
>
tagItemIds
)
{
logger
.
info
(
"同步好友标签到企业微信:{},{},{},{}"
,
wxEnterpriseId
,
enterpriseId
,
externalUserId
,
JSONObject
.
toJSONString
(
tagItemIds
));
logger
.
info
(
"同步好友标签到企业微信:{},{},{},{}"
,
wxEnterpriseId
,
enterpriseId
,
externalUserId
,
JSONObject
.
toJSONString
(
tagItemIds
));
ServiceResponse
resp
=
new
ServiceResponse
();
ServiceResponse
resp
=
new
ServiceResponse
();
//获取需要同步的标签
//获取需要同步的标签
QywxSyncTagFormatPojo
syncTagFormat
=
listSyncTagItems
(
wxEnterpriseId
);
QywxSyncTagFormatPojo
syncTagFormat
=
listSyncTagItems
(
wxEnterpriseId
);
if
(
syncTagFormat
==
null
)
{
if
(
syncTagFormat
==
null
)
{
logger
.
info
(
"没有需要同步的标签"
);
logger
.
info
(
"没有需要同步的标签"
);
resp
.
setCode
(
2
);
resp
.
setCode
(
2
);
resp
.
setMessage
(
"没有要同步的标签"
);
resp
.
setMessage
(
"没有要同步的标签"
);
return
resp
;
return
resp
;
}
}
//该会员要同步的打的企业微信标签 该商户下
//该会员要同步的打的企业微信标签 该商户下
Set
<
String
>
entQywxTagKeys
=
tagItemIds
.
stream
().
filter
(
tagItemId
->
syncTagFormat
.
getGicToQywxTagItemIdMap
().
containsKey
(
tagItemId
))
Set
<
String
>
entQywxTagKeys
=
tagItemIds
.
stream
().
filter
(
tagItemId
->
syncTagFormat
.
getGicToQywxTagItemIdMap
().
containsKey
(
tagItemId
))
.
map
(
tagItemId
->
syncTagFormat
.
getGicToQywxTagItemIdMap
().
get
(
tagItemId
)).
collect
(
Collectors
.
toSet
());
.
map
(
tagItemId
->
syncTagFormat
.
getGicToQywxTagItemIdMap
().
get
(
tagItemId
)).
collect
(
Collectors
.
toSet
());
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
//查询外部联系人
//查询外部联系人
String
wxSuiteid
=
config
.
getWxSuiteid
();
String
wxSuiteid
=
config
.
getWxSuiteid
();
String
externalUseridInfo
=
qywxUserApiService
.
getExternalUseridInfo
(
qwDTO
.
getThirdCorpid
(),
wxSuiteid
,
externalUserId
);
String
externalUseridInfo
=
qywxUserApiService
.
getExternalUseridInfo
(
qwDTO
.
getThirdCorpid
(),
wxSuiteid
,
externalUserId
);
if
(
StringUtils
.
isBlank
(
externalUseridInfo
))
{
if
(
StringUtils
.
isBlank
(
externalUseridInfo
))
{
logger
.
info
(
"好友不存在"
);
logger
.
info
(
"好友不存在"
);
resp
.
setCode
(
3
);
resp
.
setCode
(
3
);
resp
.
setMessage
(
"好友不存在"
);
resp
.
setMessage
(
"好友不存在"
);
return
resp
;
return
resp
;
}
else
if
(
externalUseridInfo
.
equals
(
"1"
))
{
}
else
if
(
externalUseridInfo
.
equals
(
"1"
))
{
logger
.
info
(
"限制次数"
);
logger
.
info
(
"限制次数"
);
resp
.
setCode
(
45033
);
resp
.
setCode
(
45033
);
resp
.
setMessage
(
"getExternalUseridInfo接口次数限制"
);
resp
.
setMessage
(
"getExternalUseridInfo接口次数限制"
);
return
resp
;
return
resp
;
}
}
Map
<
String
,
Set
<
String
>>
externalTagMap
=
getExternalTagMap
(
externalUseridInfo
,
wxEnterpriseId
);
Map
<
String
,
Set
<
String
>>
externalTagMap
=
getExternalTagMap
(
externalUseridInfo
,
wxEnterpriseId
);
if
(
null
==
externalTagMap
)
{
if
(
null
==
externalTagMap
)
{
logger
.
info
(
"没有好友需要同步"
);
logger
.
info
(
"没有好友需要同步"
);
resp
.
setCode
(
5
);
resp
.
setCode
(
5
);
resp
.
setMessage
(
"没有好友需要同步"
);
resp
.
setMessage
(
"没有好友需要同步"
);
return
resp
;
return
resp
;
}
}
//商户下设置同步的企业微信标签keys
//商户下设置同步的企业微信标签keys
Set
<
String
>
entQywxTagSyncKeys
=
syncTagFormat
.
getEntQywxTagKeysMap
().
get
(
enterpriseId
);
Set
<
String
>
entQywxTagSyncKeys
=
syncTagFormat
.
getEntQywxTagKeysMap
().
get
(
enterpriseId
);
if
(
CollectionUtils
.
isEmpty
(
entQywxTagSyncKeys
))
{
if
(
CollectionUtils
.
isEmpty
(
entQywxTagSyncKeys
))
{
logger
.
info
(
"该商户下没有标签"
);
logger
.
info
(
"该商户下没有标签"
);
resp
.
setCode
(
6
);
resp
.
setCode
(
6
);
resp
.
setMessage
(
"该商户下没有标签"
);
resp
.
setMessage
(
"该商户下没有标签"
);
return
resp
;
return
resp
;
}
}
//同步好友
//同步好友
externalTagMap
.
forEach
((
wxUserId
,
haveTagKes
)
->
{
externalTagMap
.
forEach
((
wxUserId
,
haveTagKes
)
->
{
//该用户在该商户下打的标签
//该用户在该商户下打的标签
Sets
.
SetView
<
String
>
entHasSetQywxTagKeys
=
Sets
.
intersection
(
haveTagKes
,
entQywxTagSyncKeys
);
Sets
.
SetView
<
String
>
entHasSetQywxTagKeys
=
Sets
.
intersection
(
haveTagKes
,
entQywxTagSyncKeys
);
//获取需要打的标签
//获取需要打的标签
Sets
.
SetView
<
String
>
needSetTags
=
Sets
.
difference
(
entQywxTagKeys
,
entHasSetQywxTagKeys
);
Sets
.
SetView
<
String
>
needSetTags
=
Sets
.
difference
(
entQywxTagKeys
,
entHasSetQywxTagKeys
);
//需要删除的标签
//需要删除的标签
Sets
.
SetView
<
String
>
needDelTags
=
Sets
.
difference
(
entHasSetQywxTagKeys
,
entQywxTagKeys
);
Sets
.
SetView
<
String
>
needDelTags
=
Sets
.
difference
(
entHasSetQywxTagKeys
,
entQywxTagKeys
);
logger
.
info
(
"该用户打标签:{}"
,
wxUserId
);
logger
.
info
(
"该用户打标签:{}"
,
wxUserId
);
if
(
CollectionUtils
.
isEmpty
(
needDelTags
)
&&
CollectionUtils
.
isEmpty
(
needSetTags
))
{
if
(
CollectionUtils
.
isEmpty
(
needDelTags
)
&&
CollectionUtils
.
isEmpty
(
needSetTags
))
{
logger
.
info
(
"不需要操作:{},{}"
,
wxUserId
,
externalUserId
);
logger
.
info
(
"不需要操作:{},{}"
,
wxUserId
,
externalUserId
);
return
;
return
;
}
}
JSONObject
jsonObject
=
new
JSONObject
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"corpid"
,
qwDTO
.
getThirdCorpid
());
jsonObject
.
put
(
"corpid"
,
qwDTO
.
getThirdCorpid
());
jsonObject
.
put
(
"suiteId"
,
wxSuiteid
);
jsonObject
.
put
(
"suiteId"
,
wxSuiteid
);
jsonObject
.
put
(
"wxUserId"
,
wxUserId
);
jsonObject
.
put
(
"wxUserId"
,
wxUserId
);
jsonObject
.
put
(
"externalUserId"
,
externalUserId
);
jsonObject
.
put
(
"externalUserId"
,
externalUserId
);
if
(
CollectionUtils
.
isNotEmpty
(
needSetTags
))
{
if
(
CollectionUtils
.
isNotEmpty
(
needSetTags
))
{
jsonObject
.
put
(
"needSetTags"
,
StringUtils
.
join
(
needSetTags
,
","
));
jsonObject
.
put
(
"needSetTags"
,
StringUtils
.
join
(
needSetTags
,
","
));
}
}
if
(
CollectionUtils
.
isNotEmpty
(
needDelTags
))
{
if
(
CollectionUtils
.
isNotEmpty
(
needDelTags
))
{
jsonObject
.
put
(
"needDelTags"
,
StringUtils
.
join
(
needDelTags
,
","
));
jsonObject
.
put
(
"needDelTags"
,
StringUtils
.
join
(
needDelTags
,
","
));
}
}
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
try
{
try
{
logger
.
info
(
"qywxMarkTagMq 该用户打标签:{}"
,
jsonObject
.
toJSONString
());
logger
.
info
(
"qywxMarkTagMq 该用户打标签:{}"
,
jsonObject
.
toJSONString
());
clientInstance
.
sendMessage
(
"qywxMarkTagMq"
,
jsonObject
.
toJSONString
());
clientInstance
.
sendMessage
(
"qywxMarkTagMq"
,
jsonObject
.
toJSONString
());
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
info
(
"企微标签同步qywxMarkTagMq发送失败:{}"
,
e
.
getMessage
(),
e
);
logger
.
info
(
"企微标签同步qywxMarkTagMq发送失败:{}"
,
e
.
getMessage
(),
e
);
}
}
});
});
return
resp
;
return
resp
;
}
}
/**
/**
* 获取以及同步的标签序列表
* 获取以及同步的标签序列表
*/
*/
private
QywxSyncTagFormatPojo
listSyncTagItems
(
String
wxEnterpriseId
)
{
private
QywxSyncTagFormatPojo
listSyncTagItems
(
String
wxEnterpriseId
)
{
QywxSyncTagFormatPojo
pojo
=
new
QywxSyncTagFormatPojo
();
QywxSyncTagFormatPojo
pojo
=
new
QywxSyncTagFormatPojo
();
List
<
TabQywxTagRelation
>
relations
=
qywxTagService
.
listAllQywxRelation
(
wxEnterpriseId
);
List
<
TabQywxTagRelation
>
relations
=
qywxTagService
.
listAllQywxRelation
(
wxEnterpriseId
);
if
(
CollectionUtils
.
isEmpty
(
relations
))
{
if
(
CollectionUtils
.
isEmpty
(
relations
))
{
return
null
;
return
null
;
}
}
//企业微信标签key 关联对应的 gic标签关系
//企业微信标签key 关联对应的 gic标签关系
Map
<
String
,
TabQywxTagRelation
>
relationMap
=
relations
.
stream
().
filter
(
dto
->
dto
.
getRelationType
()
==
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getType
()).
collect
(
Collectors
.
toMap
(
dto
->
dto
.
getQywxTagItemId
(),
dto
->
dto
));
Map
<
String
,
TabQywxTagRelation
>
relationMap
=
relations
.
stream
().
filter
(
dto
->
dto
.
getRelationType
()
==
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getType
()).
collect
(
Collectors
.
toMap
(
dto
->
dto
.
getQywxTagItemId
(),
dto
->
dto
));
if
(
MapUtils
.
isEmpty
(
relationMap
))
{
if
(
MapUtils
.
isEmpty
(
relationMap
))
{
return
null
;
return
null
;
}
}
List
<
String
>
syncTagItemsIds
=
relationMap
.
keySet
().
stream
().
collect
(
Collectors
.
toList
());
List
<
String
>
syncTagItemsIds
=
relationMap
.
keySet
().
stream
().
collect
(
Collectors
.
toList
());
//同步的标签项
//同步的标签项
List
<
TabQywxTagItem
>
tagItems
=
qywxTagService
.
listQywxTagItemByIds
(
wxEnterpriseId
,
syncTagItemsIds
);
List
<
TabQywxTagItem
>
tagItems
=
qywxTagService
.
listQywxTagItemByIds
(
wxEnterpriseId
,
syncTagItemsIds
);
//企业微信标签id 对应的标签
//企业微信标签id 对应的标签
Map
<
String
,
TabQywxTagItem
>
qywxTagItemMap
=
tagItems
.
stream
().
collect
(
Collectors
.
toMap
(
dto
->
dto
.
getQywxTagItemId
(),
dto
->
dto
));
Map
<
String
,
TabQywxTagItem
>
qywxTagItemMap
=
tagItems
.
stream
().
collect
(
Collectors
.
toMap
(
dto
->
dto
.
getQywxTagItemId
(),
dto
->
dto
));
//企业微信标签与gic标签id的对应关系
//企业微信标签与gic标签id的对应关系
Map
<
String
,
String
>
qywxToGicTagItemIdMap
=
syncTagItemsIds
.
stream
().
collect
(
Collectors
.
toMap
(
qywxTagId
->
qywxTagItemMap
.
get
(
qywxTagId
).
getQywxTagKey
(),
qywxTagId
->
relationMap
.
get
(
qywxTagId
).
getTagItemId
()));
Map
<
String
,
String
>
qywxToGicTagItemIdMap
=
syncTagItemsIds
.
stream
().
collect
(
Collectors
.
toMap
(
qywxTagId
->
qywxTagItemMap
.
get
(
qywxTagId
).
getQywxTagKey
(),
qywxTagId
->
relationMap
.
get
(
qywxTagId
).
getTagItemId
()));
//gic标签与企业微信标签id的对应关系
//gic标签与企业微信标签id的对应关系
Map
<
String
,
String
>
gicToQywxTagItemIdMap
=
syncTagItemsIds
.
stream
().
collect
(
Collectors
.
toMap
(
qywxTagId
->
relationMap
.
get
(
qywxTagId
).
getTagItemId
(),
qywxTagId
->
qywxTagItemMap
.
get
(
qywxTagId
).
getQywxTagKey
()));
Map
<
String
,
String
>
gicToQywxTagItemIdMap
=
syncTagItemsIds
.
stream
().
collect
(
Collectors
.
toMap
(
qywxTagId
->
relationMap
.
get
(
qywxTagId
).
getTagItemId
(),
qywxTagId
->
qywxTagItemMap
.
get
(
qywxTagId
).
getQywxTagKey
()));
//gic商户对应的已经同步的gic标签项列表
//gic商户对应的已经同步的gic标签项列表
Map
<
String
,
Set
<
String
>>
entGicTagItemIdMap
=
relations
.
stream
().
filter
(
dto
->
dto
.
getRelationType
()
==
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getType
())
Map
<
String
,
Set
<
String
>>
entGicTagItemIdMap
=
relations
.
stream
().
filter
(
dto
->
dto
.
getRelationType
()
==
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getType
())
.
collect
(
Collectors
.
groupingBy
(
dto
->
dto
.
getEnterpriseId
(),
Collectors
.
mapping
(
dto
->
dto
.
getTagItemId
(),
Collectors
.
toSet
())));
.
collect
(
Collectors
.
groupingBy
(
dto
->
dto
.
getEnterpriseId
(),
Collectors
.
mapping
(
dto
->
dto
.
getTagItemId
(),
Collectors
.
toSet
())));
//gic商户对应的已经同步的企业微信表亲列表
//gic商户对应的已经同步的企业微信表亲列表
Map
<
String
,
Set
<
String
>>
entQywxTagKeysMap
=
relations
.
stream
().
filter
(
dto
->
dto
.
getRelationType
()
==
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getType
())
Map
<
String
,
Set
<
String
>>
entQywxTagKeysMap
=
relations
.
stream
().
filter
(
dto
->
dto
.
getRelationType
()
==
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getType
())
.
collect
(
Collectors
.
groupingBy
(
dto
->
dto
.
getEnterpriseId
(),
Collectors
.
mapping
(
dto
->
gicToQywxTagItemIdMap
.
get
(
dto
.
getTagItemId
()),
Collectors
.
toSet
())));
.
collect
(
Collectors
.
groupingBy
(
dto
->
dto
.
getEnterpriseId
(),
Collectors
.
mapping
(
dto
->
gicToQywxTagItemIdMap
.
get
(
dto
.
getTagItemId
()),
Collectors
.
toSet
())));
pojo
.
setEntGicTagItemIdMap
(
entGicTagItemIdMap
);
pojo
.
setEntGicTagItemIdMap
(
entGicTagItemIdMap
);
pojo
.
setEntQywxTagKeysMap
(
entQywxTagKeysMap
);
pojo
.
setEntQywxTagKeysMap
(
entQywxTagKeysMap
);
pojo
.
setGicToQywxTagItemIdMap
(
gicToQywxTagItemIdMap
);
pojo
.
setGicToQywxTagItemIdMap
(
gicToQywxTagItemIdMap
);
pojo
.
setQywxToGicTagItemIdMap
(
qywxToGicTagItemIdMap
);
pojo
.
setQywxToGicTagItemIdMap
(
qywxToGicTagItemIdMap
);
return
pojo
;
return
pojo
;
}
}
@Override
@Override
public
ServiceResponse
syncQywxTagToGicByExternalUserId
(
String
wxEnterpriseId
,
String
externalUserId
,
String
wxUserId
)
{
public
ServiceResponse
syncQywxTagToGicByExternalUserId
(
String
wxEnterpriseId
,
String
externalUserId
,
String
wxUserId
)
{
//刷新标签的时候不允许同步
//刷新标签的时候不允许同步
ServiceResponse
resp
=
new
ServiceResponse
();
ServiceResponse
resp
=
new
ServiceResponse
();
//所有以及关联同步的标签
//所有以及关联同步的标签
QywxSyncTagFormatPojo
syncTagFormatPojo
=
listSyncTagItems
(
wxEnterpriseId
);
QywxSyncTagFormatPojo
syncTagFormatPojo
=
listSyncTagItems
(
wxEnterpriseId
);
if
(
syncTagFormatPojo
==
null
)
{
if
(
syncTagFormatPojo
==
null
)
{
logger
.
info
(
"没有需要同步的标签,wxUserId:{},externalUserId:{},wxId:{}"
,
wxUserId
,
externalUserId
,
wxEnterpriseId
);
logger
.
info
(
"没有需要同步的标签,wxUserId:{},externalUserId:{},wxId:{}"
,
wxUserId
,
externalUserId
,
wxEnterpriseId
);
resp
.
setMessage
(
"没有需要同步的标签"
);
resp
.
setMessage
(
"没有需要同步的标签"
);
return
resp
;
return
resp
;
}
}
//企业微信同步的标签key
//企业微信同步的标签key
Set
<
String
>
qywxTagKeys
=
syncTagFormatPojo
.
getQywxToGicTagItemIdMap
().
keySet
();
Set
<
String
>
qywxTagKeys
=
syncTagFormatPojo
.
getQywxToGicTagItemIdMap
().
keySet
();
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
//查询外部联系人
//查询外部联系人
String
externalUseridInfo
=
qywxUserApiService
.
getExternalUseridInfo
(
qwDTO
.
getThirdCorpid
()
,
config
.
getWxSuiteid
(),
externalUserId
);
String
externalUseridInfo
=
qywxUserApiService
.
getExternalUseridInfo
(
qwDTO
.
getThirdCorpid
()
,
config
.
getWxSuiteid
(),
externalUserId
);
if
(
StringUtils
.
isBlank
(
externalUseridInfo
))
{
if
(
StringUtils
.
isBlank
(
externalUseridInfo
))
{
logger
.
info
(
"好友不存在"
);
logger
.
info
(
"好友不存在"
);
resp
.
setCode
(
2
);
resp
.
setCode
(
2
);
resp
.
setMessage
(
"好友不存在"
);
resp
.
setMessage
(
"好友不存在"
);
return
resp
;
return
resp
;
}
else
if
(
externalUseridInfo
.
equals
(
"1"
))
{
}
else
if
(
externalUseridInfo
.
equals
(
"1"
))
{
logger
.
info
(
"限制次数"
);
logger
.
info
(
"限制次数"
);
resp
.
setCode
(
45033
);
resp
.
setCode
(
45033
);
resp
.
setMessage
(
"限制次数"
);
resp
.
setMessage
(
"限制次数"
);
return
resp
;
return
resp
;
}
}
Map
<
String
,
Set
<
String
>>
externalTagMap
=
getExternalTagMap
(
externalUseridInfo
,
wxEnterpriseId
);
Map
<
String
,
Set
<
String
>>
externalTagMap
=
getExternalTagMap
(
externalUseridInfo
,
wxEnterpriseId
);
if
(
MapUtils
.
isEmpty
(
externalTagMap
))
{
if
(
MapUtils
.
isEmpty
(
externalTagMap
))
{
logger
.
info
(
"该用户没有不存在好友关系,获取不到关联导购打的标签,:externalUseridInfo:{}"
,
externalUseridInfo
);
logger
.
info
(
"该用户没有不存在好友关系,获取不到关联导购打的标签,:externalUseridInfo:{}"
,
externalUseridInfo
);
resp
.
setMessage
(
"该用户没有不存在好友关系,获取不到关联导购打的标签"
);
resp
.
setMessage
(
"该用户没有不存在好友关系,获取不到关联导购打的标签"
);
return
resp
;
return
resp
;
}
}
//当前操作用户企业打的标签
//当前操作用户企业打的标签
Set
<
String
>
staffChangeTagKeys
=
externalTagMap
.
get
(
wxUserId
);
Set
<
String
>
staffChangeTagKeys
=
externalTagMap
.
get
(
wxUserId
);
if
(
CollectionUtils
.
isEmpty
(
staffChangeTagKeys
))
{
if
(
CollectionUtils
.
isEmpty
(
staffChangeTagKeys
))
{
logger
.
info
(
"该用户没有不存在好友关系,获取不到关联导购打的标签,wxUserId:{}"
,
wxUserId
);
logger
.
info
(
"该用户没有不存在好友关系,获取不到关联导购打的标签,wxUserId:{}"
,
wxUserId
);
resp
.
setMessage
(
"该用户没有不存在好友关系,获取不到关联导购打的标签"
);
resp
.
setMessage
(
"该用户没有不存在好友关系,获取不到关联导购打的标签"
);
return
resp
;
return
resp
;
}
}
Sets
.
SetView
<
String
>
staffHasSetTagKeys
=
Sets
.
intersection
(
staffChangeTagKeys
,
qywxTagKeys
);
Sets
.
SetView
<
String
>
staffHasSetTagKeys
=
Sets
.
intersection
(
staffChangeTagKeys
,
qywxTagKeys
);
//获取该外部联系人的所有会员
//获取该外部联系人的所有会员
List
<
TabHaobanExternalClerkRelated
>
clerkRelateds
=
externalClerkRelatedService
.
listExternalByExternalUserid
(
wxEnterpriseId
,
externalUserId
);
List
<
TabHaobanExternalClerkRelated
>
clerkRelateds
=
externalClerkRelatedService
.
listExternalByExternalUserid
(
wxEnterpriseId
,
externalUserId
);
if
(
CollectionUtils
.
isEmpty
(
clerkRelateds
))
{
if
(
CollectionUtils
.
isEmpty
(
clerkRelateds
))
{
logger
.
info
(
"该用户没关联对应的好友:{}"
,
externalUserId
);
logger
.
info
(
"该用户没关联对应的好友:{}"
,
externalUserId
);
resp
.
setMessage
(
"该用户没关联对应的好友"
);
resp
.
setMessage
(
"该用户没关联对应的好友"
);
return
resp
;
return
resp
;
}
}
//企业下的企业微信标签对应关系
//企业下的企业微信标签对应关系
Map
<
String
,
Set
<
String
>>
entQywxTagKeysMap
=
syncTagFormatPojo
.
getEntQywxTagKeysMap
();
Map
<
String
,
Set
<
String
>>
entQywxTagKeysMap
=
syncTagFormatPojo
.
getEntQywxTagKeysMap
();
Map
<
String
,
Set
<
String
>>
entGicTagItemIdMap
=
syncTagFormatPojo
.
getEntGicTagItemIdMap
();
Map
<
String
,
Set
<
String
>>
entGicTagItemIdMap
=
syncTagFormatPojo
.
getEntGicTagItemIdMap
();
List
<
String
>
hasSaveMemberId
=
new
ArrayList
<>();
List
<
String
>
hasSaveMemberId
=
new
ArrayList
<>();
for
(
TabHaobanExternalClerkRelated
clerkRelated
:
clerkRelateds
)
{
for
(
TabHaobanExternalClerkRelated
clerkRelated
:
clerkRelateds
)
{
logger
.
info
(
"需要处理的好友:{}"
,
JSONObject
.
toJSONString
(
clerkRelated
));
logger
.
info
(
"需要处理的好友:{}"
,
JSONObject
.
toJSONString
(
clerkRelated
));
//该会员在该企业已经同步 无需同步
//该会员在该企业已经同步 无需同步
if
(
hasSaveMemberId
.
contains
(
clerkRelated
.
getMemberId
()))
{
if
(
hasSaveMemberId
.
contains
(
clerkRelated
.
getMemberId
()))
{
continue
;
continue
;
}
}
hasSaveMemberId
.
add
(
clerkRelated
.
getMemberId
());
hasSaveMemberId
.
add
(
clerkRelated
.
getMemberId
());
//该会员所在企业下 配置的同步的标签列表
//该会员所在企业下 配置的同步的标签列表
Set
<
String
>
entQywxSyncTagKeys
=
entQywxTagKeysMap
.
get
(
clerkRelated
.
getEnterpriseId
());
Set
<
String
>
entQywxSyncTagKeys
=
entQywxTagKeysMap
.
get
(
clerkRelated
.
getEnterpriseId
());
Set
<
String
>
entQywxSyncTagItemIds
=
entGicTagItemIdMap
.
get
(
clerkRelated
.
getEnterpriseId
());
Set
<
String
>
entQywxSyncTagItemIds
=
entGicTagItemIdMap
.
get
(
clerkRelated
.
getEnterpriseId
());
if
(
CollectionUtils
.
isEmpty
(
entQywxSyncTagKeys
))
{
if
(
CollectionUtils
.
isEmpty
(
entQywxSyncTagKeys
))
{
logger
.
info
(
"该企业下没有配置需要同步的:{},{}"
,
externalUserId
,
clerkRelated
.
getEnterpriseId
());
logger
.
info
(
"该企业下没有配置需要同步的:{},{}"
,
externalUserId
,
clerkRelated
.
getEnterpriseId
());
continue
;
continue
;
}
}
String
memberId
=
externalClerkRelatedService
.
checkAndUpdateMemberByUnonId
(
clerkRelated
.
getEnterpriseId
(),
clerkRelated
.
getMemberId
(),
clerkRelated
.
getUnionid
());
String
memberId
=
externalClerkRelatedService
.
checkAndUpdateMemberByUnonId
(
clerkRelated
.
getEnterpriseId
(),
clerkRelated
.
getMemberId
(),
clerkRelated
.
getUnionid
());
if
(
null
==
memberId
)
{
if
(
null
==
memberId
)
{
logger
.
info
(
"会员不存在:{}"
,
externalUserId
);
logger
.
info
(
"会员不存在:{}"
,
externalUserId
);
continue
;
continue
;
}
}
//该会员打的标签
//该会员打的标签
List
<
MemberTagDTO
>
gicItems
=
memberTagService
.
listMemberTag
(
clerkRelated
.
getEnterpriseId
(),
memberId
);
List
<
MemberTagDTO
>
gicItems
=
memberTagService
.
listMemberTag
(
clerkRelated
.
getEnterpriseId
(),
memberId
);
Set
<
String
>
noSyncTagItemIds
=
new
HashSet
<>();
Set
<
String
>
noSyncTagItemIds
=
new
HashSet
<>();
if
(!
CollectionUtils
.
isEmpty
(
gicItems
))
{
if
(!
CollectionUtils
.
isEmpty
(
gicItems
))
{
noSyncTagItemIds
=
gicItems
.
stream
().
filter
(
item
->
!
entQywxSyncTagItemIds
.
contains
(
item
.
getTagsId
())).
map
(
dto
->
dto
.
getTagsId
()).
collect
(
Collectors
.
toSet
());
noSyncTagItemIds
=
gicItems
.
stream
().
filter
(
item
->
!
entQywxSyncTagItemIds
.
contains
(
item
.
getTagsId
())).
map
(
dto
->
dto
.
getTagsId
()).
collect
(
Collectors
.
toSet
());
logger
.
info
(
"没有同步的标签:{}"
,
JSONObject
.
toJSONString
(
noSyncTagItemIds
));
logger
.
info
(
"没有同步的标签:{}"
,
JSONObject
.
toJSONString
(
noSyncTagItemIds
));
}
}
//该企业下会员需要设置的标签
//该企业下会员需要设置的标签
Sets
.
SetView
<
String
>
entMemberNeedSetQywxKeys
=
Sets
.
intersection
(
staffHasSetTagKeys
,
entQywxSyncTagKeys
);
Sets
.
SetView
<
String
>
entMemberNeedSetQywxKeys
=
Sets
.
intersection
(
staffHasSetTagKeys
,
entQywxSyncTagKeys
);
Set
<
String
>
saveTagIds
=
entMemberNeedSetQywxKeys
.
stream
().
map
(
qywxKey
->
syncTagFormatPojo
.
getQywxToGicTagItemIdMap
().
get
(
qywxKey
)).
collect
(
Collectors
.
toSet
());
Set
<
String
>
saveTagIds
=
entMemberNeedSetQywxKeys
.
stream
().
map
(
qywxKey
->
syncTagFormatPojo
.
getQywxToGicTagItemIdMap
().
get
(
qywxKey
)).
collect
(
Collectors
.
toSet
());
saveTagIds
.
addAll
(
noSyncTagItemIds
);
saveTagIds
.
addAll
(
noSyncTagItemIds
);
logger
.
info
(
"该企业会员需要打的标签:{}"
,
JSONObject
.
toJSONString
(
entMemberNeedSetQywxKeys
));
logger
.
info
(
"该企业会员需要打的标签:{}"
,
JSONObject
.
toJSONString
(
entMemberNeedSetQywxKeys
));
//更新标签 会自动同步
//更新标签 会自动同步
if
(
CollectionUtils
.
isEmpty
(
saveTagIds
))
{
if
(
CollectionUtils
.
isEmpty
(
saveTagIds
))
{
saveMemberTags
(
new
HashSet
<>(),
clerkRelated
.
getEnterpriseId
(),
memberId
,
clerkRelated
.
getClerkId
());
saveMemberTags
(
new
HashSet
<>(),
clerkRelated
.
getEnterpriseId
(),
memberId
,
clerkRelated
.
getClerkId
());
}
else
{
}
else
{
saveMemberTags
(
saveTagIds
,
clerkRelated
.
getEnterpriseId
(),
memberId
,
clerkRelated
.
getClerkId
());
saveMemberTags
(
saveTagIds
,
clerkRelated
.
getEnterpriseId
(),
memberId
,
clerkRelated
.
getClerkId
());
}
}
}
}
return
resp
;
return
resp
;
}
}
private
void
saveMemberTags
(
Set
<
String
>
tagItemIds
,
String
enterpriseId
,
String
memberId
,
String
clerkId
)
{
private
void
saveMemberTags
(
Set
<
String
>
tagItemIds
,
String
enterpriseId
,
String
memberId
,
String
clerkId
)
{
List
<
MemberTagDTO
>
list
=
tagItemIds
.
stream
().
map
(
tagId
->
{
List
<
MemberTagDTO
>
list
=
tagItemIds
.
stream
().
map
(
tagId
->
{
MemberTagDTO
memberTagDTO
=
new
MemberTagDTO
();
MemberTagDTO
memberTagDTO
=
new
MemberTagDTO
();
memberTagDTO
.
setTagsId
(
tagId
);
memberTagDTO
.
setTagsId
(
tagId
);
memberTagDTO
.
setEnterpriseId
(
enterpriseId
);
memberTagDTO
.
setEnterpriseId
(
enterpriseId
);
memberTagDTO
.
setMemberId
(
memberId
);
memberTagDTO
.
setMemberId
(
memberId
);
memberTagDTO
.
setClerkId
(
clerkId
);
memberTagDTO
.
setClerkId
(
clerkId
);
return
memberTagDTO
;
return
memberTagDTO
;
}).
collect
(
Collectors
.
toList
());
}).
collect
(
Collectors
.
toList
());
logger
.
info
(
"会员打标签:{}"
,
JSONObject
.
toJSONString
(
list
));
logger
.
info
(
"会员打标签:{}"
,
JSONObject
.
toJSONString
(
list
));
if
(
CollectionUtils
.
isEmpty
(
list
))
{
if
(
CollectionUtils
.
isEmpty
(
list
))
{
logger
.
info
(
"会员打标签list为空"
);
logger
.
info
(
"会员打标签list为空"
);
return
;
return
;
}
}
memberTagService
.
saveOrUpdateMemberTagHB
(
enterpriseId
,
list
,
memberId
);
memberTagService
.
saveOrUpdateMemberTagHB
(
enterpriseId
,
list
,
memberId
);
}
}
/**
/**
* 获取企业微信的外部联系人的所有联系关系
* 获取企业微信的外部联系人的所有联系关系
*
*
* @param externalUseridInfo
* @param externalUseridInfo
* @return
* @return
*/
*/
private
Map
<
String
,
Set
<
String
>>
getExternalTagMap
(
String
externalUseridInfo
,
String
wxEnterpriseId
)
{
private
Map
<
String
,
Set
<
String
>>
getExternalTagMap
(
String
externalUseridInfo
,
String
wxEnterpriseId
)
{
logger
.
info
(
"externalUseridInfo:{}"
,
externalUseridInfo
);
logger
.
info
(
"externalUseridInfo:{}"
,
externalUseridInfo
);
Map
<
String
,
Set
<
String
>>
ret
=
new
HashMap
<>();
Map
<
String
,
Set
<
String
>>
ret
=
new
HashMap
<>();
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
externalUseridInfo
);
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
externalUseridInfo
);
if
(!
jsonObject
.
containsKey
(
"follow_user"
))
{
if
(!
jsonObject
.
containsKey
(
"follow_user"
))
{
logger
.
info
(
"没有相关的好友"
);
logger
.
info
(
"没有相关的好友"
);
return
null
;
return
null
;
}
}
JSONArray
followUser
=
jsonObject
.
getJSONArray
(
"follow_user"
);
JSONArray
followUser
=
jsonObject
.
getJSONArray
(
"follow_user"
);
for
(
int
i
=
0
;
i
<
followUser
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
followUser
.
size
();
i
++)
{
JSONObject
midUser
=
followUser
.
getJSONObject
(
i
);
JSONObject
midUser
=
followUser
.
getJSONObject
(
i
);
String
wxUserId
=
midUser
.
getString
(
"userid"
);
String
wxUserId
=
midUser
.
getString
(
"userid"
);
//做兼容
//做兼容
TabHaobanStaff
staff
=
staffService
.
selectByUserIdAndEnterpriseId
(
wxUserId
,
wxEnterpriseId
);
/* TabHaobanStaff staff = staffService.selectByUserIdAndEnterpriseId(wxUserId, wxEnterpriseId);
if
(
staff
!=
null
)
{
if (staff != null) {
logger
.
info
(
"旧wxUserId:{}"
,
wxUserId
);
logger.info("旧wxUserId:{}", wxUserId);
wxUserId
=
staff
.
getWxUserId
();
wxUserId = staff.getWxUserId();
logger
.
info
(
"新wxUserId:{}"
,
wxUserId
);
logger.info("新wxUserId:{}", wxUserId);
}
}
*/
Set
<
String
>
midTagIds
=
new
HashSet
<>();
Set
<
String
>
midTagIds
=
new
HashSet
<>();
if
(!
midUser
.
containsKey
(
"tags"
))
{
if
(!
midUser
.
containsKey
(
"tags"
))
{
ret
.
put
(
wxUserId
,
midTagIds
);
ret
.
put
(
wxUserId
,
midTagIds
);
continue
;
continue
;
}
}
JSONArray
tags
=
midUser
.
getJSONArray
(
"tags"
);
JSONArray
tags
=
midUser
.
getJSONArray
(
"tags"
);
for
(
int
n
=
0
;
n
<
tags
.
size
();
n
++)
{
for
(
int
n
=
0
;
n
<
tags
.
size
();
n
++)
{
JSONObject
tagMid
=
tags
.
getJSONObject
(
n
);
JSONObject
tagMid
=
tags
.
getJSONObject
(
n
);
String
tagId
=
tagMid
.
getString
(
"tag_id"
);
String
tagId
=
tagMid
.
getString
(
"tag_id"
);
String
tagType
=
tagMid
.
getString
(
"type"
);
String
tagType
=
tagMid
.
getString
(
"type"
);
if
(
tagType
.
equals
(
"1"
))
{
if
(
tagType
.
equals
(
"1"
))
{
midTagIds
.
add
(
tagId
);
midTagIds
.
add
(
tagId
);
}
}
}
}
ret
.
put
(
wxUserId
,
midTagIds
);
ret
.
put
(
wxUserId
,
midTagIds
);
}
}
return
ret
;
return
ret
;
}
}
@Override
@Override
public
void
changeQywxTagStatus
(
String
memberTagId
,
String
wxEnterpriseId
,
int
status
)
{
public
void
changeQywxTagStatus
(
String
memberTagId
,
String
wxEnterpriseId
,
int
status
)
{
qywxTagService
.
changeRelationSyncFlagByMemberTagId
(
wxEnterpriseId
,
memberTagId
,
status
);
qywxTagService
.
changeRelationSyncFlagByMemberTagId
(
wxEnterpriseId
,
memberTagId
,
status
);
}
}
@Override
@Override
public
boolean
saveRelation
(
String
wxEnterpriseId
,
String
enterpriseId
,
List
<
String
>
memberTagIds
)
{
public
boolean
saveRelation
(
String
wxEnterpriseId
,
String
enterpriseId
,
List
<
String
>
memberTagIds
)
{
if
(
CollectionUtils
.
isEmpty
(
memberTagIds
))
{
if
(
CollectionUtils
.
isEmpty
(
memberTagIds
))
{
return
false
;
return
false
;
}
}
return
false
;
return
false
;
}
}
@Override
@Override
public
ServiceResponse
renameQywxTag
(
String
wxEnterpriseId
,
String
id
,
String
name
,
Integer
type
)
{
public
ServiceResponse
renameQywxTag
(
String
wxEnterpriseId
,
String
id
,
String
name
,
Integer
type
)
{
ServiceResponse
resp
=
new
ServiceResponse
();
ServiceResponse
resp
=
new
ServiceResponse
();
String
renameQywxKey
=
null
;
String
renameQywxKey
=
null
;
Long
order
=
null
;
Long
order
=
null
;
String
relationId
=
null
;
String
relationId
=
null
;
//标签组
//标签组
if
(
type
==
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getType
())
{
if
(
type
==
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getType
())
{
TabQywxTag
tabQywxTag
=
qywxTagService
.
getQywxTagByQywxTagId
(
wxEnterpriseId
,
id
);
TabQywxTag
tabQywxTag
=
qywxTagService
.
getQywxTagByQywxTagId
(
wxEnterpriseId
,
id
);
if
(
null
==
tabQywxTag
)
{
if
(
null
==
tabQywxTag
)
{
resp
.
setMessage
(
"没有关联无需处理"
);
resp
.
setMessage
(
"没有关联无需处理"
);
return
resp
;
return
resp
;
}
}
renameQywxKey
=
tabQywxTag
.
getQywxGroupKey
();
renameQywxKey
=
tabQywxTag
.
getQywxGroupKey
();
order
=
tabQywxTag
.
getOrder
();
order
=
tabQywxTag
.
getOrder
();
name
=
"GIC"
+
name
;
name
=
"GIC"
+
name
;
relationId
=
tabQywxTag
.
getQywxTagId
();
relationId
=
tabQywxTag
.
getQywxTagId
();
}
else
if
(
type
==
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getType
())
{
}
else
if
(
type
==
QywxTagRelationTypeEnum
.
TAG_ITEM
.
getType
())
{
TabQywxTagItem
qywxTagItem
=
qywxTagService
.
getQywxTagItemById
(
wxEnterpriseId
,
id
);
TabQywxTagItem
qywxTagItem
=
qywxTagService
.
getQywxTagItemById
(
wxEnterpriseId
,
id
);
if
(
null
==
qywxTagItem
)
{
if
(
null
==
qywxTagItem
)
{
resp
.
setMessage
(
"没有关联无需处理"
);
resp
.
setMessage
(
"没有关联无需处理"
);
return
resp
;
return
resp
;
}
}
renameQywxKey
=
qywxTagItem
.
getQywxTagKey
();
renameQywxKey
=
qywxTagItem
.
getQywxTagKey
();
order
=
qywxTagItem
.
getOrder
();
order
=
qywxTagItem
.
getOrder
();
relationId
=
qywxTagItem
.
getQywxTagItemId
();
relationId
=
qywxTagItem
.
getQywxTagItemId
();
}
}
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
//名称同步回去
//名称同步回去
QywxTagDTO
qywxTagDTO
=
new
QywxTagDTO
();
QywxTagDTO
qywxTagDTO
=
new
QywxTagDTO
();
qywxTagDTO
.
setId
(
renameQywxKey
);
qywxTagDTO
.
setId
(
renameQywxKey
);
qywxTagDTO
.
setName
(
name
);
qywxTagDTO
.
setName
(
name
);
qywxTagDTO
.
setOrder
(
order
);
qywxTagDTO
.
setOrder
(
order
);
QywxResponseDTO
responseDTO
=
qywxSuiteApiService
.
editCorpTagNameOrOrder
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
qywxTagDTO
);
QywxResponseDTO
responseDTO
=
qywxSuiteApiService
.
editCorpTagNameOrOrder
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
qywxTagDTO
);
logger
.
info
(
"同步名称:{}"
,
JSONObject
.
toJSONString
(
responseDTO
));
logger
.
info
(
"同步名称:{}"
,
JSONObject
.
toJSONString
(
responseDTO
));
if
(
responseDTO
.
getErrcode
()
!=
0
)
{
if
(
responseDTO
.
getErrcode
()
!=
0
)
{
resp
.
setMessage
(
responseDTO
.
getErrmsg
());
resp
.
setMessage
(
responseDTO
.
getErrmsg
());
resp
.
setCode
(
responseDTO
.
getErrcode
());
resp
.
setCode
(
responseDTO
.
getErrcode
());
}
}
qywxTagService
.
saveQywxTagOrTagItemName
(
relationId
,
name
,
type
);
qywxTagService
.
saveQywxTagOrTagItemName
(
relationId
,
name
,
type
);
return
resp
;
return
resp
;
}
}
@Override
@Override
public
List
<
QywxTagRelationDTO
>
listQywxTagRelationByMemberTagId
(
String
wxEnterpriseId
,
String
memberTagId
)
{
public
List
<
QywxTagRelationDTO
>
listQywxTagRelationByMemberTagId
(
String
wxEnterpriseId
,
String
memberTagId
)
{
List
<
TabQywxTagRelation
>
tagRelations
=
qywxTagService
.
listQywxTagRelationByMemberTagId
(
wxEnterpriseId
,
memberTagId
);
List
<
TabQywxTagRelation
>
tagRelations
=
qywxTagService
.
listQywxTagRelationByMemberTagId
(
wxEnterpriseId
,
memberTagId
);
return
EntityUtil
.
changeEntityListByJSON
(
QywxTagRelationDTO
.
class
,
tagRelations
);
return
EntityUtil
.
changeEntityListByJSON
(
QywxTagRelationDTO
.
class
,
tagRelations
);
}
}
@Override
@Override
public
QywxTagRelationDTO
getQywxTagRelationByRelationId
(
String
relationId
)
{
public
QywxTagRelationDTO
getQywxTagRelationByRelationId
(
String
relationId
)
{
TabQywxTagRelation
tagRelation
=
qywxTagService
.
getQywxTagRelationById
(
relationId
);
TabQywxTagRelation
tagRelation
=
qywxTagService
.
getQywxTagRelationById
(
relationId
);
return
EntityUtil
.
changeEntityByJSON
(
QywxTagRelationDTO
.
class
,
tagRelation
);
return
EntityUtil
.
changeEntityByJSON
(
QywxTagRelationDTO
.
class
,
tagRelation
);
}
}
@Override
@Override
public
QywxTagInfoDTO
getQywxTagByQywxTagId
(
String
qywxTagId
)
{
public
QywxTagInfoDTO
getQywxTagByQywxTagId
(
String
qywxTagId
)
{
TabQywxTag
tabQywxTag
=
qywxTagService
.
getQywxTagByQywxTagId
(
null
,
qywxTagId
);
TabQywxTag
tabQywxTag
=
qywxTagService
.
getQywxTagByQywxTagId
(
null
,
qywxTagId
);
return
EntityUtil
.
changeEntityByJSON
(
QywxTagInfoDTO
.
class
,
tabQywxTag
);
return
EntityUtil
.
changeEntityByJSON
(
QywxTagInfoDTO
.
class
,
tabQywxTag
);
}
}
@Override
@Override
public
void
updateQywxTagRelationSyncStatusByTagItemId
(
String
wxEnterpriseId
,
String
tagItemId
)
{
public
void
updateQywxTagRelationSyncStatusByTagItemId
(
String
wxEnterpriseId
,
String
tagItemId
)
{
qywxTagService
.
changeRelationSyncFlagByTagItemId
(
wxEnterpriseId
,
tagItemId
,
2
);
qywxTagService
.
changeRelationSyncFlagByTagItemId
(
wxEnterpriseId
,
tagItemId
,
2
);
}
}
@Override
@Override
public
void
checkQywxSync
(
String
params
)
{
public
void
checkQywxSync
(
String
params
)
{
List
<
TabHaobanWxEnterprise
>
wxEnterprises
=
wxEnterpriseService
.
listAll
();
List
<
TabHaobanWxEnterprise
>
wxEnterprises
=
wxEnterpriseService
.
listAll
();
wxEnterprises
.
forEach
(
wxEnterprise
->
{
wxEnterprises
.
forEach
(
wxEnterprise
->
{
logger
.
info
(
"企业:{}"
,
wxEnterprise
.
getWxEnterpriseId
());
logger
.
info
(
"企业:{}"
,
wxEnterprise
.
getWxEnterpriseId
());
try
{
try
{
List
<
TabQywxTagRelation
>
tagRelations
=
qywxTagService
.
listAllQywxRelation
(
wxEnterprise
.
getWxEnterpriseId
());
List
<
TabQywxTagRelation
>
tagRelations
=
qywxTagService
.
listAllQywxRelation
(
wxEnterprise
.
getWxEnterpriseId
());
if
(
CollectionUtils
.
isEmpty
(
tagRelations
))
{
if
(
CollectionUtils
.
isEmpty
(
tagRelations
))
{
logger
.
info
(
"无需校验: 没有要同步的企业"
);
logger
.
info
(
"无需校验: 没有要同步的企业"
);
return
;
return
;
}
}
QywxSyncTagFormatPojo
pojo
=
this
.
listSyncTagItems
(
wxEnterprise
.
getWxEnterpriseId
());
QywxSyncTagFormatPojo
pojo
=
this
.
listSyncTagItems
(
wxEnterprise
.
getWxEnterpriseId
());
List
<
TabQywxTagRelation
>
qywxTagRelations
=
tagRelations
.
stream
().
filter
(
dto
->
dto
.
getRelationType
()
==
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getType
()).
collect
(
Collectors
.
toList
());
List
<
TabQywxTagRelation
>
qywxTagRelations
=
tagRelations
.
stream
().
filter
(
dto
->
dto
.
getRelationType
()
==
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getType
()).
collect
(
Collectors
.
toList
());
for
(
TabQywxTagRelation
qywxTagRelation
:
qywxTagRelations
)
{
for
(
TabQywxTagRelation
qywxTagRelation
:
qywxTagRelations
)
{
Map
<
String
,
Object
>
map
=
checkQywxSyncByQywxTag
(
qywxTagRelation
,
wxEnterprise
,
pojo
);
Map
<
String
,
Object
>
map
=
checkQywxSyncByQywxTag
(
qywxTagRelation
,
wxEnterprise
,
pojo
);
if
(
MapUtils
.
isNotEmpty
(
map
))
{
if
(
MapUtils
.
isNotEmpty
(
map
))
{
logger
.
error
(
"企微与好办同步标签不相同:{}"
,
JSON
.
toJSONString
(
map
));
logger
.
error
(
"企微与好办同步标签不相同:{}"
,
JSON
.
toJSONString
(
map
));
}
}
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
info
(
"校验异常:{}"
,
e
);
logger
.
info
(
"校验异常:{}"
,
e
);
}
}
});
});
}
}
/**
/**
* 校验
* 校验
*
*
* @param relation
* @param relation
* @param wxEnterprise
* @param wxEnterprise
*/
*/
private
LinkedHashMap
<
String
,
Object
>
checkQywxSyncByQywxTag
(
TabQywxTagRelation
relation
,
TabHaobanWxEnterprise
wxEnterprise
,
QywxSyncTagFormatPojo
pojo
)
{
private
LinkedHashMap
<
String
,
Object
>
checkQywxSyncByQywxTag
(
TabQywxTagRelation
relation
,
TabHaobanWxEnterprise
wxEnterprise
,
QywxSyncTagFormatPojo
pojo
)
{
LinkedHashMap
<
String
,
Object
>
ret
=
new
LinkedHashMap
<>();
LinkedHashMap
<
String
,
Object
>
ret
=
new
LinkedHashMap
<>();
boolean
flag
=
false
;
boolean
flag
=
false
;
ret
.
put
(
"hb标签id"
,
relation
.
getQywxTagId
());
ret
.
put
(
"hb标签id"
,
relation
.
getQywxTagId
());
TabQywxTag
tabQywxTag
=
qywxTagService
.
getQywxTagByQywxTagId
(
relation
.
getWxEnterpriseId
(),
relation
.
getQywxTagId
());
TabQywxTag
tabQywxTag
=
qywxTagService
.
getQywxTagByQywxTagId
(
relation
.
getWxEnterpriseId
(),
relation
.
getQywxTagId
());
if
(
null
==
tabQywxTag
)
{
if
(
null
==
tabQywxTag
)
{
logger
.
info
(
"数据库不存在该企业微信标签:{}"
,
relation
.
getQywxTagId
());
logger
.
info
(
"数据库不存在该企业微信标签:{}"
,
relation
.
getQywxTagId
());
ret
.
put
(
"描述"
,
"标签数据库不存在:"
+
relation
.
getTagItemId
());
ret
.
put
(
"描述"
,
"标签数据库不存在:"
+
relation
.
getTagItemId
());
return
ret
;
return
ret
;
}
}
ret
.
put
(
"名称(标签)"
,
tabQywxTag
.
getQywxGroupName
());
ret
.
put
(
"名称(标签)"
,
tabQywxTag
.
getQywxGroupName
());
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
relation
.
getWxEnterpriseId
())
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
relation
.
getWxEnterpriseId
())
;
List
<
String
>
ids
=
new
ArrayList
<>();
List
<
String
>
ids
=
new
ArrayList
<>();
ids
.
add
(
tabQywxTag
.
getQywxGroupKey
());
ids
.
add
(
tabQywxTag
.
getQywxGroupKey
());
QywxGetCorpTagListDTO
tagDetail
=
qywxSuiteApiService
.
getCorpTagList
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
ids
,
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getType
());
QywxGetCorpTagListDTO
tagDetail
=
qywxSuiteApiService
.
getCorpTagList
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
ids
,
QywxTagRelationTypeEnum
.
TAG_GROUP
.
getType
());
if
(
tagDetail
.
getErrcode
()
!=
0
)
{
if
(
tagDetail
.
getErrcode
()
!=
0
)
{
logger
.
info
(
"查询失败,无需操作:{}"
,
JSONObject
.
toJSONString
(
tagDetail
));
logger
.
info
(
"查询失败,无需操作:{}"
,
JSONObject
.
toJSONString
(
tagDetail
));
ret
.
put
(
"描述"
,
"查询失败:"
+
tagDetail
.
getErrmsg
());
ret
.
put
(
"描述"
,
"查询失败:"
+
tagDetail
.
getErrmsg
());
return
ret
;
return
ret
;
}
}
if
(
CollectionUtils
.
isEmpty
(
tagDetail
.
getTagGroup
()))
{
if
(
CollectionUtils
.
isEmpty
(
tagDetail
.
getTagGroup
()))
{
logger
.
info
(
"标签组不存在:{}"
,
JSONObject
.
toJSONString
(
tagDetail
));
logger
.
info
(
"标签组不存在:{}"
,
JSONObject
.
toJSONString
(
tagDetail
));
ret
.
put
(
"描述"
,
"标签组不存在:"
+
tabQywxTag
.
getQywxGroupName
());
ret
.
put
(
"描述"
,
"标签组不存在:"
+
tabQywxTag
.
getQywxGroupName
());
return
ret
;
return
ret
;
}
}
//获取该标签已经绑定的标签项key
//获取该标签已经绑定的标签项key
Map
<
String
,
String
>
qywxToGicTagItemIdMap
=
pojo
.
getQywxToGicTagItemIdMap
();
Map
<
String
,
String
>
qywxToGicTagItemIdMap
=
pojo
.
getQywxToGicTagItemIdMap
();
List
<
TabQywxTagItem
>
gicQywxSyncTagItems
=
qywxTagService
.
listByQywxTagId
(
wxEnterprise
.
getWxEnterpriseId
(),
relation
.
getQywxTagId
());
List
<
TabQywxTagItem
>
gicQywxSyncTagItems
=
qywxTagService
.
listByQywxTagId
(
wxEnterprise
.
getWxEnterpriseId
(),
relation
.
getQywxTagId
());
Map
<
String
,
String
>
gicQywxTagNameMap
=
gicQywxSyncTagItems
.
stream
().
filter
(
tab
->
qywxToGicTagItemIdMap
.
containsKey
(
tab
.
getQywxTagKey
())).
collect
(
Collectors
.
toMap
(
mid
->
mid
.
getQywxTagKey
(),
mid
->
mid
.
getQywxTagName
()));
Map
<
String
,
String
>
gicQywxTagNameMap
=
gicQywxSyncTagItems
.
stream
().
filter
(
tab
->
qywxToGicTagItemIdMap
.
containsKey
(
tab
.
getQywxTagKey
())).
collect
(
Collectors
.
toMap
(
mid
->
mid
.
getQywxTagKey
(),
mid
->
mid
.
getQywxTagName
()));
if
(
CollectionUtils
.
isEmpty
(
gicQywxSyncTagItems
))
{
if
(
CollectionUtils
.
isEmpty
(
gicQywxSyncTagItems
))
{
logger
.
info
(
"gic同步企业微信标签异常"
);
logger
.
info
(
"gic同步企业微信标签异常"
);
ret
.
put
(
"描述"
,
"gic同步企业微信标签异常:"
+
tabQywxTag
.
getQywxGroupName
());
ret
.
put
(
"描述"
,
"gic同步企业微信标签异常:"
+
tabQywxTag
.
getQywxGroupName
());
return
ret
;
return
ret
;
}
}
Set
<
String
>
gicQywxKeysSet
=
gicQywxTagNameMap
.
keySet
();
Set
<
String
>
gicQywxKeysSet
=
gicQywxTagNameMap
.
keySet
();
//获取企业微信的标签项key
//获取企业微信的标签项key
QywxTagGroupDTO
qywxTagGroupDTO
=
tagDetail
.
getTagGroup
().
get
(
0
);
QywxTagGroupDTO
qywxTagGroupDTO
=
tagDetail
.
getTagGroup
().
get
(
0
);
List
<
QywxTagDTO
>
tagItems
=
qywxTagGroupDTO
.
getTag
();
List
<
QywxTagDTO
>
tagItems
=
qywxTagGroupDTO
.
getTag
();
if
(
CollectionUtils
.
isEmpty
(
tagItems
))
{
if
(
CollectionUtils
.
isEmpty
(
tagItems
))
{
ret
.
put
(
"描述"
,
"企业微信标签项空:"
+
tabQywxTag
.
getQywxGroupName
());
ret
.
put
(
"描述"
,
"企业微信标签项空:"
+
tabQywxTag
.
getQywxGroupName
());
return
ret
;
return
ret
;
}
}
Map
<
String
,
QywxTagDTO
>
qywxTagDTOMap
=
tagItems
.
stream
().
collect
(
Collectors
.
toMap
(
dto
->
dto
.
getId
(),
dto
->
dto
));
Map
<
String
,
QywxTagDTO
>
qywxTagDTOMap
=
tagItems
.
stream
().
collect
(
Collectors
.
toMap
(
dto
->
dto
.
getId
(),
dto
->
dto
));
Set
<
String
>
qywxKeysSet
=
qywxTagDTOMap
.
keySet
();
Set
<
String
>
qywxKeysSet
=
qywxTagDTOMap
.
keySet
();
//gic没有同步的标签项
//gic没有同步的标签项
Map
<
String
,
String
>
gicToQywxTagItemIdMap
=
pojo
.
getGicToQywxTagItemIdMap
();
Map
<
String
,
String
>
gicToQywxTagItemIdMap
=
pojo
.
getGicToQywxTagItemIdMap
();
List
<
MemberTagItemDTO
>
gicTagItems
=
memberTagItemApiService
.
getItemListByTagId
(
relation
.
getMemberTagId
());
List
<
MemberTagItemDTO
>
gicTagItems
=
memberTagItemApiService
.
getItemListByTagId
(
relation
.
getMemberTagId
());
Set
<
MemberTagItemDTO
>
noSyncTags
=
gicTagItems
.
stream
().
filter
(
dto
->
!
gicToQywxTagItemIdMap
.
containsKey
(
dto
.
getTagItemId
())).
collect
(
Collectors
.
toSet
());
Set
<
MemberTagItemDTO
>
noSyncTags
=
gicTagItems
.
stream
().
filter
(
dto
->
!
gicToQywxTagItemIdMap
.
containsKey
(
dto
.
getTagItemId
())).
collect
(
Collectors
.
toSet
());
//在gic存在 企业微信不存在
//在gic存在 企业微信不存在
Sets
.
SetView
<
String
>
qywxUnHaves
=
Sets
.
difference
(
gicQywxKeysSet
,
qywxKeysSet
);
Sets
.
SetView
<
String
>
qywxUnHaves
=
Sets
.
difference
(
gicQywxKeysSet
,
qywxKeysSet
);
//企业微信存在 gic不存在
//企业微信存在 gic不存在
Sets
.
SetView
<
String
>
gicUnHaves
=
Sets
.
difference
(
qywxKeysSet
,
gicQywxKeysSet
);
Sets
.
SetView
<
String
>
gicUnHaves
=
Sets
.
difference
(
qywxKeysSet
,
gicQywxKeysSet
);
ret
.
put
(
"现企微标签项"
,
tagItems
.
stream
().
map
(
dto
->
dto
.
getName
()).
collect
(
Collectors
.
joining
(
"],["
,
"["
,
"]"
)));
ret
.
put
(
"现企微标签项"
,
tagItems
.
stream
().
map
(
dto
->
dto
.
getName
()).
collect
(
Collectors
.
joining
(
"],["
,
"["
,
"]"
)));
ret
.
put
(
"现gic标签项"
,
gicTagItems
.
stream
().
map
(
dto
->
dto
.
getTagItemName
()).
collect
(
Collectors
.
joining
(
"],["
,
"["
,
"]"
)));
ret
.
put
(
"现gic标签项"
,
gicTagItems
.
stream
().
map
(
dto
->
dto
.
getTagItemName
()).
collect
(
Collectors
.
joining
(
"],["
,
"["
,
"]"
)));
//企业微信缺少
//企业微信缺少
if
(!
CollectionUtils
.
isEmpty
(
qywxUnHaves
))
{
if
(!
CollectionUtils
.
isEmpty
(
qywxUnHaves
))
{
flag
=
true
;
flag
=
true
;
ret
.
put
(
"标签项缺少(企微)"
,
qywxUnHaves
.
stream
().
map
(
mid
->
gicQywxTagNameMap
.
get
(
mid
)).
collect
(
Collectors
.
joining
(
"],["
,
"["
,
"]"
)));
ret
.
put
(
"标签项缺少(企微)"
,
qywxUnHaves
.
stream
().
map
(
mid
->
gicQywxTagNameMap
.
get
(
mid
)).
collect
(
Collectors
.
joining
(
"],["
,
"["
,
"]"
)));
}
}
//未同步标签项
//未同步标签项
if
(!
CollectionUtils
.
isEmpty
(
noSyncTags
))
{
if
(!
CollectionUtils
.
isEmpty
(
noSyncTags
))
{
flag
=
true
;
flag
=
true
;
ret
.
put
(
"标签项未同步"
,
noSyncTags
.
stream
().
map
(
mid
->
mid
.
getTagItemName
()).
collect
(
Collectors
.
joining
(
"],["
,
"["
,
"]"
)));
ret
.
put
(
"标签项未同步"
,
noSyncTags
.
stream
().
map
(
mid
->
mid
.
getTagItemName
()).
collect
(
Collectors
.
joining
(
"],["
,
"["
,
"]"
)));
}
}
//gic缺少
//gic缺少
if
(!
CollectionUtils
.
isEmpty
(
gicUnHaves
))
{
if
(!
CollectionUtils
.
isEmpty
(
gicUnHaves
))
{
flag
=
true
;
flag
=
true
;
ret
.
put
(
"标签项缺少(gic)"
,
gicUnHaves
.
stream
().
map
(
id
->
qywxTagDTOMap
.
get
(
id
).
getName
()).
collect
(
Collectors
.
joining
(
"],["
,
"["
,
"]"
)));
ret
.
put
(
"标签项缺少(gic)"
,
gicUnHaves
.
stream
().
map
(
id
->
qywxTagDTOMap
.
get
(
id
).
getName
()).
collect
(
Collectors
.
joining
(
"],["
,
"["
,
"]"
)));
}
}
if
(
flag
)
{
if
(
flag
)
{
return
ret
;
return
ret
;
}
}
return
null
;
return
null
;
}
}
@Override
@Override
public
void
qywxMarkTag
(
String
param
)
{
public
void
qywxMarkTag
(
String
param
)
{
if
(
StringUtils
.
isBlank
(
param
))
{
if
(
StringUtils
.
isBlank
(
param
))
{
logger
.
info
(
"标签数据为空"
);
logger
.
info
(
"标签数据为空"
);
return
;
return
;
}
}
logger
.
info
(
"企微标签同步:{}"
,
param
);
logger
.
info
(
"企微标签同步:{}"
,
param
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
param
);
JSONObject
jsonObject
=
JSON
.
parseObject
(
param
);
String
corpid
=
jsonObject
.
getString
(
"corpid"
);
String
corpid
=
jsonObject
.
getString
(
"corpid"
);
String
suiteId
=
jsonObject
.
getString
(
"suiteId"
);
String
suiteId
=
jsonObject
.
getString
(
"suiteId"
);
String
wxUserId
=
jsonObject
.
getString
(
"wxUserId"
);
String
wxUserId
=
jsonObject
.
getString
(
"wxUserId"
);
String
externalUserId
=
jsonObject
.
getString
(
"externalUserId"
);
String
externalUserId
=
jsonObject
.
getString
(
"externalUserId"
);
String
needSetTags
=
jsonObject
.
getString
(
"needSetTags"
);
String
needSetTags
=
jsonObject
.
getString
(
"needSetTags"
);
String
needDelTags
=
jsonObject
.
getString
(
"needDelTags"
);
String
needDelTags
=
jsonObject
.
getString
(
"needDelTags"
);
String
key
=
"HAOBAN:QYWX:TAG:"
+
wxUserId
+
externalUserId
;
String
key
=
"HAOBAN:QYWX:TAG:"
+
wxUserId
+
externalUserId
;
Integer
currentTimes
=
Convert
.
toInt
(
RedisUtil
.
getCache
(
key
),
0
);
Integer
currentTimes
=
Convert
.
toInt
(
RedisUtil
.
getCache
(
key
),
0
);
if
(
currentTimes
>
MAX_TIMES
)
{
if
(
currentTimes
>
MAX_TIMES
)
{
logger
.
error
(
"企微打标签超过最大次数,key:{}"
,
key
);
logger
.
error
(
"企微打标签超过最大次数,key:{}"
,
key
);
return
;
return
;
}
}
List
<
String
>
needSetTagList
=
new
ArrayList
<>();
List
<
String
>
needSetTagList
=
new
ArrayList
<>();
List
<
String
>
needDelTagList
=
new
ArrayList
<>();
List
<
String
>
needDelTagList
=
new
ArrayList
<>();
if
(
StringUtils
.
isNotBlank
(
needSetTags
))
{
if
(
StringUtils
.
isNotBlank
(
needSetTags
))
{
needSetTagList
=
Arrays
.
asList
(
needSetTags
.
split
(
","
));
needSetTagList
=
Arrays
.
asList
(
needSetTags
.
split
(
","
));
}
}
if
(
StringUtils
.
isNotBlank
(
needDelTags
))
{
if
(
StringUtils
.
isNotBlank
(
needDelTags
))
{
needDelTagList
=
Arrays
.
asList
(
needDelTags
.
split
(
","
));
needDelTagList
=
Arrays
.
asList
(
needDelTags
.
split
(
","
));
}
}
QywxResponseDTO
responseDTO
=
qywxUserApiService
.
markTag
(
corpid
,
suiteId
,
wxUserId
,
externalUserId
,
needSetTagList
,
needDelTagList
);
QywxResponseDTO
responseDTO
=
qywxUserApiService
.
markTag
(
corpid
,
suiteId
,
wxUserId
,
externalUserId
,
needSetTagList
,
needDelTagList
);
logger
.
info
(
"操作返回:{}"
,
JSONObject
.
toJSONString
(
responseDTO
));
logger
.
info
(
"操作返回:{}"
,
JSONObject
.
toJSONString
(
responseDTO
));
if
(
responseDTO
.
getErrcode
()
!=
0
)
{
if
(
responseDTO
.
getErrcode
()
!=
0
)
{
logger
.
info
(
"权限不对,重试三次:{},{}"
,
wxUserId
,
externalUserId
);
logger
.
info
(
"权限不对,重试三次:{},{}"
,
wxUserId
,
externalUserId
);
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
GicMQClient
clientInstance
=
GICMQClientUtil
.
getClientInstance
();
try
{
try
{
clientInstance
.
sendMessage
(
"qywxMarkTagMq"
,
jsonObject
.
toJSONString
(),
30
);
clientInstance
.
sendMessage
(
"qywxMarkTagMq"
,
jsonObject
.
toJSONString
(),
30
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
info
(
"企微标签同步qywxMarkTagMq发送失败:{}"
,
e
.
getMessage
(),
e
);
logger
.
info
(
"企微标签同步qywxMarkTagMq发送失败:{}"
,
e
.
getMessage
(),
e
);
}
}
RedisUtil
.
setCache
(
key
,
currentTimes
+
1
,
2L
,
TimeUnit
.
HOURS
);
RedisUtil
.
setCache
(
key
,
currentTimes
+
1
,
2L
,
TimeUnit
.
HOURS
);
}
}
}
}
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/StaffApiServiceImpl.java
View file @
a621d903
...
@@ -836,6 +836,9 @@ public class StaffApiServiceImpl implements StaffApiService {
...
@@ -836,6 +836,9 @@ public class StaffApiServiceImpl implements StaffApiService {
//获取微信信息
//获取微信信息
String
wxUserId
=
staff
.
getWxUserId
();
String
wxUserId
=
staff
.
getWxUserId
();
if
(
qwDTO
.
needOpenUserIdDk
())
{
wxUserId
=
staff
.
getWxOpenUseId
()
;
}
UserDTO
user
=
qywxUserApiService
.
getSelfWorkWxUser
(
qwDTO
.
getDkCorpid
(),
secretSetting
.
getSecretVal
(),
wxUserId
);
UserDTO
user
=
qywxUserApiService
.
getSelfWorkWxUser
(
qwDTO
.
getDkCorpid
(),
secretSetting
.
getSecretVal
(),
wxUserId
);
if
(
null
==
user
)
{
if
(
null
==
user
)
{
logger
.
info
(
"企业微信用户不存在:wxEnterpriseId:{}:wxUserId:{}"
,
wxEnterpriseId
,
wxUserId
);
logger
.
info
(
"企业微信用户不存在:wxEnterpriseId:{}:wxUserId:{}"
,
wxEnterpriseId
,
wxUserId
);
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/hm/HmLinkApiServiceImpl.java
View file @
a621d903
...
@@ -373,7 +373,7 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
...
@@ -373,7 +373,7 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
remarkMap
.
put
(
"dthmKey"
,
dthmKey
);
remarkMap
.
put
(
"dthmKey"
,
dthmKey
);
if
(
null
!=
dthmKey
)
{
if
(
null
!=
dthmKey
)
{
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
ServiceResponse
<
String
>
addResp
=
this
.
addQrcode
(
hm
,
dthmKey
,
qwDTO
.
getThirdCorpid
()
,
retDTO
);
ServiceResponse
<
String
>
addResp
=
this
.
addQrcode
(
hm
,
dthmKey
,
qwDTO
,
retDTO
);
if
(!
addResp
.
isSuccess
())
{
if
(!
addResp
.
isSuccess
())
{
remarkMap
.
put
(
"sm"
,
"创建动态活码失败,取单人活码"
);
remarkMap
.
put
(
"sm"
,
"创建动态活码失败,取单人活码"
);
if
(
StringUtils
.
isBlank
(
hm
.
getWxQrcode
()))
{
if
(
StringUtils
.
isBlank
(
hm
.
getWxQrcode
()))
{
...
@@ -425,7 +425,7 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
...
@@ -425,7 +425,7 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
}
}
// 创建活码
// 创建活码
private
ServiceResponse
<
String
>
addQrcode
(
HmQrcodeBO
hm
,
String
key
,
String
corpid
,
HmLinkWxaDTO
retDTO
)
{
private
ServiceResponse
<
String
>
addQrcode
(
HmQrcodeBO
hm
,
String
key
,
WxEnterpriseQwDTO
qwDTO
,
HmLinkWxaDTO
retDTO
)
{
String
limitQrcode
=
this
.
limitIp
(
hm
);
String
limitQrcode
=
this
.
limitIp
(
hm
);
if
(
StringUtils
.
isNotEmpty
(
limitQrcode
))
{
if
(
StringUtils
.
isNotEmpty
(
limitQrcode
))
{
return
ServiceResponse
.
failure
(
HaoBanErrCode
.
ERR_OTHER
.
getCode
(),
"超限制数"
);
return
ServiceResponse
.
failure
(
HaoBanErrCode
.
ERR_OTHER
.
getCode
(),
"超限制数"
);
...
@@ -439,11 +439,15 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
...
@@ -439,11 +439,15 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
paramsDTO
.
setState
(
"DT"
+
key
);
paramsDTO
.
setState
(
"DT"
+
key
);
TabHaobanStaff
tabHaobanStaff
=
staffService
.
selectById
(
hm
.
getStaffId
());
TabHaobanStaff
tabHaobanStaff
=
staffService
.
selectById
(
hm
.
getStaffId
());
if
(
tabHaobanStaff
!=
null
)
{
if
(
tabHaobanStaff
!=
null
)
{
paramsDTO
.
setUser
(
Arrays
.
asList
(
tabHaobanStaff
.
getWxUserId
()));
if
(
qwDTO
.
needOpenUserId3th
())
{
paramsDTO
.
setUser
(
Arrays
.
asList
(
tabHaobanStaff
.
getWxOpenUseId
()));
}
else
{
paramsDTO
.
setUser
(
Arrays
.
asList
(
tabHaobanStaff
.
getWxUserId
()));
}
}
}
QywxExternalcontactResultDTO
wxResp
=
qywxUserApiService
.
addContactWay
(
corpid
,
config
.
getWxSuiteid
(),
QywxExternalcontactResultDTO
wxResp
=
qywxUserApiService
.
addContactWay
(
qwDTO
.
getThirdCorpid
()
,
config
.
getWxSuiteid
(),
paramsDTO
);
paramsDTO
);
log
.
info
(
"创建动态活码参数corpid={},app={},param={},返回={}"
,
corpid
,
config
.
getWxSuiteid
(),
JSON
.
toJSONString
(
paramsDTO
),
log
.
info
(
"创建动态活码参数corpid={},app={},param={},返回={}"
,
qwDTO
.
getThirdCorpid
()
,
config
.
getWxSuiteid
(),
JSON
.
toJSONString
(
paramsDTO
),
JSON
.
toJSONString
(
wxResp
));
JSON
.
toJSONString
(
wxResp
));
if
(
null
!=
wxResp
&&
0
==
wxResp
.
getErrcode
())
{
if
(
null
!=
wxResp
&&
0
==
wxResp
.
getErrcode
())
{
retDTO
.
setHmQrcode
(
wxResp
.
getQr_code
());
retDTO
.
setHmQrcode
(
wxResp
.
getQr_code
());
...
@@ -452,7 +456,7 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
...
@@ -452,7 +456,7 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
qo
.
setWxConfigId
(
wxResp
.
getConfig_id
());
qo
.
setWxConfigId
(
wxResp
.
getConfig_id
());
qo
.
setWxQrcode
(
wxResp
.
getQr_code
());
qo
.
setWxQrcode
(
wxResp
.
getQr_code
());
qo
.
setRelationId
(
key
);
qo
.
setRelationId
(
key
);
qo
.
setCorpid
(
corpid
);
qo
.
setCorpid
(
qwDTO
.
getThirdCorpid
()
);
this
.
hmQrcodeTempService
.
save
(
qo
);
this
.
hmQrcodeTempService
.
save
(
qo
);
return
ServiceResponse
.
success
(
wxResp
.
getQr_code
());
return
ServiceResponse
.
success
(
wxResp
.
getQr_code
());
}
}
...
...
haoban-manage3-service/src/main/resources/mapper/HandoverExternalMapper.xml
View file @
a621d903
...
@@ -30,133 +30,7 @@
...
@@ -30,133 +30,7 @@
haoban_friend_flag, external_head_url, status_flag, handover_transfer_id, takeover_time,
haoban_friend_flag, external_head_url, status_flag, handover_transfer_id, takeover_time,
transfer_status, transfer_time, create_time, update_time
transfer_status, transfer_time, create_time, update_time
</sql>
</sql>
<select
id=
"selectByPrimaryKey"
parameterType=
"java.lang.String"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
from tab_haoban_handover_external
where handover_external_id = #{handoverExternalId,jdbcType=VARCHAR}
</select>
<delete
id=
"deleteByPrimaryKey"
parameterType=
"java.lang.String"
>
delete from tab_haoban_handover_external
where handover_external_id = #{handoverExternalId,jdbcType=VARCHAR}
</delete>
<insert
id=
"insert"
parameterType=
"com.gic.haoban.manage.service.entity.TabHandoverExternal"
>
insert into tab_haoban_handover_external (handover_external_id, wx_enterprise_id,
staff_id, user_id, external_user_id,
external_user_name,relation_id, haoban_friend_flag, external_head_url,
status_flag, handover_transfer_id, takeover_time,
transfer_status, transfer_time, create_time,
update_time)
values (#{handoverExternalId,jdbcType=VARCHAR}, #{wxEnterpriseId,jdbcType=VARCHAR},
#{staffId,jdbcType=VARCHAR}, #{userId,jdbcType=VARCHAR}, #{externalUserId,jdbcType=VARCHAR},
#{externalUserName,jdbcType=VARCHAR},#{relationId}, #{haobanFriendFlag,jdbcType=INTEGER}, #{externalHeadUrl,jdbcType=VARCHAR},
#{statusFlag,jdbcType=INTEGER}, #{handoverTransferId,jdbcType=VARCHAR}, #{takeoverTime,jdbcType=TIMESTAMP},
#{transferStatus}, #{transferTime,jdbcType=TIMESTAMP}, #{createTime,jdbcType=TIMESTAMP},
#{updateTime,jdbcType=TIMESTAMP})
</insert>
<insert
id=
"insertSelective"
parameterType=
"com.gic.haoban.manage.service.entity.TabHandoverExternal"
>
insert into tab_haoban_handover_external
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"handoverExternalId != null"
>
handover_external_id,
</if>
<if
test=
"wxEnterpriseId != null"
>
wx_enterprise_id,
</if>
<if
test=
"staffId != null"
>
staff_id,
</if>
<if
test=
"userId != null"
>
user_id,
</if>
<if
test=
"externalUserId != null"
>
external_user_id,
</if>
<if
test=
"externalUserName != null"
>
external_user_name,
</if>
<if
test=
"relationId != null"
>
relation_id,
</if>
<if
test=
"haobanFriendFlag != null"
>
haoban_friend_flag,
</if>
<if
test=
"externalHeadUrl != null"
>
external_head_url,
</if>
<if
test=
"statusFlag != null"
>
status_flag,
</if>
<if
test=
"handoverTransferId != null"
>
handover_transfer_id,
</if>
<if
test=
"takeoverTime != null"
>
takeover_time,
</if>
<if
test=
"transferStatus != null"
>
transfer_status,
</if>
<if
test=
"transferTime != null"
>
transfer_time,
</if>
<if
test=
"createTime != null"
>
create_time,
</if>
<if
test=
"updateTime != null"
>
update_time,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"handoverExternalId != null"
>
#{handoverExternalId,jdbcType=VARCHAR},
</if>
<if
test=
"wxEnterpriseId != null"
>
#{wxEnterpriseId,jdbcType=VARCHAR},
</if>
<if
test=
"staffId != null"
>
#{staffId,jdbcType=VARCHAR},
</if>
<if
test=
"userId != null"
>
#{userId,jdbcType=VARCHAR},
</if>
<if
test=
"externalUserId != null"
>
#{externalUserId,jdbcType=VARCHAR},
</if>
<if
test=
"externalUserName != null"
>
#{externalUserName,jdbcType=VARCHAR},
</if>
<if
test=
"relationId != null"
>
#{relationId,jdbcType=VARCHAR},
</if>
<if
test=
"haobanFriendFlag != null"
>
#{haobanFriendFlag,jdbcType=INTEGER},
</if>
<if
test=
"externalHeadUrl != null"
>
#{externalHeadUrl,jdbcType=VARCHAR},
</if>
<if
test=
"statusFlag != null"
>
#{statusFlag,jdbcType=INTEGER},
</if>
<if
test=
"handoverTransferId != null"
>
#{handoverTransferId,jdbcType=VARCHAR},
</if>
<if
test=
"takeoverTime != null"
>
#{takeoverTime,jdbcType=TIMESTAMP},
</if>
<if
test=
"transferStatus != null"
>
#{transferStatus},
</if>
<if
test=
"transferTime != null"
>
#{transferTime,jdbcType=TIMESTAMP},
</if>
<if
test=
"createTime != null"
>
#{createTime,jdbcType=TIMESTAMP},
</if>
<if
test=
"updateTime != null"
>
#{updateTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update
id=
"updateByPrimaryKeySelective"
parameterType=
"com.gic.haoban.manage.service.entity.TabHandoverExternal"
>
<update
id=
"updateByPrimaryKeySelective"
parameterType=
"com.gic.haoban.manage.service.entity.TabHandoverExternal"
>
update tab_haoban_handover_external
update tab_haoban_handover_external
<set>
<set>
...
@@ -208,25 +82,6 @@
...
@@ -208,25 +82,6 @@
</set>
</set>
where handover_external_id = #{handoverExternalId,jdbcType=VARCHAR}
where handover_external_id = #{handoverExternalId,jdbcType=VARCHAR}
</update>
</update>
<update
id=
"updateByPrimaryKey"
parameterType=
"com.gic.haoban.manage.service.entity.TabHandoverExternal"
>
update tab_haoban_handover_external
set wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR},
staff_id = #{staffId,jdbcType=VARCHAR},
user_id = #{userId,jdbcType=VARCHAR},
external_user_id = #{externalUserId,jdbcType=VARCHAR},
external_user_name = #{externalUserName,jdbcType=VARCHAR},
relation_id = #{relationId,jdbcType=VARCHAR},
haoban_friend_flag = #{haobanFriendFlag,jdbcType=INTEGER},
external_head_url = #{externalHeadUrl,jdbcType=VARCHAR},
status_flag = #{statusFlag,jdbcType=INTEGER},
handover_transfer_id = #{handoverTransferId,jdbcType=VARCHAR},
takeover_time = #{takeoverTime,jdbcType=TIMESTAMP},
transfer_status = #{transferStatus},
transfer_time = #{transferTime,jdbcType=TIMESTAMP},
create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP}
where handover_external_id = #{handoverExternalId,jdbcType=VARCHAR}
</update>
<insert
id=
"insertBatch"
>
<insert
id=
"insertBatch"
>
insert into tab_haoban_handover_external (handover_external_id, wx_enterprise_id,
insert into tab_haoban_handover_external (handover_external_id, wx_enterprise_id,
...
...
haoban-manage3-wx/src/main/java/com/gic/haoban/manage/web/controller/ClerkController.java
View file @
a621d903
...
@@ -1225,6 +1225,9 @@ public class ClerkController extends WebBaseController {
...
@@ -1225,6 +1225,9 @@ public class ClerkController extends WebBaseController {
return
RestResponse
.
failure
(
String
.
valueOf
(
code
),
HaoBanErrCode
.
ERR_400002
.
getMsg
());
return
RestResponse
.
failure
(
String
.
valueOf
(
code
),
HaoBanErrCode
.
ERR_400002
.
getMsg
());
}
}
String
wxUserId
=
staffDTO
.
getWxUserId
();
String
wxUserId
=
staffDTO
.
getWxUserId
();
if
(
qwDTO
.
needOpenUserId3th
())
{
wxUserId
=
staffDTO
.
getWxOpenUseId
()
;
}
String
openid
=
qywxUserApiService
.
getSelfOpenIdByUserId
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
wxUserId
);
String
openid
=
qywxUserApiService
.
getSelfOpenIdByUserId
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
wxUserId
);
if
(
StringUtils
.
isBlank
(
openid
))
{
if
(
StringUtils
.
isBlank
(
openid
))
{
int
code
=
HaoBanErrCode
.
ERR_600003
.
getCode
();
int
code
=
HaoBanErrCode
.
ERR_600003
.
getCode
();
...
...
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