|
@@ -1,80 +1,80 @@
|
|
|
-//package com.cyksj.task;
|
|
|
|
|
-//
|
|
|
|
|
-//import cn.hutool.core.util.StrUtil;
|
|
|
|
|
-//import cn.hutool.json.JSONObject;
|
|
|
|
|
-//import cn.hutool.json.JSONUtil;
|
|
|
|
|
-//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
-//import com.cyksj.common.util.StringUtil;
|
|
|
|
|
-//import com.cyksj.mapper.corp.CorpUserAuthMapper;
|
|
|
|
|
-//import com.cyksj.mapper.corp.CorpUserMapper;
|
|
|
|
|
-//import com.cyksj.model.entity.CorpUser;
|
|
|
|
|
-//import com.cyksj.model.entity.CorpUserAuth;
|
|
|
|
|
-//import com.cyksj.model.entity.OrderDonPost;
|
|
|
|
|
-//import com.cyksj.redis.RedisService;
|
|
|
|
|
-//import com.cyksj.service.corp.WxCorpOps;
|
|
|
|
|
-//import com.cyksj.service.corp.msg.CorpEventActionService;
|
|
|
|
|
-//import com.cyksj.service.order.OrderDonPostService;
|
|
|
|
|
-//import com.ejlchina.searcher.BeanSearcher;
|
|
|
|
|
-//import lombok.RequiredArgsConstructor;
|
|
|
|
|
-//import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
-//import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
|
-//import org.springframework.stereotype.Component;
|
|
|
|
|
-//
|
|
|
|
|
-//import java.util.Optional;
|
|
|
|
|
-//import java.util.Set;
|
|
|
|
|
-//
|
|
|
|
|
-///**
|
|
|
|
|
-// * @author chan
|
|
|
|
|
-// * @date 2024-04-29 12:14
|
|
|
|
|
-// */
|
|
|
|
|
-//@Component
|
|
|
|
|
-//@Slf4j
|
|
|
|
|
-//@RequiredArgsConstructor
|
|
|
|
|
-//public class CorpChatScheduler {
|
|
|
|
|
-//
|
|
|
|
|
-// private final CorpUserMapper corpUserMapper;
|
|
|
|
|
-//
|
|
|
|
|
-// private final CorpUserAuthMapper corpUserAuthMapper;
|
|
|
|
|
-//
|
|
|
|
|
-// private final RedisService redisService;
|
|
|
|
|
-//
|
|
|
|
|
-// private final OrderDonPostService orderDonPostService;
|
|
|
|
|
-//
|
|
|
|
|
-// /**
|
|
|
|
|
-// * 客服业绩数据统计
|
|
|
|
|
-// */
|
|
|
|
|
-// @Scheduled(cron = "5 0/2 * * * ? *")
|
|
|
|
|
-// public void chatPost() {
|
|
|
|
|
-// Set<Object> chatRecord = redisService.sGet(RedisService.key.CORP_CUSTOMER_ACQUISTION_START_CHAT_SET.getEnvName());
|
|
|
|
|
-// log.info("发起对话回传. size: {}", chatRecord.size());
|
|
|
|
|
-// chatRecord.forEach((key) -> {
|
|
|
|
|
-// CorpUserAuth corpUserAuth = corpUserAuthMapper.selectOne(Wrappers.lambdaQuery(CorpUserAuth.class)
|
|
|
|
|
-// .eq(CorpUserAuth::getExternalUserid, key).last("limit 1"));
|
|
|
|
|
-// String unionId = null;
|
|
|
|
|
-// if (corpUserAuth != null) {
|
|
|
|
|
-// CorpUser corpUser = corpUserMapper.selectById(corpUserAuth.getCorpUserId());
|
|
|
|
|
-// if (corpUser != null) {
|
|
|
|
|
-// unionId = corpUser.getUnionid();
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-// if (StrUtil.isNotBlank(unionId)) {
|
|
|
|
|
-// String json = StringUtil.getString(redisService.hget(RedisService.key.CORP_CUSTOMER_ACQUISTION_START_CHAT.getEnvName(), StringUtil.getString(key)));
|
|
|
|
|
-// if (StringUtil.isNotBlank(json)) {
|
|
|
|
|
-// JSONObject jsonObject = JSONUtil.parseObj(json);
|
|
|
|
|
-// String callback = jsonObject.getStr("callback");
|
|
|
|
|
-// try {
|
|
|
|
|
-// orderDonPostService.post(OrderDonPost.Type.OE.getType(), callback, Optional.ofNullable(jsonObject.getStr("event")).orElse("customer_effective"));
|
|
|
|
|
-// redisService.setRemove(RedisService.key.CORP_CUSTOMER_ACQUISTION_START_CHAT_SET.getEnvName(), key);
|
|
|
|
|
-// } catch (Exception e) {
|
|
|
|
|
-// log.error("发起对话回传失败. {}", e.getMessage());
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-// }else {
|
|
|
|
|
-// Long count = redisService.incr(RedisService.key.CORP_CUSTOMER_ACQUISTION_START_CHAT_COUNT.getNameFormat(key), 1L);
|
|
|
|
|
-// if(count > 3){
|
|
|
|
|
-// redisService.setRemove(RedisService.key.CORP_CUSTOMER_ACQUISTION_START_CHAT_SET.getEnvName(), key);
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-// });
|
|
|
|
|
-// }
|
|
|
|
|
-//}
|
|
|
|
|
|
|
+package com.cyksj.task;
|
|
|
|
|
+
|
|
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
+import com.cyksj.common.util.StringUtil;
|
|
|
|
|
+import com.cyksj.mapper.corp.CorpUserAuthMapper;
|
|
|
|
|
+import com.cyksj.mapper.corp.CorpUserMapper;
|
|
|
|
|
+import com.cyksj.model.entity.CorpUser;
|
|
|
|
|
+import com.cyksj.model.entity.CorpUserAuth;
|
|
|
|
|
+import com.cyksj.model.entity.OrderDonPost;
|
|
|
|
|
+import com.cyksj.redis.RedisService;
|
|
|
|
|
+import com.cyksj.service.corp.WxCorpOps;
|
|
|
|
|
+import com.cyksj.service.corp.msg.CorpEventActionService;
|
|
|
|
|
+import com.cyksj.service.order.OrderDonPostService;
|
|
|
|
|
+import com.ejlchina.searcher.BeanSearcher;
|
|
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.Optional;
|
|
|
|
|
+import java.util.Set;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * @author chan
|
|
|
|
|
+ * @date 2024-04-29 12:14
|
|
|
|
|
+ */
|
|
|
|
|
+@Component
|
|
|
|
|
+@Slf4j
|
|
|
|
|
+@RequiredArgsConstructor
|
|
|
|
|
+public class CorpChatScheduler {
|
|
|
|
|
+
|
|
|
|
|
+ private final CorpUserMapper corpUserMapper;
|
|
|
|
|
+
|
|
|
|
|
+ private final CorpUserAuthMapper corpUserAuthMapper;
|
|
|
|
|
+
|
|
|
|
|
+ private final RedisService redisService;
|
|
|
|
|
+
|
|
|
|
|
+ private final OrderDonPostService orderDonPostService;
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 客服业绩数据统计
|
|
|
|
|
+ */
|
|
|
|
|
+ @Scheduled(cron = "5 0/2 * * * ?")
|
|
|
|
|
+ public void chatPost() {
|
|
|
|
|
+ Set<Object> chatRecord = redisService.sGet(RedisService.key.CORP_CUSTOMER_ACQUISTION_START_CHAT_SET.getEnvName());
|
|
|
|
|
+ log.info("发起对话回传. size: {}", chatRecord.size());
|
|
|
|
|
+ chatRecord.forEach((key) -> {
|
|
|
|
|
+ CorpUserAuth corpUserAuth = corpUserAuthMapper.selectOne(Wrappers.lambdaQuery(CorpUserAuth.class)
|
|
|
|
|
+ .eq(CorpUserAuth::getExternalUserid, key).last("limit 1"));
|
|
|
|
|
+ String unionId = null;
|
|
|
|
|
+ if (corpUserAuth != null) {
|
|
|
|
|
+ CorpUser corpUser = corpUserMapper.selectById(corpUserAuth.getCorpUserId());
|
|
|
|
|
+ if (corpUser != null) {
|
|
|
|
|
+ unionId = corpUser.getUnionid();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (StrUtil.isNotBlank(unionId)) {
|
|
|
|
|
+ String json = StringUtil.getString(redisService.hget(RedisService.key.CORP_CUSTOMER_ACQUISTION_START_CHAT.getEnvName(), StringUtil.getString(key)));
|
|
|
|
|
+ if (StringUtil.isNotBlank(json)) {
|
|
|
|
|
+ JSONObject jsonObject = JSONUtil.parseObj(json);
|
|
|
|
|
+ String callback = jsonObject.getStr("callback");
|
|
|
|
|
+ try {
|
|
|
|
|
+ orderDonPostService.post(OrderDonPost.Type.OE.getType(), callback, Optional.ofNullable(jsonObject.getStr("event")).orElse("customer_effective"));
|
|
|
|
|
+ redisService.setRemove(RedisService.key.CORP_CUSTOMER_ACQUISTION_START_CHAT_SET.getEnvName(), key);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("发起对话回传失败. {}", e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }else {
|
|
|
|
|
+ Long count = redisService.incr(RedisService.key.CORP_CUSTOMER_ACQUISTION_START_CHAT_COUNT.getNameFormat(key), 1L);
|
|
|
|
|
+ if(count > 3){
|
|
|
|
|
+ redisService.setRemove(RedisService.key.CORP_CUSTOMER_ACQUISTION_START_CHAT_SET.getEnvName(), key);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+}
|