提交 320e65ac 作者: wgh

定时客服加入关注时间条件判断

上级 ac99a981
...@@ -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分组
......
...@@ -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();
}
} }
}); });
} }
......
...@@ -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();
}
} }
...@@ -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;
} }
...@@ -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() ) &lt; 48 where find_in_set(#{packageId}, in_package) and TIMESTAMPDIFF(HOUR,last_active,now() ) &lt; 48
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论