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
d88d2cb1
Commit
d88d2cb1
authored
Dec 23, 2022
by
徐高华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
群发
parent
4f70e318
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
119 additions
and
90 deletions
+119
-90
GroupChatPlanLogMapper.java
...anage/service/dao/mapper/chat/GroupChatPlanLogMapper.java
+4
-1
TabGroupChatPlanOwnerLog.java
.../manage/service/entity/chat/TabGroupChatPlanOwnerLog.java
+1
-1
GroupChatPlanServiceImpl.java
...e/service/service/chat/impl/GroupChatPlanServiceImpl.java
+79
-58
GroupChatPlanLogMapper.xml
...src/main/resources/mapper/chat/GroupChatPlanLogMapper.xml
+35
-30
No files found.
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/chat/GroupChatPlanLogMapper.java
View file @
d88d2cb1
...
@@ -2,6 +2,8 @@ package com.gic.haoban.manage.service.dao.mapper.chat;
...
@@ -2,6 +2,8 @@ package com.gic.haoban.manage.service.dao.mapper.chat;
import
java.util.List
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Param
;
import
com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO
;
import
com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO
;
import
com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO
;
import
com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO
;
import
com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog
;
import
com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog
;
...
@@ -17,7 +19,7 @@ import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog;
...
@@ -17,7 +19,7 @@ import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog;
*/
*/
public
interface
GroupChatPlanLogMapper
{
public
interface
GroupChatPlanLogMapper
{
public
int
insert
(
TabGroupChatPlanLog
entity
);
public
int
batchInsert
(
@Param
(
"list"
)
List
<
TabGroupChatPlanLog
>
list
);
public
List
<
GroupChatPlanLogDTO
>
listPlanLog
(
GroupChatPlanSearchQDTO
qdto
);
public
List
<
GroupChatPlanLogDTO
>
listPlanLog
(
GroupChatPlanSearchQDTO
qdto
);
}
}
\ No newline at end of file
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/entity/chat/TabGroupChatPlanOwnerLog.java
View file @
d88d2cb1
...
@@ -23,7 +23,7 @@ public class TabGroupChatPlanOwnerLog implements Serializable {
...
@@ -23,7 +23,7 @@ public class TabGroupChatPlanOwnerLog implements Serializable {
private
String
staffId
;
private
String
staffId
;
private
String
storeId
;
private
String
storeId
;
private
String
clerkId
;
private
String
clerkId
;
/**
1已发送 0待
发送*/
/**
0任务创建失败 1待发送 2已
发送*/
private
Integer
sendStatus
;
private
Integer
sendStatus
;
private
Integer
failCount
;
private
Integer
failCount
;
private
Integer
sendCount
;
private
Integer
sendCount
;
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/chat/impl/GroupChatPlanServiceImpl.java
View file @
d88d2cb1
...
@@ -193,10 +193,10 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
...
@@ -193,10 +193,10 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
String
wxEnterpriseId
=
plan
.
getWxEnterpriseId
();
String
wxEnterpriseId
=
plan
.
getWxEnterpriseId
();
String
chatContent
=
plan
.
getChatContent
();
String
chatContent
=
plan
.
getChatContent
();
JSONArray
jsonArr
=
JSONArray
.
parseArray
(
chatContent
);
JSONArray
jsonArr
=
JSONArray
.
parseArray
(
chatContent
);
List
<
String
>
madi
dList
=
new
ArrayList
<>();
List
<
String
>
sendI
dList
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
jsonArr
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
jsonArr
.
size
();
i
++)
{
JSONObject
json
=
jsonArr
.
getJSONObject
(
i
);
JSONObject
json
=
jsonArr
.
getJSONObject
(
i
);
madi
dList
.
add
(
json
.
getString
(
"relation_id"
));
sendI
dList
.
add
(
json
.
getString
(
"relation_id"
));
}
}
int
pageNum
=
0
;
int
pageNum
=
0
;
List
<
TabGroupChatPlanOwnerLog
>
ownerList
=
null
;
List
<
TabGroupChatPlanOwnerLog
>
ownerList
=
null
;
...
@@ -210,7 +210,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
...
@@ -210,7 +210,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
try
{
try
{
String
staffId
=
ownerLog
.
getStaffId
();
String
staffId
=
ownerLog
.
getStaffId
();
ServiceResponse
<
String
>
sendResp
=
qywxSendService
.
sendChatMessage
(
wxEnterpriseId
,
staffId
,
ServiceResponse
<
String
>
sendResp
=
qywxSendService
.
sendChatMessage
(
wxEnterpriseId
,
staffId
,
madi
dList
);
sendI
dList
);
if
(
sendResp
.
isSuccess
())
{
if
(
sendResp
.
isSuccess
())
{
String
msgid
=
sendResp
.
getResult
();
String
msgid
=
sendResp
.
getResult
();
ownerLog
.
setMsgid
(
msgid
);
ownerLog
.
setMsgid
(
msgid
);
...
@@ -222,7 +222,9 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
...
@@ -222,7 +222,9 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
ownerLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
ownerLog
.
setWxEnterpriseId
(
wxEnterpriseId
);
this
.
groupChatPlanOwnerLogService
.
update
(
ownerLog
);
this
.
groupChatPlanOwnerLogService
.
update
(
ownerLog
);
// 代办
// 代办
if
(
StringUtils
.
isNotBlank
(
ownerLog
.
getClerkId
())
&&
StringUtils
.
isNotBlank
(
ownerLog
.
getMsgid
()))
{
if
(
ownerLog
.
getSendStatus
()
==
PlanSendStatusEnum
.
TO_BE_SEND
.
getCode
()
&&
StringUtils
.
isNotBlank
(
ownerLog
.
getClerkId
())
&&
StringUtils
.
isNotBlank
(
ownerLog
.
getMsgid
()))
{
this
.
savePendTask
(
ownerLog
,
plan
);
this
.
savePendTask
(
ownerLog
,
plan
);
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
...
@@ -267,75 +269,94 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
...
@@ -267,75 +269,94 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
public
void
doPlanSendInfo
(
Long
ownerLogId
)
{
public
void
doPlanSendInfo
(
Long
ownerLogId
)
{
logger
.
info
(
"开始群群发统计{}"
,
ownerLogId
);
logger
.
info
(
"开始群群发统计{}"
,
ownerLogId
);
TabGroupChatPlanOwnerLog
ownerLog
=
this
.
groupChatPlanOwnerLogService
.
getById
(
ownerLogId
);
TabGroupChatPlanOwnerLog
ownerLog
=
this
.
groupChatPlanOwnerLogService
.
getById
(
ownerLogId
);
if
(
ownerLog
.
getSendStatus
()
==
2
)
{
logger
.
info
(
"已统计过"
);
return
;
}
logger
.
info
(
"开始群群发统计{}"
,
ownerLog
.
getMsgid
());
logger
.
info
(
"开始群群发统计{}"
,
ownerLog
.
getMsgid
());
Long
planId
=
ownerLog
.
getPlanId
();
TabGroupChatPlan
plan
=
this
.
groupChatPlanMapper
.
selectById
(
planId
);
if
(
null
==
plan
)
{
logger
.
info
(
"计划不存在{}"
,
planId
);
return
;
}
String
wxEnterpriseId
=
ownerLog
.
getWxEnterpriseId
();
String
wxEnterpriseId
=
ownerLog
.
getWxEnterpriseId
();
String
enterpriseId
=
ownerLog
.
getEnterpriseId
();
String
enterpriseId
=
ownerLog
.
getEnterpriseId
();
String
msgid
=
ownerLog
.
getMsgid
();
String
msgid
=
ownerLog
.
getMsgid
();
String
staffId
=
ownerLog
.
getStaffId
();
String
staffId
=
ownerLog
.
getStaffId
();
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
);
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
);
TabHaobanStaff
staff
=
this
.
staffMapper
.
selectByPrimaryKey
(
staffId
);
TabHaobanStaff
staff
=
this
.
staffMapper
.
selectByPrimaryKey
(
staffId
);
if
(
null
==
staff
)
{
logger
.
info
(
"成员不存在{}"
,
staffId
);
return
;
}
String
userid
=
staff
.
getWxUserId
();
String
userid
=
staff
.
getWxUserId
();
if
(
qwDTO
.
needOpenUserId3th
())
{
if
(
qwDTO
.
needOpenUserId3th
())
{
userid
=
staff
.
getWxOpenUseId
();
userid
=
staff
.
getWxOpenUseId
();
}
}
JSONResponse
respon
=
qywxSuiteApiService
.
resultExternalMessage
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
JSONResponse
respon
=
qywxSuiteApiService
.
resultExternalMessage
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
msgid
,
null
,
userid
);
msgid
,
null
,
userid
);
logger
.
info
(
"统计返回={}"
,
JSON
.
toJSONString
(
respon
));
logger
.
info
(
"统计企微返回={}"
,
JSON
.
toJSONString
(
respon
));
if
(
respon
.
getErrorCode
()
==
0
)
{
if
(
respon
.
getErrorCode
()
!=
0
)
{
List
<
QywxSendMessageResultDTO
>
list
=
(
List
<
QywxSendMessageResultDTO
>)
respon
.
getList
();
return
;
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
}
int
sendCount
=
0
;
List
<
QywxSendMessageResultDTO
>
list
=
(
List
<
QywxSendMessageResultDTO
>)
respon
.
getList
();
int
failCount
=
0
;
if
(
CollectionUtils
.
isEmpty
(
list
))
{
Long
planId
=
ownerLog
.
getPlanId
();
logger
.
info
(
"企微返回列表空"
);
TabGroupChatPlan
plan
=
this
.
groupChatPlanMapper
.
selectById
(
planId
);
return
;
for
(
QywxSendMessageResultDTO
item
:
list
)
{
}
TabGroupChatPlanLog
entity
=
new
TabGroupChatPlanLog
();
int
sendCount
=
0
;
Date
sendTime
=
item
.
getSendTime
();
int
failCount
=
0
;
String
wxChatId
=
item
.
getChatId
();
List
<
TabGroupChatPlanLog
>
addList
=
new
ArrayList
<>();
// 如果企微的发送时间晚于计划的结束时间,不记录此类数据
for
(
QywxSendMessageResultDTO
item
:
list
)
{
if
(
sendTime
.
after
(
plan
.
getEndTime
()))
{
TabGroupChatPlanLog
entity
=
new
TabGroupChatPlanLog
();
logger
.
info
(
"发送时间晚计划结束时间"
);
Date
sendTime
=
item
.
getSendTime
();
continue
;
String
wxChatId
=
item
.
getChatId
();
}
// 如果企微的发送时间晚于计划的结束时间,不记录此类数据
GroupChatBO
chat
=
this
.
groupChatService
.
getByWxChatId
(
wxEnterpriseId
,
wxChatId
);
if
(
sendTime
.
after
(
plan
.
getEndTime
()))
{
if
(
null
==
chat
||
StringUtils
.
isBlank
(
chat
.
getEnterpriseId
()))
{
logger
.
info
(
"发送时间晚计划结束"
);
logger
.
info
(
"群不存在,或未认领,wxChatId={}"
,
wxChatId
);
continue
;
continue
;
}
}
GroupChatBO
chat
=
this
.
groupChatService
.
getByWxChatId
(
wxEnterpriseId
,
wxChatId
);
if
(!
chat
.
getEnterpriseId
().
equals
(
plan
.
getEnterpriseId
()))
{
if
(
null
==
chat
||
StringUtils
.
isBlank
(
chat
.
getEnterpriseId
()))
{
logger
.
info
(
"群的商户id和计划的商户id不一致{},{}"
,
chat
.
getEnterpriseId
(),
plan
.
getEnterpriseId
());
logger
.
info
(
"群不存在,或未认领,wxChatId={}"
,
wxChatId
);
continue
;
continue
;
}
}
entity
.
setGroupChatId
(
chat
.
getGroupChatId
());
if
(!
chat
.
getEnterpriseId
().
equals
(
plan
.
getEnterpriseId
()))
{
// 企微返回成功
logger
.
info
(
"群的商户id和计划的商户id不一致{},{}"
,
chat
.
getEnterpriseId
(),
plan
.
getEnterpriseId
());
// 0-未发送 1-已发送 2-因客户不是好友导致发送失败 3-因客户已经收到其他群发消息导致发送失败
continue
;
if
(
item
.
getStatus
()
==
1
)
{
sendCount
++;
// 已发送
entity
.
setSendStatus
(
PlanSendStatusEnum
.
SENDED
.
getCode
());
}
else
{
failCount
++;
// 发送失败
entity
.
setSendStatus
(
PlanSendStatusEnum
.
FAIL
.
getCode
());
}
entity
.
setLogId
(
UniqueIdUtils
.
uniqueLong
());
entity
.
setPlanId
(
ownerLog
.
getPlanId
());
entity
.
setOwnLogId
(
ownerLog
.
getOwnerLogId
());
entity
.
setWxEnterpriseId
(
wxEnterpriseId
);
entity
.
setEnterpriseId
(
enterpriseId
);
entity
.
setStaffId
(
staffId
);
entity
.
setSendTime
(
sendTime
);
this
.
groupChatPlanLogMapper
.
insert
(
entity
);
}
// 更新统计数量、状态
this
.
groupChatPlanOwnerLogService
.
updateSendCount
(
ownerLog
.
getOwnerLogId
(),
sendCount
,
list
.
get
(
0
).
getSendTime
(),
failCount
);
// 完成代办
this
.
pendingTaskService
.
updateFinish
(
ownerLog
.
getOwnerLogId
()
+
""
);
// 更新计划统计
this
.
groupChatPlanMapper
.
updateData
(
ownerLog
.
getPlanId
(),
1
,
sendCount
,
failCount
);
}
}
entity
.
setGroupChatId
(
chat
.
getGroupChatId
());
// 企微返回成功
// 0-未发送 1-已发送 2-因客户不是好友导致发送失败 3-因客户已经收到其他群发消息导致发送失败
if
(
item
.
getStatus
()
==
1
)
{
sendCount
++;
// 已发送
entity
.
setSendStatus
(
PlanSendStatusEnum
.
SENDED
.
getCode
());
}
else
{
failCount
++;
// 发送失败
entity
.
setSendStatus
(
PlanSendStatusEnum
.
FAIL
.
getCode
());
}
entity
.
setLogId
(
UniqueIdUtils
.
uniqueLong
());
entity
.
setPlanId
(
ownerLog
.
getPlanId
());
entity
.
setOwnLogId
(
ownerLog
.
getOwnerLogId
());
entity
.
setWxEnterpriseId
(
wxEnterpriseId
);
entity
.
setEnterpriseId
(
enterpriseId
);
entity
.
setStaffId
(
staffId
);
entity
.
setSendTime
(
sendTime
);
addList
.
add
(
entity
);
}
if
(
CollectionUtils
.
isNotEmpty
(
addList
))
{
this
.
groupChatPlanLogMapper
.
batchInsert
(
addList
);
}
}
// 更新统计数量、状态
this
.
groupChatPlanOwnerLogService
.
updateSendCount
(
ownerLog
.
getOwnerLogId
(),
sendCount
,
list
.
get
(
0
).
getSendTime
(),
failCount
);
// 完成代办
this
.
pendingTaskService
.
updateFinish
(
ownerLog
.
getOwnerLogId
()
+
""
);
// 更新计划统计
this
.
groupChatPlanMapper
.
updateData
(
ownerLog
.
getPlanId
(),
1
,
sendCount
,
failCount
);
}
}
@Override
@Override
...
...
haoban-manage3-service/src/main/resources/mapper/chat/GroupChatPlanLogMapper.xml
View file @
d88d2cb1
...
@@ -32,38 +32,43 @@
...
@@ -32,38 +32,43 @@
</sql>
</sql>
<!-- ===================== 新增 ======================== -->
<!-- ===================== 新增 ======================== -->
<insert
id=
"insert"
parameterType=
"com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog"
>
<insert
id=
"batchInsert"
>
<![CDATA[
INSERT INTO tab_haoban_group_chat_plan_log(
INSERT INTO tab_haoban_group_chat_plan_log(
log_id,
log_id,
plan_id,
plan_id,
wx_enterprise_id,
wx_enterprise_id,
enterprise_id,
enterprise_id,
group_chat_id,
group_chat_id,
send_status,
send_status,
own_log_id,
own_log_id,
remark,
remark,
send_time,
send_time,
delete_flag,
delete_flag,
create_time,
create_time,
update_time , staff_id
update_time , staff_id
)VALUES
)VALUES(
<foreach
collection=
"list"
item=
"item"
separator=
","
>
#{logId},
(
#{planId},
#{item.logId},
#{wxEnterpriseId},
#{item.planId},
#{enterpriseId} ,
#{item.wxEnterpriseId},
#{groupChatId},
#{item.enterpriseId} ,
#{sendStatus},
#{item.groupChatId},
#{ownLogId},
#{item.sendStatus},
#{remark},
#{item.ownLogId},
#{sendTime},
#{item.remark},
0,
#{item.sendTime},
now(),
0,
now() ,#{staffId}
now(),
)
now() ,
]]>
#{item.staffId}
)
</foreach>
</insert>
</insert>
<select
id=
"listPlanLog"
parameterType=
"com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO"
resultType=
"com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO"
>
<select
id=
"listPlanLog"
parameterType=
"com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO"
resultType=
"com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO"
>
SELECT b.clerk_id clerkId ,
SELECT b.clerk_id clerkId ,
b.store_id storeId ,
b.store_id storeId ,
...
...
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