|
|
@@ -0,0 +1,104 @@
|
|
|
+package com.mokamrp.privates.task.pangu;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.mokamrp.privates.mapper.pangu.pojo.FosterwxFlowList;
|
|
|
+import com.mokamrp.privates.mapper.pangu.pojo.FosterwxMobilePool;
|
|
|
+import com.mokamrp.privates.service.pangu.FosterwxFlowListService;
|
|
|
+import com.mokamrp.privates.service.pangu.FosterwxMobilePoolService;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import net.javacrumbs.shedlock.core.SchedulerLock;
|
|
|
+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;
|
|
|
+
|
|
|
+/**统计今日进粉数 及 历史进粉数
|
|
|
+ * @author luqiucheng
|
|
|
+ */
|
|
|
+@Component
|
|
|
+@Slf4j
|
|
|
+public class SyncMobilePoolFans {
|
|
|
+ @Autowired
|
|
|
+ private FosterwxMobilePoolService fosterwxMobilePoolService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private FosterwxFlowListService fosterwxFlowListService;
|
|
|
+
|
|
|
+
|
|
|
+ @Scheduled(cron = "0 0 0 * * ?")
|
|
|
+ @SchedulerLock(name = "pangu:syncTotalFans", lockAtLeastForString = "PT5S", lockAtMostForString = "PT15M")
|
|
|
+ public void syncTotalFans() {
|
|
|
+ fosterwxMobilePoolService.list().forEach(fosterwxMobilePool -> {
|
|
|
+ Integer totalFans = fosterwxFlowListService.getTotalFans(fosterwxMobilePool.getPoolIndex());
|
|
|
+ log.info("{}:{}", fosterwxMobilePool.getPoolIndex(), totalFans);
|
|
|
+ if (null != totalFans) {
|
|
|
+ fosterwxMobilePoolService.update(new FosterwxMobilePool() {{
|
|
|
+ setTotalFans(totalFans);
|
|
|
+ }}, new LambdaQueryWrapper<FosterwxMobilePool>().eq(FosterwxMobilePool::getPoolIndex, fosterwxMobilePool.getPoolIndex()));
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // // 获取游戏导粉类型的活码
|
|
|
+ // promoteCodeService.list(new LambdaQueryWrapper<PromoteCode>().eq(PromoteCode::getPromoteType, 2)).forEach(promoteCode -> {
|
|
|
+ // // 根据活码id获取各位id 并取得redis缓存
|
|
|
+ // promoteQrcodePoolService.list(new LambdaQueryWrapper<PromoteQrcodePool>().eq(PromoteQrcodePool::getPromoteId, promoteCode.getId())).forEach(promoteQrcodePool -> {
|
|
|
+ // // 获取redis缓存
|
|
|
+ // Double score = stringRedisTemplate.opsForZSet().score(RedisKey.PanCustServiceIdDayView + promoteCode.getId(), Integer.toString(promoteQrcodePool.getCustserviceId()));
|
|
|
+ // log.info("{}:{}:{}", promoteCode.getId(), promoteQrcodePool.getCustserviceId(), score == null ? null : score.intValue());
|
|
|
+ // // 活码使用了
|
|
|
+ // if (null != score) {
|
|
|
+ // // 判断长按识别数是否大于阈值
|
|
|
+ // if (score.compareTo((double) 0) > 0) {
|
|
|
+ // if (score.compareTo(Double.valueOf(promoteQrcodePool.getDayUvMax())) >= 0) {
|
|
|
+ // // 没有超量
|
|
|
+ // fosterwxMobilePoolService.update(new FosterwxMobilePool() {{
|
|
|
+ // setStatus(2);
|
|
|
+ // setMaxFans(String.valueOf(promoteQrcodePool.getDayUvMax()));
|
|
|
+ // setUpdateAt(LocalDateTime.now());
|
|
|
+ // }}, new LambdaQueryWrapper<FosterwxMobilePool>().eq(FosterwxMobilePool::getId, promoteQrcodePool.getCustserviceId()).ne(FosterwxMobilePool::getStatus, 1));
|
|
|
+ // } else {
|
|
|
+ //
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // // 活码未使用
|
|
|
+ // fosterwxMobilePoolService.update(new FosterwxMobilePool() {{
|
|
|
+ // setStatus(1);
|
|
|
+ // set
|
|
|
+ // setMaxFans(String.valueOf(promoteQrcodePool.getDayUvMax()));
|
|
|
+ // setUpdateAt(LocalDateTime.now());
|
|
|
+ // }}, new LambdaQueryWrapper<FosterwxMobilePool>().eq(FosterwxMobilePool::getId, promoteQrcodePool.getCustserviceId()).ne(FosterwxMobilePool::getStatus, 1));
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // // 活码未使用
|
|
|
+ // fosterwxMobilePoolService.update(new FosterwxMobilePool() {{
|
|
|
+ // setStatus(1);
|
|
|
+ // setMaxFans(String.valueOf(promoteQrcodePool.getDayUvMax()));
|
|
|
+ // setUpdateAt(LocalDateTime.now());
|
|
|
+ // }}, new LambdaQueryWrapper<FosterwxMobilePool>().eq(FosterwxMobilePool::getId, promoteQrcodePool.getCustserviceId()).ne(FosterwxMobilePool::getStatus, 1));
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Scheduled(cron = "1 */10 * * * ?")
|
|
|
+ @SchedulerLock(name = "pangu:syncDayFans", lockAtLeastForString = "PT5S", lockAtMostForString = "PT1M")
|
|
|
+ public void syncDayFans() {
|
|
|
+ LocalDateTime localDateTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
|
|
|
+ fosterwxMobilePoolService.list().forEach(fosterwxMobilePool -> {
|
|
|
+ FosterwxFlowList fosterwxFlowList = fosterwxFlowListService.getOne(new LambdaQueryWrapper<FosterwxFlowList>().eq(FosterwxFlowList::getPoolId, fosterwxMobilePool.getPoolIndex()).ge(FosterwxFlowList::getTimeLine, localDateTime).orderByDesc(FosterwxFlowList::getId).last("limit 1"));
|
|
|
+ log.info("当天最新的进粉数据{}", fosterwxFlowList);
|
|
|
+ if (null != fosterwxFlowList) {
|
|
|
+ fosterwxMobilePoolService.update(new FosterwxMobilePool() {{
|
|
|
+ setDayFans(fosterwxFlowList.getBusFans());
|
|
|
+ }}, new LambdaQueryWrapper<FosterwxMobilePool>().eq(FosterwxMobilePool::getPoolIndex, fosterwxMobilePool.getPoolIndex()));
|
|
|
+ } else {
|
|
|
+ fosterwxMobilePoolService.update(new FosterwxMobilePool() {{
|
|
|
+ setDayFans(0);
|
|
|
+ }}, new LambdaQueryWrapper<FosterwxMobilePool>().eq(FosterwxMobilePool::getPoolIndex, fosterwxMobilePool.getPoolIndex()));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|