|
|
@@ -1,6 +1,7 @@
|
|
|
package com.mokamrp.privates.task.pangu;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.generator.config.IFileCreate;
|
|
|
import com.mokamrp.privates.mapper.data.pojo.PanCSLTRecord;
|
|
|
import com.mokamrp.privates.mapper.data.pojo.PanCSTQRecord;
|
|
|
import com.mokamrp.privates.mapper.pangu.pojo.PromoteQrcodePoolRecord;
|
|
|
@@ -8,10 +9,15 @@ import com.mokamrp.privates.service.data.PanCSLTRecordService;
|
|
|
import com.mokamrp.privates.service.data.PanCSTQRecordService;
|
|
|
import com.mokamrp.privates.service.pangu.PromoteQrcodePoolRecordService;
|
|
|
import net.javacrumbs.shedlock.core.SchedulerLock;
|
|
|
+import org.apache.tomcat.jni.Local;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
+import java.time.ZoneOffset;
|
|
|
import java.util.List;
|
|
|
|
|
|
@Component
|
|
|
@@ -30,11 +36,20 @@ public class UpdatePanguDataTask {
|
|
|
@SchedulerLock(name = "pangu:UpdatePanguDataTask", lockAtLeastForString = "PT5S", lockAtMostForString = "PT15M")
|
|
|
public void execute() {
|
|
|
System.out.println("[cronjob]:同步盘古个微码每日数据");
|
|
|
+ Long startDate = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).toEpochSecond(ZoneOffset.of("+8"));
|
|
|
+ Long endDate = LocalDateTime.of(LocalDate.now(),LocalTime.MAX).toEpochSecond(ZoneOffset.of("+8"));
|
|
|
List<PromoteQrcodePoolRecord> promoteQrcodePoolRecordList = promoteQrcodePoolRecordService.list();
|
|
|
- List<PanCSLTRecord> panCSLTRecordList = panCSLTRecordService.getCustserviceLongTouchPv();
|
|
|
- List<PanCSTQRecord> panCSTQRecordList = panCSTQRecordService.getCustserviceTakeQrcodePv();
|
|
|
+ List<PanCSLTRecord> panCSLTRecordPvList = panCSLTRecordService.getCustserviceLongTouchPv();
|
|
|
+ List<PanCSLTRecord> panCSLTRecordUvList = panCSLTRecordService.getCustserviceLongTouchUv();
|
|
|
+ List<PanCSLTRecord> panCSLTRecordPvListByDate = panCSLTRecordService.getCustserviceLongTouchPvByDate(startDate,endDate);
|
|
|
+ List<PanCSLTRecord> panCSLTRecordUvListByDate = panCSLTRecordService.getCustserviceLongTouchUvByDate(startDate,endDate);
|
|
|
|
|
|
- for (PanCSLTRecord record : panCSLTRecordList) {
|
|
|
+ List<PanCSTQRecord> panCSTQRecordPvList = panCSTQRecordService.getCustserviceTakeQrcodePv();
|
|
|
+ List<PanCSTQRecord> panCSTQRecordUvList = panCSTQRecordService.getCustserviceTakeQrcodeUv();
|
|
|
+ List<PanCSTQRecord> panCSTQRecordPvListByDate = panCSTQRecordService.getCustserviceTakeQrcodePvByDate(startDate,endDate);
|
|
|
+ List<PanCSTQRecord> panCSTQRecordUvListByDate = panCSTQRecordService.getCustserviceTakeQrcodeUvByDate(startDate,endDate);
|
|
|
+ //.累积长按数据
|
|
|
+ for (PanCSLTRecord record : panCSLTRecordPvList) {
|
|
|
Integer custserviceId = record.getCustserviceId();
|
|
|
Integer promoteId = record.getPromoteId();
|
|
|
if (custserviceId == null || promoteId == null){
|
|
|
@@ -45,18 +60,33 @@ public class UpdatePanguDataTask {
|
|
|
save.setPromoteId(record.getPromoteId());
|
|
|
save.setCustserviceId(record.getCustserviceId());
|
|
|
//.记录表没有数据则新增空数据
|
|
|
- if (hasRecord == false) {
|
|
|
+ if (!hasRecord) {
|
|
|
promoteQrcodePoolRecordService.save(save);
|
|
|
}
|
|
|
- //.更新扫码次数
|
|
|
+ //.长按次数
|
|
|
save.setLongTouchPv(record.getLongTouchCnt());
|
|
|
+ //.长按人数
|
|
|
+ PanCSLTRecord uvTotal = this.getCSLTData(panCSLTRecordUvList,promoteId,custserviceId);
|
|
|
+ if (uvTotal != null){
|
|
|
+ save.setLongTouchUv(uvTotal.getLongTouchCnt());
|
|
|
+ }
|
|
|
+ //.今日长按次数
|
|
|
+ PanCSLTRecord todayPv = this.getCSLTData(panCSLTRecordPvListByDate,promoteId,custserviceId);
|
|
|
+ if (todayPv != null){
|
|
|
+ save.setTodayLongTouchPv(todayPv.getLongTouchCnt());
|
|
|
+ }
|
|
|
+ //.今日长按人数
|
|
|
+ PanCSLTRecord todayUv = this.getCSLTData(panCSLTRecordUvListByDate,promoteId,custserviceId);
|
|
|
+ if (todayUv != null){
|
|
|
+ save.setTodayLongTouchUv(todayUv.getLongTouchCnt());
|
|
|
+ }
|
|
|
promoteQrcodePoolRecordService.update(save, new QueryWrapper<PromoteQrcodePoolRecord>()
|
|
|
.eq("promote_id", record.getPromoteId())
|
|
|
.eq("custservice_id", record.getCustserviceId())
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- for (PanCSTQRecord record : panCSTQRecordList) {
|
|
|
+ for (PanCSTQRecord record : panCSTQRecordPvList) {
|
|
|
Integer custserviceId = record.getCustserviceId();
|
|
|
Integer promoteId = record.getPromoteId();
|
|
|
if (custserviceId == null || promoteId == null){
|
|
|
@@ -67,17 +97,51 @@ public class UpdatePanguDataTask {
|
|
|
save.setPromoteId(record.getPromoteId());
|
|
|
save.setCustserviceId(record.getCustserviceId());
|
|
|
//.记录表没有数据则新增空数据
|
|
|
- if (hasRecord == false) {
|
|
|
+ if (!hasRecord) {
|
|
|
promoteQrcodePoolRecordService.save(save);
|
|
|
}
|
|
|
- //.更新扫码次数
|
|
|
+ //.扫码次数
|
|
|
save.setTakeQrcodePv(record.getTakeQrcodeCnt());
|
|
|
+ //.扫码人数
|
|
|
+ PanCSTQRecord uvTotal = this.getCSTQData(panCSTQRecordUvList,promoteId,custserviceId);
|
|
|
+ if (uvTotal != null){
|
|
|
+ save.setTakeQrcodeUv(uvTotal.getTakeQrcodeCnt());
|
|
|
+ }
|
|
|
+ //.今日扫码次数
|
|
|
+ PanCSTQRecord todayPv = this.getCSTQData(panCSTQRecordPvListByDate,promoteId,custserviceId);
|
|
|
+ if (todayPv != null){
|
|
|
+ save.setTodayTakeQrcodePv(todayPv.getTakeQrcodeCnt());
|
|
|
+ }
|
|
|
+ //.今日扫码人数
|
|
|
+ PanCSTQRecord todayUv = this.getCSTQData(panCSTQRecordUvListByDate,promoteId,custserviceId);
|
|
|
+ if (todayUv != null){
|
|
|
+ save.setTodayTakeQrcodeUv(todayUv.getTakeQrcodeCnt());
|
|
|
+ }
|
|
|
promoteQrcodePoolRecordService.update(save, new QueryWrapper<PromoteQrcodePoolRecord>()
|
|
|
.eq("promote_id", record.getPromoteId())
|
|
|
.eq("custservice_id", record.getCustserviceId())
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public PanCSTQRecord getCSTQData(List<PanCSTQRecord> row,Integer promoteId,Integer custserviceId){
|
|
|
+ for(PanCSTQRecord panCSTQRecord : row){
|
|
|
+ if (panCSTQRecord.getPromoteId().equals(promoteId) && panCSTQRecord.getCustserviceId().equals(custserviceId)){
|
|
|
+ return panCSTQRecord;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ public PanCSLTRecord getCSLTData(List<PanCSLTRecord> row,Integer promoteId,Integer custserviceId){
|
|
|
+ for(PanCSLTRecord panCSTLRecord : row){
|
|
|
+ if (panCSTLRecord.getPromoteId().equals(promoteId) && panCSTLRecord.getCustserviceId().equals(custserviceId)){
|
|
|
+ return panCSTLRecord;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
public Boolean checkHasRecord(List<PromoteQrcodePoolRecord> promoteQrcodePoolRecordList,Integer promoteId,Integer custserviceId){
|
|
|
Boolean hasRecord = false;
|
|
|
for (PromoteQrcodePoolRecord promoteQrcodePoolRecord : promoteQrcodePoolRecordList) {
|