Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
O
operate-customer-service
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
沈振路
operate-customer-service
Commits
320e65ac
提交
320e65ac
authored
7月 07, 2023
作者:
wgh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
定时客服加入关注时间条件判断
上级
ac99a981
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
22 行增加
和
230 行删除
+22
-230
CustomerGraphicsServiceImpl.java
...zw/customer/service/impl/CustomerGraphicsServiceImpl.java
+7
-1
WeChatServiceImpl.java
...zw/customer/service/wechat/service/WeChatServiceImpl.java
+11
-9
YYZWDateUtil.java
src/main/java/com/yaoyaozw/customer/utils/YYZWDateUtil.java
+0
-219
CrowdPackageUserVO.java
...com/yaoyaozw/customer/vo/customer/CrowdPackageUserVO.java
+2
-0
RegisterUserEntityMapper.xml
src/main/resources/mapper/RegisterUserEntityMapper.xml
+2
-1
没有找到文件。
src/main/java/com/yaoyaozw/customer/service/impl/CustomerGraphicsServiceImpl.java
浏览文件 @
320e65ac
...
@@ -240,13 +240,19 @@ public class CustomerGraphicsServiceImpl extends ServiceImpl<CustomerGraphicsMap
...
@@ -240,13 +240,19 @@ public class CustomerGraphicsServiceImpl extends ServiceImpl<CustomerGraphicsMap
//活跃时间限制窗口
//活跃时间限制窗口
Long
activeTimeMax
=
crowdPackage
.
getActiveTimeMax
();
Long
activeTimeMax
=
crowdPackage
.
getActiveTimeMax
();
Long
activeTimeMin
=
crowdPackage
.
getActiveTimeMin
();
Long
activeTimeMin
=
crowdPackage
.
getActiveTimeMin
();
Integer
followTimeMin
=
crowdPackage
.
getFollowTimeMin
();
Integer
followTimeMax
=
crowdPackage
.
getFollowTimeMax
();
//根据人群包找人,并按appId分组
//根据人群包找人,并按appId分组
List
<
CrowdPackageUserVO
>
userList
=
registerUserEntityService
.
getCurrentInPackUserList
(
packId
,
false
);
List
<
CrowdPackageUserVO
>
userList
=
registerUserEntityService
.
getCurrentInPackUserList
(
packId
,
false
);
//1.活跃时间判断,2.用户去重
//1.活跃时间判断,2.用户去重
Map
<
String
,
List
<
CrowdPackageUserVO
>>
appidUserMap
=
userList
.
stream
()
Map
<
String
,
List
<
CrowdPackageUserVO
>>
appidUserMap
=
userList
.
stream
()
.
filter
(
a
->
a
.
getLastActive
()!=
null
&&(
activeTimeMin
==
null
||((
currentTimestamp
-
a
.
getLastActive
().
getTime
())>=
activeTimeMin
))&&(
activeTimeMax
==
null
||((
currentTimestamp
-
a
.
getLastActive
().
getTime
())<
activeTimeMax
)))
.
filter
(
a
->
a
.
getLastActive
()
!=
null
&&
(
activeTimeMin
==
null
||
((
currentTimestamp
-
a
.
getLastActive
().
getTime
())
>=
activeTimeMin
))
&&
(
activeTimeMax
==
null
||
((
currentTimestamp
-
a
.
getLastActive
().
getTime
())
<
activeTimeMax
))
&&
(
followTimeMin
==
null
||
(
a
.
getDateDiff
()
>=
followTimeMin
))&&
(
followTimeMax
==
null
||
(
a
.
getDateDiff
()
<=
followTimeMax
)))
.
collect
(
Collectors
.
groupingBy
(
CrowdPackageUserVO:
:
getAppId
,
Collectors
.
collectingAndThen
(
toCollection
(()
->
new
TreeSet
<>(
Comparator
.
comparing
(
CrowdPackageUserVO:
:
getOpenId
))),
ArrayList:
:
new
)));
.
collect
(
Collectors
.
groupingBy
(
CrowdPackageUserVO:
:
getAppId
,
Collectors
.
collectingAndThen
(
toCollection
(()
->
new
TreeSet
<>(
Comparator
.
comparing
(
CrowdPackageUserVO:
:
getOpenId
))),
ArrayList:
:
new
)));
//根据客服id找不同公众号的链接,并按appId分组
//根据客服id找不同公众号的链接,并按appId分组
...
...
src/main/java/com/yaoyaozw/customer/service/wechat/service/WeChatServiceImpl.java
浏览文件 @
320e65ac
...
@@ -150,15 +150,17 @@ public class WeChatServiceImpl implements WeChatService{
...
@@ -150,15 +150,17 @@ public class WeChatServiceImpl implements WeChatService{
for
(
CrowdPackageUserVO
crowdPackageUserVO
:
subOpenidList
)
{
for
(
CrowdPackageUserVO
crowdPackageUserVO
:
subOpenidList
)
{
CustomerMessageTransferDTO
customerMessageTransferDTO
=
new
CustomerMessageTransferDTO
();
try
{
customerMessageTransferDTO
.
setAppid
(
appid
);
CustomerMessageTransferDTO
customerMessageTransferDTO
=
new
CustomerMessageTransferDTO
();
customerMessageTransferDTO
.
setCustomerGraphicsId
(
customerGraphics
.
getId
());
customerMessageTransferDTO
.
setAppid
(
appid
);
customerMessageTransferDTO
.
setOpenid
(
crowdPackageUserVO
.
getOpenId
());
customerMessageTransferDTO
.
setCustomerGraphicsId
(
customerGraphics
.
getId
());
customerMessageTransferDTO
.
setCustomerRequestEntity
(
customerRequest
);
customerMessageTransferDTO
.
setOpenid
(
crowdPackageUserVO
.
getOpenId
());
customerMessageTransferDTO
.
setCustomerRequestEntity
(
customerRequest
);
rabbitTemplate
.
convertAndSend
(
RabbitCommonNameConstant
.
CUSTOMER_SERVICE_EXCHANGE
,
RabbitCommonNameConstant
.
CUSTOMER_MESSAGE_ROUTE_KEY
,
JSONObject
.
toJSONString
(
customerMessageTransferDTO
));
rabbitTemplate
.
convertAndSend
(
RabbitCommonNameConstant
.
CUSTOMER_SERVICE_EXCHANGE
,
RabbitCommonNameConstant
.
CUSTOMER_MESSAGE_ROUTE_KEY
,
JSONObject
.
toJSONString
(
customerMessageTransferDTO
));
latch
.
countDown
();
}
finally
{
latch
.
countDown
();
}
}
}
});
});
}
}
...
...
src/main/java/com/yaoyaozw/customer/utils/YYZWDateUtil.java
浏览文件 @
320e65ac
...
@@ -23,67 +23,6 @@ public class YYZWDateUtil {
...
@@ -23,67 +23,6 @@ public class YYZWDateUtil {
private
static
final
Log
Logger
=
LogFactory
.
getLog
(
YYZWDateUtil
.
class
);
private
static
final
Log
Logger
=
LogFactory
.
getLog
(
YYZWDateUtil
.
class
);
/**
* 指定每天晚上12点过期
*
* @param currentTime
* @return
*/
public
static
Long
cacheTime
(
Long
currentTime
)
{
Long
oneDay
=
86400000L
;
// 60*1000L - 5*60*1000
Long
randomTime
=
Long
.
valueOf
((
60000
+
Math
.
random
()
*
(
300000
-
60000
+
1
))
+
""
);
return
currentTime
+
oneDay
+
randomTime
;
}
/**
* 比结束时间多5-10分钟时间
*
* @param date
* @return
*/
public
static
long
getTime
(
Date
date
)
{
long
time
=
date
.
getTime
();
long
l
=
System
.
currentTimeMillis
();
// 300000 -600000
Random
r
=
new
Random
();
int
v
=
r
.
nextInt
(
300000
)
+
300000
;
return
time
-
l
+
v
;
}
public
static
String
getDate
(
String
dateStr
,
int
day
)
{
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Calendar
c
=
Calendar
.
getInstance
();
Date
date
;
try
{
date
=
simpleDateFormat
.
parse
(
dateStr
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
return
null
;
}
c
.
setTime
(
date
);
int
day1
=
c
.
get
(
Calendar
.
DATE
);
c
.
set
(
Calendar
.
DATE
,
(
day1
+
day
)
-
1
);
return
simpleDateFormat
.
format
(
c
.
getTime
());
}
public
static
String
getForwardDate
(
String
dateStr
,
int
day
)
{
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Calendar
c
=
Calendar
.
getInstance
();
Date
date
;
try
{
date
=
simpleDateFormat
.
parse
(
dateStr
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
return
null
;
}
c
.
setTime
(
date
);
int
day1
=
c
.
get
(
Calendar
.
DATE
);
c
.
set
(
Calendar
.
DATE
,
(
day1
-
day
)
+
1
);
return
simpleDateFormat
.
format
(
c
.
getTime
());
}
public
static
final
String
DEFAULT_DATE_PATTERN
=
"yyyy-MM-dd HH:mm:ss"
;
public
static
final
String
DEFAULT_DATE_PATTERN
=
"yyyy-MM-dd HH:mm:ss"
;
public
static
final
String
UTC_DATE_PATTERN
=
"yyyy-MM-dd'T'HH:mm:ssXXX"
;
public
static
final
String
UTC_DATE_PATTERN
=
"yyyy-MM-dd'T'HH:mm:ssXXX"
;
...
@@ -258,135 +197,8 @@ public class YYZWDateUtil {
...
@@ -258,135 +197,8 @@ public class YYZWDateUtil {
return
calendar
.
getTime
();
return
calendar
.
getTime
();
}
}
/**
* 返回今天0点的UTC时间格式
* 2021-05-24T00:00:00UTC
* @return
*/
public
static
String
getUTCDayStartTime
(){
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
set
(
Calendar
.
AM_PM
,
0
);
calendar
.
set
(
Calendar
.
HOUR
,
8
);
calendar
.
set
(
Calendar
.
MINUTE
,
0
);
calendar
.
set
(
Calendar
.
SECOND
,
0
);
DateFormat
df
=
new
SimpleDateFormat
(
UTC_DATE_PATTERN
);
df
.
setTimeZone
(
TimeZone
.
getTimeZone
(
ZoneOffset
.
UTC
));
String
date
=
df
.
format
(
calendar
.
getTime
());
return
date
;
}
/**
* 返回今天23点59分59秒的UTC时间格式
* 2021-05-24T23:59:59UTC
* @return
*/
public
static
String
getUTCDayEndTime
(){
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
set
(
Calendar
.
AM_PM
,
1
);
calendar
.
set
(
Calendar
.
HOUR
,
19
);
calendar
.
set
(
Calendar
.
MINUTE
,
59
);
calendar
.
set
(
Calendar
.
SECOND
,
59
);
DateFormat
df
=
new
SimpleDateFormat
(
UTC_DATE_PATTERN
);
df
.
setTimeZone
(
TimeZone
.
getTimeZone
(
ZoneOffset
.
UTC
));
String
date
=
df
.
format
(
calendar
.
getTime
());
return
date
;
}
/**
* 返回今天0点的UTC时间格式
* 2021-05-24T00:00:00UTC
* @return
*/
public
static
String
getUTCLastDayStartTime
(){
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
set
(
Calendar
.
AM_PM
,
0
);
calendar
.
set
(
Calendar
.
HOUR
,
8
);
calendar
.
set
(
Calendar
.
MINUTE
,
0
);
calendar
.
set
(
Calendar
.
SECOND
,
0
);
calendar
.
add
(
Calendar
.
DATE
,
-
1
);
DateFormat
df
=
new
SimpleDateFormat
(
UTC_DATE_PATTERN
);
df
.
setTimeZone
(
TimeZone
.
getTimeZone
(
ZoneOffset
.
UTC
));
String
date
=
df
.
format
(
calendar
.
getTime
());
return
date
;
}
/**
* 返回今天23点59分59秒的UTC时间格式
* 2021-05-24T23:59:59UTC
* @return
*/
public
static
String
getUTCLastDayEndTime
(){
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
set
(
Calendar
.
AM_PM
,
1
);
calendar
.
set
(
Calendar
.
HOUR
,
19
);
calendar
.
set
(
Calendar
.
MINUTE
,
59
);
calendar
.
set
(
Calendar
.
SECOND
,
59
);
calendar
.
add
(
Calendar
.
DATE
,
-
1
);
DateFormat
df
=
new
SimpleDateFormat
(
UTC_DATE_PATTERN
);
df
.
setTimeZone
(
TimeZone
.
getTimeZone
(
ZoneOffset
.
UTC
));
String
date
=
df
.
format
(
calendar
.
getTime
());
return
date
;
}
/**
* 返回昨天0点的时间戳
* @return
*/
public
static
String
getLastDayStartTimeStamp
(){
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
set
(
Calendar
.
AM_PM
,
0
);
calendar
.
set
(
Calendar
.
HOUR
,
0
);
calendar
.
set
(
Calendar
.
MINUTE
,
0
);
calendar
.
set
(
Calendar
.
SECOND
,
0
);
calendar
.
add
(
Calendar
.
DATE
,
-
1
);
String
stamp
=
calendar
.
getTimeInMillis
()/
1000
+
""
;
return
stamp
;
}
/**
* 返回昨天23:59:59点的时间戳
* @return
*/
public
static
String
getLastDayEndTimeStamp
(){
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
set
(
Calendar
.
AM_PM
,
1
);
calendar
.
set
(
Calendar
.
HOUR
,
11
);
calendar
.
set
(
Calendar
.
MINUTE
,
59
);
calendar
.
set
(
Calendar
.
SECOND
,
59
);
calendar
.
add
(
Calendar
.
DATE
,
-
1
);
String
stamp
=
calendar
.
getTimeInMillis
()/
1000
+
""
;
return
stamp
;
}
/**
* 返回昨天0点,格式 yyyyMMddHHmm
*/
public
static
String
getLastDayStart_WY
(){
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
set
(
Calendar
.
AM_PM
,
0
);
calendar
.
set
(
Calendar
.
HOUR
,
0
);
calendar
.
set
(
Calendar
.
MINUTE
,
0
);
calendar
.
set
(
Calendar
.
SECOND
,
0
);
calendar
.
add
(
Calendar
.
DATE
,
-
1
);
DateFormat
df
=
new
SimpleDateFormat
(
DATE_PATTERN_2
);
String
date
=
df
.
format
(
calendar
.
getTime
());
return
date
;
}
/**
/**
* 返回昨天23:59:59,格式 yyyyMMddHHmm
*/
public
static
String
getLastDayEnd_WY
(){
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
set
(
Calendar
.
AM_PM
,
1
);
calendar
.
set
(
Calendar
.
HOUR
,
11
);
calendar
.
set
(
Calendar
.
MINUTE
,
59
);
calendar
.
set
(
Calendar
.
SECOND
,
59
);
calendar
.
add
(
Calendar
.
DATE
,
-
1
);
DateFormat
df
=
new
SimpleDateFormat
(
DATE_PATTERN_2
);
String
date
=
df
.
format
(
calendar
.
getTime
());
return
date
;
}
/**
* 获取当前时间到下一分钟的时间差
* 获取当前时间到下一分钟的时间差
* @return different - 时间差
* @return different - 时间差
*/
*/
...
@@ -419,15 +231,6 @@ public class YYZWDateUtil {
...
@@ -419,15 +231,6 @@ public class YYZWDateUtil {
calendar
.
add
(
Calendar
.
DATE
,
i
);
calendar
.
add
(
Calendar
.
DATE
,
i
);
return
calendar
.
getTime
();
return
calendar
.
getTime
();
}
}
/**
* 日期减N天
*/
public
static
Date
subtractNumberDays
(
Date
date
,
int
i
){
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
calendar
.
add
(
Calendar
.
DATE
,
-
i
);
return
calendar
.
getTime
();
}
public
static
boolean
isSameDate
(
Date
date1
,
Date
date2
){
public
static
boolean
isSameDate
(
Date
date1
,
Date
date2
){
boolean
result
=
Boolean
.
FALSE
;
boolean
result
=
Boolean
.
FALSE
;
...
@@ -443,27 +246,5 @@ public class YYZWDateUtil {
...
@@ -443,27 +246,5 @@ public class YYZWDateUtil {
return
result
;
return
result
;
}
}
public
static
Date
getLastHourTime
(
Date
date
){
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
calendar
.
add
(
Calendar
.
HOUR
,-
1
);
return
calendar
.
getTime
();
}
/**
* 获取当月
*/
public
static
Date
getMonth
(
Date
date
){
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
date
);
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
1
);
calendar
.
set
(
Calendar
.
AM_PM
,
0
);
calendar
.
set
(
Calendar
.
HOUR
,
0
);
calendar
.
set
(
Calendar
.
MINUTE
,
0
);
calendar
.
set
(
Calendar
.
SECOND
,
0
);
return
calendar
.
getTime
();
}
}
}
src/main/java/com/yaoyaozw/customer/vo/customer/CrowdPackageUserVO.java
浏览文件 @
320e65ac
...
@@ -30,4 +30,6 @@ public class CrowdPackageUserVO implements Serializable {
...
@@ -30,4 +30,6 @@ public class CrowdPackageUserVO implements Serializable {
private
String
storeType
;
private
String
storeType
;
private
Integer
dateDiff
;
}
}
src/main/resources/mapper/RegisterUserEntityMapper.xml
浏览文件 @
320e65ac
...
@@ -93,7 +93,8 @@
...
@@ -93,7 +93,8 @@
open_id,
open_id,
in_Package,
in_Package,
app_id,
app_id,
last_active
last_active,
DATEDIFF(now(),gmt_create) as dateDiff
from register_user_entity
from register_user_entity
where find_in_set(#{packageId}, in_package) and TIMESTAMPDIFF(HOUR,last_active,now() )
<
48
where find_in_set(#{packageId}, in_package) and TIMESTAMPDIFF(HOUR,last_active,now() )
<
48
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论