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
4c0f3a70
Commit
4c0f3a70
authored
Sep 13, 2022
by
墨竹
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:合并代码
parent
7e853a28
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
91 additions
and
111 deletions
+91
-111
ExternalClerkRelatedServiceImpl.java
...service/service/impl/ExternalClerkRelatedServiceImpl.java
+91
-111
No files found.
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/ExternalClerkRelatedServiceImpl.java
View file @
4c0f3a70
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
impl
;
import
static
org
.
slf4j
.
LoggerFactory
.
getLogger
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.api.base.dto.SubscribeMessageDTO
;
...
...
@@ -40,17 +21,8 @@ import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO;
import
com.gic.haoban.manage.api.dto.qdto.hm.WxUserAddLogQDTO
;
import
com.gic.haoban.manage.api.enums.SecretTypeEnum
;
import
com.gic.haoban.manage.service.config.Config
;
import
com.gic.haoban.manage.service.dao.mapper.MemberUnionidRelatedMapper
;
import
com.gic.haoban.manage.service.config.Config
;
import
com.gic.haoban.manage.service.dao.mapper.StaffMapper
;
import
com.gic.haoban.manage.service.dao.mapper.TabHaobanExternalClerkRelatedMapper
;
import
com.gic.haoban.manage.service.dao.mapper.TabHaobanRepairExternalUserMapper
;
import
com.gic.haoban.manage.service.dao.mapper.TabHaobanStaffClerkRelationMapper
;
import
com.gic.haoban.manage.service.entity.MemberUnionidRelated
;
import
com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated
;
import
com.gic.haoban.manage.service.entity.TabHaobanRepairExternalUser
;
import
com.gic.haoban.manage.service.entity.TabHaobanStaff
;
import
com.gic.haoban.manage.service.entity.TabHaobanStaffClerkRelation
;
import
com.gic.haoban.manage.service.dao.mapper.*
;
import
com.gic.haoban.manage.service.entity.*
;
import
com.gic.haoban.manage.service.service.ExternalClerkRelatedService
;
import
com.gic.haoban.manage.service.service.SecretSettingService
;
import
com.gic.haoban.manage.service.service.WxEnterpriseService
;
...
...
@@ -68,6 +40,16 @@ import com.gic.search.engine.api.dto.dynamic.DynamicSearchDTO;
import
com.gic.search.engine.api.service.dynamic.ESDataDynamicOperationApiService
;
import
com.gic.wechat.api.dto.qywx.QywxNewExternalUseridDTO
;
import
com.gic.wechat.api.service.qywx.QywxUserApiService
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
static
org
.
slf4j
.
LoggerFactory
.
getLogger
;
@Service
public
class
ExternalClerkRelatedServiceImpl
implements
ExternalClerkRelatedService
{
...
...
@@ -96,18 +78,16 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
private
MemberEntranceApiService
memberEntranceApiService
;
@Autowired
private
Config
config
;
private
WxEnterpriseService
wxEnterpriseService
;
@Autowired
private
MemberUnionidRelatedMapper
memberUnionidRelatedMapper
;
private
WxEnterpriseService
wxEnterpriseService
;
@Autowired
private
QywxUserApiService
qywxUserApiService
;
private
MemberUnionidRelatedMapper
memberUnionidRelatedMapper
;
@Autowired
private
Config
config
;
private
QywxUserApiService
qywxUserApiService
;
@Autowired
private
TabHaobanRepairExternalUserMapper
tabHaobanRepairExternalUserMapper
;
private
TabHaobanRepairExternalUserMapper
tabHaobanRepairExternalUserMapper
;
@Autowired
private
SecretSettingService
secretSettingService
;
private
SecretSettingService
secretSettingService
;
@Override
public
void
insert
(
TabHaobanExternalClerkRelated
related
)
{
...
...
@@ -187,7 +167,7 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
wxUserAddLogService
.
save
(
wxUserAddLogQDTO
);
//定制
addDelFriendEvent
(
related
.
getUnionid
(),
related
.
getClerkId
(),
enterpriseId
,
related
.
getMemberId
(),
related
.
getStoreId
(),
0
);
addDelFriendEvent
(
related
.
getUnionid
(),
related
.
getClerkId
(),
enterpriseId
,
related
.
getMemberId
(),
related
.
getStoreId
(),
0
);
}
/**
...
...
@@ -355,140 +335,140 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
@Override
public
void
repairExternalUserId
(
String
wxEnterpriseIds
)
{
logger
.
info
(
"外部联系人检查,wxEnterpriseIds={}"
,
wxEnterpriseIds
);
DingUtils
.
send
(
"外部联系人修复消息,企业="
+
wxEnterpriseIds
+
",tranceid="
+
ProviderLocalTag
.
tag
.
get
(),
false
);
if
(
StringUtils
.
isEmpty
(
wxEnterpriseIds
))
{
return
;
DingUtils
.
send
(
"外部联系人修复消息,企业="
+
wxEnterpriseIds
+
",tranceid="
+
ProviderLocalTag
.
tag
.
get
(),
false
);
if
(
StringUtils
.
isEmpty
(
wxEnterpriseIds
))
{
return
;
}
Object
cache
=
RedisUtil
.
getCache
(
"repairExternalUserId"
)
;
String
[]
arr
=
wxEnterpriseIds
.
split
(
","
)
;
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
String
wxEnterpriseId
=
arr
[
i
]
;
if
(
StringUtils
.
isEmpty
(
wxEnterpriseId
))
{
continue
;
Object
cache
=
RedisUtil
.
getCache
(
"repairExternalUserId"
);
String
[]
arr
=
wxEnterpriseIds
.
split
(
","
);
for
(
int
i
=
0
;
i
<
arr
.
length
;
i
++)
{
String
wxEnterpriseId
=
arr
[
i
];
if
(
StringUtils
.
isEmpty
(
wxEnterpriseId
))
{
continue
;
}
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
if
(
null
==
qwDTO
)
{
logger
.
info
(
"外部联系人检查,企业不存在,wxEnterpriseId={}"
,
wxEnterpriseId
);
continue
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
);
if
(
null
==
qwDTO
)
{
logger
.
info
(
"外部联系人检查,企业不存在,wxEnterpriseId={}"
,
wxEnterpriseId
);
continue
;
}
SecretSettingDTO
secret
=
this
.
secretSettingService
.
getSecretSetting
(
wxEnterpriseId
,
SecretTypeEnum
.
CUSTOMIZED_APP
.
getVal
())
;
int
pageSize
=
800
;
int
pageNum
=
0
;
while
(
true
)
{
List
<
TabHaobanExternalClerkRelated
>
list
=
this
.
mapper
.
listPageByWxenterpriseId
(
wxEnterpriseId
,
pageNum
*
pageSize
,
pageSize
)
;
if
(
CollectionUtils
.
isEmpty
(
list
))
{
break
;
SecretSettingDTO
secret
=
this
.
secretSettingService
.
getSecretSetting
(
wxEnterpriseId
,
SecretTypeEnum
.
CUSTOMIZED_APP
.
getVal
());
int
pageSize
=
800
;
int
pageNum
=
0
;
while
(
true
)
{
List
<
TabHaobanExternalClerkRelated
>
list
=
this
.
mapper
.
listPageByWxenterpriseId
(
wxEnterpriseId
,
pageNum
*
pageSize
,
pageSize
)
;
if
(
CollectionUtils
.
isEmpty
(
list
))
{
break
;
}
pageNum
++;
Set
<
String
>
externalUserIdSet
=
list
.
stream
().
map
(
dto
->
dto
.
getExternalUserId
()).
collect
(
Collectors
.
toSet
())
;
Set
<
String
>
externalUserIdSet
=
list
.
stream
().
map
(
dto
->
dto
.
getExternalUserId
()).
collect
(
Collectors
.
toSet
())
;
List
<
String
>
externalUserIdList
=
new
ArrayList
<>();
externalUserIdList
.
addAll
(
externalUserIdSet
)
;
List
<
MemberUnionidRelated
>
unionidlist
=
this
.
memberUnionidRelatedMapper
.
listByWxEnterpriseIdAndExternalUserId
(
wxEnterpriseId
,
externalUserIdList
)
;
Map
<
String
,
String
>
map
=
unionidlist
.
stream
().
collect
(
Collectors
.
toMap
(
MemberUnionidRelated:
:
getExternalUserid
,
MemberUnionidRelated:
:
getSelfExternalUserid
,(
k1
,
k2
)->
k1
))
;
logger
.
info
(
"外部联系人检查,第{}次,好友数={},unionid表数={}"
,
pageNum
,
externalUserIdList
.
size
(),
unionidlist
.
size
());
List
<
String
>
delList
=
new
ArrayList
<>()
;
Set
<
String
>
checkSet
=
unionidlist
.
stream
().
map
(
dto
->
dto
.
getExternalUserid
()).
collect
(
Collectors
.
toSet
())
;
externalUserIdList
.
addAll
(
externalUserIdSet
);
List
<
MemberUnionidRelated
>
unionidlist
=
this
.
memberUnionidRelatedMapper
.
listByWxEnterpriseIdAndExternalUserId
(
wxEnterpriseId
,
externalUserIdList
)
;
Map
<
String
,
String
>
map
=
unionidlist
.
stream
().
collect
(
Collectors
.
toMap
(
MemberUnionidRelated:
:
getExternalUserid
,
MemberUnionidRelated:
:
getSelfExternalUserid
,
(
k1
,
k2
)
->
k1
))
;
logger
.
info
(
"外部联系人检查,第{}次,好友数={},unionid表数={}"
,
pageNum
,
externalUserIdList
.
size
(),
unionidlist
.
size
());
List
<
String
>
delList
=
new
ArrayList
<>();
Set
<
String
>
checkSet
=
unionidlist
.
stream
().
map
(
dto
->
dto
.
getExternalUserid
()).
collect
(
Collectors
.
toSet
())
;
List
<
String
>
checkList
=
new
ArrayList
<>();
checkList
.
addAll
(
checkSet
)
;
for
(
String
item
:
externalUserIdList
)
{
if
(!
checkList
.
contains
(
item
))
{
delList
.
add
(
item
)
;
checkList
.
addAll
(
checkSet
);
for
(
String
item
:
externalUserIdList
)
{
if
(!
checkList
.
contains
(
item
))
{
delList
.
add
(
item
);
}
}
logger
.
info
(
"外部联系人检查,unionid表不存在记录的数量={},待检查数={}"
,
delList
.
size
(),
checkList
.
size
());
logger
.
info
(
"外部联系人检查,unionid表不存在记录的数量={},待检查数={}"
,
delList
.
size
(),
checkList
.
size
());
List
<
String
>
notExistQwList
=
new
ArrayList
<>();
List
<
TabHaobanRepairExternalUser
>
errorList
=
new
ArrayList
<>()
;
if
(
CollectionUtils
.
isNotEmpty
(
checkList
))
{
List
<
TabHaobanRepairExternalUser
>
errorList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
checkList
))
{
List
<
String
>
qwList
=
new
ArrayList
<>();
List
<
QywxNewExternalUseridDTO
>
newExternalUseridList
=
null
;
if
(
null
!=
cache
)
{
newExternalUseridList
=
this
.
qywxUserApiService
.
getNewExternalUseridByList
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
checkList
)
;
}
else
{
newExternalUseridList
=
this
.
qywxUserApiService
.
getSelfNewExternalUseridByList
(
qwDTO
.
getDkCorpid
(),
secret
.
getSecretVal
(),
checkList
)
;
List
<
QywxNewExternalUseridDTO
>
newExternalUseridList
=
null
;
if
(
null
!=
cache
)
{
newExternalUseridList
=
this
.
qywxUserApiService
.
getNewExternalUseridByList
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
checkList
)
;
}
else
{
newExternalUseridList
=
this
.
qywxUserApiService
.
getSelfNewExternalUseridByList
(
qwDTO
.
getDkCorpid
(),
secret
.
getSecretVal
(),
checkList
)
;
}
if
(
null
!=
newExternalUseridList
)
{
logger
.
info
(
"外部联系人检查,查询企微数={},返回数={}"
,
checkList
.
size
(),
newExternalUseridList
.
size
());
logger
.
info
(
"外部联系人检查,查询企微数={},返回数={}"
,
checkList
.
size
(),
newExternalUseridList
.
size
());
for
(
QywxNewExternalUseridDTO
qywxNewExternalUseridDTO
:
newExternalUseridList
)
{
String
new_external_userid
=
qywxNewExternalUseridDTO
.
getNew_external_userid
();
String
external_userid
=
qywxNewExternalUseridDTO
.
getExternal_userid
();
qwList
.
add
(
external_userid
)
;
if
(
new_external_userid
.
equals
(
external_userid
))
{
continue
;
}
else
{
logger
.
info
(
"外部联系人检查,数据异常={}"
,
new_external_userid
,
external_userid
);
qwList
.
add
(
external_userid
);
if
(
new_external_userid
.
equals
(
external_userid
))
{
continue
;
}
else
{
logger
.
info
(
"外部联系人检查,数据异常={}"
,
new_external_userid
,
external_userid
);
TabHaobanRepairExternalUser
user
=
new
TabHaobanRepairExternalUser
();
user
.
setId
(
UniqueIdUtils
.
uniqueLong
());
user
.
setUserId
(
external_userid
);
user
.
setWxEnterpriseId
(
wxEnterpriseId
);
user
.
setStatusFlag
(
111
);
user
.
setRemark
(
new_external_userid
);
errorList
.
add
(
user
)
;
errorList
.
add
(
user
);
}
}
if
(
checkList
.
size
()!=
newExternalUseridList
.
size
())
{
for
(
String
item
:
checkList
)
{
if
(!
qwList
.
contains
(
item
))
{
notExistQwList
.
add
(
item
)
;
if
(
checkList
.
size
()
!=
newExternalUseridList
.
size
())
{
for
(
String
item
:
checkList
)
{
if
(!
qwList
.
contains
(
item
))
{
notExistQwList
.
add
(
item
);
}
}
}
}
else
{
}
else
{
logger
.
info
(
"外部联系人检查,调用企业异常"
);
}
// 通过外部联系人查询不到
if
(
CollectionUtils
.
isNotEmpty
(
notExistQwList
))
{
if
(
CollectionUtils
.
isNotEmpty
(
notExistQwList
))
{
// 需要用自建的查询的
List
<
String
>
selfList
=
new
ArrayList
<>();
List
<
TabHaobanRepairExternalUser
>
addList
=
new
ArrayList
<>();
for
(
String
item
:
notExistQwList
)
{
for
(
String
item
:
notExistQwList
)
{
TabHaobanRepairExternalUser
user
=
new
TabHaobanRepairExternalUser
();
user
.
setId
(
UniqueIdUtils
.
uniqueLong
());
user
.
setUserId
(
item
);
if
(
StringUtils
.
isNotBlank
(
map
.
get
(
item
))
&&
!
map
.
get
(
item
).
equals
(
item
))
{
selfList
.
add
(
map
.
get
(
item
))
;
if
(
StringUtils
.
isNotBlank
(
map
.
get
(
item
))
&&
!
map
.
get
(
item
).
equals
(
item
))
{
selfList
.
add
(
map
.
get
(
item
));
}
user
.
setSelfUserId
(
map
.
get
(
item
));
user
.
setWxEnterpriseId
(
wxEnterpriseId
);
user
.
setStatusFlag
(
11
);
user
.
setRemark
(
"企微查询不到"
);
addList
.
add
(
user
)
;
addList
.
add
(
user
);
}
if
(
CollectionUtils
.
isNotEmpty
(
selfList
))
{
newExternalUseridList
=
null
;
if
(
null
!=
cache
)
{
newExternalUseridList
=
this
.
qywxUserApiService
.
getNewExternalUseridByList
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
selfList
)
;
}
else
{
newExternalUseridList
=
this
.
qywxUserApiService
.
getSelfNewExternalUseridByList
(
qwDTO
.
getDkCorpid
(),
secret
.
getSecretVal
(),
selfList
)
;
if
(
CollectionUtils
.
isNotEmpty
(
selfList
))
{
newExternalUseridList
=
null
;
if
(
null
!=
cache
)
{
newExternalUseridList
=
this
.
qywxUserApiService
.
getNewExternalUseridByList
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
selfList
)
;
}
else
{
newExternalUseridList
=
this
.
qywxUserApiService
.
getSelfNewExternalUseridByList
(
qwDTO
.
getDkCorpid
(),
secret
.
getSecretVal
(),
selfList
)
;
}
Map
<
String
,
String
>
selfMap
=
new
HashMap
<>()
;
if
(
null
!=
newExternalUseridList
)
{
selfMap
=
newExternalUseridList
.
stream
().
collect
(
Collectors
.
toMap
(
QywxNewExternalUseridDTO:
:
getExternal_userid
,
QywxNewExternalUseridDTO:
:
getNew_external_userid
,
(
k1
,
k2
)->
k1
))
;
Map
<
String
,
String
>
selfMap
=
new
HashMap
<>()
;
if
(
null
!=
newExternalUseridList
)
{
selfMap
=
newExternalUseridList
.
stream
().
collect
(
Collectors
.
toMap
(
QywxNewExternalUseridDTO:
:
getExternal_userid
,
QywxNewExternalUseridDTO:
:
getNew_external_userid
,
(
k1
,
k2
)
->
k1
))
;
}
for
(
TabHaobanRepairExternalUser
item
:
addList
)
{
for
(
TabHaobanRepairExternalUser
item
:
addList
)
{
item
.
setNewUserId
(
selfMap
.
get
(
item
.
getSelfUserId
()));
}
}
this
.
tabHaobanRepairExternalUserMapper
.
batchInsert
(
addList
)
;
this
.
tabHaobanRepairExternalUserMapper
.
batchInsert
(
addList
);
}
// unionid表不存在的记录
if
(
CollectionUtils
.
isNotEmpty
(
delList
))
{
if
(
CollectionUtils
.
isNotEmpty
(
delList
))
{
List
<
TabHaobanRepairExternalUser
>
addList
=
new
ArrayList
<>();
for
(
String
item
:
delList
)
{
for
(
String
item
:
delList
)
{
TabHaobanRepairExternalUser
user
=
new
TabHaobanRepairExternalUser
();
user
.
setId
(
UniqueIdUtils
.
uniqueLong
());
user
.
setUserId
(
item
);
user
.
setWxEnterpriseId
(
wxEnterpriseId
);
user
.
setStatusFlag
(
1
);
user
.
setRemark
(
"unionid不存在记录"
);
addList
.
add
(
user
)
;
addList
.
add
(
user
);
}
this
.
tabHaobanRepairExternalUserMapper
.
batchInsert
(
addList
)
;
this
.
tabHaobanRepairExternalUserMapper
.
batchInsert
(
addList
);
}
// 错误的ID
if
(
CollectionUtils
.
isNotEmpty
(
errorList
))
{
this
.
tabHaobanRepairExternalUserMapper
.
batchInsert
(
errorList
)
;
if
(
CollectionUtils
.
isNotEmpty
(
errorList
))
{
this
.
tabHaobanRepairExternalUserMapper
.
batchInsert
(
errorList
);
}
}
}
...
...
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