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
a8b87e74
Commit
a8b87e74
authored
Sep 29, 2023
by
徐高华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
标签同步
parent
50cf0193
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
134 additions
and
31 deletions
+134
-31
QywxTagRelationMapper.java
...oban/manage/service/dao/mapper/QywxTagRelationMapper.java
+2
-0
DealSyncOperationApiServiceImpl.java
...ice/service/out/impl/DealSyncOperationApiServiceImpl.java
+2
-1
QywxTagApiServiceImpl.java
...anage/service/service/out/impl/QywxTagApiServiceImpl.java
+45
-7
StaffApiServiceImpl.java
.../manage/service/service/out/impl/StaffApiServiceImpl.java
+4
-20
QywxTagRelationMapper.xml
...rvice/src/main/resources/mapper/QywxTagRelationMapper.xml
+4
-3
TagTest3.java
haoban-manage3-service/src/test/java/TagTest3.java
+77
-0
No files found.
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/QywxTagRelationMapper.java
View file @
a8b87e74
...
@@ -68,6 +68,8 @@ public interface QywxTagRelationMapper {
...
@@ -68,6 +68,8 @@ public interface QywxTagRelationMapper {
*/
*/
int
delByMemberTagId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"memberTagId"
)
String
memberTagId
);
int
delByMemberTagId
(
@Param
(
"wxEnterpriseId"
)
String
wxEnterpriseId
,
@Param
(
"memberTagId"
)
String
memberTagId
);
int
delById
(
@Param
(
"id"
)
String
id
);
/**
/**
* 查询企业下所有同步的
* 查询企业下所有同步的
*
*
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/DealSyncOperationApiServiceImpl.java
View file @
a8b87e74
...
@@ -895,8 +895,9 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
...
@@ -895,8 +895,9 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
this
.
syncTaskService
.
updateTaskStatus
(
taskId
,
4
)
;
this
.
syncTaskService
.
updateTaskStatus
(
taskId
,
4
)
;
}
}
if
(
task
.
getCreateTime
().
getTime
()+
1000
*
60
*
60
*
3
<
System
.
currentTimeMillis
())
{
if
(
task
.
getCreateTime
().
getTime
()+
1000
*
60
*
60
*
3
<
System
.
currentTimeMillis
())
{
logger
.
info
(
"超过3小时taskId={}
,{}
"
,
taskId
);
logger
.
info
(
"超过3小时taskId={}"
,
taskId
);
it
.
remove
();
it
.
remove
();
RedisUtil
.
delLocalCache
(
"department-list-cache-"
+
task
.
getWxEnterpriseId
());
continue
;
continue
;
}
}
boolean
flag
=
this
.
syncDepartmentStaffTask
(
taskId
,
type
)
;
boolean
flag
=
this
.
syncDepartmentStaffTask
(
taskId
,
type
)
;
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/QywxTagApiServiceImpl.java
View file @
a8b87e74
...
@@ -111,13 +111,51 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
...
@@ -111,13 +111,51 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
@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
)
{
logger
.
info
(
"
保存标签同步"
);
logger
.
info
(
"
标签同步到企业微信,wxEnterpriseId={},memberTagId={}"
,
wxEnterpriseId
,
infoDTO
.
getMemberTagId
()
);
ServiceResponse
ret
=
new
ServiceResponse
();
ServiceResponse
ret
=
new
ServiceResponse
();
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
)
;
// 如果
// 判断更新
List
<
TabQywxTagRelation
>
list
=
this
.
qywxTagRelationMapper
.
listByMemberTagId
(
wxEnterpriseId
,
infoDTO
.
getMemberTagId
())
;
List
<
String
>
needDelList
=
new
ArrayList
<>()
;
if
(
CollectionUtils
.
isNotEmpty
(
list
)
&&
list
.
size
()
>=
items
.
size
())
{
List
<
QywxTagItemDTO
>
needAddList
=
new
ArrayList
<>()
;
logger
.
info
(
"标签已存在,直接处理会员"
);
List
<
String
>
memberTagItemIdList
=
items
.
stream
().
map
(
o
->
o
.
getMemberTagItemId
()).
collect
(
Collectors
.
toList
());
;
List
<
TabQywxTagRelation
>
relationList
=
this
.
qywxTagRelationMapper
.
listByMemberTagId
(
wxEnterpriseId
,
infoDTO
.
getMemberTagId
())
;
if
(
CollectionUtils
.
isNotEmpty
(
relationList
))
{
String
hbTagId
=
relationList
.
get
(
0
).
getQywxTagId
()
;
TabQywxTag
tag
=
this
.
qywxTagService
.
getQywxTagByQywxTagId
(
wxEnterpriseId
,
hbTagId
)
;
String
qwGroupKey
=
tag
.
getQywxGroupKey
()
;
logger
.
info
(
"已经存在企微标签,进行更新处理={}"
,
qwGroupKey
);
QywxGetCorpTagListDTO
tagListDTO
=
this
.
qywxSuiteApiService
.
getCorpTagList
(
qwDTO
.
getThirdCorpid
(),
qwDTO
.
getSelf3thSecret
(),
Arrays
.
asList
(
qwGroupKey
),
0
,
qwDTO
.
isSelf
(),
qwDTO
.
getUrlHost
())
;
logger
.
info
(
"企微侧标签={}"
,
JSONObject
.
toJSONString
(
tagListDTO
));
List
<
TabQywxTagItem
>
tagItemList
=
this
.
qywxTagService
.
listByQywxTagId
(
wxEnterpriseId
,
hbTagId
)
;
Map
<
String
,
TabQywxTagItem
>
tagItemMap
=
tagItemList
.
stream
().
collect
(
Collectors
.
toMap
(
TabQywxTagItem:
:
getQywxTagItemId
,
o
->
o
,(
k1
,
k2
)->
k1
))
;
// 更新赋值
infoDTO
.
setQywxGroupKey
(
qwGroupKey
);
// 需要删除的标签值
for
(
TabQywxTagRelation
relation
:
relationList
)
{
String
memberTagId
=
relation
.
getTagItemId
()
;
if
(!
memberTagItemIdList
.
contains
(
memberTagId
))
{
this
.
qywxTagRelationMapper
.
deleteByPrimaryKey
(
relation
.
getQywxTagRelationId
())
;
String
hbTagItemId
=
relation
.
getQywxTagItemId
()
;
TabQywxTagItem
tagItem
=
tagItemMap
.
get
(
hbTagItemId
)
;
this
.
qywxTagService
.
delQywxTagItemById
(
wxEnterpriseId
,
hbTagItemId
)
;
needDelList
.
add
(
tagItem
.
getQywxTagKey
())
;
}
}
if
(
CollectionUtils
.
isNotEmpty
(
needDelList
))
{
this
.
qywxSuiteApiService
.
delCorpTag
(
qwDTO
.
getThirdCorpid
(),
qwDTO
.
getSelf3thSecret
(),
needDelList
,
1
,
qwDTO
.
isSelf
(),
qwDTO
.
getUrlHost
());
}
// 需要添加的标签值
List
<
String
>
existMemberTagIdList
=
relationList
.
stream
().
map
(
o
->
o
.
getTagItemId
()).
collect
(
Collectors
.
toList
());
for
(
QywxTagItemDTO
memberTag
:
items
)
{
if
(!
existMemberTagIdList
.
contains
(
memberTag
.
getMemberTagItemId
()))
{
needAddList
.
add
(
memberTag
)
;
}
}
items
=
needAddList
;
logger
.
info
(
"更新标签,删除={},新增={}"
,
needDelList
,
needAddList
);
}
if
(
CollectionUtils
.
isEmpty
(
items
))
{
logger
.
info
(
"没有需要处理的标签"
);
return
ret
;
return
ret
;
}
}
//调用企业微信接口保存
//调用企业微信接口保存
...
@@ -140,7 +178,7 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
...
@@ -140,7 +178,7 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
return
ret
;
return
ret
;
}
}
//保存关联关系
//保存关联关系
saveRelation
(
wxEnterpriseId
,
enterpriseId
,
infoDTO
,
items
,
savePair
);
this
.
saveRelation
(
wxEnterpriseId
,
enterpriseId
,
infoDTO
,
items
,
savePair
);
return
ret
;
return
ret
;
}
}
...
@@ -183,7 +221,7 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
...
@@ -183,7 +221,7 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
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
.
get
QywxTagKey
());
itemRelation
.
setTagItemId
(
orgItem
.
get
MemberTagItemId
());
return
itemRelation
;
return
itemRelation
;
}).
collect
(
Collectors
.
toList
());
}).
collect
(
Collectors
.
toList
());
saveRelationList
.
addAll
(
itemList
);
saveRelationList
.
addAll
(
itemList
);
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/StaffApiServiceImpl.java
View file @
a8b87e74
...
@@ -46,6 +46,7 @@ import com.gic.haoban.manage.service.service.*;
...
@@ -46,6 +46,7 @@ import com.gic.haoban.manage.service.service.*;
import
com.gic.haoban.manage.service.service.chat.GroupChatService
;
import
com.gic.haoban.manage.service.service.chat.GroupChatService
;
import
com.gic.haoban.manage.service.service.fee.HaobanQywxFeeOrderAccountService
;
import
com.gic.haoban.manage.service.service.fee.HaobanQywxFeeOrderAccountService
;
import
com.gic.haoban.manage.service.service.fee.HaobanQywxFeeOrderService
;
import
com.gic.haoban.manage.service.service.fee.HaobanQywxFeeOrderService
;
import
com.gic.haoban.manage.service.util.DingUtils
;
import
com.gic.haoban.manage.service.util.EmojiFilterUtil
;
import
com.gic.haoban.manage.service.util.EmojiFilterUtil
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.thirdparty.cloudfile.CloudFileUtil
;
import
com.gic.thirdparty.cloudfile.CloudFileUtil
;
...
@@ -303,22 +304,7 @@ public class StaffApiServiceImpl implements StaffApiService {
...
@@ -303,22 +304,7 @@ public class StaffApiServiceImpl implements StaffApiService {
TabHaobanStaff
staff
=
new
TabHaobanStaff
();
TabHaobanStaff
staff
=
new
TabHaobanStaff
();
List
<
StaffDTO
>
staffDTOList
=
staffService
.
listByUserIdsAndWxEnterpriseId
(
Lists
.
newArrayList
(
wxUserId
,
openUserid
),
wxEnterpriseId
);
List
<
StaffDTO
>
staffDTOList
=
staffService
.
listByUserIdsAndWxEnterpriseId
(
Lists
.
newArrayList
(
wxUserId
,
openUserid
),
wxEnterpriseId
);
if
(
CollUtil
.
isNotEmpty
(
staffDTOList
)
&&
staffDTOList
.
size
()>
1
)
{
if
(
CollUtil
.
isNotEmpty
(
staffDTOList
)
&&
staffDTOList
.
size
()>
1
)
{
//只保留一个staff
com
.
gic
.
haoban
.
common
.
utils
.
DingUtils
.
send
(
"告警【多条重复staff】,企业ID"
+
wxEnterpriseId
,
true
);
for
(
int
i
=
0
;
i
<
staffDTOList
.
size
()-
1
;
i
++){
StaffDTO
dto
=
staffDTOList
.
get
(
i
);
String
staffId
=
dto
.
getStaffId
();
// 员工解绑
List
<
StaffClerkRelationDTO
>
staffClerkRelationDTOS
=
staffClerkRelationService
.
listByStaffId
(
wxEnterpriseId
,
staffId
);
if
(
CollectionUtils
.
isNotEmpty
(
staffClerkRelationDTOS
))
{
for
(
StaffClerkRelationDTO
staffClerkRelationDTO
:
staffClerkRelationDTOS
)
{
staffClerkRelationService
.
delBind
(
staffId
,
staffClerkRelationDTO
.
getClerkId
(),
ChannelCodeEnum
.
ADMIN_UNBIND
.
getCode
(),
null
,
wxEnterpriseId
);
}
}
this
.
staffService
.
delByStaffId
(
staffId
);
staffDTOList
.
remove
(
i
);
}
}
}
if
(
CollUtil
.
isNotEmpty
(
staffDTOList
)){
if
(
CollUtil
.
isNotEmpty
(
staffDTOList
)){
staff
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
staffDTOList
.
get
(
0
)),
TabHaobanStaff
.
class
);
staff
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
staffDTOList
.
get
(
0
)),
TabHaobanStaff
.
class
);
...
@@ -352,8 +338,7 @@ public class StaffApiServiceImpl implements StaffApiService {
...
@@ -352,8 +338,7 @@ public class StaffApiServiceImpl implements StaffApiService {
staff
.
setQrCode
(
qr_code
);
staff
.
setQrCode
(
qr_code
);
}
}
//判断成员是否开启联系我
//判断成员是否开启联系我
if
(
this
.
openConcatFlag
(
wxEnterpriseId
,
wxUserId
,
isSyncDepart
))
{
if
(
this
.
openConcatFlag
(
wxEnterpriseId
,
wxUserId
,
isSyncDepart
,
qwDTO
))
{
logger
.
info
(
"成员开启联系我"
);
staff
.
setOpenConcatFlag
(
1
);
staff
.
setOpenConcatFlag
(
1
);
}
}
//成员更改或更新
//成员更改或更新
...
@@ -373,7 +358,7 @@ public class StaffApiServiceImpl implements StaffApiService {
...
@@ -373,7 +358,7 @@ public class StaffApiServiceImpl implements StaffApiService {
res
.
setResult
(
staff
.
getStaffName
());
res
.
setResult
(
staff
.
getStaffName
());
return
res
;
return
res
;
}
}
private
Boolean
openConcatFlag
(
String
wxEnterpriseId
,
String
userId
,
boolean
isSyncDepart
){
private
Boolean
openConcatFlag
(
String
wxEnterpriseId
,
String
userId
,
boolean
isSyncDepart
,
WxEnterpriseQwDTO
qwDTO
){
List
<
String
>
wxUserIdsList
=
null
;
List
<
String
>
wxUserIdsList
=
null
;
//企微已经开启联系我
//企微已经开启联系我
Boolean
flag
=
false
;
Boolean
flag
=
false
;
...
@@ -386,7 +371,6 @@ public class StaffApiServiceImpl implements StaffApiService {
...
@@ -386,7 +371,6 @@ public class StaffApiServiceImpl implements StaffApiService {
}
}
}
}
if
(
null
==
wxUserIdsList
)
{
if
(
null
==
wxUserIdsList
)
{
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
);
if
(
qwDTO
.
isSelf
())
{
if
(
qwDTO
.
isSelf
())
{
wxUserIdsList
=
qywxUserApiService
.
listCorpExternalUserSelf
(
qwDTO
.
getDkCorpid
(),
qwDTO
.
getSelfSecret
(),
qwDTO
.
getUrlHost
());
wxUserIdsList
=
qywxUserApiService
.
listCorpExternalUserSelf
(
qwDTO
.
getDkCorpid
(),
qwDTO
.
getSelfSecret
(),
qwDTO
.
getUrlHost
());
}
else
{
}
else
{
...
...
haoban-manage3-service/src/main/resources/mapper/QywxTagRelationMapper.xml
View file @
a8b87e74
...
@@ -27,10 +27,11 @@
...
@@ -27,10 +27,11 @@
<!-- from tab_haoban_qywx_tag_relation-->
<!-- from tab_haoban_qywx_tag_relation-->
<!-- where qywx_tag_relation_id = #{qywxTagRelationId,jdbcType=VARCHAR}-->
<!-- where qywx_tag_relation_id = #{qywxTagRelationId,jdbcType=VARCHAR}-->
<!-- </select>-->
<!-- </select>-->
<
dele
te
id=
"deleteByPrimaryKey"
parameterType=
"java.lang.String"
>
<
upda
te
id=
"deleteByPrimaryKey"
parameterType=
"java.lang.String"
>
delete from tab_haoban_qywx_tag_relation
update tab_haoban_qywx_tag_relation set status_flag = 0 , update_time =now()
where qywx_tag_relation_id = #{qywxTagRelationId,jdbcType=VARCHAR}
where qywx_tag_relation_id = #{qywxTagRelationId,jdbcType=VARCHAR}
</delete>
</update>
<insert
id=
"insert"
parameterType=
"com.gic.haoban.manage.service.entity.TabQywxTagRelation"
>
<insert
id=
"insert"
parameterType=
"com.gic.haoban.manage.service.entity.TabQywxTagRelation"
>
insert into tab_haoban_qywx_tag_relation (qywx_tag_relation_id, wx_enterprise_id,
insert into tab_haoban_qywx_tag_relation (qywx_tag_relation_id, wx_enterprise_id,
enterprise_id, member_tag_id, tag_item_id,
enterprise_id, member_tag_id, tag_item_id,
...
...
haoban-manage3-service/src/test/java/TagTest3.java
0 → 100644
View file @
a8b87e74
import
com.alibaba.fastjson.JSON
;
import
com.gic.commons.util.GICMQClientUtil
;
import
com.gic.haoban.manage.api.dto.QywxTagInfoDTO
;
import
com.gic.haoban.manage.api.dto.QywxTagItemDTO
;
import
com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO
;
import
com.gic.haoban.manage.api.service.ExternalClerkRelatedApiService
;
import
com.gic.haoban.manage.api.service.QywxTagApiService
;
import
com.gic.haoban.manage.service.config.Config
;
import
com.gic.haoban.manage.service.pojo.bo.hm.HmQrcodeBO
;
import
com.gic.haoban.manage.service.service.StaffClerkRelationService
;
import
com.gic.haoban.manage.service.service.WxEnterpriseService
;
import
com.gic.haoban.manage.service.service.hm.HmClerkRelationService
;
import
com.gic.haoban.manage.service.service.hm.HmQrcodeService
;
import
com.gic.mq.sdk.GicMQClient
;
import
com.gic.redis.data.util.RedisUtil
;
import
com.gic.wechat.api.dto.qywx.welcome.QywxExternalcontactDTO
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.test.context.ContextConfiguration
;
import
org.springframework.test.context.junit4.SpringJUnit4ClassRunner
;
import
java.util.ArrayList
;
import
java.util.List
;
@RunWith
(
SpringJUnit4ClassRunner
.
class
)
@ContextConfiguration
(
locations
=
{
"classpath:applicationContext-conf.xml"
})
public
class
TagTest3
{
@Autowired
private
QywxTagApiService
qywxTagApiService
;
@Autowired
private
HmQrcodeService
hmQrcodeService
;
@Autowired
private
WxEnterpriseService
wxEnterpriseService
;
@Autowired
private
Config
config
;
@Autowired
private
HmClerkRelationService
hmClerkRelationService
;
@Autowired
private
ExternalClerkRelatedApiService
externalClerkRelatedApiService
;
@Test
public
void
tt
()
throws
InterruptedException
{
// String wxEnterpriseId, String enterpriseId, QywxTagInfoDTO infoDTO, List<QywxTagItemDTO> items
String
wxEnterpriseId
=
"ca66a01b79474c40b3e7c7f93daf1a3b"
;
String
enterpriseId
=
"ff8080815dacd3a2015dacd3ef5c0000"
;
QywxTagInfoDTO
infoDTO
=
new
QywxTagInfoDTO
()
;
infoDTO
.
setWxEnterpriseId
(
wxEnterpriseId
);
infoDTO
.
setMemberTagId
(
"5b1db406e21748e88737a4cbe194d24f"
);
List
<
QywxTagItemDTO
>
items
=
new
ArrayList
<>()
;
QywxTagItemDTO
mid
=
new
QywxTagItemDTO
();
mid
.
setMemberTagItemId
(
"0f08ddb354654638bc8f71ce39fce688"
);
mid
.
setQywxTagName
(
"企微1"
);
items
.
add
(
mid
)
;
QywxTagItemDTO
mid2
=
new
QywxTagItemDTO
();
mid2
.
setMemberTagItemId
(
"1e3f324af76842a0a3b7697f95419414"
);
mid2
.
setQywxTagName
(
"企微2"
);
items
.
add
(
mid2
)
;
QywxTagItemDTO
mid3
=
new
QywxTagItemDTO
();
mid3
.
setMemberTagItemId
(
"qw5"
);
mid3
.
setQywxTagKey
(
"qw5"
);
mid3
.
setQywxTagName
(
"企微5"
);
items
.
add
(
mid3
)
;
this
.
qywxTagApiService
.
syncTagToQywx
(
wxEnterpriseId
,
enterpriseId
,
infoDTO
,
items
)
;
}
}
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