|
@@ -1,7 +1,19 @@
|
|
|
package com.caimei365.tools.task;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.caimei365.tools.feign.CommodityFeign;
|
|
|
import com.caimei365.tools.mapper.BaseMapper;
|
|
|
+import com.caimei365.tools.model.dto.message.InsideMessage;
|
|
|
+import com.caimei365.tools.model.dto.message.MessageModel;
|
|
|
+import com.caimei365.tools.model.dto.message.MqInfo;
|
|
|
+import com.caimei365.tools.model.dto.message.WechatTemplateMessage;
|
|
|
+import com.caimei365.tools.model.dto.message.enums.MessageType;
|
|
|
+import com.caimei365.tools.model.po.ClubPo;
|
|
|
+import com.caimei365.tools.model.po.CmUserPo;
|
|
|
+import com.caimei365.tools.service.MessageSender;
|
|
|
+import com.caimei365.tools.utils.RequestUtil;
|
|
|
+import com.caimei365.tools.utils.SmsUtil;
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -14,9 +26,7 @@ import redis.clients.jedis.commands.JedisCommands;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
-import java.util.Calendar;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* Description
|
|
@@ -32,9 +42,12 @@ public class StatisticsTask {
|
|
|
@Resource
|
|
|
private BaseMapper baseMapper;
|
|
|
@Resource
|
|
|
- private RedisTemplate<String,String> redisTemplate;
|
|
|
+ private RedisTemplate<String, String> redisTemplate;
|
|
|
@Resource
|
|
|
private CommodityFeign commodityFeign;
|
|
|
+
|
|
|
+ private final MessageSender messageSender;
|
|
|
+
|
|
|
/**
|
|
|
* 每天凌晨3点执行一次统计前一天商品访问量
|
|
|
* <p>
|
|
@@ -74,7 +87,82 @@ public class StatisticsTask {
|
|
|
}
|
|
|
log.info(">>>>>>>>>>>【定时任务】统计前一天商品详情访问量,统计成功:" + result);
|
|
|
} catch (Exception e) {
|
|
|
- log.error(">>>>>>>>>>>【定时任务】统计前一天商品详情访问量失败:",e);
|
|
|
+ log.error(">>>>>>>>>>>【定时任务】统计前一天商品详情访问量失败:", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 每天早上9点半执行一次统计前一天针对机构访问商城形式的活跃行为
|
|
|
+ * <p>
|
|
|
+ * cron表达式语法:秒 分 小时 日 月 周
|
|
|
+ * 年可省略
|
|
|
+ * * 表示所有值。
|
|
|
+ * ? 表示不指定值。
|
|
|
+ */
|
|
|
+ @Scheduled(cron = "0 30 9 * * ?")
|
|
|
+ public void countSpClubViews() {
|
|
|
+ try {
|
|
|
+ // 获取昨天日期字符串
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTime(new Date());
|
|
|
+ calendar.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
+ String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
|
|
|
+ log.info(">>>>>>>>>>>【定时任务】统计前一天针对机构访问商城形式的活跃行为,统计日期(前一天):" + dateStr);
|
|
|
+ List<Map<String, Object>> behaviorRecordYesterday = baseMapper.getBehaviorRecordYesterday(dateStr);
|
|
|
+ for (Map<String, Object> map : behaviorRecordYesterday) {
|
|
|
+ Integer spId = (Integer) map.get("spId");
|
|
|
+ String name = (String) map.get("name");
|
|
|
+ Double count = (Double) map.get("count");
|
|
|
+ String pageLabel = baseMapper.getBehaviorRecordYesterdayPageLabel(spId, null, dateStr);
|
|
|
+ String openId = baseMapper.getWechatOpenId((String) map.get("unionId"));
|
|
|
+ //站内信
|
|
|
+ MessageModel<InsideMessage> insideMessageMessageModel = new MessageModel<>();
|
|
|
+ insideMessageMessageModel.code(MessageType.WEB_INSIDE_MESSAGE)
|
|
|
+ .mqInfo(new MqInfo().topic("MessageLine").delay(3).async(0))
|
|
|
+ .info(new InsideMessage()
|
|
|
+ .userType(3)
|
|
|
+ .messageType(3)
|
|
|
+ .shopTieredType(7)
|
|
|
+ .name(name)
|
|
|
+ .content(pageLabel)
|
|
|
+ .couponFee(count)
|
|
|
+ .thisId(spId)
|
|
|
+ );
|
|
|
+ messageSender.messageSend(insideMessageMessageModel);
|
|
|
+ //微信模板消息
|
|
|
+ ArrayList<String> keyWords = new ArrayList<>();
|
|
|
+ keyWords.add(name+"...等"+Integer.valueOf(String.valueOf(count))+"家机构客户");
|
|
|
+ keyWords.add(pageLabel);
|
|
|
+ keyWords.add(dateStr);
|
|
|
+ MessageModel<WechatTemplateMessage> wechatTemplateMessageMessageModel = new MessageModel<WechatTemplateMessage>()
|
|
|
+ .code(MessageType.WECHAT_TEMPLATE_MESSAGE)
|
|
|
+ .mqInfo(new MqInfo().topic("MessageLine").delay(3).async(0))
|
|
|
+ .info(new WechatTemplateMessage()
|
|
|
+ .first("")
|
|
|
+ .openId(openId)
|
|
|
+ .appid("wxf3cd4ae0cdd11c36")
|
|
|
+ .templateId("Zd7ewJw9-bN-gIgra9flKW96W3YehikRPPkDXPfhmQ0")
|
|
|
+ .keyWords(keyWords)
|
|
|
+ .remark("为了更好给您服务,请及时联系采美客服!")
|
|
|
+ .pagePath("pages/seller/club/list?type=wechat"));
|
|
|
+ messageSender.messageSend(wechatTemplateMessageMessageModel);
|
|
|
+ }
|
|
|
+ //访问商城形式的不活跃行为 短信推送
|
|
|
+ calendar.add(Calendar.DATE, -180);
|
|
|
+ String dateStr2 = new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
|
|
|
+ log.info(">>>>>>>>>>>【定时任务】统计前一天针对机构访问商城形式的不活跃行为,统计日期(180天前):" + dateStr2);
|
|
|
+ List<ClubPo> clubList = baseMapper.getClubList(new CmUserPo().setLoginTime(dateStr2));
|
|
|
+ for (ClubPo clubPo : clubList) {
|
|
|
+ if (null != clubPo.getSpID()) {
|
|
|
+ String mobile = baseMapper.findMobile(baseMapper.findSpUserId(clubPo.getSpID()));
|
|
|
+ if (StringUtils.isNotBlank(mobile)) {
|
|
|
+ SmsUtil.sendSms(1, mobile, "【采美365】该机构客户已有6个月未在商城活跃,请及时跟进。机构名称【" + clubPo.getName() + "】,联系人【" + clubPo.getLinkMan() + "】,手机号【" + clubPo.getContractMobile() + "】。微信小程序微信小程序https://....comm,退订回T。");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ log.info(">>>>>>>>>>>【定时任务】统计前一天针对机构访问商城形式的活跃行为,统计成功");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(">>>>>>>>>>>【定时任务】统计前一天针对机构访问商城形式的活跃行为失败:", e);
|
|
|
}
|
|
|
}
|
|
|
}
|