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
61e6dff4
Commit
61e6dff4
authored
Apr 18, 2023
by
songyinghui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 客户触达 发朋友圈的触达人数
parent
603f6140
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
101 additions
and
4 deletions
+101
-4
GroupMessageServiceImpl.java
...service/service/content/impl/GroupMessageServiceImpl.java
+101
-4
No files found.
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/content/impl/GroupMessageServiceImpl.java
View file @
61e6dff4
...
@@ -25,9 +25,13 @@ import com.gic.haoban.manage.service.service.content.TriggerCustomerDetailServic
...
@@ -25,9 +25,13 @@ import com.gic.haoban.manage.service.service.content.TriggerCustomerDetailServic
import
com.gic.haoban.manage.service.service.content.adaptor.MaterialEnterpriseAdaptor
;
import
com.gic.haoban.manage.service.service.content.adaptor.MaterialEnterpriseAdaptor
;
import
com.gic.wechat.api.dto.qdto.group.QywxGroupMessageQDTO
;
import
com.gic.wechat.api.dto.qdto.group.QywxGroupMessageQDTO
;
import
com.gic.wechat.api.dto.qdto.group.QywxGroupMsgSendResultQDTO
;
import
com.gic.wechat.api.dto.qdto.group.QywxGroupMsgSendResultQDTO
;
import
com.gic.wechat.api.dto.qdto.group.QywxMomentInfoQDTO
;
import
com.gic.wechat.api.dto.qdto.group.QywxMomentSendResultQDTO
;
import
com.gic.wechat.api.dto.qywx.group.QywxGroupMessageInfoDTO
;
import
com.gic.wechat.api.dto.qywx.group.QywxGroupMessageInfoDTO
;
import
com.gic.wechat.api.dto.qywx.group.QywxGroupMsgResp
;
import
com.gic.wechat.api.dto.qywx.group.QywxGroupMsgResp
;
import
com.gic.wechat.api.dto.qywx.group.QywxGroupMsgSendResultDTO
;
import
com.gic.wechat.api.dto.qywx.group.QywxGroupMsgSendResultDTO
;
import
com.gic.wechat.api.dto.qywx.group.QywxMomentRespDTO
;
import
com.gic.wechat.api.dto.qywx.group.QywxMomentSendResultRespDTO
;
import
com.gic.wechat.api.service.qywx.QywxSuiteApiService
;
import
com.gic.wechat.api.service.qywx.QywxSuiteApiService
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
@@ -165,13 +169,14 @@ public class GroupMessageServiceImpl implements GroupMessageService {
...
@@ -165,13 +169,14 @@ public class GroupMessageServiceImpl implements GroupMessageService {
doHandlerWithSend2Customer
(
clerkShareLogBos
,
groupMessageInfoBo
,
qwInfo
,
corpId
,
staffInfoMap
,
excludeMsgId
,
clerkShareLogIds
);
doHandlerWithSend2Customer
(
clerkShareLogBos
,
groupMessageInfoBo
,
qwInfo
,
corpId
,
staffInfoMap
,
excludeMsgId
,
clerkShareLogIds
);
doHandlerWithSend2Group
(
wxEnterpriseId
,
clerkShareLogBos
,
groupMessageInfoBo
,
qwInfo
,
corpId
,
staffInfoMap
,
excludeMsgId
,
clerkShareLogIds
);
doHandlerWithSend2Group
(
wxEnterpriseId
,
clerkShareLogBos
,
groupMessageInfoBo
,
qwInfo
,
corpId
,
staffInfoMap
,
excludeMsgId
,
clerkShareLogIds
);
if
(
groupMessageInfoBo
.
getShareLogId
()
!=
null
)
{
if
(
groupMessageInfoBo
.
getShareLogId
()
!=
null
)
{
doHandlerWithSend2PYQ
(
clerkShareLogBos
,
clerkShareLogIds
);
doHandlerWithSend2PYQ
(
groupMessageInfoBo
,
clerkShareLogBos
,
staffInfoMap
,
corpId
,
qwInfo
,
clerkShareLogIds
);
}
}
return
clerkShareLogIds
;
return
clerkShareLogIds
;
}
}
/**
/**
* 处理群发到客户
* 处理群发到客户
*
* @param wxEnterpriseId
* @param wxEnterpriseId
* @param clerkShareLogBos
* @param clerkShareLogBos
* @param groupMessageInfoBo
* @param groupMessageInfoBo
...
@@ -249,6 +254,7 @@ public class GroupMessageServiceImpl implements GroupMessageService {
...
@@ -249,6 +254,7 @@ public class GroupMessageServiceImpl implements GroupMessageService {
/**
/**
* 处理群发到客户的触达日志
* 处理群发到客户的触达日志
*
* @param clerkShareLogBos
* @param clerkShareLogBos
* @param groupMessageInfoBo
* @param groupMessageInfoBo
* @param qwInfo
* @param qwInfo
...
@@ -302,10 +308,14 @@ public class GroupMessageServiceImpl implements GroupMessageService {
...
@@ -302,10 +308,14 @@ public class GroupMessageServiceImpl implements GroupMessageService {
/**
/**
* 处理群发到朋友圈触达客户日志
* 处理群发到朋友圈触达客户日志
*
* @param clerkShareLogBos
* @param clerkShareLogBos
* @param clerkShareLogIds
* @param clerkShareLogIds
*/
*/
private
void
doHandlerWithSend2PYQ
(
List
<
ClerkShareLogBO
>
clerkShareLogBos
,
List
<
Long
>
clerkShareLogIds
)
{
private
void
doHandlerWithSend2PYQ
(
GroupMessageInfoBo
groupMessageInfoBo
,
List
<
ClerkShareLogBO
>
clerkShareLogBos
,
Map
<
String
,
TabHaobanStaff
>
staffInfoMap
,
String
corpId
,
WxEnterpriseQwDTO
qwInfo
,
List
<
Long
>
clerkShareLogIds
)
{
if
(
CollectionUtils
.
isEmpty
(
clerkShareLogBos
))
{
if
(
CollectionUtils
.
isEmpty
(
clerkShareLogBos
))
{
return
;
return
;
}
}
...
@@ -319,7 +329,16 @@ public class GroupMessageServiceImpl implements GroupMessageService {
...
@@ -319,7 +329,16 @@ public class GroupMessageServiceImpl implements GroupMessageService {
}
}
for
(
ClerkShareLogBO
clerkShareLogBo
:
clerkShareLogWithPyq
)
{
for
(
ClerkShareLogBO
clerkShareLogBo
:
clerkShareLogWithPyq
)
{
clerkShareLogIds
.
add
(
clerkShareLogBo
.
getId
());
clerkShareLogIds
.
add
(
clerkShareLogBo
.
getId
());
List
<
String
>
externalUserIds
=
externalClerkRelatedService
.
queryExternalRelatedWithStaffId
(
clerkShareLogBo
.
getStaffId
());
TabHaobanStaff
staff
=
staffInfoMap
.
get
(
clerkShareLogBo
.
getStaffId
());
if
(
staff
==
null
)
{
log
.
info
(
"doHandlerWithSend2PYQ 导购分享日志成员不存在 staffId:{}"
,
clerkShareLogBo
.
getStaffId
());
continue
;
}
String
userId
=
staff
.
getWxUserId
();
if
(
qwInfo
.
needOpenUserId3th
())
{
userId
=
staff
.
getWxOpenUseId
();
}
List
<
String
>
externalUserIds
=
this
.
queryMomentResult
(
corpId
,
userId
,
groupMessageInfoBo
.
getStartTime
(),
groupMessageInfoBo
.
getEndTime
());
if
(
CollectionUtils
.
isEmpty
(
externalUserIds
))
{
if
(
CollectionUtils
.
isEmpty
(
externalUserIds
))
{
log
.
info
(
"处理导购群发朋友圈触达客户日志, 成员无好友. staffId:{}"
,
clerkShareLogBo
.
getStaffId
());
log
.
info
(
"处理导购群发朋友圈触达客户日志, 成员无好友. staffId:{}"
,
clerkShareLogBo
.
getStaffId
());
return
;
return
;
...
@@ -439,11 +458,88 @@ public class GroupMessageServiceImpl implements GroupMessageService {
...
@@ -439,11 +458,88 @@ public class GroupMessageServiceImpl implements GroupMessageService {
if
(
StringUtils
.
isNotBlank
(
serviceResponse
.
getResult
().
getCursor
()))
{
if
(
StringUtils
.
isNotBlank
(
serviceResponse
.
getResult
().
getCursor
()))
{
log
.
info
(
"递归获取成员群发结果 >>>>> "
);
log
.
info
(
"递归获取成员群发结果 >>>>> "
);
String
tempCursor
=
serviceResponse
.
getResult
().
getCursor
();
String
tempCursor
=
serviceResponse
.
getResult
().
getCursor
();
this
.
queryGroupMsgSendResult
(
corpid
,
msgId
,
userId
,
tempCursor
);
groupMsgSendResultInfos
.
addAll
(
this
.
queryGroupMsgSendResult
(
corpid
,
msgId
,
userId
,
tempCursor
)
);
}
}
return
groupMsgSendResultInfos
;
return
groupMsgSendResultInfos
;
}
}
/**
* 查询发朋友圈结果
* @param corpid
* @param userId
* @param startTime
* @param endTime
* @return
*/
public
List
<
String
>
queryMomentResult
(
String
corpid
,
String
userId
,
Date
startTime
,
Date
endTime
)
{
QywxMomentInfoQDTO
qywxMomentInfoQDTO
=
new
QywxMomentInfoQDTO
();
qywxMomentInfoQDTO
.
setCorpid
(
corpid
);
qywxMomentInfoQDTO
.
setSuiteid
(
config
.
getWxSuiteid
());
qywxMomentInfoQDTO
.
setStartTime
(
startTime
.
getTime
()
/
1000
);
qywxMomentInfoQDTO
.
setEndTime
(
endTime
.
getTime
()
/
1000
);
qywxMomentInfoQDTO
.
setCreatorId
(
userId
);
qywxMomentInfoQDTO
.
setPageSize
(
20
);
ServiceResponse
<
QywxMomentRespDTO
>
serviceResponse
=
qywxSuiteApiService
.
queryQywxMomentList
(
qywxMomentInfoQDTO
);
if
(!
serviceResponse
.
isSuccess
()
||
CollectionUtils
.
isEmpty
(
serviceResponse
.
getResult
().
getQywxMomentInfos
()))
{
log
.
info
(
"查询客户发表朋友圈记录失败 {}"
,
JSON
.
toJSONString
(
serviceResponse
));
return
Collections
.
emptyList
();
}
List
<
String
>
result
=
new
ArrayList
<>();
for
(
QywxMomentRespDTO
.
QywxMomentInfoDTO
qywxMomentInfo
:
serviceResponse
.
getResult
().
getQywxMomentInfos
())
{
List
<
String
>
externalUserIds
=
this
.
queryMomentSendResultList
(
corpid
,
userId
,
qywxMomentInfo
.
getMomentId
());
if
(
CollectionUtils
.
isNotEmpty
(
externalUserIds
))
{
result
.
addAll
(
externalUserIds
);
}
}
return
result
;
}
public
List
<
String
>
queryMomentSendResultList
(
String
corpid
,
String
userId
,
String
momentId
)
{
QywxMomentSendResultQDTO
qywxMomentSendResultQDTO
=
new
QywxMomentSendResultQDTO
();
qywxMomentSendResultQDTO
.
setCorpid
(
corpid
);
qywxMomentSendResultQDTO
.
setSuiteid
(
config
.
getWxSuiteid
());
qywxMomentSendResultQDTO
.
setMomentId
(
momentId
);
qywxMomentSendResultQDTO
.
setUserId
(
userId
);
qywxMomentSendResultQDTO
.
setPageSize
(
1000
);
ServiceResponse
<
QywxMomentSendResultRespDTO
>
serviceResponse
=
qywxSuiteApiService
.
queryQywxMomentSendResult
(
qywxMomentSendResultQDTO
);
if
(!
serviceResponse
.
isSuccess
()
||
CollectionUtils
.
isEmpty
(
serviceResponse
.
getResult
().
getQywxMomentSendResults
()))
{
log
.
info
(
"查询朋友圈发送结果异常 {}"
,
JSON
.
toJSONString
(
serviceResponse
));
return
Collections
.
emptyList
();
}
List
<
String
>
result
=
new
ArrayList
<>();
List
<
String
>
externalUserIds
=
serviceResponse
.
getResult
()
.
getQywxMomentSendResults
()
.
stream
()
.
map
(
QywxMomentSendResultRespDTO
.
QywxMomentSendResultDTO
::
getExternalUserid
)
.
collect
(
Collectors
.
toList
());
result
.
addAll
(
externalUserIds
);
int
loopTimes
=
0
;
String
cursor
=
serviceResponse
.
getResult
().
getCursor
();
while
(
StringUtils
.
isNotBlank
(
cursor
))
{
loopTimes
++;
log
.
info
(
"查询群消息 第{}次查询"
,
loopTimes
);
qywxMomentSendResultQDTO
.
setCursor
(
cursor
);
ServiceResponse
<
QywxMomentSendResultRespDTO
>
tempResponse
=
qywxSuiteApiService
.
queryQywxMomentSendResult
(
qywxMomentSendResultQDTO
);
if
(!
serviceResponse
.
isSuccess
()
||
CollectionUtils
.
isEmpty
(
serviceResponse
.
getResult
().
getQywxMomentSendResults
()))
{
break
;
}
if
(!
tempResponse
.
isSuccess
()
||
CollectionUtils
.
isEmpty
(
tempResponse
.
getResult
().
getQywxMomentSendResults
()))
{
log
.
info
(
"查询朋友圈消息异常 跳出循环 {}"
,
loopTimes
);
break
;
}
List
<
String
>
tempUserIds
=
serviceResponse
.
getResult
()
.
getQywxMomentSendResults
()
.
stream
()
.
map
(
QywxMomentSendResultRespDTO
.
QywxMomentSendResultDTO
::
getExternalUserid
)
.
collect
(
Collectors
.
toList
());
result
.
addAll
(
tempUserIds
);
cursor
=
tempResponse
.
getResult
().
getCursor
();
}
return
result
;
}
/**
/**
* 保存触达日志明细 群发到客户
* 保存触达日志明细 群发到客户
*
*
...
@@ -500,6 +596,7 @@ public class GroupMessageServiceImpl implements GroupMessageService {
...
@@ -500,6 +596,7 @@ public class GroupMessageServiceImpl implements GroupMessageService {
/**
/**
* 获取当前时间 有素材权限的商户
* 获取当前时间 有素材权限的商户
*
* @return
* @return
*/
*/
@Override
@Override
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment