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
f88d2ee3
Commit
f88d2ee3
authored
Dec 09, 2022
by
徐高华
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/社群' into 'developer'
Feature/社群 See merge request
!568
parents
55333ac4
768f1fb3
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
115 additions
and
33 deletions
+115
-33
ChatHmSearchQDTO.java
...gic/haoban/manage/api/dto/qdto/chat/ChatHmSearchQDTO.java
+9
-0
GroupChatMapper.java
...aoban/manage/service/dao/mapper/chat/GroupChatMapper.java
+3
-3
GroupChatDataServiceImpl.java
...e/service/service/chat/impl/GroupChatDataServiceImpl.java
+29
-6
GroupChatHmServiceImpl.java
...age/service/service/chat/impl/GroupChatHmServiceImpl.java
+65
-20
GroupChatPlanServiceImpl.java
...e/service/service/chat/impl/GroupChatPlanServiceImpl.java
+7
-2
GroupChatHmMapper.xml
...vice/src/main/resources/mapper/chat/GroupChatHmMapper.xml
+2
-2
No files found.
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/dto/qdto/chat/ChatHmSearchQDTO.java
View file @
f88d2ee3
...
...
@@ -13,6 +13,15 @@ public class ChatHmSearchQDTO implements Serializable {
private
String
enterpriseId
;
private
String
searchParams
;
private
Integer
status
;
private
Long
linkId
;
public
Long
getLinkId
()
{
return
linkId
;
}
public
void
setLinkId
(
Long
linkId
)
{
this
.
linkId
=
linkId
;
}
public
Date
getStartDate
()
{
return
startDate
;
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/chat/GroupChatMapper.java
View file @
f88d2ee3
...
...
@@ -33,13 +33,13 @@ public interface GroupChatMapper {
@Param
(
"totalMemberCount"
)
int
totalMemberCount
,
@Param
(
"addMemberCount"
)
int
addMemberCount
,
@Param
(
"addCount"
)
int
addCount
,
@Param
(
"quitCount"
)
int
quitCount
,
@Param
(
"quitMemberCount"
)
int
quitMemberCount
);
public
int
addMemberCount
(
@Param
(
"groupChatId"
)
Long
groupChatId
)
;
public
int
addMemberCount
(
@Param
(
"groupChatId"
)
Long
groupChatId
)
;
// 更新群状态
public
int
updateChatStatus
(
@Param
(
"groupChatId"
)
Long
groupChatId
,
@Param
(
"chatStatus"
)
int
chatStatus
);
//
更下线
//
下线(标识不能通过活码入群)
public
int
chatOff
(
@Param
(
"groupChatId"
)
Long
groupChatId
);
public
TabGroupChat
selectById
(
Long
groupChatId
);
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/chat/impl/GroupChatDataServiceImpl.java
View file @
f88d2ee3
...
...
@@ -25,8 +25,10 @@ import com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO;
import
com.gic.haoban.manage.api.dto.qdto.chat.ChatDataSearchQDTO
;
import
com.gic.haoban.manage.api.dto.qdto.chat.OwnerSearchQDTO
;
import
com.gic.haoban.manage.service.config.Config
;
import
com.gic.haoban.manage.service.dao.mapper.WxEnterpriseMapper
;
import
com.gic.haoban.manage.service.dao.mapper.chat.GroupChatDataMapper
;
import
com.gic.haoban.manage.service.dao.mapper.chat.GroupChatOwnerMapper
;
import
com.gic.haoban.manage.service.entity.TabHaobanWxEnterprise
;
import
com.gic.haoban.manage.service.entity.chat.TabGroupChatData
;
import
com.gic.haoban.manage.service.service.WxEnterpriseService
;
import
com.gic.haoban.manage.service.service.chat.GroupChatDataService
;
...
...
@@ -49,32 +51,51 @@ public class GroupChatDataServiceImpl implements GroupChatDataService {
private
GroupChatOwnerMapper
groupChatOwnerMapper
;
@Autowired
private
GroupChatDataMapper
groupChatDataMapper
;
@Autowired
private
WxEnterpriseMapper
wxEnterpriseMapper
;
@Override
public
List
<
GroupChatDataDTO
>
list
(
ChatDataSearchQDTO
qdto
)
{
return
null
;
}
@Override
public
Page
<
GroupChatDataDTO
>
listPage
(
ChatDataSearchQDTO
qdto
,
BasePageInfo
basePageInfo
)
{
return
null
;
}
@Override
public
void
chatDataTimer
(
String
params
)
{
t
(
"f5f8c78e395e4ca1a493707316096097"
);
logger
.
info
(
"群统计定时开始"
);
List
<
TabHaobanWxEnterprise
>
wxEnterpriseList
=
this
.
wxEnterpriseMapper
.
listByIds
(
null
);
for
(
TabHaobanWxEnterprise
item
:
wxEnterpriseList
)
{
try
{
this
.
getDataFormQw
(
item
.
getWxEnterpriseId
());
}
catch
(
Exception
e
)
{
logger
.
info
(
"统计异常,wxeid={}"
,
item
.
getWxEnterpriseId
());
e
.
printStackTrace
();
}
}
}
private
void
t
(
String
wxEnterpriseId
)
{
private
void
getDataFormQw
(
String
wxEnterpriseId
)
{
logger
.
info
(
"开始处理wxEnterpriseId={}"
,
wxEnterpriseId
);
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
);
if
(
null
==
qwDTO
)
{
logger
.
info
(
"wxEnterpriseId不存在,id={}"
,
wxEnterpriseId
);
return
;
}
if
(
qwDTO
.
getWxSecurityType
()
==
0
)
{
logger
.
info
(
"wxSecurityType=0,不处理,id={}"
,
wxEnterpriseId
);
return
;
}
OwnerSearchQDTO
qdto
=
new
OwnerSearchQDTO
();
qdto
.
setWxEnterpriseId
(
wxEnterpriseId
);
List
<
GroupChatOwnerDTO
>
list
=
this
.
groupChatOwnerMapper
.
listOwner
(
qdto
);
if
(
CollectionUtils
.
isEmpty
(
list
))
{
logger
.
info
(
"无群主记录,不处理"
);
return
;
}
List
<
String
>
userIdList
=
null
;
Map
<
String
,
String
>
staffIdMap
=
new
HashMap
<>();
if
(
qwDTO
.
needOpenUserId3th
())
{
...
...
@@ -86,9 +107,11 @@ public class GroupChatDataServiceImpl implements GroupChatDataService {
staffIdMap
=
list
.
stream
().
collect
(
Collectors
.
toMap
(
GroupChatOwnerDTO:
:
getWxUserId
,
GroupChatOwnerDTO:
:
getStaffId
,
(
k1
,
k2
)
->
k1
));
}
Date
date
=
DateUtil
.
addDay
(
DateUtil
.
getStartTimeOfDay
(),
-
1
);
Long
time
=
date
.
getTime
()
/
1000
;
ServiceResponse
<
List
<
GroupChatQwDataDTO
>>
resp
=
this
.
qywxChatApiService
.
statistic
(
qwDTO
.
getThirdCorpid
(),
config
.
getWxSuiteid
(),
userIdList
,
date
.
getTime
()
/
1000
,
date
.
getTime
()
/
1000
);
config
.
getWxSuiteid
(),
userIdList
,
time
,
time
);
logger
.
info
(
JSON
.
toJSONString
(
resp
));
List
<
GroupChatQwDataDTO
>
dataList
=
resp
.
getResult
();
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/chat/impl/GroupChatHmServiceImpl.java
View file @
f88d2ee3
package
com
.
gic
.
haoban
.
manage
.
service
.
service
.
chat
.
impl
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.HashSet
;
import
java.util.List
;
...
...
@@ -19,6 +20,7 @@ import com.gic.api.base.commons.ServiceResponse;
import
com.gic.commons.util.EntityUtil
;
import
com.gic.commons.util.PageHelperUtils
;
import
com.gic.commons.util.UniqueIdUtils
;
import
com.gic.haoban.common.utils.RolesListUtils
;
import
com.gic.haoban.manage.api.constants.Manage3Constants
;
import
com.gic.haoban.manage.api.dto.SecretSettingDTO
;
import
com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO
;
...
...
@@ -91,40 +93,82 @@ public class GroupChatHmServiceImpl implements GroupChatHmService {
logger
.
info
(
"群活码不存在,chatHmId={}"
,
chatHmId
);
return
;
}
if
(
hm
.
getAutoCreateRoom
()
==
0
)
{
logger
.
info
(
"无开启自动建群,不处理自动踢群hmid={}"
,
hm
.
getChatHmId
());
return
;
}
List
<
TabGroupChatHmRelation
>
chatRelation
=
this
.
groupChatHmRelationMapper
.
listByChatHmId
(
chatHmId
);
if
(
CollectionUtils
.
isEmpty
(
chatRelation
))
{
logger
.
info
(
"群活码无关联群,chatHmId={}"
,
chatHmId
);
break
;
}
String
wxEnterpriseId
=
hm
.
getWxEnterpriseId
();
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
);
SecretSettingDTO
secretSetting
=
secretSettingService
.
getSecretSetting
(
wxEnterpriseId
,
SecretTypeEnum
.
CUSTOMIZED_APP
.
getVal
());
if
(
null
==
secretSetting
)
{
logger
.
info
(
"没有配置代开应用"
);
return
;
}
String
configId
=
hm
.
getWxConfigId
();
ServiceResponse
<
AddJoinWayDTO
>
joinResp
=
this
.
qywxChatApiService
.
getJoinWay
(
qwDTO
.
getDkCorpid
(),
secretSetting
.
getSecretVal
(),
configId
);
logger
.
info
(
"查询群活码={}"
,
JSON
.
toJSON
(
joinResp
));
if
(
joinResp
.
isSuccess
())
{
AddJoinWayDTO
join
=
joinResp
.
getResult
();
List
<
String
>
qwChatIdList
=
join
.
getChat_id_list
();
if
(
CollectionUtils
.
isNotEmpty
(
qwChatIdList
))
{
List
<
Long
>
chatIdList
=
chatRelation
.
stream
().
map
(
dto
->
dto
.
getGroupChatId
())
.
collect
(
Collectors
.
toList
());
List
<
TabGroupChat
>
chatList
=
this
.
groupChatMapper
.
listByIdSet
(
new
HashSet
<>(
chatIdList
));
List
<
String
>
hbIdList
=
chatList
.
stream
().
map
(
dto
->
dto
.
getWxChatId
())
.
collect
(
Collectors
.
toList
());
this
.
t
(
qwChatIdList
,
hbIdList
,
chatHmId
);
}
}
this
.
handleAutoCreateRoom
(
wxEnterpriseId
,
secretSetting
.
getSecretVal
(),
hm
,
chatRelation
);
}
}
private
void
t
(
List
<
String
>
qwIdList
,
List
<
String
>
hbIdList
,
Long
chatHmId
)
{
if
(
CollectionUtils
.
isEmpty
(
hbIdList
))
{
}
/**
* 处理开启自动建群的,如果群满自动下线后,需要从活码中提出
*/
private
void
handleAutoCreateRoom
(
String
wxEnterpriseId
,
String
secret
,
TabGroupChatHm
hm
,
List
<
TabGroupChatHmRelation
>
chatRelation
)
{
WxEnterpriseQwDTO
qwDTO
=
this
.
wxEnterpriseService
.
getQwInfo
(
wxEnterpriseId
);
String
configId
=
hm
.
getWxConfigId
();
ServiceResponse
<
AddJoinWayDTO
>
joinResp
=
this
.
qywxChatApiService
.
getJoinWay
(
qwDTO
.
getDkCorpid
(),
secret
,
configId
);
logger
.
info
(
"查询群活码={}"
,
JSON
.
toJSON
(
joinResp
));
if
(
joinResp
.
isSuccess
())
{
AddJoinWayDTO
join
=
joinResp
.
getResult
();
List
<
String
>
qwChatIdList
=
join
.
getChat_id_list
();
if
(
CollectionUtils
.
isNotEmpty
(
qwChatIdList
))
{
if
(
qwChatIdList
.
size
()
==
1
)
{
logger
.
info
(
"只有1个群"
);
return
;
}
List
<
Long
>
chatIdList
=
chatRelation
.
stream
().
map
(
dto
->
dto
.
getGroupChatId
())
.
collect
(
Collectors
.
toList
());
List
<
TabGroupChat
>
chatList
=
this
.
groupChatMapper
.
listByIdSet
(
new
HashSet
<>(
chatIdList
));
List
<
String
>
hbIdList
=
chatList
.
stream
().
map
(
dto
->
dto
.
getWxChatId
()).
collect
(
Collectors
.
toList
());
logger
.
info
(
"企微群列表={},haoban列表={}"
,
qwChatIdList
,
hbIdList
);
// 差异列表
List
<
String
>
qwList
=
RolesListUtils
.
differenceList
(
qwChatIdList
,
hbIdList
);
if
(
qwChatIdList
.
size
()
==
hbIdList
.
size
()
&&
CollectionUtils
.
isEmpty
(
qwList
))
{
logger
.
info
(
"群未变化"
);
return
;
}
if
(
CollectionUtils
.
isNotEmpty
(
qwList
))
{
// 处理要踢的
for
(
String
wxChatId
:
qwList
)
{
TabGroupChat
chat
=
this
.
groupChatMapper
.
selectByWxChatId
(
wxEnterpriseId
,
wxChatId
);
TabGroupChat
cid
=
null
;
String
staffId
=
chat
.
getStaffId
();
for
(
TabGroupChat
obj
:
chatList
)
{
if
(
obj
.
getStaffId
().
equals
(
staffId
))
{
if
(
null
==
cid
)
{
cid
=
obj
;
}
else
{
if
(
obj
.
getTotalCount
()
>
cid
.
getTotalCount
())
{
cid
=
obj
;
}
}
}
}
if
(
null
!=
cid
)
{
logger
.
info
(
"hm={},群={},要删={}"
,
wxChatId
,
qwChatIdList
,
cid
.
getWxChatId
());
qwChatIdList
.
remove
(
cid
.
getWxChatId
());
// 保存活码
}
}
}
}
}
}
...
...
@@ -136,6 +180,7 @@ public class GroupChatHmServiceImpl implements GroupChatHmService {
SecretTypeEnum
.
CUSTOMIZED_APP
.
getVal
());
if
(
null
==
secretSetting
)
{
logger
.
info
(
"没有配置代开应用"
);
return
;
}
boolean
updateFlag
=
false
;
Long
hmid
=
UniqueIdUtils
.
uniqueLong
();
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/chat/impl/GroupChatPlanServiceImpl.java
View file @
f88d2ee3
...
...
@@ -36,9 +36,11 @@ import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO;
import
com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO
;
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.chat.GroupChatOwnerMapper
;
import
com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanLogMapper
;
import
com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanMapper
;
import
com.gic.haoban.manage.service.entity.TabHaobanStaff
;
import
com.gic.haoban.manage.service.entity.chat.TabGroupChatOwner
;
import
com.gic.haoban.manage.service.entity.chat.TabGroupChatPlan
;
import
com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog
;
import
com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog
;
...
...
@@ -85,6 +87,8 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
private
StoreService
storeService
;
@Autowired
private
QuartzService
quartzService
;
@Autowired
private
GroupChatOwnerMapper
groupChatOwnerMapper
;
private
static
GicMQClient
mqClient
=
GICMQClientUtil
.
getClientInstance
();
...
...
@@ -153,8 +157,8 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
logger
.
info
(
"计划已执行过,planid={}"
,
planId
);
return
;
}
this
.
groupChatPlanMapper
.
updateSendFlag
(
planId
);
// 控制重复发送
this
.
groupChatPlanMapper
.
updateSendFlag
(
planId
);
String
[]
staffIdList
=
plan
.
getStaffIdList
().
split
(
","
);
String
wxEnterpriseId
=
plan
.
getWxEnterpriseId
();
String
enterpriseId
=
plan
.
getEnterpriseId
();
...
...
@@ -178,8 +182,9 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
ownerDTO
.
setSendStatus
(
0
);
}
// 群主群数量
TabGroupChatOwner
owner
=
this
.
groupChatOwnerMapper
.
selectByStaffId
(
staffId
);
ownerDTO
.
setExpireDate
(
DateUtil
.
addDay
(
new
Date
(),
plan
.
getExpireDays
()));
ownerDTO
.
setTotalCount
(
0
);
ownerDTO
.
setTotalCount
(
owner
.
getChatCount
()
);
ownerDTO
.
setWxEnterpriseId
(
wxEnterpriseId
);
ownerDTO
.
setEnterpriseId
(
enterpriseId
);
ownerDTO
.
setStaffId
(
staffId
);
...
...
haoban-manage3-service/src/main/resources/mapper/chat/GroupChatHmMapper.xml
View file @
f88d2ee3
...
...
@@ -142,8 +142,8 @@
<if
test=
"null != startDate"
>
and create_time >= #{startDate} and create_time
<![CDATA[<=]]>
#{endDate}
</if>
<if
test=
"null != searchParams"
>
and
plan
like '%${searchParams}%'
<if
test=
"null != searchParams
and '' !=searchParams
"
>
and
name
like '%${searchParams}%'
</if>
</select>
...
...
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