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
8e781fe8
Commit
8e781fe8
authored
Mar 31, 2025
by
徐高华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
客户群导出
parent
5168c08d
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
492 additions
and
101 deletions
+492
-101
GroupChatUserSearchQDTO.java
...ban/manage/api/dto/qdto/chat/GroupChatUserSearchQDTO.java
+15
-0
GroupChatController.java
...aoban/manage/web/controller/chat/GroupChatController.java
+77
-101
GroupChatUserExcelHandler.java
...manage/web/controller/chat/GroupChatUserExcelHandler.java
+105
-0
GroupChatUserQuitExcelHandler.java
...ge/web/controller/chat/GroupChatUserQuitExcelHandler.java
+88
-0
LinkDataExcelHandler.java
...haoban/manage/web/controller/hm/LinkDataExcelHandler.java
+2
-0
GroupChatUserExcelVO.java
...m/gic/haoban/manage/web/vo/chat/GroupChatUserExcelVO.java
+66
-0
GroupChatUserQuitExcelVO.java
...c/haoban/manage/web/vo/chat/GroupChatUserQuitExcelVO.java
+139
-0
No files found.
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/dto/qdto/chat/GroupChatUserSearchQDTO.java
View file @
8e781fe8
package
com
.
gic
.
haoban
.
manage
.
api
.
dto
.
qdto
.
chat
;
package
com
.
gic
.
haoban
.
manage
.
api
.
dto
.
qdto
.
chat
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
...
@@ -22,6 +24,11 @@ public class GroupChatUserSearchQDTO implements Serializable {
...
@@ -22,6 +24,11 @@ public class GroupChatUserSearchQDTO implements Serializable {
private
Integer
status
=
1
;
private
Integer
status
=
1
;
private
String
wxChatId
;
private
String
wxChatId
;
/**
* 下载导出参数:数据脱敏 1:脱敏 2:完整
*/
private
Integer
dataType
=
1
;
public
List
<
String
>
getStaffIdList
()
{
public
List
<
String
>
getStaffIdList
()
{
return
staffIdList
;
return
staffIdList
;
}
}
...
@@ -30,6 +37,14 @@ public class GroupChatUserSearchQDTO implements Serializable {
...
@@ -30,6 +37,14 @@ public class GroupChatUserSearchQDTO implements Serializable {
this
.
staffIdList
=
staffIdList
;
this
.
staffIdList
=
staffIdList
;
}
}
public
Integer
getDataType
()
{
return
dataType
;
}
public
void
setDataType
(
Integer
dataType
)
{
this
.
dataType
=
dataType
;
}
public
String
getWxChatId
()
{
public
String
getWxChatId
()
{
return
wxChatId
;
return
wxChatId
;
}
}
...
...
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/controller/chat/GroupChatController.java
View file @
8e781fe8
...
@@ -2,14 +2,16 @@ package com.gic.haoban.manage.web.controller.chat;
...
@@ -2,14 +2,16 @@ package com.gic.haoban.manage.web.controller.chat;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.date.DatePattern
;
import
com.alibaba.fastjson.JSON
;
import
com.gic.api.base.commons.BasePageInfo
;
import
com.gic.api.base.commons.BasePageInfo
;
import
com.gic.api.base.commons.JSONResponse
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.clerk.api.dto.AuthorizedUser
;
import
com.gic.commons.util.DateUtil
;
import
com.gic.commons.util.DateUtil
;
import
com.gic.commons.util.EntityUtil
;
import
com.gic.commons.util.ExcelUtils
;
import
com.gic.commons.util.ExcelUtils
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.enterprise.api.service.EnterpriseService
;
import
com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO
;
import
com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO
;
import
com.gic.haoban.common.utils.AuthWebRequestUtil
;
import
com.gic.haoban.common.utils.AuthWebRequestUtil
;
import
com.gic.haoban.manage.api.dto.StaffDTO
;
import
com.gic.haoban.manage.api.dto.StaffDTO
;
...
@@ -24,13 +26,14 @@ import com.gic.haoban.manage.api.service.StaffApiService;
...
@@ -24,13 +26,14 @@ import com.gic.haoban.manage.api.service.StaffApiService;
import
com.gic.haoban.manage.api.service.chat.GroupChatApiService
;
import
com.gic.haoban.manage.api.service.chat.GroupChatApiService
;
import
com.gic.haoban.manage.web.errCode.HaoBanErrCode
;
import
com.gic.haoban.manage.web.errCode.HaoBanErrCode
;
import
com.gic.haoban.manage.web.log.LogRecordUserServiceImpl
;
import
com.gic.haoban.manage.web.log.LogRecordUserServiceImpl
;
import
com.gic.haoban.manage.web.vo.chat.GroupChatUserExcelVO
;
import
com.gic.haoban.manage.web.vo.chat.GroupChatUserQuitVO
;
import
com.gic.log.record.anno.GicLogRecord
;
import
com.gic.log.record.anno.GicLogRecord
;
import
com.gic.log.record.util.GicLogRecordCategoryEnum
;
import
com.gic.log.record.util.GicLogRecordCategoryEnum
;
import
com.gic.log.record.util.GicLogRecordEvaluationContext
;
import
com.gic.log.record.util.GicLogRecordEvaluationContext
;
import
com.gic.log.record.util.GicLogRecordOptTypeEnum
;
import
com.gic.log.record.util.GicLogRecordOptTypeEnum
;
import
org.apache.commons.collections.ArrayStack
;
import
com.gic.qcloud.BucketNameEnum
;
import
com.gic.web.common.download.DownloadTask
;
import
com.gic.web.common.download.DownloadTaskUtil
;
import
com.gic.web.common.download.constants.TaskTypeEnum
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.LogManager
;
...
@@ -38,7 +41,6 @@ import org.apache.logging.log4j.Logger;
...
@@ -38,7 +41,6 @@ import org.apache.logging.log4j.Logger;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
...
@@ -63,7 +65,9 @@ public class GroupChatController {
...
@@ -63,7 +65,9 @@ public class GroupChatController {
@Autowired
@Autowired
private
StaffApiService
staffApiService
;
private
StaffApiService
staffApiService
;
@Autowired
@Autowired
private
EnterpriseService
enterpriseService
;
private
GroupChatUserExcelHandler
groupChatUserExcelHandler
;
@Autowired
private
GroupChatUserQuitExcelHandler
groupChatUserQuitExcelHandler
;
@RequestMapping
(
"get-set-gic-flag"
)
@RequestMapping
(
"get-set-gic-flag"
)
public
RestResponse
<
Object
>
getFlag
()
{
public
RestResponse
<
Object
>
getFlag
()
{
...
@@ -79,7 +83,6 @@ public class GroupChatController {
...
@@ -79,7 +83,6 @@ public class GroupChatController {
* @Title: save
* @Title: save
* @Description: 认领gic
* @Description: 认领gic
* @author xugh
* @author xugh
* @param groupChatIdList
* @return
* @return
* @throws
* @throws
*/
*/
...
@@ -154,124 +157,97 @@ public class GroupChatController {
...
@@ -154,124 +157,97 @@ public class GroupChatController {
* 群详情导出
* 群详情导出
*/
*/
@RequestMapping
(
"user/detail/excel"
)
@RequestMapping
(
"user/detail/excel"
)
public
RestResponse
<
Boolean
>
detailExcel
(
HttpServletRequest
request
,
HttpServletResponse
response
,
GroupChatUserSearchQDTO
qdto
)
{
public
RestResponse
<
String
>
detailExcel
(
@RequestBody
GroupChatUserSearchQDTO
qdto
)
{
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
qdto
.
setWxEnterpriseId
(
loginUser
.
getWxEnterpriseId
());
qdto
.
setWxEnterpriseId
(
loginUser
.
getWxEnterpriseId
());
qdto
.
setEnterpriseId
(
loginUser
.
getEnterpriseId
());
qdto
.
setEnterpriseId
(
loginUser
.
getEnterpriseId
());
BasePageInfo
basePageInfo
=
new
BasePageInfo
()
;
BasePageInfo
basePageInfo
=
new
BasePageInfo
()
;
basePageInfo
.
setPageNum
(
1
);
basePageInfo
.
setPageNum
(
1
);
basePageInfo
.
setPageSize
(
1
000
);
basePageInfo
.
setPageSize
(
1
);
ServiceResponse
<
Page
<
GroupChatUserDTO
>>
resp
=
this
.
groupChatApiService
.
listUserPage
(
qdto
,
basePageInfo
);
ServiceResponse
<
Page
<
GroupChatUserDTO
>>
resp
=
this
.
groupChatApiService
.
listUserPage
(
qdto
,
basePageInfo
);
Long
groupChatId
=
qdto
.
getGroupChatId
()
;
ServiceResponse
<
GroupChatDTO
>
detailResp
=
this
.
groupChatApiService
.
detail
(
loginUser
.
getWxEnterpriseId
(),
groupChatId
);
List
<
GroupChatUserDTO
>
list
=
resp
.
getResult
().
getResult
()
;
List
<
GroupChatUserDTO
>
list
=
resp
.
getResult
().
getResult
()
;
if
(
CollectionUtils
.
isEmpty
(
list
))
{
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
RestResponse
.
failure
(
"9999"
,
"无
相关群成员
"
);
return
RestResponse
.
failure
(
"9999"
,
"无
群成员数据
"
);
}
}
Long
groupChatId
=
qdto
.
getGroupChatId
()
;
int
totalCount
=
resp
.
getResult
().
getTotalCount
();
ServiceResponse
<
GroupChatDTO
>
detailResp
=
this
.
groupChatApiService
.
detail
(
loginUser
.
getWxEnterpriseId
(),
groupChatId
);
String
s
=
DateUtil
.
formatString
(
new
Date
(),
DateUtil
.
FORMAT_DATE_10
);
String
s
=
DateUtil
.
formatString
(
new
Date
(),
DateUtil
.
FORMAT_DATE_10
);
AuthorizedUser
user
=
new
AuthorizedUser
();
user
.
setUserId
(
loginUser
.
getClerkId
());
user
.
setEnterpriseId
(
loginUser
.
getEnterpriseId
());
user
.
setRealName
(
loginUser
.
getClerkName
());
String
fileName
=
"客户群成员-"
+
detailResp
.
getResult
().
getName
()+
"-"
+
s
;
String
fileName
=
"客户群成员-"
+
detailResp
.
getResult
().
getName
()+
"-"
+
s
;
List
<
String
>
titleList
=
Arrays
.
asList
(
"群成员名称"
,
"群成员昵称"
,
"身份"
,
"入群方式"
,
"入群时间"
);
DownloadTask
task
=
new
DownloadTask
();
List
<
String
>
fileList
=
Arrays
.
asList
(
"userName"
,
"nickName"
,
"userTypeExcel"
,
"sceneExcel"
,
"addTimeExcel"
);
task
.
setTaskTypeEnum
(
TaskTypeEnum
.
QYWX_GROUP_CHAT_USER
);
List
<
GroupChatUserExcelVO
>
voList
=
new
ArrayList
<>()
;
task
.
setUser
(
user
);
for
(
GroupChatUserDTO
dto
:
list
)
{
task
.
setDataType
(
qdto
.
getDataType
());
GroupChatUserExcelVO
vo
=
EntityUtil
.
changeEntityByJSON
(
GroupChatUserExcelVO
.
class
,
dto
)
;
task
.
setTotalCount
(
totalCount
);
vo
.
setAddTimeExcel
(
DateUtil
.
dateToStr
(
dto
.
getJoinTime
()
,
"yyyy-MM-dd HH:mm:ss"
));
task
.
setFileName
(
fileName
);
if
(
dto
.
getUserType
()==
1
)
{
task
.
setChannelName
(
TaskTypeEnum
.
QYWX_GROUP_CHAT_USER
.
getName
());
vo
.
setUserTypeExcel
(
"企业成员"
);
task
.
setBucketName
(
BucketNameEnum
.
REPORT_50000
.
getName
());
}
else
if
(
dto
.
getUserType
()==
2
)
{
task
.
setSearchDataParams
(
JSON
.
toJSONStringWithDateFormat
(
qdto
,
DatePattern
.
NORM_DATETIME_PATTERN
));
vo
.
setUserTypeExcel
(
"外部成员"
);
task
.
setHandler
(
groupChatUserExcelHandler
);
}
else
{
JSONResponse
jsonResponse
=
DownloadTaskUtil
.
createDownloadTask
(
task
);
vo
.
setUserTypeExcel
(
"客户"
);
final
String
reportId
;
}
if
(
jsonResponse
.
isSuccess
())
{
Integer
joinScene
=
dto
.
getJoinScene
()
;
reportId
=
(
String
)
jsonResponse
.
getResult
();
if
(
null
!=
joinScene
)
{
}
else
{
String
invitor_user_name
=
dto
.
getInvitorUserName
()
;
return
RestResponse
.
failure
(
"9999"
,
jsonResponse
.
getErrorMessage
());
if
(
StringUtils
.
isBlank
(
invitor_user_name
))
{
invitor_user_name
=
"群成员"
;
}
if
(
joinScene
==
1
)
{
// 由群成员邀请入群(直接邀请入群)
vo
.
setSceneExcel
(
String
.
format
(
"由%s直接邀请入群"
,
invitor_user_name
));
}
else
if
(
joinScene
==
2
)
{
// 由群成员邀请入群(通过邀请链接入群)
vo
.
setSceneExcel
(
String
.
format
(
"通过%s分享链接入群"
,
invitor_user_name
));
}
else
if
(
joinScene
==
3
)
{
// 通过扫描群二维码入群
vo
.
setSceneExcel
(
String
.
format
(
"通过扫描%s分享的二维码入群"
,
invitor_user_name
));
}
voList
.
add
(
vo
)
;
}
}
}
try
{
return
RestResponse
.
successResult
(
reportId
);
ExcelUtils
.
xls
(
response
,
request
,
fileName
,
voList
,
fileList
,
titleList
);
}
catch
(
Exception
e
)
{
logger
.
info
(
"异常"
,
e
);
logger
.
info
(
"导出失败"
);
}
return
RestResponse
.
successResult
(
true
);
}
}
@RequestMapping
(
"user/quit/excel"
)
@RequestMapping
(
"user/quit/excel"
)
public
RestResponse
<
Boolean
>
excel
(
HttpServletRequest
request
,
HttpServletResponse
response
,
String
searchParams
,
Integer
userType
,
public
RestResponse
<
String
>
excel
(
@RequestBody
GroupChatUserSearchQDTO
qdto
)
{
Date
startDate
,
Date
endDate
,
@RequestParam
(
defaultValue
=
"2"
)
Integer
status
)
{
GroupChatUserSearchQDTO
qdto
=
new
GroupChatUserSearchQDTO
();
BasePageInfo
basePageInfo
=
new
BasePageInfo
();
int
pageNum
=
1
;
int
pageSize
=
1000
;
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
WebLoginDTO
loginUser
=
AuthWebRequestUtil
.
getLoginUser
();
qdto
.
setWxEnterpriseId
(
loginUser
.
getWxEnterpriseId
());
qdto
.
setWxEnterpriseId
(
loginUser
.
getWxEnterpriseId
());
qdto
.
setEnterpriseId
(
loginUser
.
getEnterpriseId
());
qdto
.
setEnterpriseId
(
loginUser
.
getEnterpriseId
());
qdto
.
setSearchParams
(
searchParams
)
;
Date
startDate
=
qdto
.
getStartDate
()
;
qdto
.
setUserType
(
userType
)
;
Date
endDate
=
qdto
.
getEndDate
()
;
if
(
null
==
startDate
||
null
==
endDate
)
{
if
(
null
==
startDate
||
null
==
endDate
)
{
return
RestResponse
.
failure
(
"9999"
,
"时间不能为空"
);
return
RestResponse
.
failure
(
"9999"
,
"时间不能为空"
);
}
}
if
(
DateUtil
.
daysBetween
(
startDate
,
endDate
)
>=
32
)
{
if
(
DateUtil
.
daysBetween
(
startDate
,
endDate
)
>=
180
)
{
return
RestResponse
.
failure
(
"9999"
,
"导出区间不能超过
一个月
"
);
return
RestResponse
.
failure
(
"9999"
,
"导出区间不能超过
半年
"
);
}
}
qdto
.
setStartDate
(
startDate
);
if
(
null
==
qdto
.
getStatus
())
{
qdto
.
setEndDate
(
endDate
);
qdto
.
setStatus
(
2
);
qdto
.
setStatus
(
status
);
basePageInfo
.
setPageSize
(
pageSize
);
List
<
GroupChatUserDTO
>
result
=
new
ArrayList
<>();
while
(
true
)
{
basePageInfo
.
setPageNum
(
pageNum
);
ServiceResponse
<
Page
<
GroupChatUserDTO
>>
page
=
this
.
groupChatApiService
.
listUserPage
(
qdto
,
basePageInfo
);
List
<
GroupChatUserDTO
>
list
=
page
.
getResult
().
getResult
();
if
(
CollectionUtils
.
isEmpty
(
list
))
{
break
;
}
result
.
addAll
(
list
);
pageNum
++;
}
}
if
(
CollUtil
.
isNotEmpty
(
result
)){
BasePageInfo
basePageInfo
=
new
BasePageInfo
();
List
<
GroupChatUserQuitVO
>
voList
=
new
ArrayList
<>()
;
basePageInfo
.
setPageSize
(
1
);
for
(
GroupChatUserDTO
dto
:
result
)
{
basePageInfo
.
setPageNum
(
1
);
GroupChatUserQuitVO
vo
=
EntityUtil
.
changeEntityByJSON
(
GroupChatUserQuitVO
.
class
,
dto
)
;
ServiceResponse
<
Page
<
GroupChatUserDTO
>>
resp
=
this
.
groupChatApiService
.
listUserPage
(
qdto
,
basePageInfo
);
vo
.
setUserQuitTimeExcel
(
DateUtil
.
dateToStr
(
dto
.
getUserQuitTime
(),
"yyyy-MM-dd HH:mm:ss"
));
List
<
GroupChatUserDTO
>
list
=
resp
.
getResult
().
getResult
()
;
if
(
dto
.
getUserType
()==
1
)
{
if
(
CollectionUtils
.
isEmpty
(
list
))
{
vo
.
setUserTypeExcel
(
"企业成员"
);
return
RestResponse
.
failure
(
"9999"
,
"无群成员数据"
);
}
else
if
(
dto
.
getUserType
()==
2
)
{
vo
.
setUserTypeExcel
(
"外部成员"
);
}
else
{
vo
.
setUserTypeExcel
(
"客户"
);
}
voList
.
add
(
vo
)
;
}
String
s
=
DateUtil
.
formatString
(
new
Date
(),
DateUtil
.
FORMAT_DATE_10
);
String
fileName
=
"退群记录"
+
s
;
List
<
String
>
titleList
=
Arrays
.
asList
(
"群成员姓名"
,
"群成员昵称"
,
"身份"
,
"群名称"
,
"群主"
,
"群主关联门店"
,
"退群时间"
);
List
<
String
>
fileList
=
Arrays
.
asList
(
"userName"
,
"nickName"
,
"userTypeExcel"
,
"chatName"
,
"staffName"
,
"quitStaffStore"
,
"userQuitTimeExcel"
);
try
{
ExcelUtils
.
xls
(
response
,
request
,
fileName
,
voList
,
fileList
,
titleList
);
}
catch
(
Exception
e
)
{
logger
.
info
(
"异常"
,
e
);
logger
.
info
(
"导出失败"
);
}
return
RestResponse
.
successResult
(
true
);
}
}
return
RestResponse
.
successResult
(
false
);
AuthorizedUser
user
=
new
AuthorizedUser
();
user
.
setUserId
(
loginUser
.
getClerkId
());
user
.
setEnterpriseId
(
loginUser
.
getEnterpriseId
());
user
.
setRealName
(
loginUser
.
getClerkName
());
String
s
=
DateUtil
.
formatString
(
new
Date
(),
DateUtil
.
FORMAT_DATE_10
);
String
fileName
=
"退群记录"
+
s
;
DownloadTask
task
=
new
DownloadTask
();
task
.
setTaskTypeEnum
(
TaskTypeEnum
.
QYWX_GROUP_CHAT_USER
);
task
.
setUser
(
user
);
task
.
setDataType
(
qdto
.
getDataType
());
task
.
setTotalCount
(
resp
.
getResult
().
getTotalCount
());
task
.
setFileName
(
fileName
);
task
.
setChannelName
(
TaskTypeEnum
.
QYWX_GROUP_CHAT_USER
.
getName
());
task
.
setBucketName
(
BucketNameEnum
.
REPORT_50000
.
getName
());
task
.
setSearchDataParams
(
JSON
.
toJSONStringWithDateFormat
(
qdto
,
DatePattern
.
NORM_DATETIME_PATTERN
));
task
.
setHandler
(
groupChatUserQuitExcelHandler
);
JSONResponse
jsonResponse
=
DownloadTaskUtil
.
createDownloadTask
(
task
);
final
String
reportId
;
if
(
jsonResponse
.
isSuccess
())
{
reportId
=
(
String
)
jsonResponse
.
getResult
();
}
else
{
return
RestResponse
.
failure
(
"9999"
,
jsonResponse
.
getErrorMessage
());
}
return
RestResponse
.
successResult
(
reportId
);
}
}
...
...
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/controller/chat/GroupChatUserExcelHandler.java
0 → 100644
View file @
8e781fe8
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
chat
;
import
com.alibaba.fastjson.JSON
;
import
com.gic.api.base.commons.BasePageInfo
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.commons.util.DateUtil
;
import
com.gic.commons.util.EntityUtil
;
import
com.gic.haoban.manage.api.dto.chat.GroupChatUserDTO
;
import
com.gic.haoban.manage.api.dto.qdto.chat.GroupChatUserSearchQDTO
;
import
com.gic.haoban.manage.api.service.chat.GroupChatApiService
;
import
com.gic.haoban.manage.web.controller.moment.QwMomentController
;
import
com.gic.haoban.manage.web.vo.chat.GroupChatUserExcelVO
;
import
com.gic.haoban.manage.web.vo.moment.MomentDataExcelVO
;
import
com.gic.member.api.dto.es.MemberDataDTO
;
import
com.gic.web.common.download.DownloadHandlerAbstract
;
import
com.gic.web.common.download.context.Context
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Service
public
class
GroupChatUserExcelHandler
extends
DownloadHandlerAbstract
<
GroupChatUserExcelVO
>
{
@Autowired
private
GroupChatApiService
groupChatApiService
;
@Autowired
private
QwMomentController
qwMomentController
;
@Override
public
List
<
GroupChatUserExcelVO
>
getData
(
Context
context
,
String
searchDataParams
,
Integer
currentPage
)
{
GroupChatUserSearchQDTO
qdto
=
JSON
.
parseObject
(
searchDataParams
,
GroupChatUserSearchQDTO
.
class
);
BasePageInfo
basePageInfo
=
new
BasePageInfo
()
;
basePageInfo
.
setPageSize
(
this
.
getPageSize
());
basePageInfo
.
setPageNum
(
currentPage
);
ServiceResponse
<
Page
<
GroupChatUserDTO
>>
resp
=
this
.
groupChatApiService
.
listUserPage
(
qdto
,
basePageInfo
);
List
<
GroupChatUserExcelVO
>
voList
=
new
ArrayList
<>()
;
for
(
GroupChatUserDTO
dto
:
resp
.
getResult
().
getResult
())
{
GroupChatUserExcelVO
vo
=
EntityUtil
.
changeEntityByJSON
(
GroupChatUserExcelVO
.
class
,
dto
);
vo
.
setAddTimeExcel
(
DateUtil
.
dateToStr
(
dto
.
getJoinTime
(),
"yyyy-MM-dd HH:mm:ss"
));
if
(
dto
.
getUserType
()
==
1
)
{
vo
.
setUserTypeExcel
(
"企业成员"
);
}
else
if
(
dto
.
getUserType
()
==
2
)
{
vo
.
setUserTypeExcel
(
"外部成员"
);
}
else
{
vo
.
setUserTypeExcel
(
"客户"
);
}
Integer
joinScene
=
dto
.
getJoinScene
();
if
(
null
!=
joinScene
)
{
String
invitor_user_name
=
dto
.
getInvitorUserName
();
if
(
StringUtils
.
isBlank
(
invitor_user_name
))
{
invitor_user_name
=
"群成员"
;
}
if
(
joinScene
==
1
)
{
// 由群成员邀请入群(直接邀请入群)
vo
.
setSceneExcel
(
String
.
format
(
"由%s直接邀请入群"
,
invitor_user_name
));
}
else
if
(
joinScene
==
2
)
{
// 由群成员邀请入群(通过邀请链接入群)
vo
.
setSceneExcel
(
String
.
format
(
"通过%s分享链接入群"
,
invitor_user_name
));
}
else
if
(
joinScene
==
3
)
{
// 通过扫描群二维码入群
vo
.
setSceneExcel
(
String
.
format
(
"通过扫描%s分享的二维码入群"
,
invitor_user_name
));
}
voList
.
add
(
vo
);
}
}
List
<
String
>
memberIdList
=
voList
.
stream
().
filter
(
o
->
StringUtils
.
isNotBlank
(
o
.
getMemberId
())).
map
(
o
->
o
.
getMemberId
()).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
memberIdList
))
{
Map
<
String
,
MemberDataDTO
>
map
=
this
.
qwMomentController
.
getMemberMap
(
qdto
.
getEnterpriseId
(),
memberIdList
)
;
for
(
GroupChatUserExcelVO
vo
:
voList
)
{
String
memberId
=
vo
.
getMemberId
()
;
if
(
null
==
map
.
get
(
memberId
))
{
vo
.
setMemberScene
(
2
);
}
else
{
MemberDataDTO
data
=
map
.
get
(
memberId
)
;
vo
.
setMemberName
(
data
.
getName
());
vo
.
setMemberNick
(
data
.
getNickName
());
vo
.
setMemberCard
(
data
.
getCardNo
());
vo
.
setMemberPhone
(
data
.
getPhoneNumber
());
vo
.
setMemberScene
(
3
);
}
}
}
return
voList
;
}
@Override
public
List
<
String
>
getColumnNames
()
{
return
Arrays
.
asList
(
"群成员名称"
,
"群成员昵称"
,
"身份"
,
"客户姓名"
,
"客户昵称"
,
"手机号"
,
"卡号"
,
"入群方式"
,
"入群时间"
);
}
@Override
public
LinkedHashMap
<
String
,
List
<
String
>>
doubleColumnNames
()
{
return
null
;
}
@Override
public
List
<
String
>
getColumns
()
{
return
Arrays
.
asList
(
"userName"
,
"nickName"
,
"userTypeExcel"
,
"memberName"
,
"memberNick"
,
"memberPhone"
,
"memberCard"
,
"sceneExcel"
,
"addTimeExcel"
);
}
}
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/controller/chat/GroupChatUserQuitExcelHandler.java
0 → 100644
View file @
8e781fe8
package
com
.
gic
.
haoban
.
manage
.
web
.
controller
.
chat
;
import
com.alibaba.fastjson.JSON
;
import
com.gic.api.base.commons.BasePageInfo
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.commons.util.DateUtil
;
import
com.gic.commons.util.EntityUtil
;
import
com.gic.haoban.manage.api.dto.chat.GroupChatUserDTO
;
import
com.gic.haoban.manage.api.dto.qdto.chat.GroupChatUserSearchQDTO
;
import
com.gic.haoban.manage.api.service.chat.GroupChatApiService
;
import
com.gic.haoban.manage.web.controller.moment.QwMomentController
;
import
com.gic.haoban.manage.web.vo.chat.GroupChatUserExcelVO
;
import
com.gic.haoban.manage.web.vo.chat.GroupChatUserQuitExcelVO
;
import
com.gic.member.api.dto.es.MemberDataDTO
;
import
com.gic.web.common.download.DownloadHandlerAbstract
;
import
com.gic.web.common.download.context.Context
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.stream.Collectors
;
@Service
public
class
GroupChatUserQuitExcelHandler
extends
DownloadHandlerAbstract
<
GroupChatUserQuitExcelVO
>
{
@Autowired
private
GroupChatApiService
groupChatApiService
;
@Autowired
private
QwMomentController
qwMomentController
;
@Override
public
List
<
GroupChatUserQuitExcelVO
>
getData
(
Context
context
,
String
searchDataParams
,
Integer
currentPage
)
{
GroupChatUserSearchQDTO
qdto
=
JSON
.
parseObject
(
searchDataParams
,
GroupChatUserSearchQDTO
.
class
);
BasePageInfo
basePageInfo
=
new
BasePageInfo
()
;
basePageInfo
.
setPageSize
(
this
.
getPageSize
());
basePageInfo
.
setPageNum
(
currentPage
);
ServiceResponse
<
Page
<
GroupChatUserDTO
>>
resp
=
this
.
groupChatApiService
.
listUserPage
(
qdto
,
basePageInfo
);
List
<
GroupChatUserQuitExcelVO
>
voList
=
new
ArrayList
<>()
;
for
(
GroupChatUserDTO
dto
:
resp
.
getResult
().
getResult
())
{
GroupChatUserQuitExcelVO
vo
=
EntityUtil
.
changeEntityByJSON
(
GroupChatUserQuitExcelVO
.
class
,
dto
);
vo
.
setUserQuitTimeExcel
(
DateUtil
.
dateToStr
(
dto
.
getUserQuitTime
(),
"yyyy-MM-dd HH:mm:ss"
));
if
(
dto
.
getUserType
()==
1
)
{
vo
.
setUserTypeExcel
(
"企业成员"
);
}
else
if
(
dto
.
getUserType
()==
2
)
{
vo
.
setUserTypeExcel
(
"外部成员"
);
}
else
{
vo
.
setUserTypeExcel
(
"客户"
);
}
voList
.
add
(
vo
);
}
List
<
String
>
memberIdList
=
voList
.
stream
().
filter
(
o
->
StringUtils
.
isNotBlank
(
o
.
getMemberId
())).
map
(
o
->
o
.
getMemberId
()).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
memberIdList
))
{
Map
<
String
,
MemberDataDTO
>
map
=
this
.
qwMomentController
.
getMemberMap
(
qdto
.
getEnterpriseId
(),
memberIdList
)
;
for
(
GroupChatUserQuitExcelVO
vo
:
voList
)
{
String
memberId
=
vo
.
getMemberId
()
;
if
(
null
==
map
.
get
(
memberId
))
{
vo
.
setMemberScene
(
2
);
}
else
{
MemberDataDTO
data
=
map
.
get
(
memberId
)
;
vo
.
setMemberName
(
data
.
getName
());
vo
.
setMemberNick
(
data
.
getNickName
());
vo
.
setMemberCard
(
data
.
getCardNo
());
vo
.
setMemberPhone
(
data
.
getPhoneNumber
());
vo
.
setMemberScene
(
3
);
}
}
}
return
voList
;
}
@Override
public
List
<
String
>
getColumnNames
()
{
return
Arrays
.
asList
(
"群成员姓名"
,
"群成员昵称"
,
"身份"
,
"客户姓名"
,
"客户昵称"
,
"手机号"
,
"卡号"
,
"群名称"
,
"群主"
,
"群主关联门店"
,
"退群时间"
);
}
@Override
public
LinkedHashMap
<
String
,
List
<
String
>>
doubleColumnNames
()
{
return
null
;
}
@Override
public
List
<
String
>
getColumns
()
{
return
Arrays
.
asList
(
"userName"
,
"nickName"
,
"userTypeExcel"
,
"memberName"
,
"memberNick"
,
"memberPhone"
,
"memberCard"
,
"chatName"
,
"staffName"
,
"quitStaffStore"
,
"userQuitTimeExcel"
);
}
}
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/controller/hm/LinkDataExcelHandler.java
View file @
8e781fe8
...
@@ -12,9 +12,11 @@ import com.gic.web.common.download.DownloadHandlerAbstract;
...
@@ -12,9 +12,11 @@ import com.gic.web.common.download.DownloadHandlerAbstract;
import
com.gic.web.common.download.context.Context
;
import
com.gic.web.common.download.context.Context
;
import
com.gic.web.common.utils.DataApiUtils
;
import
com.gic.web.common.utils.DataApiUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.*
;
@Service
public
class
LinkDataExcelHandler
extends
DownloadHandlerAbstract
<
LinkDataExcelVO
>
{
public
class
LinkDataExcelHandler
extends
DownloadHandlerAbstract
<
LinkDataExcelVO
>
{
@Override
@Override
...
...
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/vo/chat/GroupChatUserExcelVO.java
View file @
8e781fe8
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
chat
;
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
chat
;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.gic.web.common.jsonSeralizer.CardNoJsonSeralizer
;
import
com.gic.web.common.jsonSeralizer.PhoneNumberJsonSeralizer
;
import
com.gic.web.common.jsonSeralizer.UserNameJsonSeralizer
;
import
java.io.Serializable
;
import
java.io.Serializable
;
/**
/**
...
@@ -30,6 +35,67 @@ public class GroupChatUserExcelVO implements Serializable {
...
@@ -30,6 +35,67 @@ public class GroupChatUserExcelVO implements Serializable {
private
String
sceneExcel
;
private
String
sceneExcel
;
private
String
addTimeExcel
;
private
String
addTimeExcel
;
private
String
memberId
;
private
String
memberNick
;
@JsonSerialize
(
using
=
UserNameJsonSeralizer
.
class
)
private
String
memberName
;
@JsonSerialize
(
using
=
PhoneNumberJsonSeralizer
.
class
)
private
String
memberPhone
;
@JsonSerialize
(
using
=
CardNoJsonSeralizer
.
class
)
private
String
memberCard
;
/**
* 1:非会员 2:会员已注销 3:正常
*/
private
Integer
memberScene
;
public
Integer
getMemberScene
()
{
return
memberScene
;
}
public
void
setMemberScene
(
Integer
memberScene
)
{
this
.
memberScene
=
memberScene
;
}
public
String
getMemberId
()
{
return
memberId
;
}
public
void
setMemberId
(
String
memberId
)
{
this
.
memberId
=
memberId
;
}
public
String
getMemberNick
()
{
return
memberNick
;
}
public
void
setMemberNick
(
String
memberNick
)
{
this
.
memberNick
=
memberNick
;
}
public
String
getMemberName
()
{
return
memberName
;
}
public
void
setMemberName
(
String
memberName
)
{
this
.
memberName
=
memberName
;
}
public
String
getMemberPhone
()
{
return
memberPhone
;
}
public
void
setMemberPhone
(
String
memberPhone
)
{
this
.
memberPhone
=
memberPhone
;
}
public
String
getMemberCard
()
{
return
memberCard
;
}
public
void
setMemberCard
(
String
memberCard
)
{
this
.
memberCard
=
memberCard
;
}
public
String
getUserTypeExcel
()
{
public
String
getUserTypeExcel
()
{
return
userTypeExcel
;
return
userTypeExcel
;
...
...
haoban-manage3-web/src/main/java/com/gic/haoban/manage/web/vo/chat/GroupChatUserQuitExcelVO.java
0 → 100644
View file @
8e781fe8
package
com
.
gic
.
haoban
.
manage
.
web
.
vo
.
chat
;
import
com.fasterxml.jackson.databind.annotation.JsonSerialize
;
import
com.gic.web.common.jsonSeralizer.CardNoJsonSeralizer
;
import
com.gic.web.common.jsonSeralizer.PhoneNumberJsonSeralizer
;
import
com.gic.web.common.jsonSeralizer.UserNameJsonSeralizer
;
import
java.io.Serializable
;
public
class
GroupChatUserQuitExcelVO
implements
Serializable
{
/**1企业成员2外部联系人3客户*/
private
String
userTypeExcel
;
/**姓名*/
private
String
userName
;
/**昵称*/
private
String
nickName
;
/**用户退群时间*/
private
String
userQuitTimeExcel
;
private
String
chatName
;
private
String
staffName
;
private
String
quitStaffStore
;
private
String
memberId
;
private
String
memberNick
;
@JsonSerialize
(
using
=
UserNameJsonSeralizer
.
class
)
private
String
memberName
;
@JsonSerialize
(
using
=
PhoneNumberJsonSeralizer
.
class
)
private
String
memberPhone
;
@JsonSerialize
(
using
=
CardNoJsonSeralizer
.
class
)
private
String
memberCard
;
private
Integer
memberScene
;
public
String
getUserTypeExcel
()
{
return
userTypeExcel
;
}
public
void
setUserTypeExcel
(
String
userTypeExcel
)
{
this
.
userTypeExcel
=
userTypeExcel
;
}
public
String
getUserName
()
{
return
userName
;
}
public
void
setUserName
(
String
userName
)
{
this
.
userName
=
userName
;
}
public
String
getNickName
()
{
return
nickName
;
}
public
void
setNickName
(
String
nickName
)
{
this
.
nickName
=
nickName
;
}
public
String
getUserQuitTimeExcel
()
{
return
userQuitTimeExcel
;
}
public
void
setUserQuitTimeExcel
(
String
userQuitTimeExcel
)
{
this
.
userQuitTimeExcel
=
userQuitTimeExcel
;
}
public
String
getChatName
()
{
return
chatName
;
}
public
void
setChatName
(
String
chatName
)
{
this
.
chatName
=
chatName
;
}
public
String
getStaffName
()
{
return
staffName
;
}
public
void
setStaffName
(
String
staffName
)
{
this
.
staffName
=
staffName
;
}
public
String
getQuitStaffStore
()
{
return
quitStaffStore
;
}
public
void
setQuitStaffStore
(
String
quitStaffStore
)
{
this
.
quitStaffStore
=
quitStaffStore
;
}
public
String
getMemberId
()
{
return
memberId
;
}
public
void
setMemberId
(
String
memberId
)
{
this
.
memberId
=
memberId
;
}
public
String
getMemberNick
()
{
return
memberNick
;
}
public
void
setMemberNick
(
String
memberNick
)
{
this
.
memberNick
=
memberNick
;
}
public
String
getMemberName
()
{
return
memberName
;
}
public
void
setMemberName
(
String
memberName
)
{
this
.
memberName
=
memberName
;
}
public
String
getMemberPhone
()
{
return
memberPhone
;
}
public
void
setMemberPhone
(
String
memberPhone
)
{
this
.
memberPhone
=
memberPhone
;
}
public
String
getMemberCard
()
{
return
memberCard
;
}
public
void
setMemberCard
(
String
memberCard
)
{
this
.
memberCard
=
memberCard
;
}
public
Integer
getMemberScene
()
{
return
memberScene
;
}
public
void
setMemberScene
(
Integer
memberScene
)
{
this
.
memberScene
=
memberScene
;
}
}
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